Skip to content

estafeta 3.2.0: provider policy, takeover guard, Windows, live checks across hosts - #5

Merged
pashbel merged 7 commits into
mainfrom
relay-hardening-3.1.1
Oct 16, 2026
Merged

pashbel merged 7 commits into
mainfrom
relay-hardening-3.1.1

Conversation

@pashbel

@pashbel pashbel commented Oct 15, 2026

Copy link
Copy Markdown
Collaborator

Supersedes #4: #4 was merged into its stale base branch agent-relay-3.1.0 after #3 had already landed, so none of this reached main.

Draft while the third Codex review round runs. The full description follows at release.

  • Windows support, verified in CI (job object, file-based stop request, index file modes).
  • Takeover guard: a solo session-start no longer takes over a live thread.
  • A project AI providers table, asked for on first use and enforced by delegate.
  • Live checks:
    • codex exec;
    • Antigravity through T3;
    • orchestrators in Claude Code and Codex, including their native subagents.

Plan: docs/plans/relay-hardening.md.

🤖 Generated with Claude Code

pashbel and others added 7 commits October 15, 2026 16:32
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nose failed CLI workers

- Windows: keep the index file mode for changed files (os.access reports every
  file executable), so commits no longer stale DONE evidence; stop workers
  with CTRL_BREAK before taskkill so a running check can record itself.
- collect reports a CLI worker's exit code and stderr tail when no result
  block exists (seen live: gemini without login exits 41).
- scripts/golden/live_cli.py replays consult/write golden paths with a real
  provider CLI; codex exec 0.162.1 passed both live.
- Adapters: Codex must always pass --sandbox (user config may default to
  danger-full-access); Gemini lowers approval mode in untrusted folders.
- CI runs every suite even after a failure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On Windows the supervisor tracked only the leader, so a timed-out worker
counted as exited while its check runner was still recording, leaving the
check 'running' and its lock held. A job object now plays the role of the
POSIX process group: the supervisor waits for every descendant, sends
CTRL_BREAK first and terminates the job after the grace period. The runtime
descendant test now runs on Windows too, with a non-signalling PID probe.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… file

- A solo begin no longer supersedes a session in the same checkout that acted
  within SESSION_WORKFLOW_TAKEOVER_IDLE_MINUTES (default 30) or has open
  delegations; it joins in parallel and warns. Observed live: a separate T3
  thread's session-start took over the orchestrator and its claims.
- Supervisors pass SESSION_WORKFLOW_STOP_FILE to workers and write it before
  any signal, so a worker's check run stops its own check and records it
  abandoned even where signals cannot reach it (Windows without a console).
- The golden stub reports blocked when a required check does not pass, as
  the packet asks; no_process patterns are unique per run.
- Plan extended to 3.2.0 (provider policy, orchestrator hosts).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…elegate

- PROJECT.md gets a marked 'AI providers' table (provider, allowed modes,
  models). session-start asks the user once when status reports
  provider_policy: missing and records the answer; the template has the
  section.
- delegate start refuses without the table (providers_unset) and refuses any
  provider, mode or model outside it (provider_not_allowed); delegate
  providers shows the policy. Account-level IDs such as claude-pricefx are
  supported.
- Golden scenario provider-policy plays the first-use path end to end.
- This project's table: all available providers except the Claude (Pricefx)
  work account (user, 2026-10-15).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- scripts/golden/live_orchestrator.py gives a real orchestrator a plain
  agent-relay request in a fixture with project-local skills. Passed live:
  Claude Code -> codex exec, Codex (workspace-write + network) -> claude -p,
  Claude Code -> Agent subagent, Codex -> multi_agent subagent.
- Adapters document orchestrator hosts and their sandbox needs; native
  subagents are recorded as host tasks with --model.
- A newer state schema now tells an outdated (often shadowing global) copy
  how to update, as seen live with a 2.4.1 global session-end.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex review round 3 returned 11 findings, now listed in the plan. PR #5 CI
passed on Windows at 29fb17e, which closes R1. The handover explains how to
continue this branch on another computer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@pashbel
pashbel marked this pull request as ready for review October 16, 2026 14:18
@pashbel
pashbel merged commit c373020 into main Oct 16, 2026
6 checks passed
@pashbel
pashbel deleted the relay-hardening-3.1.1 branch October 16, 2026 17:56
pashbel added a commit that referenced this pull request Oct 16, 2026
The handover, project context and plan pointed the next computer at
branch relay-hardening-3.1.1 and a draft PR #5. PR #5 is merged, so the
work continues on main and the old branches can be deleted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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