Skip to content

fix(daemon): close review findings on the S6 stack (#838-#846) - #847

Merged
unohee merged 1 commit into
mainfrom
fix/s6-review-fixes
Oct 22, 2026
Merged

unohee merged 1 commit into
mainfrom
fix/s6-review-fixes

Conversation

@unohee

@unohee unohee commented Oct 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

Findings from a max-effort review of the unreleased S6 stack. Only defects that needed no design decision are fixed here.

Defects in the stack's own gates

Fences that did not reach every entry point

  • ollama-cloud direct path, tester LLM fallback, documenter, auditor, skill-documenter, openswarm work now receive workerSandbox / forbidPublication.
  • AGT-4444 policy now also covers provider switches (/api/provider, saved override on boot, openswarm provider) and fanout candidates, and allowDelegatedAdapters is mapped to the runner.
  • config.example.yaml no longer lists cursor in adapterRouting.fallbacks, which the daemon refuses to start with.

exec

  • exec answer --text without --correlation is rejected (exit 2) instead of silently dropping the text.
  • Redeploy targets the run's project_path, not process.cwd().
  • A refused deploy releases the hold it wrote; thrown errors give a message and exit 2 ({error} under --json).
  • Duplicate "operator paged" question no longer reported as a second approval.

Other: disk gate also measures the state DB volume; doc/comment corrections; .gitignore gains .env.* and nohup.out.

Behaviour changes to be aware of

Delegated-adapter switches return 403 without allowDelegatedAdapters; a saved override that violates the policy is ignored with a warning on boot; workerSandbox: on on a host with no sandbox now refuses bash in the stages above too; decline-draft issues are held before the claim.

Verification

  • npm run ci passes. Full test:coverage on this tree: 7895 passed, 1 failed in src/verify/runner.test.ts (baseStatus: 'infra'). The failing verify test differs run to run (2 different ones on feat(daemon): dispatch only Todo and stop declined issues before the claim (AGT-4784) #846's tree, a third here); each passes alone and this diff touches nothing under src/verify. No timeout was changed.
  • Each fix's new test was checked by reverting the change.
  • execCommand.test.ts was over the 1500-line cap; the runExecGuarded block moved to execGuarded.test.ts.

Not fixed (design decisions, tracked separately)

Worker loopback reaching the daemon's unauthenticated mutating API; web_fetch egress and pipeline entry points without fences (PR remediation, conflictResolver, /api/exec, openswarm run); disk-gate deadlock with protected RETRY_AT worktrees; credential exposure outside the sandbox; Backlog children of a decomposition never reaching Todo; AF_UNIX blocked under the loopback profile.

The cli.ts wiring of the four exec actions is covered by typecheck only (cli.ts is outside coverage).

Fingerprint now ignores the appended comment history so an unchanged issue
stays held, and a declined draft is kept on the task so the pre-claim hold can
see it. Fences reach ollama-cloud direct, tester, documenter, auditor,
skill-documenter and openswarm work. Provider switches and fanout candidates
obey the delegated-adapter policy. exec answer rejects --text without
--correlation, redeploys to the run's project, and releases a hold when the
deploy is refused. The disk gate also measures the state DB volume.
@unohee
unohee merged commit 3ef366d into main Oct 22, 2026
7 checks passed
@unohee
unohee deleted the fix/s6-review-fixes branch October 22, 2026 09:15
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