Repository navigation
docs(specs): 018 v0.3 release readiness audit records #424
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
160 commits
Select commit
Hold shift + click to select a range
7758d5b
docs(specs): add 018 v0.3 release readiness implementation plan
410838b
docs(specs): record 018 maintainer decisions OD-005..OD-008
633951b
docs(specs): resolve 018 OD-009 audit chain recovery
98b6779
docs(specs): add 018 v0.3 release readiness task list
c2b9380
docs(specs): 018 v0.3.0 release criteria RC-01..RC-08 (T005)
0340f8d
docs(specs): 018 audit skeleton, snapshot tools, module categories, k…
62da3a1
docs(specs): 018 inventory drafts, procedures, review evidence, OD-01…
213bdaa
docs(specs): 018 OD-019 hold unfixed security findings off-git
60a54bc
docs(specs): 018 findings F-001..F-255, component reviews, procedures…
eda9ee4
docs(specs): 018 fix plan (T050) and OD-024 sign-off request
79a1cfa
docs(specs): 018 note the T046 attempt and hand-off
8e8ce03
docs(specs): 018 record OD-022..OD-025 decisions
59b5b6a
docs(specs): 018 F-026/F-030/F-043 fixed-unverified after #420/#421/#423
e42ed2c
docs(specs): 018 F-029 fixed-unverified; RC-TAG-1 target c44cb179
a5797a2
docs(specs): 018 F-212/F-251 fixing (#425, #426); OD-026 playit address
559aa2e
docs(specs): 018 full hand-off in RESTART.md; RC-TAG-1 tagged
532b526
docs(specs): 018 fix PRs #428/#429; hand-off for groups 2 and 5
12c1f39
docs(specs): 018 hand-off lists open hardening PRs
34e9c8a
docs(specs): 018 hand-off: current focus is the held security fixes
8d5ef00
docs(specs): 018 full RESTART rewrite; F-212/F-251 fixed-unverified
29e6fdc
docs(specs): 018 rewrite RESTART.md as a complete hand-off
3eec417
docs(specs): 018 rc.1 release run timed out twice (operator image)
283f98f
docs(specs): 018 F-257 release image job timeout (fixing, #435)
claude 0c32dcf
docs(specs): 018 wave-1 fixes in flight; F-258 Module status churn
claude 5d5429b
docs(specs): 018 F-215 fixed-unverified (#432 merged)
claude 08a5eff
docs(specs): 018 F-257 fixed-unverified (#435 merged)
claude 5c6075d
docs(specs): 018 F-121 fixed-unverified (#438 merged)
claude 2319044
docs(specs): 018 session-4 hand-off in RESTART.md
claude 3990fa1
docs(specs): 018 apply OD-021/OD-026 resolutions and fixing statuses
claude 2319731
docs(specs): 018 RESTART.md session-5 live state
claude 1ca4b94
docs(specs): 018 F-105/F-106 fixing (#448)
claude 22eb81f
docs(specs): 018 RESTART.md group-18 PR state
claude 31a8589
docs(specs): 018 RESTART.md #440/#441/#447 state
claude a4276eb
docs(specs): 018 RESTART.md #444/#445 green, #448 fix
claude d0b9958
docs(specs): 018 RESTART.md #427 green
claude c8efeb5
docs(specs): 018 RESTART.md #446 green
claude df0ea33
docs(specs): 018 RESTART.md #440 green
claude 9051251
docs(specs): 018 RESTART.md #443 green, capture race
claude 76a7c1a
docs(specs): 018 F-259 capture download race (#449)
claude dbe4fac
docs(specs): 018 RESTART.md #447 green
claude 62af97d
docs(specs): 018 RESTART.md #448 green
claude eebfb0e
docs(specs): 018 RESTART.md #441 green
claude 0c4e0ef
docs(specs): 018 RESTART.md #430 conflict resolved
claude deca6fd
docs(specs): 018 RESTART.md #449 green
claude c666994
docs(specs): 018 RESTART.md all open PRs green
claude 0931c6c
docs(specs): 018 RESTART.md #427 merged
claude 2182e4e
docs(specs): 018 F-052/F-172/F-173 fixed-unverified (#428 merged)
claude 401aff2
docs(specs): 018 RESTART.md #430 re-merged
claude bfaadf6
docs(specs): 018 F-116/F-130 fixed-unverified (#429 merged)
claude bdd5e18
docs(specs): 018 #436 merged, findings fixed-unverified
claude 932c9f4
docs(specs): 018 #437 merged, findings fixed-unverified
claude 29f32fb
docs(specs): 018 #439 merged, findings fixed-unverified
claude 8f3da2f
docs(specs): 018 #433 merged, findings fixed-unverified
claude 8623085
docs(specs): 018 record session-5 maintainer decisions
claude 998a389
docs(specs): 018 #440 merged, findings fixed-unverified
claude 087fe4a
docs(specs): 018 #441 merged, findings fixed-unverified
claude c64661d
docs(specs): 018 #443 merged, findings fixed-unverified
claude 3f49083
docs(specs): 018 #444 merged, findings fixed-unverified
claude f6ea4cc
docs(specs): 018 #445 merged, findings fixed-unverified
claude b77c304
docs(specs): 018 #446 merged, findings fixed-unverified
claude a30fa32
docs(specs): 018 #447 merged, findings fixed-unverified
claude 04c8c6b
docs(specs): 018 #448 merged, findings fixed-unverified
claude bd91fbf
docs(specs): 018 #449 merged, findings fixed-unverified
claude 116d6e3
docs(specs): 018 file F-260 (dead GameServer/Restore phases), record …
claude 8b2ea81
docs(specs): 018 session-5 scout briefs (fix-group waves, OD-021 foll…
claude 1130ac9
docs(specs): 018 RESTART.md #430 green
claude 3b04dc9
docs(specs): 018 RESTART.md wave-1 PR state
claude 7585cdc
docs(specs): 018 RESTART.md CI state (coverage gate, master CRD stamp)
claude e618d00
docs(specs): 018 RESTART.md session-5 PR state refresh
claude d675c78
docs(specs): 018 RESTART.md mark #450 and #455 green
claude 125a729
docs(specs): 018 record #430 and #450-#455 merges, session-6 restart …
claude c18a943
docs(specs): 018 RESTART.md session-6 decisions and in-flight workflow
claude 49731d9
docs(specs): 018 RESTART.md wave-2 PRs, group 27 and agent coverage s…
claude c702cdd
docs(specs): 018 RESTART.md record #475 and #476
claude 2067342
docs(specs): 018 #464 merged, F-081 fixed-unverified
claude c0aed63
docs(specs): 018 #465 merged, findings fixed-unverified
claude ff0e74c
docs(specs): 018 F-181 closed-already-fixed by #446
claude 21c862e
docs(specs): 018 #467 merged, findings fixed-unverified
claude 1b18fff
docs(specs): 018 #468 merged, findings fixed-unverified
claude 3a3128c
docs(specs): 018 #470 merged, findings fixed-unverified
claude 8555af4
docs(specs): 018 #475 merged, findings fixed-unverified
claude bd13b32
docs(specs): 018 #476 merged, findings fixed-unverified
claude 6ab5230
docs(specs): 018 RESTART.md wave 3 in flight
claude 3632060
docs(specs): 018 wave-3 PRs, group-37 residual notes, CodeRabbit prac…
claude b624e23
docs(specs): 018 #460 merged, findings fixed-unverified
claude cc7813f
docs(specs): 018 #477 merged, findings fixed-unverified
claude 6c997f7
docs(specs): 018 #466 merged, findings fixed-unverified
claude 842212d
docs(specs): 018 #478 merged, findings fixed-unverified
claude a812df2
docs(specs): 018 #479 merged, findings fixed-unverified
claude f33a14c
docs(specs): 018 F-138 partly fixed by #480
claude 1c85785
docs(specs): 018 #480 merged, findings fixed-unverified
claude f0f495b
docs(specs): 018 #481 merged, findings fixed-unverified
claude 2cac332
docs(specs): 018 #482 merged, findings fixed-unverified
claude 0acbc2f
docs(specs): 018 #483 merged, findings fixed-unverified
claude d34bcbe
docs(specs): 018 RESTART.md wave 3 merged, next waves
claude c90ac32
docs(specs): 018 file F-261/F-262, record F-138 sign-off
claude c51ef3d
docs(specs): 018 RESTART.md wave 4 in flight
claude e877a56
docs(specs): 018 RESTART.md wave-4 PRs
claude 0db07fa
docs(specs): 018 RESTART.md refresh open PRs and next steps
claude 3c892a4
docs(specs): 018 #485 merged, findings fixed-unverified
claude 342d46a
docs(specs): 018 RESTART.md session 7, wave 5 in flight
claude 1c510c3
docs(specs): 018 #490 merged, findings fixed-unverified
claude 84de404
docs(specs): 018 #488 merged, findings fixed-unverified
claude 0a9568f
docs(specs): 018 RESTART.md open PR list after #488/#490
claude b3ad3d1
docs(specs): 018 plan.md Go version matches go.work (F-253)
claude 8ac1804
docs(specs): 018 #486 merged, findings fixed-unverified
claude 0afc451
docs(specs): 018 RESTART.md open PR list after #486
claude 4988cea
docs(specs): 018 #489 merged, findings fixed-unverified
claude 2828b6d
docs(specs): 018 RESTART.md open PR list after #489
claude 08ff8c1
docs(specs): 018 #487 merged, findings fixed-unverified
claude c675109
docs(specs): 018 RESTART.md wave 4 fully merged
claude 891feee
docs(specs): 018 RESTART.md wave-5 PRs
claude 5d2a0d5
docs(specs): 018 #485 merged, findings fixed-unverified
claude 10907e9
docs(specs): 018 #490 merged, findings fixed-unverified
claude de747c6
docs(specs): 018 #487 merged, findings fixed-unverified
claude 4c95a56
docs(specs): 018 #486 merged, findings fixed-unverified
claude 8bdb691
docs(specs): 018 #489 merged, findings fixed-unverified
claude 6d228d1
docs(specs): 018 #488 merged, findings fixed-unverified
claude fa9f6ce
docs(specs): 018 RESTART.md drop duplicate wave-4 merge lines
claude 7a225d1
docs(specs): 018 #491 merged, findings fixed-unverified
claude eb8b2be
docs(specs): 018 RESTART.md drop #491 from open list
claude 9e4db9f
docs(specs): 018 RESTART.md fix #491 merge date
claude 585edd1
docs(specs): 018 #492 merged, findings fixed-unverified
claude 96de61a
docs(specs): 018 #493 merged, findings fixed-unverified
claude dde10a0
docs(specs): 018 RESTART.md drop #492 and #493 from open list
claude 9d7cae1
docs(specs): 018 #494 merged, findings fixed-unverified
claude 8fd3351
docs(specs): 018 RESTART.md wave 5 fully merged
claude 0aed405
docs(specs): 018 RESTART.md note #495
claude dc8a391
docs(specs): 018 RESTART.md #495 merged
claude f42f466
docs(specs): 018 log RC-TAG-2 pending (#496)
claude f194357
docs(specs): 018 apply OD-021 resolutions to the audit procedures
claude 70ca3e4
Merge origin/master into 018-v0-3-release-readiness
claude cf2b6c1
docs(specs): 018 OD-021 procedures, second review round fixes
claude 6590737
docs(specs): 018 OD-021 procedures, facts re-checked against master
claude 15f7660
docs(specs): 018 web.md cites the roadmap entry for OD-021 item 13 (#…
claude f2c0ea9
docs(specs): 018 file F-263 (Servers page lists only gameplane-games)
claude 17d0ac4
docs(specs): 018 web.md cites F-263
claude 4caf639
docs(specs): 018 RESTART and OD-021 follow-up decisions (session 7)
claude df765ef
docs(specs): 018 RESTART.md #497 merged, #498 open
claude 4a55d20
docs(specs): 018 #498 merged, findings fixed-unverified
claude 6fa1b38
docs(specs): 018 RESTART.md #498 merged
claude 47c41a0
docs(specs): 018 servers-filter-by-namespace unblocked by #498
claude ad640c4
docs(specs): 018 rc.2 also waits for #502-#517
claude 521ca59
docs: address greptile and qodo review on the 018 audit procedures
ValgulNecron 60ae6a3
docs: fix the 018 audit procedure review findings (round 2)
ValgulNecron f041fa6
docs: close the remaining 018 audit review findings (round 3)
ValgulNecron 8249db8
docs(specs): publish 018 held audit records
ValgulNecron 11706d6
docs(specs): record the 018 held-records publication under OD-019
ValgulNecron f89f703
chore: merge master into 018-v0-3-release-readiness
claude 1cd82d3
docs(specs): tick spec-018 tasks already done on the record
claude 0af11e6
docs(specs): 018 rc.1 release record, status-wording re-check, last c…
claude 332f5ae
docs(specs): 018 move fixed held findings into findings.md, withdraw …
claude ac155c7
docs(specs): 018 record F-271/F-272 now that #545 merged
claude 95156bc
chore: merge master into 018-v0-3-release-readiness
claude 29e2fd4
chore: merge master into 018-v0-3-release-readiness
claude ec82d22
chore: merge master into 018-v0-3-release-readiness
claude 3d2ddbf
docs(specs): 018 record the 2026-10-04 kubelab live sweep
claude ecc2e1f
docs(specs): 018 count the live sweep as the live round (OD-029)
claude 57841bf
docs(specs): 018 OD-027 resolved, Job limits become Helm values (#573)
claude f586860
chore: merge master into 018-v0-3-release-readiness
claude File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,95 @@ | ||
| # Conventions (shared by every procedures file) | ||
|
|
||
| ## Cluster | ||
|
|
||
| Export the kubelab kubeconfig: | ||
| ```sh | ||
| export KUBECONFIG=~/kubelab.yaml | ||
| ``` | ||
|
|
||
| The Gameplane release is in namespace `gameplane-system`, named `gameplane`. Game servers are in namespace `gameplane-games`. | ||
|
|
||
| ## Reaching the API | ||
|
|
||
| Per OD-016, the ingress host `gameplane.local` is not used: it does not resolve from the audit devbox. Run: | ||
| ```sh | ||
| kubectl port-forward -n gameplane-system svc/gameplane-web 18080:80 | ||
| ``` | ||
|
|
||
| Use `GP=http://127.0.0.1:18080` for all API requests. The ingress sends `/` to `gameplane-web`, which serves the dashboard and proxies API paths to `gameplane-api`. | ||
|
|
||
| ## Sessions | ||
|
|
||
| Create a session with a POST to `$GP/auth/login`: | ||
| ```sh | ||
| curl -s -D headers.txt -H "Content-Type: application/json" \ | ||
| -d '{"username":"audit018-admin","password":"<password>"}' \ | ||
| $GP/auth/login | ||
| ``` | ||
|
|
||
| The response sets `gameplane_session` and `gameplane_csrf` cookies (both `HttpOnly` and `Secure`). Capture them: | ||
| ```sh | ||
| grep -i "^set-cookie:" headers.txt | grep gameplane_session > ~/gameplane-audit-018/session-<role>.txt | ||
| grep -i "^set-cookie:" headers.txt | grep gameplane_csrf >> ~/gameplane-audit-018/session-<role>.txt | ||
| chmod 600 ~/gameplane-audit-018/session-<role>.txt | ||
| rm headers.txt | ||
| ``` | ||
|
|
||
| Over plain HTTP, `curl` drops `Secure` cookies. Instead, extract and send them back: | ||
| ```sh | ||
| SESS=$(grep gameplane_session ~/gameplane-audit-018/session-<role>.txt | cut -d'=' -f2 | cut -d';' -f1) | ||
| CSRF=$(grep gameplane_csrf ~/gameplane-audit-018/session-<role>.txt | cut -d'=' -f2 | cut -d';' -f1) | ||
| curl -H "Cookie: gameplane_session=$SESS; gameplane_csrf=$CSRF" \ | ||
| -H "X-Gameplane-CSRF: $CSRF" \ | ||
| $GP/api/path | ||
| ``` | ||
|
|
||
| Every mutating request also includes `-H "X-Gameplane-CSRF: <gameplane_csrf value>"`. | ||
|
|
||
| ## Accounts | ||
|
|
||
| One session per role per round: | ||
| - `audit018-admin`: full access | ||
| - `audit018-operator`: operator access | ||
| - `audit018-viewer`: read-only access | ||
| - `audit018-collab`: collaborator access (when needed) | ||
|
|
||
| Admin access follows OD-015: `audit018-admin` is created with `kubectl exec -n gameplane-system deploy/gameplane-api -- /api bootstrap-admin --username audit018-admin` (the image's entrypoint is `/api`, see `api/Dockerfile`), and its password is kept in `~/gameplane-audit-018/admin.env` (mode 600, off-git). The other role accounts are created through the API as that admin. | ||
|
|
||
| ## Login budget | ||
|
|
||
| Rate limits per cluster: | ||
| - IP burst 10 (5/min) | ||
| - User burst 6 (3/min) | ||
|
|
||
| Each procedure states its login cost. Procedures that spend the budget on purpose (brute force, throttling tests) are marked **deferred to T031** and run last. | ||
|
|
||
| ## Naming and isolation | ||
|
|
||
| Every created object is named `audit018-<purpose>[-n]`, within Kubernetes' 63-character label limit. | ||
|
|
||
| Objects created with `kubectl` also carry the label `gameplane.io/audit: "018"`. Put it in the manifest's `metadata.labels`, or add it right after creating the object (`-l` on `kubectl apply` is a selector filter: it adds no label): | ||
| ```sh | ||
| kubectl apply -f <file> -n gameplane-games | ||
| kubectl label -f <file> -n gameplane-games gameplane.io/audit=018 | ||
| ``` | ||
|
|
||
| Pre-existing objects are **never** written to. This covers: | ||
| - GameServers: `mc-fabric`, `soak-bogus-pool`, `soak-no-preference`, `soak-pool-west`, `squad` | ||
| - ModuleSources: `default`, `uploads` | ||
|
|
||
| A procedure that needs an existing object creates its own `audit018-` copy first. | ||
|
|
||
| ## Evidence | ||
|
|
||
| Save all evidence under `audit/evidence/<INV-ID>/`, redacted: | ||
| - Share tokens as `<token>` (not the actual token) | ||
| - No cookies, CSRF values, passwords or secrets | ||
| - Each file stays under 1 MB | ||
|
|
||
| Evidence of a security boundary or control that does not hold is a security finding. It goes to `audit/held/evidence/<ID>/` (git-ignored) instead, until the fix merges (OD-019). | ||
|
|
||
| ## Automatable? | ||
|
|
||
| Each procedure states `yes` or `no`. For `yes`, propose a bucket from `test/e2e/buckets.sh`: | ||
| - `operator`, `api-auth`, `api-roles`, `api-rbac`, `api-agent`, `api-mods`, `ratelimit`, `bot-fast`, `bot-heavy`, `multicluster`, `upgrade` | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| # Component Review Coverage | ||
|
|
||
| One row per component (FR-003, SC-002). Columns are fixed by [contracts/audit-records.md](../contracts/audit-records.md#coveragemd). Allowed `Status` values: `not-started`, `in-review`, `complete`. | ||
|
|
||
| | Component | Scope reviewed | Method | Reviewer tier | Date | Status | Findings | | ||
| |-----------|----------------|--------|---------------|------|--------|----------| | ||
| | agent/ | All 33 agent files including cmd/main.go, internal/ handlers (actions, auth, caps, console, files, heartbeat, logs, mods, players, quiesce, rcon, status), openapi.yaml, specs.md | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-102, F-103, F-104, F-105, F-106, F-107, F-108, F-109, F-110, F-111 | | ||
| | api/ | cmd/main.go, cmd/bootstrap.go, internal/handlers/ (all non-test), internal/auth/, internal/rbac/, internal/db/ (full), internal/kube/, internal/audit/, internal/notify/ (partial), internal/ws/, internal/registry/, internal/telemetry/ | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-074, F-075, F-076, F-077, F-081, F-082, F-083, F-085, F-086, F-087, F-088, F-089 | | ||
| | audit-syslog-bridge/ | main.go, bridge_test.go, specs.md, README.md, Dockerfile, go.mod, .testcoverage.yml | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-195, F-196, F-197, F-198 | | ||
| | capture-sidecar/ | cmd/main.go, internal/auth/tls.go, internal/capture/ (afpacket.go, filter.go, writer.go), internal/httpserver/handlers.go, specs.md, Dockerfile, go.mod, .testcoverage.yml; operator sidecar client reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-187, F-188, F-189, F-190, F-191, F-192, F-193 | | ||
| | gameaction/ | action.go, action_test.go, specs.md, go.mod, .testcoverage.yml; api and agent importers reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-149, F-150, F-151, F-152 | | ||
| | gameproto/ | gameproto.go, classifier.go, registry.go, demo.go, minecraft.go, terraria.go, specs.md, go.mod, .testcoverage.yml, test files (partial), sentinel usage reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-153, F-154, F-155, F-156, F-157, F-158 | | ||
| | gp-module/ | All non-test source: cmd/gp-module/, internal/archetypes/, internal/common/, internal/packager/, internal/preview/, internal/scaffold/, internal/validator/, pkg/ subdirectories, specs.md, go.mod; test functions list; operator and API usage reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-159, F-160, F-161, F-162, F-163, F-164, F-165, F-166, F-167, F-168 | | ||
| | mcp-server/ | main.go, tools.go, fixadvice.go, internal/kube/client.go and client_test.go, specs.md, README.md, Dockerfile, .testcoverage.yml; chart RBAC and CRD usage reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-204, F-205, F-206, F-207, F-208, F-209, F-210 | | ||
| | netguard/ | netguard.go, netguard_test.go, specs.md, go.mod, .testcoverage.yml; all call sites grepped; operator and agent usage reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | none | | ||
| | operator/ | cmd/main.go, internal/agent/client.go, sidecar_capture.go, internal/controller/ (all non-test files), internal/modsrc/, internal/oci/, internal/verify/, api/v1alpha1/, config/, specs.md, go.mod; test fixtures reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-044, F-045, F-046, F-047, F-048, F-049, F-050, F-051, F-052, F-054, F-055, F-056, F-057, F-058, F-059, F-060, F-061, F-062, F-063 | | ||
| | sentinel/ | main.go, specs.md, Dockerfile, .testcoverage.yml, go.mod, main_test.go (partial); operator wiring reviewed; gameproto contract reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-179, F-180, F-181, F-182, F-183, F-184, F-185, F-186, F-254 | | ||
| | svcutil/ | env.go, env_test.go, server.go, server_test.go, specs.md, go.mod, .testcoverage.yml; all importers grepped; consumer binaries reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-170, F-171 | | ||
| | telemetry-receiver/ | main.go, main_test.go, specs.md, README.md, Dockerfile, go.mod, .testcoverage.yml; API reporter reviewed; chart wiring checked | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-200, F-201 | | ||
| | test/e2e/ | `test/e2e/buckets.sh`, `test/e2e/specs.md`, `test/e2e/internal/specs.md`, CI wiring (`.github/workflows/ci.yaml`), env/gameprobe/gamebot helpers, test suites, JSON schema validation | code-review | sonnet → opus | 2026-09-23 | complete | F-040, F-041, F-042 | | ||
| | tunnel/ | main.go, specs.md, Dockerfile.frp, Dockerfile.playit, Dockerfile.tailscale, go.mod, .testcoverage.yml, main_test.go (partial); operator wiring reviewed; docs/tunnels.md reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-172, F-173, F-174, F-175, F-176 | | ||
| | web/ | specs.md, index.html, package.json, eslint.config.js, tsconfig.json, src/main.tsx, src/router/tree.tsx, src/lib/ (all files), src/routes/ (most files and tabs), src/components/ (all directories); server-side endpoints reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-115, F-116, F-117, F-118, F-119, F-120, F-121, F-122, F-123, F-124, F-125, F-126, F-127, F-128, F-129, F-130, F-131, F-132, F-133, F-134, F-135, F-136, F-137, F-138, F-139, F-140, F-141, F-251 | | ||
| | charts/gameplane/ | Chart.yaml, values.yaml, all 18 templates, crds/*.yaml, docs/install.md, docs/networking.md, docs/security.md (chart sections); API flags, operator flags, CRD rendering, NetworkPolicy logic reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-028, F-212, F-213, F-214, F-215, F-216, F-217, F-218, F-219, F-220, F-221, F-222, F-223, F-224, F-225, F-226, F-252 | | ||
| | deploy/ | cluster.yaml, up.sh, down.sh, e2e.sh, upgrade.sh (all files); Makefile targets and script usage reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-029, F-232, F-233, F-234, F-255 | | ||
| | hack/ | check-doc-versions.sh, check-links.sh, check-specs.sh, gen-module-schema.py (all files); Makefile targets, CLAUDE.md commands, .testcoverage.yml thresholds reviewed | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-026, F-236, F-237 | | ||
| | .github/workflows/ | ci.yaml (all 1541 lines), release.yaml, publish-edge.yaml, images.yaml, republish-modules.yaml, screenshot-refresh.yaml, visual-diff.yaml, actions in .github/actions/, zizmor.yml, modules/build.sh, docs/contributing.md | code-review | opus → opus (independent, OD-020) | 2026-09-24 | complete | F-238, F-239, F-240, F-241, F-242, F-243, F-244, F-245 | | ||
|
ValgulNecron marked this conversation as resolved.
|
||
| | .github/actions/ | `build-e2e-images/action.yml`, `dump-cluster-state/action.yml`, `e2e-images/action.yml`, `go-cache/action.yml`, and their callers in `.github/workflows/ci.yaml` | code-review | sonnet → opus | 2026-10-04 | complete | F-264, F-265, F-271, F-272 | | ||
| | images/ | `README.md`, `common/steamcmd/Dockerfile`, `common/steamcmd/steam-install.sh`, `games/nuclear-option/Dockerfile`, `games/nuclear-option/entrypoint.sh`, and their build wiring in `.github/workflows/images.yaml` | code-review | sonnet → opus | 2026-10-04 | complete | F-266, F-267, F-268, F-269, F-270 | | ||
| | docs/ | `docs/agent-architecture.md`, `docs/architecture.md`, `docs/comparison-sources.md`, `docs/contributing.md`, `docs/dependencies.md`, `docs/game-coverage.md`, `docs/install.md`, `docs/key-rotation.md`, `docs/module-authoring.md`, `docs/networking.md`, `docs/notifications.md`, `docs/oidc.md`, `docs/roadmap.md`, `docs/security.md`, `docs/tunnels.md` | code-review | sonnet → opus | 2026-09-23 | complete | F-027, F-031, F-032, F-033, F-034, F-035, F-036 | | ||
| | root docs | `README.md`, `CHANGELOG.md`, `SECURITY_AUDIT.md`, `CLAUDE.md` | code-review | sonnet → opus | 2026-09-23 | complete | F-030, F-043, F-253 | | ||
| | design-export/ | `design-export/json/*.json` (365 files): extracted `name`/`type` fields and diffed `Screen/*` list against `web/src/router/tree.tsx` | code-review | sonnet → opus | 2026-09-23 | complete | none | | ||
| | modules/ | All 30 `modules/*/module.yaml` and `modules/*/template.yaml`; validated structurally against schemas; `modules/.schema/`, `modules/validate.py`, `docs/module-authoring.md` config-schema section; operator module-handling code | consistency-only | sonnet → opus | 2026-09-23 | complete | none | | ||
| | website/ | `website/src/config.ts`, `website/src/pages/games.astro`, `website/src/pages/index.astro`, content pages and docs; game-count and version claims; grepped for stale patterns across `*.mdx` and `.astro` | consistency-only | sonnet → opus | 2026-09-23 | complete | F-037, F-038, F-039 | | ||
Empty file.
1 change: 1 addition & 0 deletions
1
specs/018-v0-3-release-readiness/audit/evidence/baseline/crd-backups.json
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| [] |
1 change: 1 addition & 0 deletions
1
specs/018-v0-3-release-readiness/audit/evidence/baseline/crd-backupschedules.json
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| [] |
1 change: 1 addition & 0 deletions
1
specs/018-v0-3-release-readiness/audit/evidence/baseline/crd-clusters.json
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| [] |
42 changes: 42 additions & 0 deletions
42
specs/018-v0-3-release-readiness/audit/evidence/baseline/crd-gameservers.json
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| [ | ||
| { | ||
| "kind": "GameServer", | ||
| "name": "mc-fabric", | ||
| "namespace": "gameplane-games", | ||
| "uid": "2d67c5ad-ff8f-4e26-a188-be5ea9b6ad0b", | ||
| "generation": 4, | ||
| "phase": "Running" | ||
| }, | ||
| { | ||
| "kind": "GameServer", | ||
| "name": "soak-bogus-pool", | ||
| "namespace": "gameplane-games", | ||
| "uid": "e12cb363-e632-4433-9bec-deae2e9d5a57", | ||
| "generation": 1, | ||
| "phase": "Running" | ||
| }, | ||
| { | ||
| "kind": "GameServer", | ||
| "name": "soak-no-preference", | ||
| "namespace": "gameplane-games", | ||
| "uid": "62412014-b54a-4da4-b232-4e5543a80c90", | ||
| "generation": 1, | ||
| "phase": "Running" | ||
| }, | ||
| { | ||
| "kind": "GameServer", | ||
| "name": "soak-pool-west", | ||
| "namespace": "gameplane-games", | ||
| "uid": "65e25ef6-3eda-4eb4-935a-1f2e45389a77", | ||
| "generation": 1, | ||
| "phase": "Running" | ||
| }, | ||
| { | ||
| "kind": "GameServer", | ||
| "name": "squad", | ||
| "namespace": "gameplane-games", | ||
| "uid": "a86ae4e2-ef35-4463-8202-657daff52236", | ||
| "generation": 1, | ||
| "phase": "Failed" | ||
| } | ||
| ] |
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.