@antoneeo/agentic-sdlc-skill 1.26.0 → 1.26.1
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.
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,53 @@
|
|
|
2
2
|
|
|
3
3
|
Tutte le modifiche significative a questa skill saranno documentate in questo file.
|
|
4
4
|
|
|
5
|
+
## [1.26.1 / kb 1.4.7 / mkt 0.4.7] - 2026-08-06
|
|
6
|
+
|
|
7
|
+
The late design review of F-034 (`review.md` row 1b, run after 1.26.0 had shipped because the
|
|
8
|
+
gate had been skipped) returned FAIL with four blockers. Three were defects in the shipped
|
|
9
|
+
doctrine and are fixed here; the fourth was a governance-record gap, fixed in `ai_docs/`.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- **`dispatch.md` contradicted the scoped re-review it delegates to `review.md` to define.**
|
|
13
|
+
It said "exactly three review touches per task, never a loop" and "not an extra review slot",
|
|
14
|
+
while `review.md` requires every review-driven correction to be re-reviewed — so an agent
|
|
15
|
+
executing a dispatched plan received two irreconcilable instructions. Reconciled: the scoped
|
|
16
|
+
re-review is a round **inside** slot 2 or 3, never a fourth slot; "never a loop" bounds the
|
|
17
|
+
slots, not the rounds within one. (Shared spine — the contradiction had shipped in all three
|
|
18
|
+
distributions; `dispatch.md` was missing from 1.26.0's impact map.)
|
|
19
|
+
- **The claim-to-evidence rule had no enforcement point.** Its acceptance criterion promised a
|
|
20
|
+
completion claim without fresh proof would be "nameable by the closure review", but
|
|
21
|
+
`review.md` §Reviewing had no such finding class and the reviewer is never handed `SKILL.md`.
|
|
22
|
+
Added: an unproven or stale completion claim — including one resting on a narrower check than
|
|
23
|
+
the claim needs, or on a delegated agent's report rather than the diff — is now a finding.
|
|
24
|
+
- **`SKILL.md`'s branch hygiene contradicted its own destructive guard.** One bullet ordered the
|
|
25
|
+
agent to "clean up the branch/worktree; never leave orphan branches"; the next reserved
|
|
26
|
+
destruction for the user's explicit request. The cleanup is now PROPOSED once the user has
|
|
27
|
+
chosen, with the anti-orphan duty kept as something to raise rather than to perform.
|
|
28
|
+
- **Two gaps in the scoped re-review's own wording:** a PASS that carried findings is now
|
|
29
|
+
explicitly provisional until its corrections pass a round (the commonest real case, previously
|
|
30
|
+
unruled — the rule's trigger fired but its gate was already behind the fixes); and the single
|
|
31
|
+
REVIEW_LOG row now carries the round-1 verdict alongside the final one (`FAIL → PASS`) instead
|
|
32
|
+
of collapsing a first-round FAIL into a bare PASS, which erased the evidence the same file
|
|
33
|
+
says logging exists to preserve.
|
|
34
|
+
|
|
35
|
+
- **`revise_rounds` had no defined meaning**, in the very document `SKILL.md` names as the owner
|
|
36
|
+
of the review log's schema and column meanings — and the historical rows already used it both
|
|
37
|
+
ways. Defined: it counts **review rounds**, not fix cycles (the first review is round 1, each
|
|
38
|
+
scoped re-review adds one), so a review whose findings were corrected always reads ≥ 2 and 3 is
|
|
39
|
+
the ceiling. The `verdict` column's format is defined alongside it (`FAIL → PASS` when the
|
|
40
|
+
round-1 and final verdicts differ), and the second example row — which taught a bare `PASS`
|
|
41
|
+
after two real findings closed in one round — now teaches both rules instead of contradicting
|
|
42
|
+
one. Raised at the review's round-3 cap and fixed before release rather than deferred.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
- `ai_docs/solutions/ANALYSIS_execution_integrity.md` gains what the design review found
|
|
46
|
+
missing: the **ceremony-cost disclosure** Non-Goal 3 requires (measured on the shipped diff)
|
|
47
|
+
with the owner's explicit acceptance recorded; the **rulings placement** run per mechanism
|
|
48
|
+
against the ledger's own criterion (the previous claim used a narrower "user-facing" test the
|
|
49
|
+
ledger does not define); the **lens-scoping decision** stated; and a named disposition for the
|
|
50
|
+
chronic `stale` debt. No shipped file changes from these.
|
|
51
|
+
|
|
5
52
|
## [1.26.0 / kb 1.4.6 / mkt 0.4.6] - 2026-08-06
|
|
6
53
|
|
|
7
54
|
### Added
|
package/gemini-extension.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antoneeo/agentic-sdlc-skill",
|
|
3
|
-
"version": "1.26.
|
|
3
|
+
"version": "1.26.1",
|
|
4
4
|
"description": "Documentation-First SDLC protocol for Claude Code, Gemini CLI, Google Antigravity and Codex with risk triage, Vision governance, installed support files and optional devPNT integration.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentic-sdlc
|
|
3
|
-
version: 1.26.
|
|
3
|
+
version: 1.26.1
|
|
4
4
|
description: Documentation-First SDLC protocol with risk-proportional triage, Vision as a guide, a complete Standalone mode and optional symbiosis with devPNT. Use for features, significant bugs, refactors, audits and documented maintenance.
|
|
5
5
|
author: Antonio Pinto (https://github.com/Antoneeo)
|
|
6
6
|
copyright: (c) 2026 Antonio Pinto
|
|
@@ -289,7 +289,7 @@ Hybrid L3:
|
|
|
289
289
|
- If an architectural decision was taken (new pattern, layer or contract change, structural dependency), record an ADR before DONE — Standalone in `architecture/`, Hybrid propose the ADR/KL update in the devPNT DB. No decision, no ADR (Write Triggers).
|
|
290
290
|
- In Standalone, if the project adopts `sdlc_check.py`, run `python <skill_dir>/scripts/sdlc_check.py check --root <project_root>` or the equivalent local copy.
|
|
291
291
|
- Updated documents must travel in the same commit/PR as the code they describe.
|
|
292
|
-
- **Branch/worktree hygiene**: an L3 ran on its own branch (Phase 4) — close it with an explicit merge decision (merge, keep open, or discard) and
|
|
292
|
+
- **Branch/worktree hygiene**: an L3 ran on its own branch (Phase 4) — close it with an explicit merge decision (merge, keep open, or discard), and once the user has chosen, PROPOSE the branch/worktree cleanup their choice implies; an orphan branch left behind with nothing said is the failure this bullet prevents — the cleanup itself is theirs to authorize (next bullet). In Hybrid, the running devPNT server locks `.devpnt/*.db`, so the merge is done from a separate git worktree or via a ref-only push, never an in-place branch switch in the primary worktree.
|
|
293
293
|
- **Destructive guards (integration is the user's; destruction is explicit).** The integration choice — merge, push/PR, keep — belongs to the user. Discard happens ONLY on the user's explicit request, and the confirmation names exactly what dies: the branch, its commits, the worktree path. Never force-push without explicit authorization; a rejected push means the remote moved — investigate, don't force. Never clean up a worktree this workflow did not create — the host or another workflow owns it. Repository-specific release/finish commands are the project guide layer's (the router in `## Operative Guides`): the skill owns this discipline, the matched `GUIDE_*.md` owns the commands — cite it, never restate it.
|
|
294
294
|
|
|
295
295
|
## ai_docs documents: two indexes + lifecycle
|
|
@@ -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.
|
|
128
|
-
|
|
129
|
-
|
|
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
|
|
134
|
-
|
|
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 |
|
|
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).
|