Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .codearbiter/overrides.log
Original file line number Diff line number Diff line change
Expand Up @@ -205,3 +205,4 @@
[2026-08-13T01:50:16.6956918Z] | BY: SUaDtL@users.noreply.github.com | GATE: H-05 audit-log repair | REASON: Correct host line-ending normalization in the uncommitted sprint log while retaining committed history byte-for-byte; record this turn evidence in the existing milestone report.
[2026-08-15T09:35:00-04:00] | BY: SUaDtL@users.noreply.github.com | GATE: H-05 append-only audit-log hook | REASON: Repairing pre-existing missing physical delimiters would require rewriting immutable history. Preserve the audit bytes and append an explicit parsing-boundary correction for the immediate receipt review.
[2026-08-15T08:26:00-04:00] | BY: SUaDtL@users.noreply.github.com | GATE: H-05 append-only audit log | REASON: Correct the single trailing whitespace byte introduced by this uncommitted Quick Operations receipt, then re-append the identical receipt without whitespace so git diff --check can pass. Scope: only the current local receipt line; no historical audit record changes.
[2026-08-15T10:12:00-04:00] | BY: SUaDtL@users.noreply.github.com | GATE: H-05 append-only audit log | REASON: Remove one malformed UTF-16 Commander Operations append created by cmd output encoding, restore exact HEAD bytes, then re-append factual UTF-8 entries.
79 changes: 79 additions & 0 deletions .codearbiter/plans/commander-operations-board.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Commander Operations Board Plan

**Spec:** `.codearbiter/specs/commander-operations-board.md`
**Initiative:** `career.initiative.0001`

## Task 1 — Pure board projection

**Files:**

- Modify `client/src/ui/LobbyHotSeatView.ts`
- Modify `client/src/ui/LobbyHotSeatView.test.ts`

**Implementation decision:** use a small private builder in the existing
`LobbyHotSeatView` composition module rather than a second exported view
module. The existing module already owns the Local Battery DOM and verified
view callback boundary; a new public module would only duplicate that seam.

- [x] Write failing tests for a board projection that accepts only authenticated
account/profile data plus an existing Field Order, verified controls, and the
immutable Quick Operations catalog. Assert exact lane order, public copy,
one verified primary action, and no reward/account-id/session-id leakage.
- [x] Run the focused tests and record RED because the board does not exist.
- [x] Implement a small view builder that composes existing elements and
callbacks without reproducing rank, order, configuration, or deployment
logic. Mount it only for the authenticated Local Battle route.
- [x] Run focused tests GREEN.
- [ ] Mutation-check a duplicate verified action, a Quick Operation in the
verified lane, and an unauthenticated board.
- [ ] Commit the independently testable projection slice.

## Task 2 — Lobby lifecycle composition

**Files:**

- Modify `client/src/ui/Lobby.ts`
- Modify `client/src/ui/Lobby.account.test.ts`
- Modify `client/src/ui/Lobby.quickDuel.test.ts`
- Modify `client/src/main.hotSeatProgression.test.ts`

- [ ] Write failing lifecycle tests that exercise start, resume, abandon,
expiry, account replacement, and Quick Operation launch from the board.
Assert all callbacks remain their existing routes and a verified action never
receives local operation settings.
- [ ] Run the focused lifecycle command and record RED.
- [ ] Wire the board only at the existing authenticated Local Battle
composition seam; preserve generic Local Battle and online route structures.
- [ ] Run focused tests GREEN, typecheck, and mutation-check that a stale
account or terminal descriptor cannot leave the board actionable.
- [ ] Commit the lifecycle slice.

## Task 3 — Responsive player proof

**Files:**

- Modify `client/src/ui/Lobby.ts`
- Modify `e2e/pregame-command-shell.spec.ts`
- Modify `e2e/verified-deployment.spec.ts`
- Modify `e2e/quick-operations.spec.ts` when it exists; otherwise extend
`e2e/quick-duel-pacing.spec.ts`

