Skip to content

fix: session-close offers "leave it open" as an anchor-task resolution - #143

Merged
bborbe merged 3 commits into
masterfrom
fix/session-close-leave-open-resolution
Sep 6, 2026
Merged

fix: session-close offers "leave it open" as an anchor-task resolution#143
bborbe merged 3 commits into
masterfrom
fix/session-close-leave-open-resolution

Conversation

@bborbe

@bborbe bborbe commented Sep 6, 2026

Copy link
Copy Markdown
Owner

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:

  • 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, and contradicts the vault status semantics: "never set hold for a task with a scheduled defer_date… reserve hold only for blocks with no scheduled resume date."
  • defer may be the operator's choice, but this command must not propose it.
  • complete is 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, hold was 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.

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
@bborbe
bborbe marked this pull request as ready for review September 6, 2026 18:10

@ben-s-pull-request-reviewer ben-s-pull-request-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-close command.

Verification against concerns:

  1. 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.

  2. "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"
  3. 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.

  4. No test coverage — Correct. session-close.md is a command document (slash command definition), not Go code. No session-close_test.go exists in the repo. This is a documentation change with no automated regression protection, as noted in the PR plan.

  5. CHANGELOG entry accurate## Unreleased correctly 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."
    }
  ]
}

@bborbe
bborbe merged commit b856506 into master Sep 6, 2026
3 checks passed
@bborbe
bborbe deleted the fix/session-close-leave-open-resolution branch September 6, 2026 18:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant