Skip to content

feat: integrate governed runtime and reboot-safe self-hosting - #87

Merged
2233admin merged 88 commits into
2233admin:mainfrom
1012839419a-alt:codex/project-branch-integration
Sep 1, 2026
Merged

feat: integrate governed runtime and reboot-safe self-hosting#87
2233admin merged 88 commits into
2233admin:mainfrom
1012839419a-alt:codex/project-branch-integration

Conversation

@1012839419a-alt

Copy link
Copy Markdown
Contributor

Summary

Integrates the accumulated governed-runtime and evidence/proof work with reboot-safe self-hosting recovery.

  • Adds durable local-admin initialization, post-reboot recovery checks, and source-build deployment guidance.
  • Keeps the control plane available when browser workers are unavailable; browser availability now uses Compose identity, health, and runtime readiness.
  • Makes retained-session recovery explicit and bounded; fleet transport 401s preserve identity only for requests that actually carried a fleet credential.
  • Adds independently authorized API restart, per-process restart proof, candidate-image verification, and Docker daemon restart gates.

Verification

  • Python targeted matrix: 134 passed
  • Frontend auth/restart checks: 27 passed
  • Playwright E2E: 6 passed
  • Production build, TypeScript, ESLint, Ruff, Compose, and script/YAML parsing passed

Boundaries

The immutable v0.4.1 release does not include these recovery behaviors. A separately authorized release is still required before public installer users can rely on them. Privileged Docker daemon restart was not run locally; the CI gate is included.

@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 291 files, which is 191 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 2e4513ea-ebb5-4ae8-b02c-69cef9bf9d0b

📥 Commits

Reviewing files that changed from the base of the PR and between 851aef2 and 8eda049.

