Skip to content
Open
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
6 changes: 3 additions & 3 deletions gates/selftest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ budget='623 SKILL.md
2335 skills/1-intent/SKILL.md
663 skills/2-spec/SKILL.md
901 skills/3-plan/SKILL.md
1337 skills/4-build/SKILL.md
1374 skills/4-build/SKILL.md
1903 skills/5-ship/SKILL.md
1816 skills/6-maintain/SKILL.md
818 roles/adversary.md
824 roles/adversary.md
440 roles/researcher.md
2420 roles/verifier.md'
2456 roles/verifier.md'
for p in "$kit"/SKILL.md "$kit"/AGENTS.md "$kit"/skills/*/SKILL.md "$kit"/roles/*.md; do
rel=${p#"$kit"/}
max=$(printf '%s\n' "$budget" | awk -v f="$rel" '$2 == f { print $1 }')
Expand Down
2 changes: 1 addition & 1 deletion roles/adversary.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ adversarial diff pass still follows all three lenses on the same final source.
- <objection>; evidence: <file:line / quote>
### Non-blocking (flag to human at gate)
- <concern>
### Checked and clean
### Checked and clean (one line per area, no narrative)
- <area>: <what you looked at>
### Per changed file (diffs only)
| File | Severity | Finding |
Expand Down
6 changes: 4 additions & 2 deletions roles/verifier.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,8 @@ snapshotted`; live source unreachable → say so, the snapshot stands.

Record every check as **command or tool · environment · scenario · observed
result** (deciding lines verbatim; bulk into `.sdlc/work/<slug>/scratch/`).
A current receipt stands for the recipe checks it covers: cite it once, and
list a recipe check alone only when it failed or you read its log.
Include report provenance — every item of the template's Provenance,
Inputs/source and Evidence lines, with actual IDs when exposed. An
unavailable identifier is `unknown — <why>`; never fabricate an ID or claim a
Expand All @@ -188,8 +190,8 @@ call, recorded in evidence.md.
### <E2E | Side effects | Intent match> (fill your lens's lines)
- Provenance: reviewer ID <actual ID | unknown — reason>; context ID <actual ID | unknown — reason>; tool calls <actual IDs | unknown — reason>; independent of implementer <observed relationship | unknown>
- Inputs/source: <revision + current tree identity>; recipe <identity>; upstream <identities>; input paths <exact paths>
- Evidence: executed <commands, exit codes, log paths, deciding lines>; independently inspected <current logs/receipts, or none>
- Ran: <command> → <verdict line(s)> · receipt: <VERIFY line · coverage line>
- Evidence: executed <commands beyond the receipt, exit codes, log paths, deciding lines>; independently inspected <current logs/receipts, or none>
- Ran: receipt <path · recorded_at · VERIFY line · coverage line> · <other command> → <verdict line(s)>
- Failures: pre-existing <ids> at <base ref @ sha> | none · regressions <ids> | none
- Changed files: <path> → <R/scenario> | no behavior: <reason> (one per file)
- E2E: <command/tool> · <environment> · <scenario> → <observed>
Expand Down
4 changes: 4 additions & 0 deletions skills/4-build/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,10 @@ With a `.sdlc/verify.md` recipe the E2E lens runs `tools/verify.sh run <slug>`
unless rule 6's proof reuse applies, inspects deciding logs and
expectations itself, and evidence.md quotes the receipt's deciding lines.

While reviewers run, draft what does not wait on their reports — qa-guide.md,
harvest.md, and evidence.md outside Verification and Adversarial code review —
so ship adds the reports and approves. A finding or gap revises the drafts.

A finding from any lens — a failing flow, a data skew, a missing origin
detail — enters the **fix loop**:

Expand Down
Loading