chore(sisyphus): complete modifier-profiles-t2 boulder
This commit is contained in:
parent
0987adbff3
commit
646b16a8c0
5 changed files with 19 additions and 28 deletions
BIN
.org.chromium.Chromium.0XKKNo
Normal file
BIN
.org.chromium.Chromium.0XKKNo
Normal file
Binary file not shown.
0
.org.chromium.Chromium.gZRbON
Normal file
0
.org.chromium.Chromium.gZRbON
Normal file
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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`
|
||||
|
||||
|
|
|
|||
|
|
@ -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 (
|
||||
<div
|
||||
data-testid="conflict-panel"
|
||||
className="m-4 flex flex-col gap-2"
|
||||
>
|
||||
{result.errors.map((err) => (
|
||||
{validationOutcome.errors.map((err) => (
|
||||
<div
|
||||
key={`${err.code}-${err.square ?? ''}`}
|
||||
className="flex items-center justify-between px-3 py-2 text-sm text-red-800 bg-red-50 border border-red-200 rounded"
|
||||
|
|
@ -83,7 +83,7 @@ export function ConflictResolutionPanel({ profile, layout, onResolve }: Props) {
|
|||
)}
|
||||
</div>
|
||||
))}
|
||||
{result.warnings.map((warn) => (
|
||||
{validationOutcome.warnings.map((warn) => (
|
||||
<div
|
||||
key={`${warn.code}-${warn.square}`}
|
||||
className="flex items-center justify-between px-3 py-2 text-sm text-amber-800 bg-amber-50 border border-amber-200 rounded"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue