fix(wf-skills): state owned lifecycle transitions as observable postconditions and enforce the mapping with a guardrail test#268
Conversation
…conditions in the wf-* routers
…ts engine procedure and read-back
wf-review: comprehensive review — verdict: readyConformance (independent acceptance-criteria pass): every criterion of #262, #263, and #264 verified against the diff; all validation commands re-run green (Python suite 425 incl. the new module's 8 tests, Findings (deduplicated):
Wording note: #264's "runs under the bun test gate" is satisfied via the CI No unresolved P1/P2 findings. Ready for |
|
Final compounding check |
Closes #262
Summary
wf-grooming(--groom-verify <N>:Status >= plannedon read-back, plus the parent-is-the-claim-unit handoff rule),wf-development(--claimproceed =in_progress; exit =--set-status <N> in_review, refused while sub-issues remain open),wf-delivery(Status = doneverified via--reconcile/--delete-packet, not merge-command return). The four routers that own no board transition are deliberately unchanged.plugins/agentic-engineering/tests/skill_transition_ownership_test.pyfreezes the invariant — every skill in theOWNED_TRANSITIONSmap must reference its transition's engine procedure and read-back somewhere in SKILL.md + references, asserted category-level (verb tokens, never frozen prose); an inverse guard fails any unmappedwf-*skill whoseOwns:block claims a transition. Origin incident and dispositions are recorded in Guardrail owned lifecycle transitions: router-level postconditions + a lint binding every owned transition to its engine procedure #262.Testing
bun test(426 pass),bun run typecheck,bun run docs:build && bun run docs:checkall green; full Python suite viapython3 -m unittest discover -s plugins/agentic-engineering/tests -p '*_test.py'green (new module auto-discovered by the CI pattern).--groom-verifyfrom wf-grooming's files makes the guardrail fail naming the skill and missing token; restored, suite green.Post-Deploy Monitoring & Validation
No additional operational monitoring required: plugin prose and a repository test only; no runtime code paths changed.