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>
2.6 KiB
2.6 KiB
id, epic, title, type, status, feature, depends-on, blocks
| id | epic | title | type | status | feature | depends-on | blocks | ||
|---|---|---|---|---|---|---|---|---|---|
| 07-update-feature-generator | binder-wrap-helper | Update feature generator template to emit wireUseCase calls | technical-story | todo | tooling |
|
|
Goal
Update turbo/generators/templates/feature/src/di/bind-production.ts.hbs and bind-dev-seed.ts.hbs to emit wireUseCase calls instead of inline withSpan + withCapture blocks, so that pnpm turbo gen feature scaffolds conformant binders from the first commit.
Why
Without this change, every new feature scaffolded after the migration would drift back to the inline wrap shape, silently undoing the consolidation. The generator is the only enforcement point for new-feature defaults.
Done when
turbo/generators/templates/feature/src/di/bind-production.ts.hbsemits awireUseCasecall for the scaffolded use case, not an inline wrap block.turbo/generators/templates/feature/src/di/bind-dev-seed.ts.hbsemits awireUseCasecall for the scaffolded use case.- The inline
withSpan(... withCapture(...))pattern is absent from both templates. @repo/core-shared/conformanceis imported in the generated binder output (thewireUseCaseimport).- Running
pnpm turbo gen feature(dry-run or against a scratch location) produces binders that match the migration shape from stories 02–06.
In scope
turbo/generators/templates/feature/src/di/bind-production.ts.hbs— replace use-case wrap block.turbo/generators/templates/feature/src/di/bind-dev-seed.ts.hbs— replace use-case wrap block.- Import statement update in both templates to pull in
wireUseCasefrom@repo/core-shared/conformance.
Out of scope
- Other generator templates (entity, repository, controller, etc.) — unchanged.
- The generator's interactive prompts or
index.tsconfig — unchanged unless needed to pass new template variables. - Updating already-scaffolded features (covered by stories 02–06).
Tasks
- Read
turbo/generators/templates/feature/src/di/bind-production.ts.hbs— understand current inline wrap shape and Handlebars variables used - Read
turbo/generators/templates/feature/src/di/bind-dev-seed.ts.hbs— same - Update
bind-production.ts.hbs— replace inline wrap block withwireUseCasecall; addwireUseCaseimport from@repo/core-shared/conformance - Update
bind-dev-seed.ts.hbs— same - Verify template output by inspecting rendered Handlebars (or running
pnpm turbo gen featurein dry-run / scratch mode) to confirm generated binder matches the migration shape