- [x] Write failing browser contracts at desktop, compact, and Pixel for board
hierarchy, non-overlap, text/target floors, keyboard focus, verified launch,
and local-practice launch with no verified-reward language.
- [x] Run the focused browser files and record RED.
- [x] Make only layout/focus corrections needed for the real rendered result.
- [ ] Run focused browser tests GREEN, capture decision-state screenshots, and
mutation-check an overflow/duplicate-action regression.
- [ ] Commit the responsive proof slice.

## Task 4 — Governed delivery

- [ ] Append SMARTS and every observed RED/GREEN/correction decision through
the sanctioned append-only sprint log route.
- [ ] Run full client, deterministic, Edge, typecheck, build, and full browser
gates; give spec, plan, sprint log, tests, and exact diff to an adversarial
reviewer and resolve every merge blocker.
- [ ] Commit through the CodeArbiter gate, open a PR, require exact-head
hosted CI/CodeQL/Pages, merge under standing authority, and record deployed
provenance plus an authenticated production Battery observation.
59 changes: 59 additions & 0 deletions .codearbiter/reports/2026-08-15-commander-operations-board.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Commander Operations Board local evidence

Date: 2026-08-15
Initiative: `career.initiative.0001` remains active.
Decision: `career.operations.0002`

## Player outcome

An authenticated Commander entering Local Battle sees one bounded operations
surface: the existing dossier remains immediately above a current Field Order,
one verified-deployment control lane, and an explicitly local Practice
Operations lane. Quick Operations continue through their existing local Quick
Duel route and do not acquire verified rewards or account authority.

## Test-first record

- RED: `LobbyHotSeatView` had no Commander Operations region and the
authenticated Local Battle route had no practice callback.
- GREEN: the builder composes the career, verified, and practice lanes in that
exact order, retains one verified primary action, and delegates each practice
card to the existing Quick Duel callback.
- Lifecycle guard: an authenticated board retires on an anonymous account
transition and only returns with a newly authenticated state; the restored
practice card still emits the existing local Crosswind configuration.
- Browser RED: the board initially rendered as an unstyled block; compact
layout initially split the verified rules down to an unusable 8px lane; and
the compact practice launch target measured 33.34px wide.
- GREEN: the board is a contained grid; compact stacks the verified action
beneath its readable rules; and the practice control has a causal 44px
minimum target. Desktop cards and compact selector both launch Crosswind
Range through the normal local path.

## Local verification

- Focused view and account tests: 66 passed.
- Full client suite: 164 files, 1,634 tests passed.
- `npm run check`: passed (typecheck and deterministic harnesses).
- `npm run check:edge`: 352 passed, 0 failed.
- Complete Playwright production-bundle matrix: 346 passed, 38
project-inapplicable skips, 0 failures.
- `git diff --check`: passed after restoring the exact historical audit bytes
and re-appending the UTF-8 Commander Operations audit records.
- Review correction: the existing Commander dossier is immediately above the
board. The focused view/account suite (66 tests), typecheck, and the
desktop, touch, and small-window board journey (3 tests) passed.

## Boundary and remaining delivery work

This slice changes only client Local Battery composition, styling, and tests.
It does not alter Auth policy, schemas, migrations, Edge Functions, action
protocol, deterministic engine, verified receipt/reward authority, dependencies,
or secrets. Exact-diff adversarial review, CodeArbiter commit gate, PR,
exact-head hosted CI/CodeQL/Pages, merge, Pages provenance, and an
authenticated production observation remain open.

The plan deliberately retains unchecked mutation, broader lifecycle, and
durable screenshot obligations. The green matrices above are local regression
evidence, not a claim that those remaining plan checks or delivery gates are
complete.
72 changes: 72 additions & 0 deletions .codearbiter/specs/commander-operations-board.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Commander Operations Board

**Initiative:** `career.initiative.0001`
**Decision:** `career.operations.0002`
**Status:** approved by the standing continuous-improvement authority

## Player outcome

An authenticated Commander returns to one deliberate Battery surface rather
than a collection of unrelated launch controls. It answers three questions at
a glance: who am I now, what is my current verified order, and what can I do
next? A verified deployment remains the meaningful progression route; Quick
Operations are explicitly framed as local practice, not an alternate reward
path.

## SMARTS decision

1. Add more objectives or rewards first. Rejected: objective rotation already
exists and a new reward or entitlement changes the authenticated authority
surface before players can clearly understand the loop.
2. Redesign every anonymous and online lobby route. Rejected: that is a broad
pregame initiative and risks regressions outside the active career outcome.
3. Compose the authenticated Battery around the existing truthful parts.
Selected: Specific=5, Measurable=5, Achievable=4, Relevant=5,
Time-bounded=4, Satisfaction=5; confidence high. It improves the whole
return loop while leaving all game, receipt, and account authorities intact.

## Contract

- Authenticated Local Battle shows exactly one `Commander Operations` board.
The existing Commander dossier remains immediately above it; the board
consolidates the current Field Order, verified deployment controls, and a
clearly labelled local-practice Quick Operations lane.
- The board owns layout and hierarchy only. It reads existing validated
`AccountState`, `FieldOrder`, verified deployment state, and the immutable
Quick Operations catalog. It does not calculate XP, rank, order selection,
receipt validity, or a game configuration.
- The verified lane preserves its current start, resume, abandon-confirmation,
expiry, busy, failure, and focus behavior. No action labels or authority
checks are weakened.
- The practice lane launches only the existing Quick Duel route. Every card
remains local, unsigned, and excluded from verified progression, account
summary, online rooms, and After Action receipt claims.
- Anonymous, online, custom Local Battle, resumed verified deployment, expired
deployment, and error states retain their existing routes. They do not render
a fabricated Commander Operations claim.
- Desktop, compact fine-pointer, and landscape touch stay single-screen,
keyboard reachable, readable, and free of document/lobby-card overflow.

## Acceptance evidence

1. RED/GREEN view and Lobby composition tests prove one authenticated board,
exact content ownership/order, no duplicate launch actions, and every
excluded-state absence.
2. Tests drive existing verified start/resume/abandon and Quick Operations
callbacks through the board, proving no new configuration or progression
path is introduced.
3. Browser journeys across desktop, compact, and Pixel show the board, launch
a verified deployment and a local practice operation through their ordinary
controls, then assert fit, focus order, touch targets, and no false reward
language.
4. The client, deterministic, Edge, typecheck, and full browser matrices stay
green. An adversarial review clears the exact diff before commit.
5. Exact-head hosted CI/CodeQL/Pages, merge, deployed provenance, and one
authenticated production Battery-to-verified-launch observation complete the
delivery record.

## Boundaries

