Follow-up from #31 (recorded at merge closeout, not a merge blocker).
The ledger-v2 decision surface — the rediscovery report's Restore / Never-rediscover buttons, the conflict rows' Keep nested / Restore top-level, tombstone removal in the Ownership panel, and per-fact freshDelta Accept — is pinned at the composer-core and agent layers (every ledger transition and refusal), but not at the rendered-DOM layer. The repo has no agent-mode browser harness: demo mode ships a v1 contract, so the v2 UI never renders in the existing Playwright suites (e2e/composer-prod-smoke.spec.ts is demo-mode only).
Wanted:
- an agent-mode Playwright project (or an equivalent DOM-level harness) that boots the local agent against a temp copy of
apps/composer/demo-project, drives a real rediscovery (which migrates the v1 ledger and surfaces the demo's own info-card restructure conflicts), and exercises each decision control end to end;
- assertions that every report class renders distinguishably (
data-testids already exist: rediscovery-report, deletions-awaiting, conflicts-awaiting, entry-ledger, per-id action buttons);
- axe / keyboard coverage for the new controls (the existing
e2e/a11y.spec.ts targets the exhibit only);
- double-click serialization observed at the UI level (the ref lock in
apps/composer/app/state.tsx is currently code-reviewed, not DOM-tested).
🤖 Generated with Claude Code
Follow-up from #31 (recorded at merge closeout, not a merge blocker).
The ledger-v2 decision surface — the rediscovery report's Restore / Never-rediscover buttons, the conflict rows' Keep nested / Restore top-level, tombstone removal in the Ownership panel, and per-fact freshDelta Accept — is pinned at the composer-core and agent layers (every ledger transition and refusal), but not at the rendered-DOM layer. The repo has no agent-mode browser harness: demo mode ships a v1 contract, so the v2 UI never renders in the existing Playwright suites (
e2e/composer-prod-smoke.spec.tsis demo-mode only).Wanted:
apps/composer/demo-project, drives a real rediscovery (which migrates the v1 ledger and surfaces the demo's own info-card restructure conflicts), and exercises each decision control end to end;data-testids already exist:rediscovery-report,deletions-awaiting,conflicts-awaiting,entry-ledger, per-id action buttons);e2e/a11y.spec.tstargets the exhibit only);apps/composer/app/state.tsxis currently code-reviewed, not DOM-tested).🤖 Generated with Claude Code