Skip to content

Fail closed when live-path guard safety state is unavailable - #101

Open
palios-taey wants to merge 1 commit into
mainfrom
agent/codex-live-path-fail-closed-20260826
Open

palios-taey wants to merge 1 commit into
mainfrom
agent/codex-live-path-fail-closed-20260826

Conversation

@palios-taey

Copy link
Copy Markdown
Owner

Summary

  • Resolve explicit registry configuration first, then the committed conductor registry at $HOME/the-conductor/config/live_path_registry.json without duplicating registry contents.
  • Preserve read-only calls while failing closed for the guard-owned mutating shell vocabulary when registry/configuration, parse state, internal state, or wrapper state is unavailable.
  • Route one high-priority defect per node and failure class to the existing Redis supervisor route, with self fallback only for top-level sessions and a 15-minute TTL. Read-only passenger calls emit no repeated warning context.
  • Remove the worktree-cwd early return so explicit absolute live-checkout targets remain blocked; worktree-relative mutations remain allowed.
  • Add a mechanical live-path guard acceptance gate to make these branches non-regressible.

Documents-first provenance

  • Original guard and fail-open branches: 0374493.
  • Env-only change that exposed the process-inheritance hole: eeace5c.
  • Canonical committed registry: the-conductor e7dede433f8cd058c8498450d559b5813f46f1af.
  • Frozen contract target rule: parent_live_guard_CONTRACT.md lines 33-36 requires absolute live paths to be caught from elsewhere. The former live_guard_decision worktree early return contradicted that rule.
  • The new fail-closed policy supersedes the original availability-biased fail-open residual while retaining read-only availability.

Verification

  • GitNexus pre-edit impacts: LOW for live_guard_decision, _live_guard_registry_path, _live_guard_load_registry, _live_guard_split, and the pre-tool hook main entrypoint.
  • make syntax: PASS, including the new live_path_guard_acceptance gate.
  • python3 -m py_compile on changed Python: PASS.
  • Ruff: PASS for changed/new code; pre-existing _shared import-order exception excluded only for E402.
  • git diff --check: PASS.
  • gitleaks no-git scan: PASS.
  • Public pointer scan: PASS; no operator home/IP/credential value added.
  • Read-only source probe against the committed registry: 1,000 read decisions allowed, mean 0.0213 ms; synthetic git commit decision denied. No command executed.

Prepare-only boundary

No deployment, hook installation, environment change, live notification, service/API restart, tmux/session respawn, or production mutation was performed. Owner routing was exercised only with fake Redis. Merge and activation remain separately gated.

@palios-taey

Copy link
Copy Markdown
Owner Author

GitNexus aggregate scope warning

After indexing this isolated clone, detect_changes against origin/main reports HIGH aggregate scope: 58 changed symbols and eight affected cross-community flows. Individual pre-edit symbol impacts were LOW, but the pre-tool entrypoint now reaches identity/Redis/supervisor routing for a deduped defect and the classifier/parser flow for authorization.

Reviewed affected chains:

  • main -> _route_defect_once -> get_redis_and_node / resolve_supervisor / send
  • main -> live_guard_decision -> mutation classifier / parser / existing target matcher

This is not a merge endorsement. It is an explicit reason the existing R5 audit gate must remain blocking until both auditors inspect the exact head. No deployment or activation has occurred.

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