diff --git a/.org.chromium.Chromium.0XKKNo b/.org.chromium.Chromium.0XKKNo new file mode 100644 index 0000000..6d23118 Binary files /dev/null and b/.org.chromium.Chromium.0XKKNo differ diff --git a/.org.chromium.Chromium.gZRbON b/.org.chromium.Chromium.gZRbON new file mode 100644 index 0000000..e69de29 diff --git a/.sisyphus/boulder.json b/.sisyphus/boulder.json deleted file mode 100644 index 36b3026..0000000 --- a/.sisyphus/boulder.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "active_plan": "/home/joey/Projects/rules/.sisyphus/plans/modifier-profiles-t2.md", - "started_at": "2026-04-19T14:42:06.329Z", - "session_ids": [ - "ses_267b9d7a2ffeFkGcPFn1iv223J" - ], - "plan_name": "modifier-profiles-t2", - "agent": "atlas" -} \ No newline at end of file diff --git a/.sisyphus/plans/modifier-profiles-t2.md b/.sisyphus/plans/modifier-profiles-t2.md index a3ddbf8..737806a 100644 --- a/.sisyphus/plans/modifier-profiles-t2.md +++ b/.sisyphus/plans/modifier-profiles-t2.md @@ -223,7 +223,7 @@ Wave FINAL (4 parallel reviewers): **Commit**: `docs(adr): T2 polish architecture decisions` -- [ ] 2. **Turn-boundary queue server-side** +- [x] 2. **Turn-boundary queue server-side** **What to do**: - Replace `handleModifierProfileUpdate`'s immediate-apply with queue semantics: @@ -252,7 +252,7 @@ Wave FINAL (4 parallel reviewers): **Commit**: `feat(server): turn-boundary queue for modifier profile updates` -- [ ] 3. **Two-player consent protocol** +- [x] 3. **Two-player consent protocol** **What to do**: - New WS messages in `protocol.ts`: @@ -285,7 +285,7 @@ Wave FINAL (4 parallel reviewers): **Commit**: `feat(server): two-player consent for modifier profile swaps` -- [ ] 4. **Editor undo/redo snapshot stack** +- [x] 4. **Editor undo/redo snapshot stack** **What to do**: - In `ModifierProfileEditor.tsx`: @@ -310,7 +310,7 @@ Wave FINAL (4 parallel reviewers): **Commit**: `feat(ui): modifier editor undo/redo` -- [ ] 5. **Copy/paste modifiers between pieces** +- [x] 5. **Copy/paste modifiers between pieces** **What to do**: - In `PerInstancePanel.tsx`: @@ -334,7 +334,7 @@ Wave FINAL (4 parallel reviewers): **Commit**: `feat(ui): copy/paste modifiers between pieces` -- [ ] 6. **Inline conflict resolution panel** +- [x] 6. **Inline conflict resolution panel** **What to do**: - New component `ConflictResolutionPanel.tsx`: @@ -358,7 +358,7 @@ Wave FINAL (4 parallel reviewers): **Commit**: `feat(ui): inline conflict resolution panel` -- [ ] 7. **Modified-piece indicator on live board** +- [x] 7. **Modified-piece indicator on live board** **What to do**: - New component `ModifiedPieceIndicator.tsx`: @@ -379,7 +379,7 @@ Wave FINAL (4 parallel reviewers): **Commit**: `feat(ui): modified-piece indicator on board` -- [ ] 8. **Enhanced source-chain in pinned panel** +- [x] 8. **Enhanced source-chain in pinned panel** **What to do**: - Update `ModifierPinnedPanel.tsx`: @@ -401,7 +401,7 @@ Wave FINAL (4 parallel reviewers): **Commit**: `feat(ui): enhanced modifier source chain in pinned panel` -- [ ] 9. **Consent UI (proposal notification + buttons)** +- [x] 9. **Consent UI (proposal notification + buttons)** **What to do**: - New component `ModifierProposalDialog.tsx`: @@ -424,7 +424,7 @@ Wave FINAL (4 parallel reviewers): **Commit**: `feat(ui): consent dialog for modifier profile proposals` -- [ ] 10. **Playwright e2e additions (8 feature scenarios + solo regression guards)** +- [x] 10. **Playwright e2e additions (8 feature scenarios + solo regression guards)** **What to do**: - Add 8 new T2-feature tests to `packages/chess/e2e/modifier-profiles.spec.ts`: @@ -460,7 +460,7 @@ Wave FINAL (4 parallel reviewers): **Commit**: `test(e2e): T2 polish vertical slice + solo regression guards` -- [ ] 11. **ADR updates — Implementation Retrospective T2 addendum** +- [x] 11. **ADR updates — Implementation Retrospective T2 addendum** **What to do**: - Append to `docs/adr/modifier-profiles.md`: @@ -476,7 +476,7 @@ Wave FINAL (4 parallel reviewers): **Commit**: `docs(adr): T2 implementation retrospective` -- [ ] 12. **User docs updates** +- [x] 12. **User docs updates** **What to do**: - Update `docs/user/modifier-profiles.md`: @@ -496,19 +496,19 @@ Wave FINAL (4 parallel reviewers): ## Final Verification Wave -- [ ] F1. **Plan Compliance Audit** — `oracle` +- [x] F1. **Plan Compliance Audit** — `oracle` Verify all 12 tasks' deliverables exist. Verify T1 simplifications resolved. Check evidence files. Output: `Must Have [N/N] | Must NOT Have [N/N] | ADR Decisions [3/3] | VERDICT: APPROVE/REJECT` -- [ ] F2. **Code Quality Review** — `unspecified-high` +- [x] F2. **Code Quality Review** — `unspecified-high` `bun run check`. Scan for slop patterns. Verify server-shared schemas. Output: `Build [PASS/FAIL] | Lint [PASS/FAIL] | Tests [N pass] | VERDICT` -- [ ] F3. **Manual QA** — `unspecified-high` (+ `playwright`) +- [x] F3. **Manual QA** — `unspecified-high` (+ `playwright`) Execute all 26 Playwright scenarios. Multiplayer proposal/consent roundtrip. Undo/redo combos. Output: `Scenarios [N/N] | Integration [pass] | VERDICT` -- [ ] F4. **Scope Fidelity** — `deep` +- [x] F4. **Scope Fidelity** — `deep` No T3 features smuggled (no custom authoring, no auras, no multi-profile stacking). No breaking WS changes. Output: `Tasks [N/N compliant] | Contamination [CLEAN] | VERDICT` diff --git a/packages/chess/src/ui/ConflictResolutionPanel.tsx b/packages/chess/src/ui/ConflictResolutionPanel.tsx index b36c72f..a1d56b3 100644 --- a/packages/chess/src/ui/ConflictResolutionPanel.tsx +++ b/packages/chess/src/ui/ConflictResolutionPanel.tsx @@ -53,19 +53,19 @@ function applyFix( } export function ConflictResolutionPanel({ profile, layout, onResolve }: Props) { - const result = useMemo(() => { + const validationOutcome = useMemo(() => { if (layout === null) return { errors: [], warnings: [], valid: true }; return validateProfile(profile, layout); }, [profile, layout]); - if (result.valid && result.warnings.length === 0) return null; + if (validationOutcome.valid && validationOutcome.warnings.length === 0) return null; return (
- {result.errors.map((err) => ( + {validationOutcome.errors.map((err) => (
))} - {result.warnings.map((warn) => ( + {validationOutcome.warnings.map((warn) => (