Repository navigation
Description
Child of #495. The close child. Approved with #495.
User story
As the owner, I want the approval-hold epic merged only after its full checks pass, so that main never holds half of it.
Acceptance criteria
- CI is green on the final commit of
epic/495-approval-hold, with a dispatchedcirun on that head. - eve's
devbox/verify-fullpasses on both epic heads built together. - Every other child is merged to its epic branch with review and evidence lines.
- main is merged into
epic/495-approval-holdby the sync PRsync/495-main, which saysCloses #497. merge-checkpasses on each epic-to-main PR.- relay's epic PR merges first, and eve's epic PR merges minutes later.
- No step re-pins eve to relay
main. - Each child and both parents are closed with a comment naming the merged PR.
- The epic branches are deleted.
What I'd notice
Nothing. The change appears on main in one step.
Close lines (eve)
- CI green on the final commit of
epic/495-approval-hold, and a full run: dispatchci(workflow_dispatch) on the epic head, after line 4. - The Full run passes on the epic head after line 4 and before the epic PR merges: joint close task step b on Hold a tool approval while no screen shows the session #495.
- Every child is merged to the epic branch, with review and evidence lines in place.
- main is merged into the epic branch by a sync PR whose head is
sync/495-mainand whose body saysCloses #497; conflicts are resolved on it.
Lines 5 to 7 run under the joint close task on #495 (steps c and d).
Tasks
- Open eve's draft epic PR (
epic/495-approval-hold→main, bodyCloses #497) when eve: show a waiting approval after a reconnect, and say when one waits while disconnected #496's first PR merges. - Line 3: both eve: show a waiting approval after a reconnect, and say when one waits while disconnected #496 PRs merged, with review and evidence lines.
- Only if relay's epic head moved after eve: show a waiting approval after a reconnect, and say when one waits while disconnected #496's pin (relay's sync PR): a pin-only PR
chore/497-relay-pinnaming relay's final epic head,Closes #497, before the sync PR. - Line 4: sync PR
sync/495-mainintoepic/495-approval-hold,Closes #497. - Line 1: dispatch
cion the head that line 4 leaves; green. - Report lines 1, 3 and 4 on Hold a tool approval while no screen shows the session #495: joint close step a.
- Line 2 and lines 5 to 7: joint close steps b to d on Hold a tool approval while no screen shows the session #495.
Contract
Joint close task and order: #495. This child adds no code. Its PRs are the sync PR, a possible pin-only PR, and eve's epic PR to main (which says Closes #497). merge-check judges the sync PR and the epic PR on the files that differ from main, so this list is the union of #496's paths; conflict resolution stays inside them.
File ownership
public/modal-manager.jspublic/app.jsrelay-client.jstest/e2e/relay-pin.json(the pin-only PR, if needed)test/e2e/g8-approval-wait.spec.jsdocs/FEATURES.mddocs/api.mddocs/areas.jsonc
Test surface
The dispatched ci run (every spec, not the diff's selection), and the joint run in step b (every journey on both heads built together). A conflict resolved on sync/495-main gets the specs of the area it touches in that run. Nothing new is written here.
Waits
ci: the dispatched run's id, waited on withgh run watch <id> --exit-status(a completion handle), never a duration.- Step b: the
set.jsprocess exit and thedevbox/verify-fullstatus it posts. It holds the browser-test lock; don't hand-roll a wait for it. - Merges:
merge-checkexit codes.
Budget
0 lines of new code. Conflict resolution only inside the paths above; anything else stops and asks.
Decisions made for the owner
-
Contract amendment (coordinator, 2026-10-15): the pin PR
chore/496-relay-pinalso updates two specs, because the new pin changes what they see. The patch rule's "pin-only" can't hold when the pinned fakerelay's behaviour moves under existing specs, and neither change can land red on its own.test/e2e/g1-today-needs.spec.js: the held-run world has a pending approval; with relay's replay on join, opening that thread now shows its prompt (this epic's approved behaviour), which the spec must answer before it closes the tab.test/e2e/g16-add-browser.spec.js: relay#425/merge-check accepts an epic branch as a child base #437 (merged on relaymain, in the epic head) changed fakerelay's eve-passkey texts to "Home|Work"; relay#437's PR names "the next eve relay pin bump" as the one that updates g16.
-
Contract amendment 2 (coordinator, 2026-10-15), replacing the g1-today-needs approach above: relay#445 adds a fakerelay
holdreply kind (a turn that runs until stopped, no prompt). The held-run spec worlds swappermissionforhold, every assertion kept. The pin PR also ownstest/e2e/g5-routines-page.spec.js,test/e2e/g5-schedule.spec.js,test/e2e/g6-board.spec.js,test/e2e/g6-routines.spec.jsanddocs/test.md(the reply-kind list), and the pin names relay's epic head after relay#445 merges.
Decisions made for the owner
- Contract amendment (coordinator, 2026-10-15): the epic PR and sync PR are judged on every file that differs from
main, so this child's ownership also carries the files eve: show a waiting approval after a reconnect, and say when one waits while disconnected #496's pin PR (Pin fakerelay to relay's approval-hold epic head #504) owned under eve: show a waiting approval after a reconnect, and say when one waits while disconnected #496's amendments 1 and 2:test/e2e/g1-today-needs.spec.js,test/e2e/g16-add-browser.spec.js,test/e2e/g5-routines-page.spec.js,test/e2e/g5-schedule.spec.js,test/e2e/g6-board.spec.js,test/e2e/g6-routines.spec.js,docs/test.md. No new change; conflict resolution stays inside these.
Activity
barelyworkingcode commentedon Oct 15, 2026
Approval inherited from #495, which the owner approved as a cross-repo epic and then split on 2026-10-15. This child is one of that epic's own listed batches and stores or moves no credential, so it needs no separate approval (rules step 2).
barelyworkingcode commentedon Oct 16, 2026
Coordinator approval: a listed child of the approved epic #495 (relay side #422); the owner approved the epic and said to take it through to main on 2026-10-15. It inherits that approval (step 2).