Files
atomic-design-poc/docs/project/refactor-backlog-setup
ehoandClaude Opus 5 80de261299 refactor(shared): split runResult out of runSubmit (RB-17)
runSubmit did two things at once: fold a call into a Result, and mint
an Idempotency-Key for it. Five call sites are reads and had no
business minting one — brief.adapter.ts:load, org-template.adapter.ts
:list/:load, and stamdata.adapter.ts:list/:load. stamdata.adapter.ts's
own docstring already said "Both endpoints are reads … There is no
write method" while both called runSubmit; that mismatch is the
sharpest evidence, and the reason the baseline's original "~13
mutations" count (derived from the helper's name, not the code) was
wrong by five in one direction.

Split submit.ts in place: runResult is the try/catch + problemDetail
fold with no mint; runSubmit is runResult wrapping
withIdempotencyKey. Zero behaviour change for the 8 real mutations
(brief save/submit/approve/reject/send/reset, org-template
save/publish/rollback) — same fold, same mint, same timing. The five
reads now run the fold with no pendingIdempotencyKey touched.

submit.spec.ts asserts the split behaviourally via
currentIdempotencyKey() (two reads inside the same call agree only
when a key was minted and reused) rather than mocking a relative
import, matching this repo's existing vitest convention. Verified red
without the fix by temporarily reintroducing the mint into runResult.

ApplicationsStore.cancel/AdminCasesStore.delete (RB-20) and
FeatureFlagStore.set are out of scope and untouched — the latter
already calls runSubmit correctly.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 16:31:13 +02:00
..

Refactoring backlog — automated setup

What's in this package

refactor-backlog-setup/
  setup.sh                     ← run this once, from the root of the target repo
  agents/                      ← source prompts (edit these if you need to tweak
                                  scope/wording before running setup.sh)
    _persistence-protocol.md
    00-baseline.prompt.md
    01-readability.prompt.md
    02-testability.prompt.md
    03-ddd-hexagonal.prompt.md
    04-cqrs-light.prompt.md
    05-bdd.prompt.md
    06-adr-conformance.prompt.md
    07-bio2-compliance.prompt.md
    08-consolidation.prompt.md
    09-implementation.prompt.md  (template — one TICKET-ID per Phase 3 dispatch)

Usage

  1. Copy this refactor-backlog-setup/ folder into the root of the target repo (or reference it via a relative path).
  2. Edit anything in agents/ if scope/exclusions need repo-specific detail (e.g. exact module paths, ADR folder location) — the prompts currently use the defaults agreed in the design conversation.
  3. Run:
    bash refactor-backlog-setup/setup.sh
    
    This creates ./refactor-backlog/ with:
    • _status.md initialized, all agents not_started
    • 00-baseline.md through 07-bio2-compliance.md initialized with headers
    • 99-backlog.md empty, ready for Consolidation
    • implementation/ folder for Phase 3 notes
    • final-prompts/ — every agent prompt with the persistence protocol already merged in. These are the exact prompts to dispatch — no manual copy-paste needed.

Dispatch order

  1. Dispatch final-prompts/00-baseline.prompt.md (Opus). Wait for _status.md → baseline: complete.
  2. Dispatch the 7 Phase 1 prompts in parallel (Opus): 01 through 07. Each checks its own dependency in _status.md before starting.
  3. Once all 7 show complete, dispatch final-prompts/08-consolidation.prompt.md (Opus). It writes 99-backlog.md and halts for human approval — check the file for any ADR-fix or BIO2-flagged tickets before proceeding.
  4. For each approved ticket, copy final-prompts/09-implementation.prompt.md, fill in TICKET-ID:, dispatch (Sonnet). Run tickets in parallel within a CD batch, sequential across batches, per the Depends on column in 99-backlog.md.

Re-running / resuming

Safe to re-run setup.sh only on a fresh workspace — it does not check for an existing ./refactor-backlog/ and will overwrite _status.md and the phase output files. If a run is already in progress, don't re-run setup.sh; just re-dispatch the relevant final-prompts/*.prompt.md — each agent reads _status.md and its own output file first and resumes from where it left off.