⛔ Files ignored due to path filters (2)
  • frontend/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • odp-rs/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (291)
  • .dockerignore
  • .env.docker.example
  • .env.example
  • .env.nas.example
  • .github/scripts/verify-candidate-agent-images.sh
  • .github/scripts/verify-daemon-restart.sh
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • .gitignore
  • Dockerfile
  • README.md
  • _bmad-output/implementation-artifacts/spec-browser-runtime-bundle.md
  • _bmad-output/implementation-artifacts/spec-feishu-direct-doubao-query.md
  • _bmad-output/implementation-artifacts/spec-feishu-table-driven-douyin-doubao-workflow.md
  • _bmad-output/implementation-artifacts/spec-gh-29-admin-iii-collection-attempt.md
  • _bmad-output/implementation-artifacts/spec-gh-30-odp-query-reconciliation.md
  • _bmad-output/implementation-artifacts/spec-gh-31-collector-ingress-receipts.md
  • _bmad-output/implementation-artifacts/spec-gh-32-evidence-batch-materialization.md
  • _bmad-output/implementation-artifacts/spec-gh-33-researchgraph-v2-evidence-review-pinned-fold.md
  • _bmad-output/implementation-artifacts/spec-gh-34-delivery-authorization.md
  • _bmad-output/implementation-artifacts/spec-gh-35-controlled-receiver-delivery.md
  • _bmad-output/implementation-artifacts/spec-gh-36-non-bypass-happy-vertical.md
  • _bmad-output/implementation-artifacts/spec-novnc-browser-capabilities-opencli-upgrade.md
  • agent/Dockerfile
  • agent/entrypoint.sh
  • backend/acquisition/registry.py
  • backend/acquisition/runner.py
  • backend/agent_runtime_dispatch.py
  • backend/agent_runtimes/base.py
  • backend/agent_runtimes/codex_adapter.py
  • backend/agent_runtimes/pi_adapter.py
  • backend/agent_runtimes/registry.py
  • backend/agent_server.py
  • backend/api/v1/__init__.py
  • backend/api/v1/automations.py
  • backend/api/v1/browser_containers.py
  • backend/api/v1/browsers.py
  • backend/api/v1/controlled_receiver_routes.py
  • backend/api/v1/delivery_authorization_routes.py
  • backend/api/v1/delivery_execution_routes.py
  • backend/api/v1/identity.py
  • backend/api/v1/iii_collections.py
  • backend/api/v1/nodes.py
  • backend/api/v1/odp_reconciliation.py
  • backend/api/v1/records.py
  • backend/api/v1/research_graph_v2_routes.py
  • backend/api/v1/studio_workflows.py
  • backend/api/v1/workbench.py
  • backend/api/v1/workers.py
  • backend/browser_pool.py
  • backend/channels/doubao_research_channel.py
  • backend/channels/feishu_table_channel.py
  • backend/channels/registry.py
  • backend/config.py
  • backend/main.py
  • backend/mcp_server.py
  • backend/migrations/versions/a8b9c0d1e2f3_add_iii_collection_ledger.py
  • backend/migrations/versions/a9b0c1d2e3f4_add_collector_ingress_receipts.py
  • backend/migrations/versions/aa1b2c3d4e5f_add_automation_starter_key.py
  • backend/migrations/versions/b0c1d2e3f4a5_add_evidence_batch_materialization.py
  • backend/migrations/versions/c1d2e3f4a5b6_add_delivery_authorization.py
  • backend/migrations/versions/d2e3f4a5b6c7_add_delivery_execution.py
  • backend/migrations/versions/e3f4a5b6c7d8_add_delivery_reservation_attempt.py
  • backend/migrations/versions/f4a5b6c7d8e9_add_delivery_reconciliation_evidence.py
  • backend/migrations/versions/g5b6c7d8e9f0_harden_delivery_evidence_guards.py
  • backend/migrations/versions/h6i7j8k9l0m_converge_materialization_status_index.py
  • backend/migrations/versions/l9m0n1o2p3q4_add_browser_runtime_bundles.py
  • backend/migrations/versions/m0n1o2p3q4r5_add_opencli_default_v2.py
  • backend/migrations/versions/n1o2p3q4r5s6_merge_delivery_and_browser_heads.py
  • backend/migrations/versions/o2p3q4r5s6t7_merge_workbench_and_integration_heads.py
  • backend/migrations/versions/p3q4r5s6t7u8_merge_codex_runtime_and_integration_heads.py
  • backend/migrations/versions/q4r5s6t7u8v9_merge_materialization_and_project_heads.py
  • backend/migrations/versions/z7v8w9x0y1z2_add_workbench_runtime_records.py
  • backend/models/__init__.py
  • backend/models/automation.py
  • backend/models/browser.py
  • backend/models/delivery_authorization.py
  • backend/models/delivery_execution.py
  • backend/models/iii_collection.py
  • backend/models/workbench.py
  • backend/odp/query_client.py
  • backend/schemas/automation.py
  • backend/schemas/browser.py
  • backend/schemas/delivery_authorization.py
  • backend/schemas/delivery_execution.py
  • backend/schemas/evidence_manifest.py
  • backend/schemas/iii_collection.py
  • backend/schemas/operations_agent.py
  • backend/schemas/provider.py
  • backend/schemas/provider_capacity.py
  • backend/schemas/record.py
  • backend/schemas/research_graph_v2.py
  • backend/schemas/source.py
  • backend/schemas/workbench.py
  • backend/security/controlled_receiver.py
  • backend/security/fleet_auth.py
  • backend/security/identity.py
  • backend/security/local_auth.py
  • backend/services/automation_starter_service.py
  • backend/services/browser_capability_service.py
  • backend/services/browser_service.py
  • backend/services/image_studio_service.py
  • backend/services/operations_agent_runtime_service.py
  • backend/services/plugin_registry_service.py
  • backend/services/record_service.py
  • backend/services/workbench_service.py
  • backend/workflow/capability_projection.py
  • backend/workflow/channel_source_executor.py
  • backend/workflow/delivery_authorization.py
  • backend/workflow/delivery_execution.py
  • backend/workflow/evidence_batch_materialization_facts.py
  • backend/workflow/evidence_batch_materializer.py
  • backend/workflow/iii_collection_dispatch.py
  • backend/workflow/iii_collection_store.py
  • backend/workflow/node_registry.py
  • backend/workflow/opencli_hda_tracer.py
  • backend/workflow/research_graph_v2.py
  • backend/workflow/workflow_run_events.py
  • chrome/Dockerfile
  • chrome/entrypoint.sh
  • chrome/runtime-bundles/opencli-default/1/manifest.json
  • chrome/runtime-bundles/opencli-default/2/manifest.json
  • chrome/script-host/background.js
  • chrome/script-host/host.html
  • chrome/script-host/manifest.json
  • chrome/script-host/packs/index.json
  • chrome/script-host/packs/page-basics/content.js
  • contracts/sql/odp_records.sql
  • docker-compose.non-bypass-acceptance.yml
  • docker-compose.yml
  • docs/backend-capability-exposure-matrix.yaml
  • docs/local-first-auth-PRD.md
  • docs/workbench.md
  • frontend/app/(app)/agent-workbench/page.tsx
  • frontend/app/(app)/browsers/page.tsx
  • frontend/app/(app)/operations-agents/page.tsx
  • frontend/app/(app)/settings/page.tsx
  • frontend/app/(app)/studio/projects/[projectId]/data/page.tsx
  • frontend/app/(app)/system/page.tsx
  • frontend/app/login/page.tsx
  • frontend/components/auth/auth-gate.tsx
  • frontend/components/auth/auth-provider.tsx
  • frontend/components/browsers/browser-act-packs-panel.tsx
  • frontend/components/browsers/browser-runtime-bundles-panel.tsx
  • frontend/components/browsers/chrome-instance-form-dialog.tsx
  • frontend/components/browsers/chrome-instances-panel.tsx
  • frontend/components/flow/workflow-editor-session.tsx
  • frontend/components/providers/primary-model-card.tsx
  • frontend/components/records/project-graph-explorer.tsx
  • frontend/components/shell/app-header.tsx
  • frontend/components/system/restart-api-card.tsx
  • frontend/components/workbench/event-transcript.tsx
  • frontend/components/workbench/proposal-details.tsx
  • frontend/components/workbench/turn-list.tsx
  • frontend/e2e/auth-recovery.spec.mjs
  • frontend/e2e/browser-runtime-bundle.spec.mjs
  • frontend/e2e/login.spec.mjs
  • frontend/lib/api/auth-events.ts
  • frontend/lib/api/browser-endpoints.ts
  • frontend/lib/api/browser-pool-types.ts
  • frontend/lib/api/browser-runtime-types.ts
  • frontend/lib/api/client.ts
  • frontend/lib/api/endpoints.ts
  • frontend/lib/api/hooks.ts
  • frontend/lib/api/recovery.ts
  • frontend/lib/api/restart-orchestration.ts
  • frontend/lib/api/types.ts
  • frontend/lib/api/workbench-endpoints.ts
  • frontend/lib/api/workspace-endpoints.ts
  • frontend/lib/auth/oidc.ts
  • frontend/lib/auth/session.ts
  • frontend/lib/auth/types.ts
  • frontend/lib/navigation.ts
  • frontend/lib/records/project-record-graph.ts
  • frontend/lib/workbench/events.ts
  • frontend/lib/workbench/use-live-workbench-events.ts
  • frontend/lib/workflow/node-catalog.ts
  • frontend/lib/workflow/node-contracts.ts
  • frontend/lib/workflow/studio-templates.ts
  • frontend/package.json
  • frontend/playwright.config.mjs
  • frontend/scripts/check-auth-recovery-regressions.mjs
  • frontend/scripts/check-control-plane-regressions.mjs
  • frontend/scripts/check-dashboard-regressions.mjs
  • frontend/scripts/check-inbox-regressions.mjs
  • frontend/scripts/check-navigation-transition-regressions.mjs
  • frontend/scripts/check-project-workbench-regressions.mjs
  • frontend/scripts/check-record-relationship-regressions.mjs
  • frontend/scripts/check-restart-recovery.mjs
  • frontend/scripts/check-workflow-regressions.mjs
  • frontend/scripts/test-workbench-events.mjs
  • frontend/scripts/test-workflow-lifecycle-strip.mjs
  • iii/lib/odp_record.py
  • iii/workers/collector-opencli/src/main.py
  • iii/workers/odp-ingest-bridge/src/main.py
  • odp-rs/Cargo.toml
  • odp-rs/Dockerfile.query
  • odp-rs/crates/odp-contracts/src/lib.rs
  • odp-rs/crates/odp-ingest/Cargo.toml
  • odp-rs/crates/odp-ingest/src/handlers.rs
  • odp-rs/crates/odp-ingest/src/handlers/tests.rs
  • odp-rs/crates/odp-query/Cargo.toml
  • odp-rs/crates/odp-query/src/main.rs
  • odp-rs/crates/odp-query/src/query.rs
  • odp-rs/crates/odp-query/src/types.rs
  • odp-rs/crates/odp-store/src/writer.rs
  • openspec/changes/local-codex-agent-runtime/proposal.md
  • openspec/changes/local-codex-agent-runtime/specs/local-codex-agent-runtime/spec.md
  • openspec/changes/local-codex-agent-runtime/tasks.md
  • scripts/ensure-script-host.mjs
  • scripts/ensure-violentmonkey-userscripts-access.mjs
  • scripts/install-agent.sh
  • scripts/install-managed-opencli.ps1
  • scripts/install-recovery.ps1
  • scripts/install-recovery.sh
  • scripts/install.ps1
  • scripts/install.sh
  • scripts/lark-cli-bridge.ps1
  • scripts/non_bypass_proof_contract.py
  • scripts/patch-opencli.js
  • scripts/resolve-browser-runtime-bundle.mjs
  • scripts/run_non_bypass_happy_vertical.py
  • scripts/verify_managed_opencli_runtime.py
  • start.sh
  • tests/acceptance/fixtures/non-bypass-relay.conf
  • tests/acceptance/fixtures/opencli-proof
  • tests/acceptance/fixtures/opencli-proof.sha256
  • tests/acceptance/non_bypass_vertical.py
  • tests/acceptance/test_non_bypass_happy_vertical.py
  • tests/integration/iii_collection_test_support.py
  • tests/integration/test_auth_api.py
  • tests/integration/test_delivery_authorization_api.py
  • tests/integration/test_delivery_execution_api.py
  • tests/integration/test_delivery_execution_identifier_race.py
  • tests/integration/test_delivery_execution_migration_guards.py
  • tests/integration/test_evidence_batch_materialization_api.py
  • tests/integration/test_iii_collection_cancellation.py
  • tests/integration/test_iii_collection_vertical.py
  • tests/integration/test_legacy_native_intelligence_migration.py
  • tests/integration/test_legacy_plugin_migration.py
  • tests/integration/test_local_workspace_api.py
  • tests/integration/test_materialization_index_migration.py
  • tests/integration/test_research_graph_v2_api.py
  • tests/integration/test_weibo_zhihu_collection.py
  • tests/integration/test_workflow_capabilities_api.py
  • tests/unit/agent_runtimes/test_base.py
  • tests/unit/agent_runtimes/test_codex_adapter.py
  • tests/unit/api/test_automation_starters.py
  • tests/unit/api/test_nodes_install_script.py
  • tests/unit/api/test_workbench_api.py
  • tests/unit/channels/conftest.py
  • tests/unit/channels/test_doubao_research_channel.py
  • tests/unit/channels/test_feishu_table_channel.py
  • tests/unit/channels/test_opencli_channel.py
  • tests/unit/channels/test_rss_channel.py
  • tests/unit/channels/test_rss_channel_errors.py
  • tests/unit/channels/test_rss_channel_schema_drift.py
  • tests/unit/odp/test_odp_reconciliation_route.py
  • tests/unit/odp/test_query_client.py
  • tests/unit/security/test_controlled_receiver_transport.py
  • tests/unit/security/test_fleet_auth.py
  • tests/unit/security/test_local_auth.py
  • tests/unit/test_acquisition_capabilities.py
  • tests/unit/test_acquisition_runner.py
  • tests/unit/test_agent_image_runtime_packaging.py
  • tests/unit/test_agent_server.py
  • tests/unit/test_browser_pool.py
  • tests/unit/test_browser_runtime_bundle.py
  • tests/unit/test_capability_exposure_matrix.py
  • tests/unit/test_controlled_receiver.py
  • tests/unit/test_delivery_authorization.py
  • tests/unit/test_delivery_execution.py
  • tests/unit/test_geo_acquisition_api.py
  • tests/unit/test_iii_collection_dispatch.py
  • tests/unit/test_image_studio_service.py
  • tests/unit/test_installer_recovery_helpers.py
  • tests/unit/test_main.py
  • tests/unit/test_managed_opencli_verifier.py
  • tests/unit/test_migration_heads.py
  • tests/unit/test_operations_agent_runtime_service.py
  • tests/unit/test_operations_agent_schema.py
  • tests/unit/test_patch_opencli_remote_bridge.py
  • tests/unit/test_provider_capacity.py
  • tests/unit/test_public_release_contract.py
  • tests/unit/test_research_graph_v2.py
  • tests/unit/test_restart_api.py
  • tests/unit/test_violentmonkey_userscripts_access.py
  • tests/unit/test_workbench_service.py
  • tests/unit/test_workers_api.py
  • tests/unit/test_workflow_run_lock.py
  • tests/unit/workflow/test_channel_source_executor.py

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gitguardian

