aboutsummaryrefslogtreecommitdiff
path: root/docs/specs/2026-07-14-sentry-workflow-spec.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-16 16:30:37 -0500
committerCraig Jennings <c@cjennings.net>2026-07-16 16:30:37 -0500
commit0cc12564e89e977d849c6423b1218201e69ba15c (patch)
treeb9fe3361df860cac8ce2f657c8a4b57c133f91c7 /docs/specs/2026-07-14-sentry-workflow-spec.org
parentbd76d98b871bda74ff790da609c16c5404e31f65 (diff)
downloadrulesets-0cc12564e89e977d849c6423b1218201e69ba15c.tar.gz
rulesets-0cc12564e89e977d849c6423b1218201e69ba15c.zip
fix(spec): file the suite-policy decision under Decisions, not findingsHEADmain
Decision 10 was sitting at the bottom of Review findings. It's written in Context/Decision/Consequences shape, unlike the Resolved-notes around it, and the finding at "Per-pass commits skip the pre-commit suite run" points at it by name, so the pointer was there and the target was in the wrong section. That one misfiling made both cookies lie. Decisions read [10/10] by hand while org would have computed [9/9]. Review findings read [/], uncomputed, and would have resolved to 13, which was 12 findings plus the stray decision. Moving it and letting org recompute gives [10/10] and [12/12], both live. Nothing was lost. Every decision and finding was present and resolved. But the readiness gate reads those cookies, and a spec about to be graded on them shouldn't carry one that's stale and one that's dead.
Diffstat (limited to 'docs/specs/2026-07-14-sentry-workflow-spec.org')
-rw-r--r--docs/specs/2026-07-14-sentry-workflow-spec.org12
1 files changed, 6 insertions, 6 deletions
diff --git a/docs/specs/2026-07-14-sentry-workflow-spec.org b/docs/specs/2026-07-14-sentry-workflow-spec.org
index a3d5a89..fe1c155 100644
--- a/docs/specs/2026-07-14-sentry-workflow-spec.org
+++ b/docs/specs/2026-07-14-sentry-workflow-spec.org
@@ -164,7 +164,12 @@ In the morning you review the sentry/<date>-<host> branch (a stack of small unpu
- Decision: We will open every pass with a cheap existence probe and skip with one digest line when the target is absent.
- Consequences: easier — zero config, passes self-activate when targets appear. Harder — an intentionally-unwanted pass needs a vNext exclusion marker if that ever becomes real.
-* Review findings [/]
+** DONE Suite policy: entry run plus conditional fire-end run, no per-pass runs
+- Context: the verification discipline requires a full suite run before every commit, but sentry commits per pass, hourly, mostly touching org files the suite doesn't exercise; a per-commit run would turn a seconds-long fire into minutes, all night.
+- Decision: We will run the suite once at entry (the green baseline the gates require) and again at fire-end only when a pass modified files outside the org/spine set. No per-pass runs. The deviation is justified by the unpushed branch and the morning review gating everything before push.
+- Consequences: easier — idle fires stay cheap and the rare code-touching pass is still caught before its commits age. Harder — a suite break introduced by an org-only edit (possible via fixtures) surfaces at morning review rather than at the offending commit.
+
+* Review findings [12/12]
** DONE Overnight working-tree ownership is undefined
Resolved 2026-07-14 (Craig): launch contract with in-place checkout. Launching sentry hands the repo to sentry until the morning merge; reclaiming it mid-night means stopping the loop first. The entry gate (clean tree, Craig present) fronts the handoff, the unattended dirty-skip backstops anything that slips, and the workflow documents the Emacs buffer-revert caveat at launch and after the morning merge. Worktree isolation was rejected because untracked inbox drops exist only in the main tree, which blinds the inbox pass; plumbing commits were rejected as fragile.
@@ -202,11 +207,6 @@ Resolved 2026-07-14 (Craig): adopted. After the entry gates pass, sentry runs th
** DONE Multi-day unmerged branch stalls hygiene silently
Resolved 2026-07-14 (Craig): adopted. After the second consecutive fire skipped for the unmerged-branch reason, sentry sends one persistent desktop notification naming the project and branch ("sentry stalled: <branch> unmerged — merge or delete to resume"), then repeats at most daily. Persistent notify matches the paging convention: it stays on screen until dismissed.
-** DONE Suite policy: entry run plus conditional fire-end run, no per-pass runs
-- Context: the verification discipline requires a full suite run before every commit, but sentry commits per pass, hourly, mostly touching org files the suite doesn't exercise; a per-commit run would turn a seconds-long fire into minutes, all night.
-- Decision: We will run the suite once at entry (the green baseline the gates require) and again at fire-end only when a pass modified files outside the org/spine set. No per-pass runs. The deviation is justified by the unpushed branch and the morning review gating everything before push.
-- Consequences: easier — idle fires stay cheap and the rare code-touching pass is still caught before its commits age. Harder — a suite break introduced by an org-only edit (possible via fixtures) surfaces at morning review rather than at the offending commit.
-
* Implementation phases
** Phase 1 — agent-lock helper