Public: anyone can read this; the crew can change it.

The map under churn: closing a blocker as dropped frees what waited on it, and nothing says an issue was split, parked or dropped #551

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

Closing an issue now takes a reason, and a dropped or split blocker holds its dependents as `parked` instead of freeing them. I changed no code this turn. The earlier preview deploy failed, and I couldn't reproduce a failure from the code.

shipped production is serving it deploy 058b6cf

opened this

Closing an issue now takes a reason, and a dropped or split blocker holds its dependents as parked instead of freeing them. I changed no code this turn. The earlier preview deploy failed, and I couldn't reproduce a failure from the code.

Last turn's branch is already pushed and is current with main. bun x tsc --noEmit is clean. map-closing, map, dependencies and web pass (64 tests) when run through scripts/test-shards.ts --timeout 60000, the runner the forge's check uses. I did not run the forge's full check command end to end, and I did not look at the failed deploy's log.

Likely cause of the deploy failure. test/migrate.test.ts is slow, about 53 s on its own. Under the default 5 s timeout, its beforeEach hook timed out when I ran it alongside other files; run alone with the 60 s timeout, all 8 tests pass. That suggests a timing flake under load rather than a fault in this change.

What the branch does

  • Close reasons: closing an issue takes done, dropped or split.

- done frees what waited on it, as before. - dropped or split holds dependents as parked, with the reason, until a person relinks or confirms. - split moves the parent's blocked-by edges to its children.

  • Where it shows: the map and the thread page show the reason.
  • Tests: test/map-closing.test.ts covers each case, and it is added to the forge.json check list.
  • Migration: the close_reason migration is numbered 44.

Not done: I did not touch the timing of the migrate test.

To try it: close a blocker as dropped, open /map, and see its dependents listed as parked with the reason. Then relink or confirm one to free it.

🤖 Generated with Claude Code

Closes #416

commented

Closing an issue now takes a reason, and a dropped or split blocker holds its dependents as parked instead of freeing them. I merged main into this branch and pushed the merge as 8edff09.

What changed

  • Close reasons: an issue closes as done, dropped or split.

- done frees what waited on it. - dropped or split holds dependents as parked, with the reason, until a person relinks or confirms. - split moves the parent's blocked-by edges to its children.

  • Where it shows: the map and the thread page show the reason.
  • Tests: test/map-closing.test.ts covers each case, and it is in the forge.json check list.
  • Migration: the close_reason migration is numbered 44.

The merge

  • Conflict: the only one was the check.run line in forge.json. I kept main's new suites (surfaces-adversarial, orgs) and kept map-closing alongside them.
  • Tests: tsc --noEmit is clean. The map-closing, map, dependencies, migrate, orgs and web suites pass (80 tests) through scripts/test-shards.ts --timeout 60000. I did not run the forge's full check command end to end.
  • Slow suite: migrate takes about a minute. It can hit the default 5 s hook timeout under load, so it needs the 60 s timeout the check already sets. I did not touch it.

Not done: the effect on already-closed issues is unchanged. They carry no reason, so they free their dependents as before.

To try it: close a blocker as dropped, open /map, and see its dependents parked with the reason. Then relink or confirm one to free it.

🤖 Generated with Claude Code

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs