Description
Summary
The latest end-to-end planning run successfully performed acceptance and activation side effects, but each workflow concluded as failed when the final lifecycle-state update was rejected by the deterministic validator.
This is a false-failure product defect: work is created successfully while the canonical lifecycle tracker remains stale and GitHub reports a failed run.
User impact
- Successful acceptance or activation appears broken.
- The lifecycle tracker can remain at an earlier state instead of
Activated. - Users may retry because the run is red, increasing concern about duplicate epics/tasks.
- Failure-report issues are generated for operations whose primary side effects succeeded.
- Demos and downstream automation cannot rely on workflow conclusion or lifecycle state.
Evidence
- Upstream E2E tracking: Pilot automatic Squad casting, onboarding, and research #2009
- E2E origin: https://github.com/octodemo/eshop-bradyg-dev/issues/4
- Acceptance run: https://github.com/octodemo/eshop-bradyg-dev/actions/runs/34986842391
- Activation run: https://github.com/octodemo/eshop-bradyg-dev/actions/runs/34987615314
- Prior validation change: Fix failed validation lifecycle retry output #2046
- Unresolved review identifying producer/validator mismatch: https://github.com/bradygaster/squad/pull/2046#discussion_r4013523240
The failing runs report that the lifecycle body must contain an H2 lifecycle heading, state, last-command, and a nonterminal next-action consisting of a backticked /squad command. The shared validator now applies to every planning mode, while canonical lifecycle-producing guidance can still emit command-plus-prose. Terminal recognition must also correctly handle the actual /squad plan activate path.
Scope
Keep the correction focused on the existing lifecycle contract:
- Align lifecycle-producing instructions/templates with the deterministic validator.
- Require command-only
Next actionvalues for nonterminal lifecycle states, with explanatory prose outside that field. - Correctly classify
/squad plan activateand the resultingActivatedstate as terminal. - Update the shared planning ontology rather than patching only one validation branch.
- Add realistic regression coverage for scope acceptance, implementation acceptance, activation, and terminal activated state.
Acceptance criteria
- Acceptance completes with a green workflow conclusion and updates the canonical lifecycle tracker.
- Activation completes with a green workflow conclusion and records
Activated. - A successful activation does not create a failure-report issue.
- Retrying the corrected path does not duplicate generated epics or tasks.
- Prompt/contract tests include realistic lifecycle bodies from the affected phases.
- Existing lifecycle heading, state, last-command, metadata, and trust checks remain enforced.
-
npm run buildand the smallest relevant gh-aw reliability/contract tests pass.
Out of scope
- Redesigning the planning lifecycle or adding commands.
- Changes to generated application work in the E2E consumer repository.
- Unrelated stale template-copy cleanup tracked by bug: squad upgrade leaves .squad/templates skills and workflows stale #2047/enhancement: drop template folder from .squad #1436.
- Release versioning or package publication; those follow after this fix is verified.
Activity
fix(gh-aw): preserve phased lifecycle repairs
fix(gh-aw): align lifecycle producer contract