Repository navigation
[P0] Fail closed when management credentials are absent #78
Description
Production blocker
Wardnet must not become ready with unauthenticated management writes on a non-loopback listener. Credential-free operation is permitted only for explicit loopback development and must remain visibly non-production.
Protected/default truth is main@a52ccd0a24a727d9349bb32def7713882d8cad1e.
Current owning candidate — 2026-09-08 KST
PR #155 is the bounded authentication candidate at exact fb93b61a4a4da30a3471453051ebfb0ed3f63d34, Ready/mechanically mergeable on exact protected main. It non-force adopted #171 with a two-parent merge; compare is behind 0 with merge base exact protected main. The effective 13-path delta preserves fail-closed startup for public binds, explicit loopback development mode, blank/ambiguous credential rejection, constant-time token comparison, readonly/write separation, 401 versus 403, and the protected external administrator-Secret lifecycle.
Ready metadata is review admission only, not merge authorization.
Exact-current evidence
On unchanged fb93b61a4a4da30a3471453051ebfb0ed3f63d34:
- CI
34020141305— SUCCESS; - Fuzz
34020141277— SUCCESS; - Security Scan
34020141306— SUCCESS; - SAST Semgrep
34020141279— SUCCESS; - CodeQL PR
34020141314— FAILURE only at delegated terminal-verdict enforcement.
CodeQL detect job 101451083576 succeeded. Compatibility job 101455725295 acquired hosted compute and successfully requested the exact current-head scan, then failed closed because the authenticated terminal receipt was absent. This is the central producer/publication boundary tracked by .github#1929; active .github#1902 is mutable owner repair, not a Wardnet dependency. No source churn or predecessor verdict is authorized.
Live ruleset 18156473 still has generic approving-review count 1 with no named required reviewer/team/code-owner/last-push reviewer and exposes OrganizationAdmin/always; .github#772 remains the solo-maintainer governance repair. Self/model approval, routine administrator bypass, merge-as-probe, force push, destructive rebase and gate weakening remain forbidden.
Completion gate
Close only after #155 or a verified successor carrying every unique authentication/runtime/security delta reaches protected main, the resulting protected source is revalidated, and one unchanged integration candidate has terminal-valid current repository/security/coverage/package/SBOM/provenance/review/thread/governance evidence plus fresh protected-base compatibility. Ordinary approval or CodeQL deadlock never qualifies for emergency bypass.
Activity
chore(pr): remove unrelated destination and WAF drift
merge(main): keep fail-closed public-bind auth with KEV catalog
seonghobae commentedon Sep 3, 2026
Fresh exact-head evidence correction — 2026-09-03
Re-read PR #155 at unchanged head
e6f05d77858e91c176cff25c4b11e790bc5dcdd1on protectedmain@cc15cc2c34daf8c104eeb83d52a6a66f3cd6e128.33590350994, Fuzz33590350997, Security Scan33590350967, and SAST Semgrep33590350991remain terminal GREEN.33590351182, bootstrap job100122902000is GREEN andcoverage-source-treejob100272722468is now GREEN. The still-nonterminal current-PR gate iscoverage-evidencejob100479589911, which remains queued before execution. An older same-SHAcoverage-evidencesuccess has no fix(auth): fail closed without write-capable admin on public bind #155 PR identity and is not accepted as substitute evidence..github#712already carries the exact100479589911runner-acquisition RCA;.github#1644/ #772 remains the governance reconciliation owner. No leaf source churn or routine bypass is justified.seonghobae commentedon Sep 3, 2026
Fresh exact-state correction (2026-09-04 KST): the current-PR Required OpenCode lane for
#155@e6f05d77858e91c176cff25c4b11e790bc5dcdd1has progressed beyond the older issue-body snapshot without any Wardnet source/base change.coverage-source-tree100272722468andcoverage-evidence100479589911are both terminal success after acquiring hosted runners. The sole remaining job in run33590351182isopencode-review100659819151, still queued pre-checkout withrunner_id=0, empty runner/group identity, andsteps=[]since2026-09-03T13:03:28Z. Repository-owned CI/Fuzz/Security/SAST remain terminal GREEN and all current inline review threads remain resolved. Central.github#712now carries the narrowed selective model-review acquisition RED/GREEN acceptance; no no-op source churn, predecessor evidence reuse, or routine bypass is justified.seonghobae commentedon Sep 4, 2026
2026-09-04 exact-current revalidation supersedes the stale central-lane paragraph in the issue body. PR #155 remains unchanged at
e6f05d77858e91c176cff25c4b11e790bc5dcdd1on protectedmain@cc15cc2c34daf8c104eeb83d52a6a66f3cd6e128; repository-owned CI/Fuzz/Security/SAST remain terminal GREEN. Required OpenCode run33590351182has advanced:required-workflow-bootstrap100122902000,coverage-source-tree100272722468, andcoverage-evidence100479589911are now terminal success. The only remaining current-PR review job isopencode-review100659819151, still queued pre-checkout withsteps=null. Same-SHA predecessor PR evidence remains non-transferable. The exact queue specimen and GREEN acceptance were advanced to.github#712; solo-maintainer ruleset reconciliation remains.github#772/.github#1644. No Wardnet source churn, synthetic approval, predecessor-evidence reuse, or routine bypass is justified by this state.seonghobae commentedon Sep 4, 2026
Fresh exact-current evidence supersedes the queued coverage snapshot in the issue body without changing the acceptance contract. Canonical candidate remains
#155@e6f05d77858e91c176cff25c4b11e790bc5dcdd1on protectedmain@cc15cc2c34daf8c104eeb83d52a6a66f3cd6e128. Repository CI/Fuzz/Security/SAST remain terminal GREEN. Required OpenCode run33590351182now has bootstrap100122902000, coverage-source-tree100272722468, and coverage-evidence100479589911terminal success. Current-PRopencode-review100659819151acquired runner1001655142, started2026-09-04T01:37:43Z, completed setup and the current-head review request, and remainsin_progressat the fail-closed verdict boundary. This queue→execution transition is also recorded on central owner.github#712(issuecomment-5534622023). Do not rerun/churn the unchanged leaf while it is legitimately executing; predecessor #138 evidence still does not transfer. Closure still requires protected-main integration through satisfiable live governance.seonghobae commentedon Sep 4, 2026
Current exact #155 central-gate transition, 2026-09-04 KST:
#155@e6f05d77858e91c176cff25c4b11e790bc5dcdd1and protectedmain@cc15cc2c34daf8c104eeb83d52a6a66f3cd6e128remain unchanged. Repository CI33590350994, Fuzz33590350997, Security Scan33590350967, and SAST33590350991remain terminal GREEN. In Required OpenCode run33590351182, bootstrap/source-tree/coverage-evidence are terminal success. Final job100659819151eventually acquired GitHub-hosted runner1001655142at2026-09-04T01:37:43Z; setup andRequest current-head OpenCode review executionsucceeded, then the fail-closed verdict wait ran to the central three-hour administrative boundary and the job/run ended non-passing/cancelled without a current-head verdict. Runner acquisition is therefore no longer the terminal cause for this canary. Exact RCA/RED-GREEN acceptance was handed to.github#712in owner comment5535918616: persist/consume a verdict bound to repo+PR+head+request identity, distinguish provider/request completion from admin timeout, and do not terminate legitimate long review merely by elapsed time. No leaf churn or rerun storm is justified while that owner repair is pending; the current terminal timeout remains non-bypass-eligible under the declared emergency policy.seonghobae commentedon Sep 4, 2026
Fresh protected-main integration state — 2026-09-05 KST: #155 remains at exact
f74ff25a321dfb1d7109719e2a1fc77e47dc4898on protectedmain@5829a0f08d78de464dd24393ce5d0f25fba9d126, Ready/mergeable andbehind_by=0. This head exists for the real non-destructive #159 ancestry adoption; no source-neutral redispatch commit has been added.The prior queued snapshot is superseded. Exact-current Wardnet-owned repository/security evidence is terminal GREEN:
33904633002— SUCCESS;33904632999— SUCCESS;33904633208— SUCCESS;33904633082— SUCCESS.CodeQL PR
33904632978remains a central current-head-verdict failure rather than a Wardnet auth-source failure. Separately, Required OpenCode run33904630655has now fully materialized: bootstrap101126549783, superseded-run cancellation101126550052, exact-head admission101188868905, coverage-source-tree101221028466, and coverage-evidence101247706677are all SUCCESS. The sole failing job isopencode-review101281544719.That job acquired a real Ubuntu 24.04 runner, verified the live Ready PR and exact SHA, loaded the trusted receipt gate, obtained OIDC plus the repository-scoped app token, and successfully POSTed
event_type=opencode-reviewwith exact repository/PR/base/head/run identity. The fail-closed verifier then found no authenticatedAPPROVEDorCHANGES_REQUESTEDreceipt fromopencode-agenton the same SHA and terminated. This proves current runner/coverage materialization is no longer the cause for this canary; the missing artifact is the downstream authenticated review verdict.The exact downstream specimen and RED/GREEN acceptance are now on central owner
.github#1929comment5552078997. That owner path must repair the dispatcher-identity contract without breaking the scheduler dispatcher, then let the exact current-head review publish its authenticated receipt and rerun only the failed required OpenCode job. No source churn, synthetic/self/model approval, predecessor evidence, routine administrator bypass, or gate weakening is justified.Issue closure still requires this fail-closed management-auth delta to reach protected
mainthrough then-live exact-head CodeQL/OpenCode/governance gates. The remaining central failures are non-bypass-eligible under the declared emergency policy.