Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "ai-native-sdlc",
"displayName": "AI-Native SDLC",
"version": "0.5.1",
"version": "0.6.0",
"description": "Lean, risk-sized, artifact-driven software delivery for Claude Code.",
"author": {
"name": "AI-Native SDLC Contributors"
Expand Down
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ai-native-sdlc",
"version": "0.5.1",
"version": "0.6.0",
"description": "Lean, risk-sized, artifact-driven software delivery for Codex and Claude Code.",
"author": {
"name": "AI-Native SDLC Contributors"
Expand Down
1 change: 1 addition & 0 deletions THIRD_PARTY_NOTICES.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ This plugin uses original wording and implementation-neutral workflow ideas info
- Dietrich Gebert and contributors, [Ponytail](https://github.com/dietrichgebert/ponytail), MIT License.
- Julius Brussee and contributors, [Caveman](https://github.com/juliusbrussee/caveman), MIT License for skills and adoption surfaces. Engine-linked runtime components use BSL-1.1 and are not bundled here.
- Samir Sawarkar, [asd-ste100-skill](https://github.com/samirsawarkar/asd-ste100-skill), MIT License. Clarity rules are informed by ASD-STE100 Simplified Technical English, a specification of ASD (AeroSpace and Defence Industries Association of Europe); this plugin does not claim ASD-STE100 compliance.
- Leonxlnx, [unlazy](https://github.com/Leonxlnx/unlazy), MIT License.

The plugin is not affiliated with or endorsed by those projects. No third-party code is bundled.
9 changes: 9 additions & 0 deletions docs/changelogs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Changelog

## 0.6.0 - Unreleased

- Added completion rules informed by unlazy (MIT License). Wording only; no scripts or hooks bundled. See ADR-005.
- Router invariant: finish every in-scope part of the request, with no placeholders, stubs, `TODO`s, elided code, or silently deferred remainder. Minimal means the least code per part, not fewer parts. A part that cannot be finished is reported as unmet with its reason.
- Router output: mark each requested part met or unmet, and re-measure every reported number or label it `not measured`.
- Build: each checkpoint is implemented completely, and self-review also hunts defects, placeholders, and unhandled cases.
- Verify: step 8 re-reads the original request and maps every requested part to a supported claim or a reported unmet item; the evidence report ends with met and unmet counts.
- Not yet verified: the 12-case behavior suite has not run on this release.

## 0.5.1 - 2026-10-08

- Verification: the full 12-case behavior suite ran with independent transcript review on three hosts: Claude Code 2.1.294 with `claude-sonnet-5` and `claude-sonnet-5-5`, and Codex 0.160.1 with `gpt-6.1-sol`. Codex used `gpt-6.1-sol`, not the `gpt-6-astra` used for 0.5.0. Results were 9/12, 12/12, and 12/12. All filesystem and executable acceptance checks passed. Reviewers attributed none of the three `claude-sonnet-5` failures to this release:
Expand Down
28 changes: 28 additions & 0 deletions docs/tracking/DECISIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,3 +145,31 @@ Compliance is instruction-only and therefore probabilistic (see ADR-003). No new
### Revisit when

A behavior transcript shows a vague acceptance criterion or an upgraded hedge passing a gate. Then add a non-blocking check to `hooks/edit_guard.py` on writes to `.sdlc/changes/*/spec.md`.

## ADR-005: Absorb unlazy completion rules as wording only (2026-10-10)

### Status

Accepted (2026-10-10).

### Context

Agents stop short: they leave placeholders, drop parts of multi-part requests, and report unmeasured numbers. The unlazy repo (MIT, Leonxlnx) addresses this with acceptance gates written before work, a Depth Tree of leaf ledgers, a four-pass leaf loop, a final-report audit, and an optional Claude Code Stop hook backed by about 400 KB of Node scripts. This plugin already writes acceptance criteria before building, treats a worker report as unproven, requires fresh evidence, and nudges once at Stop for unfinished Standard and Controlled changes. The remaining gaps were: no explicit ban on placeholders or deferred remainder, verify re-read the acceptance map but not the original request, no met/unmet report, and reported numbers were not re-measured.

### Decision

Add the missing rules as wording only, in original text: one router invariant (finish every in-scope part; no placeholders, stubs, `TODO`s, elided code, or deferred remainder; minimal means least code per part, not fewer parts; report unfinished parts as unmet), a router output rule (met/unmet per part; re-measure numbers or label them `not measured`), a completeness clause and defect hunt in build self-review, and an original-request re-read with met/unmet counts in verify.

### Consequences

Compliance is instruction-only and therefore probabilistic (see ADR-003). The rules apply to every lane, including Fast. No new runtime dependency, and the "No third-party code is bundled" notice stays true.

### Alternatives rejected

- **(a) Vendoring unlazy's gate-check, dispatch, and stop-hook scripts** — bundles third-party code, adds a surface where agents approve arbitrary shell `CHECK:` commands, and duplicates `ai-native-verify`.
- **(b) A Stop hook that blocks several times until gates are met** — loop risk, and the hook-guard design is still an open decision; the existing one-nudge `decideStop` stays.
- **(c) The Depth Tree with per-leaf ledgers** — ceremony that overlaps the existing plan checkpoints.

### Revisit when

A behavior transcript shows a dropped request part or a placeholder passing verify. Then add a behavior case to `scripts/behavior_check.py`.
4 changes: 2 additions & 2 deletions skills/ai-native-build/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ Stop before editing when the selected lane's required artifact or approval is ab
- feature: add a focused acceptance-level check first when the repository supports it;
- unsuitable test-first work such as generated files or pure configuration: state the alternative observable check;
- Controlled: a separate test-author worker writes the checks from the spec and Reference oracle when the host supports it. The implementer does not edit or dismiss those checks; disputes go to the reviewers or the human.
4. Implement the first solution-ladder rung that satisfies the checkpoint. Follow existing style. Remove only imports or code orphaned by this change.
5. Run gates cheapest first: the focused check, then the nearest relevant suite; the visual gate in `../ai-native-verify/SKILL.md` only when the checkpoint changes UI; then self-review the checkpoint diff against its acceptance IDs. Controlled also invokes the `ai-native-review` skill in checkpoint mode: two context-isolated reviewers, and both must approve. Dispatching a reviewer agent without that skill does not satisfy this gate. Fix production code when a valid test fails; do not weaken acceptance to make it pass.
4. Implement the first solution-ladder rung that satisfies the checkpoint completely, with no placeholder or deferred part. Follow existing style. Remove only imports or code orphaned by this change.
5. Run gates cheapest first: the focused check, then the nearest relevant suite; the visual gate in `../ai-native-verify/SKILL.md` only when the checkpoint changes UI; then self-review the checkpoint diff against its acceptance IDs and hunt for defects, placeholders, and unhandled cases. Controlled also invokes the `ai-native-review` skill in checkpoint mode: two context-isolated reviewers, and both must approve. Dispatching a reviewer agent without that skill does not satisfy this gate. Fix production code when a valid test fails; do not weaken acceptance to make it pass.
6. A fix re-runs every gate it affects; a visible change re-runs the visual gate. A round is one pass through all of the checkpoint's gates. After three rounds without convergence, stop and reassess with the user.
7. When Git checkpoints are authorized, apply `../ai-native-sdlc/references/checkpoints.md`: commit the checked checkpoint and push for CI, feedback, or handoff within the permitted scope. Do not defer every commit until the build finishes or confuse a branch push with merge readiness.
8. Controlled: stop for human approval after checkpoint 1, even when the request already authorizes implementation. Before stopping, set `status: blocked`, `blocker: awaiting checkpoint approval n/total`, and `next_action: obtain checkpoint approval n/total`. Record the resulting `checkpoint` approval with its scope, then set `status: building` and `blocker: null`. Before starting any later checkpoint, confirm a recorded approval covers it; otherwise stop again. The stop after checkpoint 1 is the only mandatory approval stop: do not ask for approval to start a later checkpoint that a recorded `checkpoint` approval already covers, nor to start the full review and verification after the last checkpoint. Record human feedback in `state.md` and set `next_action` to the next checkpoint.
Expand Down
3 changes: 2 additions & 1 deletion skills/ai-native-sdlc/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ When a leaf skill opened this file, use only its lane and invariants. Do not rou
- Update `state.md` only when a durable artifact exists. Record facts, decisions, evidence, deviations, and the next action, not chat history.
- Never commit, push, open a PR, deploy, roll back, message people, or modify external systems without authorization already present in the request.
- Completion claims require fresh evidence. Standard and Controlled work use `ai-native-verify`; Fast work may verify inline.
- Finish every in-scope part of the request. Leave no placeholders, stubs, `TODO`s, elided code such as `// rest unchanged`, or silently deferred remainder. Minimal means the least code per part, not fewer parts. Report a part you cannot finish as unmet with its reason, never as done.

For artifact shapes, read [artifact-contracts.md](references/artifact-contracts.md) only when creating or updating lifecycle files.

Expand All @@ -47,4 +48,4 @@ For authorized Git checkpoints, including Fast work, apply [checkpoints.md](refe

## Output

Lead with the result. State lane, evidence, risk, next action, and blocker once. Preserve exact code, commands, paths, errors, numbers, and negation.
Lead with the result. State lane, evidence, risk, next action, and blocker once. Preserve exact code, commands, paths, errors, numbers, and negation. Mark each requested part met or unmet. Re-measure every number you report; label any other number `not measured`.
4 changes: 2 additions & 2 deletions skills/ai-native-verify/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ When invoked directly, first read `../ai-native-sdlc/SKILL.md` and confirm the l
- For a written oracle or Reference oracle `none`, inspect the rendered implementation against the stated requirements at the viewport and interaction states the spec names.
6. For production claims, verify the intended live endpoint or deployment, not a preview.
7. Record gaps and limitations plainly. Partial proof supports only a partial claim.
8. Re-read the diff and acceptance map. If any claim lacks evidence, return to the correct earlier skill.
8. Re-read the original request, the diff, and the acceptance map. Map every requested part to a supported claim or a reported unmet item; a part with neither is a dropped requirement. If any claim lacks evidence or any part was dropped, return to the correct earlier skill.
9. When every accepted claim passes, stop. Do not add unrequested hardening, cleanup, tests, or documentation.
10. Update `state.md` to `verified` only when all required claims are supported. Then invoke `ai-native-ship` if release is in scope.

## Evidence format

For each claim report: `claim -> command/observation -> result -> context/limitation`.
For each claim report: `claim -> command/observation -> result -> context/limitation`. End with the count of met and unmet claims.

Never rely on an earlier run, another agent's assertion, or "should."
Loading