Skip to content

feat: propagate ADR binding decisions through work plan to task executor#125

Merged
shinpr merged 2 commits into
mainfrom
feat/adr-binding-propagation
May 19, 2026
Merged

feat: propagate ADR binding decisions through work plan to task executor#125
shinpr merged 2 commits into
mainfrom
feat/adr-binding-propagation

Conversation

@shinpr
Copy link
Copy Markdown
Owner

@shinpr shinpr commented May 19, 2026

Summary

  • Adds an end-to-end propagation path for ADR implementation-binding decisions: ADR → work plan (ADR Bindings table) → task (Binding Decisions section) → task-executor (pre-implementation and Exit Gate Compliance Checks).
  • Introduces a 5-value Axis enum (placement | dependency_direction | contract_schema | data_flow | persistence) so executors consult an explicit column instead of inferring the constraint type from free text.
  • Extends task-executor escalation schema with binding_decision_violation (including axis per failure row) and reflects the new type in the orchestrator contract (subagents-orchestration-guide).
  • Hardens ADR path resolution: work-planner now globs docs/adr/ADR-XXXX-*.md to match the actual ADR-[4-digit]-[title].md naming convention and escalates on 0 / 2+ matches.
  • Adds Exit Gate fallback wording so non-binding gate failures use design_compliance_violation instead of leaving the schema ambiguous.
  • Trims per-file context pressure in task-executor, task-executor-frontend, and subagents-orchestration-guide while preserving protected regions (entry / step / exit gates, judgment criteria, JSON schemas, stop points, handoff contracts).
  • Bumps version to 0.19.2 and resyncs plugin mirrors.

Files affected (SoT)

  • agents/work-planner.md — new section 5c "Map ADR Decisions to Tasks" with axis classification and glob-based path resolution
  • agents/task-decomposer.md — ADR Binding Propagation and Design Traceability Propagation steps
  • agents/task-executor.md / task-executor-frontend.md — Binding Decision Check, Exit Gate re-evaluation, binding_decision_violation escalation schema with axis
  • skills/documentation-criteria/references/plan-template.md — ADR Bindings table with Axis column
  • skills/documentation-criteria/references/task-template.md — Binding Decisions section with Axis column
  • skills/documentation-criteria/references/design-template.md — explicit docs/adr/ADR-XXXX.md placeholder under Prerequisite ADRs
  • skills/subagents-orchestration-guide/SKILL.mdbinding_decision_violation added to task-executor escalation enum

All four plugin mirrors (dev-workflows, dev-workflows-frontend, dev-workflows-fullstack, dev-skills) are kept in sync via scripts/sync-plugins.mjs.

Per-file context-pressure reduction

Each subagent loads only its own definition plus the skills declared in its frontmatter, so per-file size is what affects context pressure:

File Before After Δ
agents/task-executor.md 462 444 −18
agents/task-executor-frontend.md 417 395 −22
skills/subagents-orchestration-guide/SKILL.md 433 415 −18

Reductions are limited to duplicated explanatory prose; gates, schemas, and judgment criteria are untouched.

Test plan

  • npm run sync:check passes (mirrors in sync)
  • claude plugin validate .claude-plugin/marketplace.json passes (no warnings)
  • claude plugin validate ./dev-workflows, ./dev-workflows-frontend, ./dev-workflows-fullstack, ./dev-skills all pass
  • npm run check:skills-index passes
  • Author a sample Design Doc → work plan → task and confirm task-executor's Binding Decision Check evaluates each row to Y against the planned implementation, and the Exit Gate re-evaluates every row against the final implementation

🤖 Generated with Claude Code

Add an end-to-end propagation path for ADR implementation-binding
decisions: ADR -> work plan (ADR Bindings table) -> task (Binding
Decisions section) -> task-executor (pre-implementation and Exit Gate
Compliance Checks).

- plan-template / task-template: ADR Bindings and Binding Decisions
  tables with a 5-value Axis enum (placement | dependency_direction |
  contract_schema | data_flow | persistence) so executors consult an
  explicit column instead of inferring constraint type from free text
- work-planner: classify each binding decision by axis; resolve ADR
  paths via glob `docs/adr/ADR-XXXX-*.md` to align with the actual
  ADR naming convention
- task-decomposer: propagate ADR Bindings rows (including Axis) to
  per-task Binding Decisions; also propagate Design-to-Plan
  Traceability rows
- task-executor / -frontend: Binding Decision Check before TDD cycle
  with Y/N/Unknown evaluation, Exit Gate re-evaluates every row,
  and binding_decision_violation escalation with axis per failure
- subagents-orchestration-guide: extend task-executor escalation_type
  enum with binding_decision_violation
- design-template: use `docs/adr/ADR-XXXX.md` placeholder so ADR
  references are unambiguous downstream
- Trim per-file context size in task-executor*, task-executor-frontend
  and subagents-orchestration-guide while preserving fixed regions
  (entry/step/exit gates, judgment criteria, JSON schemas, stop
  points, handoff contracts)
- Bump version to 0.19.2 and resync plugin mirrors

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@shinpr shinpr self-assigned this May 19, 2026
Self-review of the ADR binding propagation diff surfaced four
prompt-principle issues introduced during this PR; all are corrected here.

- subagents-orchestration-guide: drop "the orchestrator coordinates
  but does not implement" — the preceding sentence already states the
  positive role boundary; the negative clause was redundant and a
  BP-001 violation.
- task-decomposer: rewrite "Skip when not provided" / "Skip when the
  work plan has no ..." (ADR Binding Propagation step 4 and Design
  Traceability Propagation step 3) as positive conditionals
  ("Apply only when ...").
- work-planner: change "exact glob matching is not required at this
  stage" to "layer/component-level mapping is sufficient at this
  stage" (positive permissive form).
- task-decomposer: change Compliance Check example labels from prose
  form ("dependency direction:") to enum form
  ("`dependency_direction`:") so the labels match the canonical
  Axis values used in the work plan and task templates.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@shinpr shinpr merged commit 3129743 into main May 19, 2026
1 check passed
@shinpr shinpr deleted the feat/adr-binding-propagation branch May 19, 2026 05:41
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