Skip to content

feat(cli+framework): fw-4.44.0 / cli-3.48.0 — guard-closure in remediation AILOGs (#419) - #422

Merged
montfort merged 3 commits into
mainfrom
charter-02/pr3-guard-closure
Aug 14, 2026
Merged

feat(cli+framework): fw-4.44.0 / cli-3.48.0 — guard-closure in remediation AILOGs (#419)#422
montfort merged 3 commits into
mainfrom
charter-02/pr3-guard-closure

Conversation

@montfort

Copy link
Copy Markdown
Contributor

Summary

PR 3 of 3 — closes CHARTER-02 / issue #419 case 3: a remediation AILOG could close a Critical finding with prose alone, and nothing asked what mechanically prevents recurrence.

  • core 0.10.0: GuardClosureItem + Frontmatter.trigger / guard_closure (additive; experiment-loom/baton pins follow)
  • GUARD-001 (warn-first): remediation AILOGs (signature: trigger:) warn when guard_closure: is missing/empty, when an item sets both or neither of guard/unguardable, or when unguardable is generic (stock phrases / <30 chars)
  • charter amend scaffolds the commented guard_closure: block at authoring time
  • Docs: STRAYMARK.md §8/§13/§15.B; straymark-audit-review skill requires a Guard line per remediation item (.qoder/.qwen copied, .codex/.agent regenerated via gen_minimal_skills --check clean)
  • Release: fw-4.44.0 stamps (21 files) + dist-manifest; cli 3.48.0; CHANGELOG

Test plan

  • cargo test --workspace — 996 passed, 0 failed (+6: 5 GUARD-001 unit, 1 amend-template integration)
  • validate . --include-charters — 0 errors, 13 warnings (steady baseline; no GUARD-001 fire)
  • charter drift --range main..HEAD — zero scope-expansion; remaining omissions are PR-1/PR-2 rows (merged into main) + gitignored root STRAYMARK.md (documented as R5 in AILOG-2026-08-14-002)
  • Post-merge: closure-time drift across the three PR ranges, then charter close

…ation AILOGs (#419)

A remediation AILOG could close a Critical finding with prose alone — the
fix landed, but no mechanical check stood between the defect and its
recurrence, and nothing asked for one. PR 3 of CHARTER-02 makes the
absence of a recurrence guard a first-class, validatable fact:

- core 0.10.0: GuardClosureItem + Frontmatter.trigger/guard_closure
  (additive; experiment-loom/baton pins follow)
- GUARD-001 (warn-first): remediation AILOGs (signature: trigger:) warn
  when guard_closure is missing/empty, when an item sets both or neither
  of guard/unguardable, or when unguardable is generic (stock phrases or
  <30 chars)
- charter amend scaffolds the commented guard_closure: block so operators
  fill it at authoring time
- STRAYMARK.md §8/§13/§15.B + straymark-audit-review skill (Guard line
  per remediation item; .qoder/.qwen copied, .codex/.agent regenerated)
- fw-4.44.0 stamps (21 files) + dist-manifest; cli 3.48.0

Charter table gains the release-mechanics rows (experiment pins,
dist-manifest, stamp sweep) per the drift-check closure protocol;
recorded as R4 in AILOG-2026-08-14-002.
@montfort
montfort merged commit 4b875ff into main Aug 14, 2026
4 checks passed
montfort added a commit that referenced this pull request Aug 14, 2026
…own layer (#419) (#423)

All three PRs shipped and merged: #420 (cli-3.46.0, reference resolution +
validate --commit-msg), #421 (cli-3.47.0, followups verify --claims), #422
(fw-4.44.0 / cli-3.48.0, guard_closure + GUARD-001).

Post-merge drift over the full range (5824279..4b875ff): zero
scope-expansion; the 3 residual omissions are declaration mechanics
(literal-NNN glob, gitignored root STRAYMARK.md, verify.rs repurposed to
main.rs) — documented in Closing notes with AILOG references.

Status → closed (+closed_at), execution_ailogs recorded, README row moved
to ## Closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant