Skip to content

v2.0.12

Latest

Choose a tag to compare

@sohei56 sohei56 released this 06 Sep 10:14
· 6 commits to main since this release
6f79806

What's changed

Audit convergence (G-1 / G-2, #106)

  • New .scrum/audit-ledger.json (schema + update-audit-ledger.sh): one entry per defect class keyed by audit_identity, with structured occurrences, dec_id-verified exclusions, linked PBIs, and a detector with its own verification stamp. Status machine open → sweeping → guarded/accepted → closed is enforced by the wrapper.
  • codebase-audit reads the ledger, reuses identities byte-for-byte, transcribes every class and occurrence into the ledger before writing the report, files a detector PBI + sweep PBI for machine-checkable classes, and every AC carries a mandatory Not closed by this check: line.
  • Guard-first detectors run as merge-gate errors: run-detectors.sh executes every guarded class's detector on the merged tree before the project regression command; violations or a broken detector record merge_failure.kind=detector_regression, roll main back, and escalate at three strikes as merge_detector_regression. smoke-test records a detectors category. A class can only become guarded through a wrapper check that proves the gate is actually wired.
  • Migration 008 seeds the ledger from existing audit PBIs.

Retrospective-filed defects (#104)

  • #96: the design reviewer reads the PBI's acceptance criteria from .scrum/backlog.json itself and every missing_ac_mapping finding carries the criterion text, the searched string, and the matching row.
  • #97: guard-type deliverables must demonstrate the failing direction (negative: / positive: steps in demo_plan); Sprint Review and PO acceptance execute both; update-backlog-status.sh warns when a guard-shaped plan lacks one.
  • #93 (1): the three PreToolUse guards anchor on the project root ($CLAUDE_PROJECT_DIR, else a marker walk) instead of the working directory, and fail closed when the root cannot be resolved. Decision A on #93 (2): the Bash text scan is a guardrail; its pattern set is frozen and pinned by a lint (#105).

Reliability and CI (#103)

  • The documented sh …/scrum-start.sh launch now works on Linux (dash): the three entry points re-exec under bash, and internal launches use bash.
  • CI runs every integration suite and pytest, lints workflows with actionlint, and pins shellcheck v0.11.0 to match local runs.
  • sign-and-notarize.sh retries notary polling on transient network errors and never retries a definitive Apple verdict; a keychain-profile run no longer exits 1 on success.
  • Instruction text that would write .scrum/*.json without a wrapper is caught by a lint.

Documentation (#105)

  • Public pages and READMEs state the current audit flow (severity-graded findings put to the PO; whole-repo audit every third Sprint). The requirements diary is folded into the requirements themselves. All 19 skills point at the canonical output discipline. pbi-merge forbids SM inspection actions during merge.

Upgrade notes

  • Redeploy targets with setup-user.sh; migrate-state.sh runs migration 008 at launch and creates .scrum/audit-ledger.json. From then on add-backlog-item.sh --audit-identity must name a class present in the ledger (the error message names the upsert-class command to run).
  • New merge-failure kind detector_regression (3 strikes → merge_detector_regression). Projects that never promote a class to guarded see no behaviour change.
  • A target already in sprint_review when it redeploys still needs a sprint_acceptance decision recorded (unchanged from v2.0.11).

Verification

  • bats -r tests/unit/ tests/lint/ tests/integration/: 1376 passed
  • pytest tests/dashboard/: 41 passed
  • ShellCheck, Ruff, actionlint: passed
  • tests/integration/detector-merge-gate.bats: fake detector → merge rolled back → detector_regression → third strike escalates

Full changes: v2.0.11...v2.0.12