Output from `pnpm work decompose 2026-05-13-binder-wrap-helper
--execute` — sandcastle ran the decomposer agent with subscription
auth (after the macOS keychain workaround + Dockerfile fix from
prior commits). The agent wrote files but hit `Max iterations: 1`
before committing, so this commit carries its output unchanged.
Epic: docs/work/binder-wrap-helper/
- _epic.md links to PRD 2026-05-13-binder-wrap-helper
- features: [core-shared, auth, blog, media, marketing-pages,
navigation, tooling]
Stories (8 total, with dependency edges):
01-wire-use-case-helper prereq (blocks 02..07)
Goal: helper at core-shared/conformance/wire-use-case.ts +
tests covering brand stacking, span/capture/audit composition,
idempotent bind. depends-on: [], blocks 02..07.
02-migrate-auth-binders depends-on [01]
03-migrate-blog-binders depends-on [01]
04-migrate-media-binders depends-on [01]
05-migrate-marketing-pages- depends-on [01]
binders
06-migrate-navigation-binders depends-on [01]
07-update-feature-generator depends-on [01]
08-holistic-validation depends-on [02..07], blocks: []
Final gate suite + fallow dupes check to verify the 5 binder-
pair clone groups have disappeared.
After 01 lands, stories 02..07 are parallelisable; 08 collects them.
Pre-commit hook regenerates _state.json + re-stages it so `pnpm
work next` immediately surfaces the new ready story.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
179 lines
5.1 KiB
JSON
179 lines
5.1 KiB
JSON
{
|
|
"updated_at": "2026-05-13T16:10:33.562Z",
|
|
"epics": {
|
|
"binder-wrap-helper": {
|
|
"status": "in-progress",
|
|
"title": "Collapse binder duplication via wireUseCase helper",
|
|
"prd": "2026-05-13-binder-wrap-helper",
|
|
"stories": {
|
|
"01-wire-use-case-helper": {
|
|
"status": "in-progress",
|
|
"title": "wireUseCase helper + tests in core-shared/conformance",
|
|
"ac_total": 8,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"blocks": []
|
|
},
|
|
"02-migrate-auth-binders": {
|
|
"status": "todo",
|
|
"title": "Migrate auth feature binders to wireUseCase",
|
|
"ac_total": 7,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"01-wire-use-case-helper"
|
|
],
|
|
"blocks": [
|
|
"08-holistic-validation"
|
|
]
|
|
},
|
|
"03-migrate-blog-binders": {
|
|
"status": "todo",
|
|
"title": "Migrate blog feature binders to wireUseCase",
|
|
"ac_total": 7,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"01-wire-use-case-helper"
|
|
],
|
|
"blocks": [
|
|
"08-holistic-validation"
|
|
]
|
|
},
|
|
"04-migrate-media-binders": {
|
|
"status": "todo",
|
|
"title": "Migrate media feature binders to wireUseCase",
|
|
"ac_total": 7,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"01-wire-use-case-helper"
|
|
],
|
|
"blocks": [
|
|
"08-holistic-validation"
|
|
]
|
|
},
|
|
"05-migrate-marketing-pages-binders": {
|
|
"status": "todo",
|
|
"title": "Migrate marketing-pages feature binders to wireUseCase",
|
|
"ac_total": 7,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"01-wire-use-case-helper"
|
|
],
|
|
"blocks": [
|
|
"08-holistic-validation"
|
|
]
|
|
},
|
|
"06-migrate-navigation-binders": {
|
|
"status": "todo",
|
|
"title": "Migrate navigation feature binders to wireUseCase",
|
|
"ac_total": 7,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"01-wire-use-case-helper"
|
|
],
|
|
"blocks": [
|
|
"08-holistic-validation"
|
|
]
|
|
},
|
|
"07-update-feature-generator": {
|
|
"status": "todo",
|
|
"title": "Update feature generator template to emit wireUseCase calls",
|
|
"ac_total": 5,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"01-wire-use-case-helper"
|
|
],
|
|
"blocks": [
|
|
"08-holistic-validation"
|
|
]
|
|
},
|
|
"08-holistic-validation": {
|
|
"status": "todo",
|
|
"title": "Holistic validation — green gates + fallow clone-group check",
|
|
"ac_total": 10,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"blocks": []
|
|
}
|
|
}
|
|
},
|
|
"template-reset-v1": {
|
|
"status": "done",
|
|
"title": "Template reset — strip setup-process noise + archive history",
|
|
"prd": null,
|
|
"stories": {
|
|
"01-template-reset": {
|
|
"status": "done",
|
|
"title": "Strip setup refs + archive history + rename ADR-012",
|
|
"ac_total": 12,
|
|
"ac_completed": 12,
|
|
"depends_on": [],
|
|
"blocks": []
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ready": [
|
|
{
|
|
"epic": "binder-wrap-helper",
|
|
"story": "01-wire-use-case-helper",
|
|
"title": "wireUseCase helper + tests in core-shared/conformance"
|
|
},
|
|
{
|
|
"epic": "binder-wrap-helper",
|
|
"story": "08-holistic-validation",
|
|
"title": "Holistic validation — green gates + fallow clone-group check"
|
|
}
|
|
],
|
|
"blocked": [
|
|
{
|
|
"epic": "binder-wrap-helper",
|
|
"story": "02-migrate-auth-binders",
|
|
"title": "Migrate auth feature binders to wireUseCase",
|
|
"waiting_on": [
|
|
"binder-wrap-helper/01-wire-use-case-helper"
|
|
]
|
|
},
|
|
{
|
|
"epic": "binder-wrap-helper",
|
|
"story": "03-migrate-blog-binders",
|
|
"title": "Migrate blog feature binders to wireUseCase",
|
|
"waiting_on": [
|
|
"binder-wrap-helper/01-wire-use-case-helper"
|
|
]
|
|
},
|
|
{
|
|
"epic": "binder-wrap-helper",
|
|
"story": "04-migrate-media-binders",
|
|
"title": "Migrate media feature binders to wireUseCase",
|
|
"waiting_on": [
|
|
"binder-wrap-helper/01-wire-use-case-helper"
|
|
]
|
|
},
|
|
{
|
|
"epic": "binder-wrap-helper",
|
|
"story": "05-migrate-marketing-pages-binders",
|
|
"title": "Migrate marketing-pages feature binders to wireUseCase",
|
|
"waiting_on": [
|
|
"binder-wrap-helper/01-wire-use-case-helper"
|
|
]
|
|
},
|
|
{
|
|
"epic": "binder-wrap-helper",
|
|
"story": "06-migrate-navigation-binders",
|
|
"title": "Migrate navigation feature binders to wireUseCase",
|
|
"waiting_on": [
|
|
"binder-wrap-helper/01-wire-use-case-helper"
|
|
]
|
|
},
|
|
{
|
|
"epic": "binder-wrap-helper",
|
|
"story": "07-update-feature-generator",
|
|
"title": "Update feature generator template to emit wireUseCase calls",
|
|
"waiting_on": [
|
|
"binder-wrap-helper/01-wire-use-case-helper"
|
|
]
|
|
}
|
|
],
|
|
"needs_prd_ship": []
|
|
}
|