Client composition and presentation only. No Auth policy, schema, migration,
Edge Function, action protocol, deterministic engine, reward formula,
dependency, or secret change is in scope.
5 changes: 5 additions & 0 deletions .codearbiter/sprint-log.md
Original file line number Diff line number Diff line change
Expand Up @@ -4301,3 +4301,8 @@ pm run check passed the complete chain in 75.8s; state-free staged secret scan r
[2026-08-15T08:24:00-04:00] career.operations.0001 Quick Operations local proof | TDD RED: the pure catalog suite first failed because no option-composition seam existed; the card chooser tests first failed because no operation cards or selected briefing existed; the report test first failed because the HUD had no safely built report identity; the After Action browser route first failed because the deterministic victory fixture did not carry a selected card. GREEN: immutable Standard/Crosswind/Caldera/Last Light catalog with unknown-id fallback and per-card deterministic clone/replay parity; Quick Duel carries only public identity in local config, ledger, and report; cards launch across desktop, Pixel, and compact, and Crosswind completes one real salvo with identity retained. A full Pixel browser run exposed the chooser intruding beneath the compact commander dossier; production CSS now reserves the left deployment lane and the existing no-overlap oracle is green. | Evidence: focused client 63/63; full client 164 files/1,630 tests; deterministic npm run check PASS; Edge 352/352; typecheck and production build PASS; complete Playwright 340 passed/38 intended skips/0 failed; diff-check PASS. | Boundary: Quick Duel local composition/presentation only; no engine authority, action/protocol, online route, verified deployment, Auth, schema, Edge, award, migration, or dependency change. | Transition: final exact-package adversarial review, commit, PR, exact-head hosted CI/CodeQL/Pages, Pages provenance, and one normal production Quick Operations launch remain open.
[2026-08-15T08:44:00-04:00] career.operations.0001 Quick Operations adversarial correction | Reviewer BLOCK findings resolved: the sprint log was restored byte-for-byte to HEAD and now adds only the two Quick Operations entries; Crosswind now carries real wraparound walls through the existing Quick Duel config and truthful card/spec copy; the CPU contract correctly names Medium; every operation card has real browser focus and 44x44 geometry coverage; Crosswind's real salvo proof waits from tracking/resolving to the CPU handoff with ledger identity retained. Re-review PASS CLEAR: Critical 0 High 0 Medium 0 Low 0, merge blockers 0. | Final local evidence: full client 164 files/1,632 tests; complete Playwright 340 passed/38 intended skips/0 failed; npm run check PASS; Edge 352/352; typecheck/build PASS; diff-check PASS. | Boundary unchanged: local Quick Duel composition/presentation only; exact commit, PR, hosted CI/CodeQL/Pages, provenance, and production launch remain open.
[2026-08-15T09:12:00-04:00] career.operations.0001 Quick Operations delivery receipt | SMARTS closeout: S=5 M=5 A=5 R=5 T=5 Satisfaction=5 confidence high. PR #431 reviewed head 0bcc100c07d0c4173aab72f8b199d56f01940113 passed exact-head CI 31885803414 and CodeQL 31885803430, then merged as 8edeefc73188e04ab7b0d2ec855d6f4f6d38e19a. Exact-main CI 31886104825, CodeQL 31886104776, and Pages 31886104768 passed; Pages verified deployed provenance and live smoke. Normal production Crosswind Range selection launched Quick Duel versus CPU, closed the lobby, and showed its selected briefing in the match ledger. Boundary: client-only Pages deployment; no Supabase/Edge/migration/Auth/protocol/persistence/reward/dependency change. career.initiative.0001 remains active.
[2026-08-15T09:35:08-04:00] career.operations.0002 Commander Operations Board SMARTS -- Selected client-only authenticated Battery composition. S5 M5 A4 R5 T4 Satisfaction5 confidence high. Rejected new rewards and objectives before players can read the existing loop. RED board absence and missing practice action. GREEN focused view and account 66 of 66 plus typecheck pass. Boundary reuses existing verified and Quick Duel callbacks, no Auth policy schema Edge engine receipt reward dependency or secret change. Responsive browser proof and exact review remain open.
[2026-08-15T10:09:00-04:00] career.operations.0002 Commander Operations Board local gates. Browser RED board unstyled, compact rules 8px, practice target 33.34px. GREEN contained grid, readable compact verified lane, 44px practice target, keyboard route, Crosswind local launch. Evidence focused 66 of 66, client 164 files 1634 tests, npm check pass, Edge 352 of 352, Playwright 346 pass 38 intended skips 0 fail. Diff check requires exact rerun after this repair. Boundary unchanged. Exact review and hosted gates remain open.
[2026-08-15T10:14:00-04:00] career.operations.0002 audit repair verification. User approved restoration of the malformed UTF-16 entry. Exact HEAD audit bytes were restored, then the two Commander Operations records were re-appended in UTF-8. Git now reports two sprint additions and one scoped override addition. Git diff check passes.
[2026-08-15T10:15:00-04:00] career.operations.0002 audit count correction. The preceding 10:14 record says two sprint additions. Correct count is three sprint additions: SMARTS, local gates, and audit repair verification. Override count remains one. No product or evidence claim changed.
[2026-08-15T10:26:00-04:00] career.operations.0002 Commander Operations review correction | SMARTS: restore the existing Commander dossier above the Board because its player context value and approved contract outweighed duplicate brief copy; retain the Board Current field order lane for scanable action context. | RED: dossier contract test failed because no deployment dossier existed outside the Board. | GREEN: focused view and account tests 66/66, typecheck, and three-profile Commander Operations browser journey 3/3 passed. | Scope: client composition, causal tests, and evidence wording only; no authority or backend change.
Loading
Loading