fix: session-close offers "leave it open" as an anchor-task resolution - #143
Conversation
A task gated on a scheduled event -- a soak window, a deferred re-measure, a dated follow-up -- is neither finished nor abandoned. The anchor-task resolution menu offered only complete / defer / hold, and for that case: - hold is for blocks with NO resume date; setting it on a task that resumes on a known date misstates why the task is not moving - defer must not be proposed by this command leaving no correct option, so the operator is pushed toward a status flip that records something false purely to clear the flag. Adds "leave it open and say so plainly" to all three resolution sites plus a paragraph explaining when it is the correct answer. Phase 4.5 remains a hard block and mode 3 still applies -- what is forbidden is closing silently with an unresolved anchor, not closing with one deliberately still open.
Local review found the change incomplete: Phase 4.5 line 218 and the Phase 9 mode gate both still listed the resolution set as (complete / defer / hold / abort), so a reader following either lands back on the hold misroute the PR exists to prevent. The mode gate also read as a live contradiction -- it forbids annotating an anchor "away" into a clean verdict, and "leave it open" looks like exactly such an annotation. Both now state the distinction: leaving it open is a resolution the operator makes and states, which KEEPS the mode-3 verdict rather than clearing it.
…eave-open-resolution # Conflicts: # CHANGELOG.md
There was a problem hiding this comment.
The review is complete. Here is my analysis:
Review Summary:
- Changed files:
CHANGELOG.md(+1 line),commands/session-close.md(+15/-5 lines) — documentation only, no code. - Scope: Bugfix documentation for
session-closecommand.
Verification against concerns:
-
✅ Phase 4.5 hard block language preserved — All three sites (lines ~218, ~559, ~621) still use "HARD flag" / "hard block, not a suggestion" language. The new "leave it open" option is added to the resolution list, not substituted for the block.
-
✅ "leave it open" phrasing identical across all 4 sites:
- Line 218 (HARD flag bullet): "complete / defer / hold / abort, or explicitly chooses to leave it open"
- Line 227 (Phase 9 task list item): "or leave it open and say so plainly"
- Line 263 (Phase 9 goal list item): "or leave it open and say so plainly"
- Line 559 (Mode gate summary): "complete / defer / hold / abort, or explicitly choose to leave it open"
- Line 621 (approve: line in closer panel): "or leave it open and say so plainly"
-
✅ Annotation vs. resolution distinction stated — Line 218 explicitly: "Note the difference: choosing to leave it open is a resolution the operator makes, stated in the output — it keeps the mode-3 verdict rather than clearing it, which is precisely what an 'annotation' would wrongly do." Also echoed at line 559.
-
✅ No test coverage — Correct.
session-close.mdis a command document (slash command definition), not Go code. Nosession-close_test.goexists in the repo. This is a documentation change with no automated regression protection, as noted in the PR plan. -
✅ CHANGELOG entry accurate —
## Unreleasedcorrectly captures the fix and the rationale (scheduled-event-gated task had no correct option in the previous menu).
{
"verdict": "approve",
"summary": "Documentation-only change adding 'leave it open' as an explicit resolution option for in_progress anchor tasks in session-close. All four phrasing sites are internally consistent, the annotation-vs-resolution distinction is clearly documented, Phase 4.5 hard block language is preserved, and the CHANGELOG entry is accurate. No code was changed.",
"comments": [],
"concerns_addressed": [
{
"concern": "correctness: documentation-only change — Phase 4.5 hard block language preserved across all 3 sites",
"disposition": "addressed",
"detail": "Lines 218, 559, 621 all retain hard block language. 'leave it open' is added to the resolution list, not substituted for the block."
},
{
"concern": "correctness: internal consistency — 'leave it open' phrasing identical across all 4 sites",
"disposition": "addressed",
"detail": "Verified 4 sites: line 218 ('explicitly chooses to leave it open'), line 227 ('leave it open and say so plainly'), line 263 ('leave it open and say so plainly'), line 559 ('explicitly choose to leave it open'), line 621 ('leave it open and say so plainly'). Phrasing is consistent."
},
{
"concern": "correctness: annotation vs. resolution distinction clearly stated",
"disposition": "addressed",
"detail": "Line 218 explicitly defines the distinction: leaving open is a resolution (keeps mode 3), an annotation would wrongly clear it. Also echoed at line 559."
},
{
"concern": "tests: no test coverage for session-close command behavior",
"disposition": "not-an-issue",
"detail": "This is a documentation-only change (a slash command .md file). No Go code was modified, and no test file exists for session-close. The PR plan correctly notes this as a known gap, not a defect in this PR."
}
]
}
What
Adds "leave it open and say so plainly" to the anchor-task / anchor-goal resolution wording in
commands/session-close.md(3 sites), plus a short paragraph explaining when it is the correct answer.Why
A task gated on a scheduled event — a soak window, a deferred re-measure, a dated follow-up — is neither finished nor abandoned. The menu offered only complete / defer / hold, and for that case none of the three is right:
holdis for blocks with no resume date. Setting it on a task that resumes on a known date misstates why the task is not moving, and contradicts the vault status semantics: "never setholdfor a task with a scheduleddefer_date… reserveholdonly for blocks with no scheduled resume date."defermay be the operator's choice, but this command must not propose it.completeis false while the gate is open.So the operator gets pushed toward a status flip that records something untrue purely to clear the flag.
Observed
2026-09-06: an anchor task was gated on a 48h verification window with a watcher already armed. Following the template,
holdwas proposed. The operator caught it with one word — "why … hold?" — and the correct resolution turned out to be one the command never offered.Not changed
Phase 4.5 remains a hard block and mode 3 still applies. What is forbidden is closing silently with an unresolved anchor — not closing with an anchor that is deliberately still open, with the reason stated.