Game Features
This commit is contained in:
+31
-22
@@ -1,39 +1,48 @@
|
||||
# Local verification — 2026-10-04
|
||||
# Verification — league milestone, 2026-10-04
|
||||
|
||||
## Passed
|
||||
## Passed locally
|
||||
|
||||
- Both `fpol_server` and `fpol_admin` compile in Debug and Release using the available **GCC 16.2.1** host compiler and C++23.
|
||||
- 25 core tests pass against the production admin executable in both configurations. These cover Noto migrations, reopening SQLite, import idempotency, immutable IDs, corrections, chronological replay, mode isolation, roster eligibility, rounding, capacity, missing data, ambiguous leader previews and round mismatches.
|
||||
- The real Michigan snapshot imports successfully; candidate counts match the coverage report. Demo and real data are seeded in the ignored local `var/fpol.sqlite`.
|
||||
- Strict TypeScript checking and the Vite production build pass.
|
||||
- Shared Modulus formatting and `git diff --check` pass. The bootstrap is unchanged from the canonical shared file.
|
||||
- Server help and invalid-startup tests pass without sockets.
|
||||
- C++23 Debug and Release builds of `fpol_server`, `fpol_admin`, and `fpol_ingest` with the available **GCC 16.2.1** host compiler.
|
||||
- 25 original domain/persistence tests: immutable imports, reopening SQLite, migrations, capacity, eligibility, score rounding, mode isolation, missing data, replay corrections and original round behavior.
|
||||
- 19 application/ingestion tests against the production C++ executables and real SQLite databases: authentication/CSRF/rate limits, invite registration/capacity/expiry/revocation, private league permissions, password change/recovery/session revocation, partial real catalog paging, private queues, snake order, timeouts, pause/restart, simultaneous idempotent picks, cross-league ownership, complete 12-team/144-pick drafts, global party-slot capacity, first-round/runoff separation, retractions/corrections/older observations, quarantine, fusion-line aggregation, unverified-feed refusal, per-race activation gates, sourced ratings permissions/immutability/freeze, online backups, and candidate-watch content change detection.
|
||||
- Strict TypeScript checking and Vite production build, including the separate lab entry point.
|
||||
- Shared Modulus C++/Python formatting, `git diff --check`, and canonical-bootstrap comparison.
|
||||
- Updated Ligo library and its test executable compile. The new socket-independent response/header metadata test passes.
|
||||
- Compose configuration parses successfully with `FPOL_DOMAIN=game.example docker compose config --quiet`.
|
||||
- The combined real candidate import succeeds: 115 candidates, 30 contests, explicitly partial. The national inventory has 506 contests.
|
||||
|
||||
## Environment limits
|
||||
The full Debug CTest run passed 25 domain plus the then-current 18 application tests. After the final candidate-watch regression was added, all 19 application tests passed separately in Debug. Release passed the 25 domain and 18 application tests, then the added watch regression separately after rebuilding. These are local fallback checks, not a successful run of the configured GCC 12 pipeline.
|
||||
|
||||
The full Debug CTest run executes all 25 core tests successfully, then runs eight server tests. Two server tests pass; six cannot execute their socket-dependent paths because the sandbox rejects socket creation with `Operation not permitted`. The suite is deliberately still failing here, not skipped or reported green. HTTP success/error envelopes, real request transport, static delivery and shutdown need the normal development/CI environment. A browser interaction/visual check also remains outstanding.
|
||||
## Blocked checks — not passed or skipped
|
||||
|
||||
Docker's socket is inaccessible in this environment, and GCC 12 is not installed on the host. Consequently, the configured Modulus GCC 12/container workflow could not be verified here. The fallback builds local Modulus/Noto sources into ignored directories under this repository and uses already-cached Boost/OpenSSL/SQLite plus the existing local Ligo build. Release application compilation maps cached dependency configurations to Debug; this is an optimized application check, not a fully optimized dependency build or performance measurement. No shared library sources or dependency caches were modified.
|
||||
The full Debug CTest suite remains **red**: two server tests (help and invalid startup) pass, while seven HTTP/socket checks cannot execute because socket creation is rejected with `Operation not permitted`. These include the new cookie/Secure/HttpOnly/origin/CSRF/query checks. Ligo's new raw HTTP wire test also stops when its server cannot bind.
|
||||
|
||||
The committed Gitea workflow still runs the intended GCC 12 debug/release builds and the full HTTP suite. Run it, or the README's normal Modulus checks, before merging.
|
||||
The real-browser smoke test was attempted and stops at Node's `listen EPERM` before Chromium can exercise the app. Therefore no interactive/visual browser pass or screenshots are claimed. The checked-in Node/CDP test uses two isolated browser sessions and the actual C++ server; CI now invokes it after frontend/backend builds.
|
||||
|
||||
## Reproduce these local fallback checks
|
||||
A real Open America probe was attempted. It failed DNS resolution (`Host not found … try again later`) and left the source **disabled, unverified, with no successful capture**. No live election results or national feed coverage are claimed. civicAPI remains a capture-only probe pending an actual response contract. Provider fixtures used by tests are synthetic and never count as verification.
|
||||
|
||||
These paths are local artifacts, not portable prerequisites:
|
||||
Docker's daemon/socket is inaccessible and GCC 12 is not installed on this host. The Docker image, Caddy startup/certificate issuance, source-based Conan helper on a fresh networked machine, and the full GCC 12 debug/release/HTTP/browser pipeline still need execution outside this environment. Compose parsing is not a container deployment test.
|
||||
|
||||
## Build context and dependency handoff
|
||||
|
||||
Fallback builds use ignored `build/kickoff_debug`, `build/kickoff_release`, and `build/verification_*` directories, with locally built shared libraries and cached Boost/OpenSSL/SQLite. Release application compilation maps cached dependency configurations to Debug; it is an optimized application check, not a fully optimized dependency build or benchmark.
|
||||
|
||||
**The sibling Ligo repository has required source changes** in its service/HTTP interfaces and implementation, plus tests. They add optional query parsing, request headers, custom response status/headers, and raw HTTP client exchange. Default query handling and existing aggregate initialization remain compatible. Carry those library changes with this application change. The package-based CI needs that matching Ligo revision published/available before it can pass; `tools/build_workspace.py` and the Docker source build use the local sibling revision without publishing.
|
||||
|
||||
No deployment, library publishing, Git commit, or push was performed. Existing local accounts/passwords were not created or replaced. Test users live only in temporary databases; the failed provider probe is in ignored `build/source-probe.sqlite`.
|
||||
|
||||
## Reproduce
|
||||
|
||||
On a normal networked host, use the [README](../README.md) and [deployment guide](deployment.md). In this existing offline workspace, the configured fallback paths are:
|
||||
|
||||
```sh
|
||||
cmake --build build/kickoff_debug
|
||||
cmake --build build/kickoff_release
|
||||
python3 tests/test_core.py build/kickoff_debug/fpol_admin
|
||||
python3 tests/test_core.py build/kickoff_release/fpol_admin
|
||||
python3 tests/test_application.py build/kickoff_debug/fpol_admin build/kickoff_debug/fpol_ingest
|
||||
ctest --test-dir build/kickoff_debug --output-on-failure
|
||||
npm --prefix frontend run build
|
||||
node tests/browser.mjs build/kickoff_debug/fpol_server
|
||||
```
|
||||
|
||||
The local database and frontend assets are already prepared. Outside the socket-restricted sandbox, the locally built prototype can be started from this repo root:
|
||||
|
||||
```sh
|
||||
build/kickoff_debug/fpol_server --web-root frontend/dist
|
||||
```
|
||||
|
||||
Open `http://127.0.0.1:8080`. Provider JSON transport and automatic election-night coverage are separate outstanding checks listed in [the data report](data-coverage.md).
|
||||
Do not interpret the socket-independent successes as substitutes for the blocked HTTP/browser tests or real source verification.
|
||||
|
||||
Reference in New Issue
Block a user