Skip to content

Add inactive mobile admin status foundation and fixture UI - #36

Merged
valzargaming merged 7 commits into
mainfrom
feat/mobile-admin-status
Oct 29, 2026
Merged

valzargaming merged 7 commits into
mainfrom
feat/mobile-admin-status

Conversation

@valzargaming

@valzargaming valzargaming commented Oct 28, 2026 •

Copy link
Copy Markdown
Member

Goal and scope

Inactive application-layer foundation for the requested phone administration console. Not a live administration service. Includes status projection, cached-observation normalization, an injected read-only service and unregistered PSR/React HTTP endpoint, plus a phone-first fixture Overview. No action transport is connected; save/restart/verb buttons remain disabled.

Implemented contracts

  • AdminServerProjection: per-request authorization, target/clock identity, bounded lifetime, independent heartbeat evidence, unknown/stale/offline/busy/recovery states; zero players does not mean offline and connectivity does not establish readiness.
  • CachedObservationAdapter: consumes injected captures of existing Directory/ServerHeartbeat outputs without polling. Preserves producer observation/progress times; rendering cannot refresh stale evidence. Missing directory rows stay unknown. Producer fixtures, 59/60-second boundaries and producer-compatible Unicode text policy are tested.
  • ReadOnlyStatusService: trusted fixed inventory, injected maintained-cache authorization rechecked before disclosure, injected retained captures only. No member polling or collector calls.
  • StatusEndpoint: unregistered GET/HEAD boundary; absent authenticated-session provider fails closed. No IP-whitelist/bearer-as-user shortcut. Explicit status codes, no-store/private responses, no CORS and no mutation route.
  • Non-routed fixture UI: six synthetic states, observation times, filters/reload, failure/denial clearing and disabled controls with reasons. Server strings use textContent; no external resources or action/network client.

Current verification

Head: 1803f0b0d3dfed5372a8a3bad28b4d1def47abc8.
Admission PR contracts and admission push contracts passed all nine jobs each. All twelve PHP matrix logs explicitly passed 34 serial-fake admission API checks, alongside existing suites. Browser/HTTP/UI checks also passed. These tests do not prove real storage concurrency or disk durability.

Previous typed-intent evidence (headf104515)

Current PR admin contracts and current push admin contracts passed all nine jobs each. All twelve PHP matrix logs contain 48 passing command-intent checks alongside the existing suites. Both real-browser jobs passed. Remaining dependency, portable startup, heartbeat and offline documentation workflows succeeded; deployment-oriented Build Docs was skipped.

Previous browser foundation evidence (head423ede3)

  • PR run: all nine jobs passed. Its merge checkout has identical workflow/UI/test blobs to the head.
  • Push run, attempt 2: successful after one unchanged-head browser-job-only retry. Other eight original successes retained.
  • PHP 8.3/8.4/8.5 on Ubuntu/Windows: lint plus 37 projection, 64 adapter and 24 service checks per matrix job.
  • Actual existing PSR/React HTTP dependencies: 23 boundary checks. Node syntax and 32 dependency-free DOM contracts passed.
  • Sandboxed vendor Chrome: 32 real-DOM checks plus 59 layout/basic-accessibility checks at each 320, 390 and 1280 viewport. Local fixture files only; no listener, browser installation or sandbox bypass. Internal screenshots inspected; not full device/screen-reader acceptance.

Preserved failure

Initial push browser job hit its 20-second deadline before Browser.getVersion responded (no UI assertion ran). The single retry passed in about 1.7 seconds on the same runner-image version using Chrome 156.0.8078.47; the PR run passed on Chrome 155.0.8059.39. This supports a transient startup stall, not a proven underlying cause. Initial failure evidence remains retained; no source, deadline or security settings were changed to obtain success.

Inert restart-intent preparation

CommandIntentPreparer and readonly PreparedCommandIntent add exact-field validation, trusted target IDs and separate action-scoped authorization. Only restart is supported; save/verb remain unsupported. Output explicitly says prepared_not_executable with execution_enabled=false. Stable actor/request hashes and payload fingerprints are comparison keys only: no durable ledger, replay prevention, operation acceptance or dispatch is implemented. No UI controls or routes were enabled.

Inert admission seam

OperationAdmissionStore declares atomic request-binding reservation; there is no production provider. OperationAdmission rechecks action policy before and after storage and binds a stable operation ID compatible with the existing versioned Local lifecycle adapter. Same-key changed payload conflicts; uncertain writes and existing reservations never authorize redispatch. Serial fake tests cover lost acknowledgements and revocation without a duplicate game execution journal or any transport calls. All returned states remain execution_enabled=false. Existing controller recovery/receipt semantics remain authoritative.

Still missing before live use

Real authenticated Discord session integration; maintained-member-cache role-policy binding/readiness; operator-approved inventory and retained collector capture wiring; explicit route/bootstrap and deployment decisions. Commands additionally need expanded typed allowlists where supported, durable deduplication/audit/history, target-bound operation receipts and save/restart completion semantics. Authorization must be checked again at dispatch; preparation is never execution permission.

No live credentials, OAuth grants, runtime configuration, collectors, listener registration, process commands or deployment are added by this PR. Existing loopback controls are not exposed. No library edits or new package dependencies. Keep draft: fixture/browser and offline service tests do not establish live administration acceptance.

@coderabbitai

coderabbitai Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Caution

Review failed

The pull request is closed.

Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@valzargaming valzargaming changed the title Add inactive read-only mobile admin status projection Add inactive mobile admin status foundation and fixture UI Oct 28, 2026
@valzargaming
valzargaming marked this pull request as ready for review October 29, 2026 07:48
@valzargaming
valzargaming merged commit bdf527e into main Oct 29, 2026
44 of 45 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant