Skip to content

fix(playbook): decouple completion bar from sweep, keep workpad on rework#97

Merged
chihsuan merged 1 commit into
mainfrom
improve/playbook-routing-rework-robustness
May 27, 2026
Merged

fix(playbook): decouple completion bar from sweep, keep workpad on rework#97
chihsuan merged 1 commit into
mainfrom
improve/playbook-routing-rework-robustness

Conversation

@chihsuan
Copy link
Copy Markdown
Member

What & why

Three robustness fixes to the shared playbook, surfaced while reviewing a fork's hand-authored WORKFLOW.md against the upstream partials. Each addresses a way the playbook lets a repo silently diverge.

1. completion_bar no longer names a sibling partial by title

The bar's fourth item read "PR feedback sweep is complete…". That phrase only resolves if the repo also renders pr_feedback_sweep — but the catalog is explicitly a "menu, not a checklist," so a repo can render one without the other. When that happens you get a dangling reference to a protocol that isn't in the prompt. Reworded to be self-contained:

All PR review feedback has been addressed or explicitly answered, and no actionable comments remain.

2. Rework no longer deletes the workpad

Step 4: Rework handling told the agent to remove the workpad comment and create a new one. That contradicts the single-source-of-truth principle (default_posture, workpad_bootstrap) and throws away the very history the rework step then asks the agent to reason about ("explicitly identify what will be done differently"). Now the prior Plan/Acceptance Criteria/Validation are moved under a ### Superseded — attempt <n> heading and the same comment is reused. Closing the PR + fresh branch is unchanged.

3. Docs: keep repo-authored routing in sync with status_map

Added a short section to docs/playbook.md. Repos author their own Step 0 routing table around status_map, and those drift — a fork can silently drop a state (Rework, Merging) that status_map still lists, leaving the agent with no route. Also notes that strict_variables fails the build on an unknown render, but cannot catch a prose reference to a block you forgot to render (the class of bug behind #1).

Testing

  • mix test test/symphony_elixir/playbook_catalog_test.exs — green (docs table ↔ partial headers in sync).
  • mix test test/symphony_elixir/core_test.exs — 87 passing (prompt-header assertions + Rework dispatch states).
  • mix test test/symphony_elixir/workflow_preview_test.exs test/symphony_elixir/cli_test.exs — 27 passing.

No behavior change to orchestration code; this is prompt/playbook prose plus one doc section.

🤖 Generated with Claude Code

…work

Three robustness fixes to the shared playbook, surfaced while reviewing a
fork's hand-authored WORKFLOW.md:

- completion_bar: the "PR feedback sweep is complete" item named a sibling
  partial by title, so any repo that rendered completion_bar without also
  rendering pr_feedback_sweep got a dangling reference. Reword it to be
  self-contained ("All PR review feedback has been addressed or explicitly
  answered, and no actionable comments remain").
- Rework handling: stop deleting the workpad on rework. The workpad is the
  single source of truth for progress/handoff, and the rework step itself
  asks the agent to identify what to do differently — which needs that
  history. Supersede the prior plan in place under a "Superseded — attempt
  <n>" heading and reuse the same comment instead of creating a second one.
- docs/playbook.md: add guidance to keep repo-authored Step 0 routing in
  sync with status_map (forks can silently drop Rework/Merging), and note
  that strict_variables catches unknown renders but not prose references to
  un-rendered blocks.

Catalog, core prompt, and workflow-preview tests pass.
@chihsuan chihsuan merged commit df1cdda into main May 27, 2026
8 of 9 checks passed
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