gitguardian Bot commented Aug 31, 2026

Copy link
Copy Markdown

️✅ There are no secrets present in this pull request anymore.

If these secrets were true positive and are still valid, we highly recommend you to revoke them.
While these secrets were previously flagged, we no longer have a reference to the
specific commits where they were detected. Once a secret has been leaked into a git
repository, you should consider it compromised, even if it was deleted immediately.
Find here more information about risks.


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

@1012839419a-alt
1012839419a-alt force-pushed the codex/project-branch-integration branch from fe84e31 to 67b5e3a Compare August 31, 2026 01:36
@1012839419a-alt
1012839419a-alt force-pushed the codex/project-branch-integration branch from 67b5e3a to e919d93 Compare August 31, 2026 01:36
@1012839419a-alt
1012839419a-alt force-pushed the codex/project-branch-integration branch 2 times, most recently from fc6ab1f to 0ac1670 Compare August 31, 2026 03:12
@1012839419a-alt

Copy link
Copy Markdown
Contributor Author

Merge handoff — 2026-09-01

Canonical head: 9731764a (fix: restore system recovery smoke).

Resolved the integration regressions left by overlapping merges:

  • Playwright production smoke now starts the existing Next standalone launcher instead of incompatible next start.
  • The /system smoke fixture now matches the complete SystemConfig contract and the current 系统设置 heading.
  • The guarded RestartApiCard is restored on the redesigned System Settings page; explicit RESTART confirmation remains required.

Verification:

  • targeted ESLint, full frontend lint, TypeScript, and 27 auth/restart regressions passed locally;
  • Linux standalone launcher returned HTTP 200 and all 6 Playwright production smoke tests passed;
  • GitHub CI run 33420106600: Browser Extension, Next Frontend, Source Recovery Smoke, Backend Quality, Frontend Workflow Checks, Alembic Migrations, ODP Rust, GitGuardian, and CodeRabbit status all succeeded;
  • PR reports CLEAN and MERGEABLE.

Scope boundary: this PR is the canonical integration baseline. It does not absorb the dirty primary worktree or the separate codex/doubao-capture-quality branch. Merge this PR first, then rebase/cherry-pick remaining bounded work onto updated main.

Residual review note: CodeRabbit reported success but skipped content review because the PR exceeds its 100-file limit (291 files); CI and targeted manual verification are the available evidence for this integration PR.

@2233admin
2233admin merged commit 2de34cc into 2233admin:main Sep 1, 2026
16 checks passed
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.

2 participants