Repository navigation
Add inactive mobile admin status foundation and fixture UI - #36
Merged
Merged
Conversation
|
Caution Review failedThe pull request is closed. Finishing Touches
Comment |
valzargaming
marked this pull request as ready for review
October 29, 2026 07:48
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.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)
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
CommandIntentPreparerand readonlyPreparedCommandIntentadd 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
OperationAdmissionStoredeclares atomic request-binding reservation; there is no production provider.OperationAdmissionrechecks 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.