Skip to content

feat(ground-study): add fail-closed web authority capability (#4369) - #4372

Closed
d-sorgcodexagent[bot] wants to merge 24 commits into
codex/4369-validator-failure-stagefrom
codex/4369-ground-authority-capability
Closed

feat(ground-study): add fail-closed web authority capability (#4369)#4372
d-sorgcodexagent[bot] wants to merge 24 commits into
codex/4369-validator-failure-stagefrom
codex/4369-ground-authority-capability

Conversation

@d-sorgcodexagent

Copy link
Copy Markdown
Contributor

Outcome

Introduces the fail-closed browser boundary for the qualified Python regional-ground authority:

  • isolated loopback-only FastAPI/Uvicorn child process owned and reaped by the launcher
  • ephemeral bearer token kept out of command-line arguments and browser code
  • same-origin Vite proxy that injects authentication server-side
  • exact Python/TypeScript regional-ground-authority-capability/v1 contracts
  • typed unreachable versus invalid-response browser states

The sole endpoint is an authenticated capability query and intentionally advertises regional_ground_execution=false.

Verification

  • 7 focused Python authority/launcher tests
  • 7 focused React capability/proxy tests
  • live isolated-process readiness/authentication/shutdown probe
  • Ruff, format, focused MyPy
  • TypeScript and zero-warning ESLint
  • Vite production build (214 modules; inherited bundle-size advisory only)
  • campaign manifest validation and 8 tests
  • documentation governance and diff checks

Scope

This is stacked on PR #4371, which is stacked on #4370. It adds no job submission, result polling, cancellation endpoint, physics invocation, or Run-button enablement. Issue #4369 remains open until the execution authority and matched controllers are qualified.

@d-sorgcodexagent

Copy link
Copy Markdown
Contributor Author

Scope expansion at exact head 990b2a156e4a939dbd1bd0c874895dc4f3fd53e7:

  • exact callback-free physical regional options, all skid/roll settings, executor revision, and source plus launch-origin-qualified plans are now bound into the job
  • base surface, every overlay, and axis origin receive one common tee/ball-center translation with recomputed provenance/digests in Python and React
  • unsupported parallelism, timeout, and configurable fail-fast policy fields are rejected; v1 truthfully retains only max_trials
  • strict Python/React execution-result v1 now binds job/input identities and canonical complete scalar evidence
  • expected-job validation additionally binds result ID, trial count, zero-based ordering, and every series ID
  • prior hosted Bandit B310 failure remains fixed with explicit fixed-loopback HTTP transport

Focused composed verification: 52 Python job/qualification/result tests and 31 React job/result tests, plus TypeScript, ESLint, Ruff, MyPy, manifest and docs gates. The source slices separately passed 243 Python regressions/all 804 React tests for qualification and 1,048 Python/PyQt/all 818 React tests for result binding.

Execution remains unavailable: no submission/polling/cancellation endpoints, no physical invocation through the authority, no matched Run controls, and no release claim. Issue #4369 stays open.

@d-sorgcodexagent

Copy link
Copy Markdown
Contributor Author

Qualified headless local-authority admission is now published at exact head d1d3facb4251a7e03644193fdfbeee635b41a43d.

What changed:

  • atomically binds the registered Waterloo/Penner production runner to the exact qualified v1 capability;
  • validates authenticated readiness from the bounded exact capability body;
  • removes the React test-only admission override while retaining strict job preflight;
  • closes submit-versus-close and exceptional-lifespan shutdown races found by independent review;
  • aligns Python/TypeScript reason, flag, detail-length, media-type, and body limits;
  • keeps visible PyQt6/React Run/Cancel unmounted or disabled because neither client yet has a truthful current-editor execution-job constructor;
  • updates SPEC, campaign manifest, and all three canonical handoffs atomically.

Local qualification:

  • 2,014 Python/PyQt/shared-simulation tests passed; one optional Rust-wheel parity test skipped;
  • 860 React tests passed across 132 files;
  • pinned MyPy 1.13 and Ruff 0.14.10, Ruff format, high-severity Bandit, TypeScript, zero-warning ESLint, 214-module production build, deterministic fixture check, campaign-manifest tests, docs governance, quality policy, minimum-test contract, module budget, JSON, and diff hygiene passed.

Still open and not claimed: visible imported-job Run/Cancel/save workflow, current-editor job preparation, durable persistence/recovery, static-host authority, packaged PyQt helper qualification, compiled Rust parity, downstream parity, protected exact-head CI, ancestor integration, and release. Human review is considered approved per owner instruction; repository protection and required checks remain authoritative.

@dieterolson

Copy link
Copy Markdown
Collaborator

Consolidated into #4409. Closing to reduce CI/CD runner load.

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