@antoneeo/agentic-sdlc-skill 1.26.0 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -65,6 +65,15 @@ Exactly three review touches per task, never a loop:
65
65
  If a review FAILs, fix and re-run `verify` — that is a normal loop iteration
66
66
  via the ledger's fail path, not an extra review slot.
67
67
 
68
+ **The scoped re-review is a round INSIDE slot 2 or 3, never a fourth slot.**
69
+ `review.md` §Receiving requires every review-driven correction to be
70
+ re-reviewed against the correction alone — that round belongs to the slot whose
71
+ findings caused it, and is bounded by the same cap of 3 rounds. "Never a loop"
72
+ bounds the SLOTS (no unbounded re-reviewing of a task), not the rounds inside
73
+ one slot: a fix nobody looked at is the defect the round exists to catch. Slot 1
74
+ is the implementer's own pass, not an independent review, so its fixes carry no
75
+ re-review round. The ledger records the round on the task's fail path as usual.
76
+
68
77
  ## Ledger protocol summary
69
78
 
70
79
  Read → skip-if-done → dispatch-if-pending → write. The ledger is the only
@@ -124,14 +124,20 @@ A fix made in response to a finding is new, unreviewed work — stopping after
124
124
  therefore gets a **scoped re-review** before the review can PASS: hand the
125
125
  re-reviewer the original findings and ONLY the correction (the fix diff/range
126
126
  for code, the amended sections for a document), and require a per-finding
127
- verdict — `ADDRESSED`, `NOT ADDRESSED`, or `CONTESTED` with evidence. The
128
- re-review also checks the correction itself for new blocker-level
129
- breakage and nothing else: out-of-scope observations become separately
127
+ verdict — `ADDRESSED`, `NOT ADDRESSED`, or `CONTESTED` with evidence. **A PASS
128
+ that carried findings is provisional until its corrections pass that round** —
129
+ the commonest real case is a PASS with non-blocking findings the author then
130
+ fixes, and stopping there ships precisely the unreviewed version this rule
131
+ exists to catch. The re-review also checks the correction itself for new
132
+ blocker-level breakage — and nothing else: out-of-scope observations become separately
130
133
  recorded findings, never an extension of the loop. Expect two rounds as the
131
134
  norm, not the exception — round 1 finds, round 2 verifies the fixes — inside
132
135
  the same cap of 3 (§When a review is due). One logical review stays ONE
133
- REVIEW_LOG row, its rounds narrated inside; a scoped re-review is a round,
134
- not a new review.
136
+ REVIEW_LOG row a scoped re-review is a round, not a new review — with the
137
+ rounds narrated in the row's notes and **the verdict column carrying the
138
+ round-1 verdict and the final one (`FAIL → PASS`), never the final one alone**:
139
+ a first-round FAIL is the highest-value evidence the gate produces (§When a
140
+ review is due), and collapsing it into a bare `PASS` erases exactly that.
135
141
 
136
142
  ## Reviewing
137
143
 
@@ -145,6 +151,15 @@ When you are the reviewer:
145
151
  (see `## Requesting`).
146
152
  - Cite evidence as `file:line` for every finding — a finding without a
147
153
  location is not actionable.
154
+ - **An unproven completion claim is a finding** (closure reviews, on the diff).
155
+ When the work under review states or implies that something passes, is fixed,
156
+ is clean or is complete, the evidence must be present and must post-date the
157
+ final relevant change; a claim resting on a stale run, on a narrower check
158
+ than the claim needs, or on a delegated agent's own report rather than the
159
+ diff, is a finding — name the claim and what would prove it. This is the
160
+ enforcement point of the author-side rule in `SKILL.md` §5 Closure, and the
161
+ reason a requester hands it over is that the reviewer cannot cite a rule it
162
+ was never given.
148
163
  - **Say what you could NOT verify.** When a claim in the artifact cannot be
149
164
  verified from the inputs you were given (it lives in unchanged code, another
150
165
  document, or an environment you cannot reach), report it as a
@@ -507,8 +507,8 @@ adds values to the existing columns rather than a second table.
507
507
 
508
508
  | date | doc_key | tier | reviewer | findings_raised | findings_real | verdict | revise_rounds |
509
509
  |---|---|---|---|---|---|---|---|
510
- | 2026-06-11 | ANALYSIS_login_sso.md | design | subagent (opus, fresh ctx) | 4 | 3 | PASS | 2 |
511
- | 2026-06-12 | diff feature/sso-login | closure | self-pass (declared; no subagent facility) | 2 | 2 | PASS | 1 |
510
+ | 2026-06-11 | ANALYSIS_login_sso.md | design | subagent (opus, fresh ctx) | 4 | 3 | FAIL → PASS | 2 |
511
+ | 2026-06-12 | diff feature/sso-login | closure | self-pass (declared; no subagent facility) | 2 | 2 | PASS with findings → corrections re-reviewed, PASS | 2 |
512
512
 
513
513
  ## Notes
514
514
  <!-- One short paragraph per review that found something worth remembering: what
@@ -527,6 +527,13 @@ records the realization actually used — fresh subagent, one-shot client run, o
527
527
  honest; writing nothing, or implying independence you did not have, is the failure
528
528
  this column exists to prevent. `findings_real` is how many raised findings survived
529
529
  triage: over time it is the only evidence of whether the gate earns its cost.
530
+ `revise_rounds` counts **review rounds**, not fix cycles: the first review is round 1
531
+ and every scoped re-review adds one. A review that produced findings which were then
532
+ corrected therefore always reads ≥ 2 — the corrections are unreviewed work until a
533
+ round verifies them (`review.md` §Receiving) — and 3 is the ceiling, past which the
534
+ residue goes to the user rather than into a fourth round. `verdict` carries the
535
+ round-1 verdict and the final one when they differ (`FAIL → PASS`): collapsing a
536
+ first-round FAIL into a bare `PASS` erases the evidence this log exists to keep.
530
537
  Concurrent reviews: `init` writes a `.gitattributes` stanza giving this file
531
538
  `merge=union` — a **built-in** driver (no per-clone `git config`, unlike
532
539
  `merge=ours`, which silently does nothing until every clone configures it).