Compare commits

..

8 Commits

Author SHA1 Message Date
didericis-codex c1de7ee020 refactor(supervisor): separate MCP dispatch from transport
test / integration-docker (pull_request) Has been cancelled
test / image-input-builds (pull_request) Successful in 42s
test / unit (pull_request) Successful in 59s
test / coverage (pull_request) Has been skipped
tracker-policy-pr / check-pr (pull_request) Successful in 7s
2026-07-27 03:31:46 +00:00
didericis-codex 47686273c3 refactor(egress): extract outbound DLP request stage
test / integration-docker (pull_request) Has been cancelled
test / unit (pull_request) Successful in 1m7s
test / coverage (pull_request) Has been skipped
test / image-input-builds (pull_request) Successful in 52s
tracker-policy-pr / check-pr (pull_request) Successful in 9s
2026-07-27 03:31:46 +00:00
didericis-codex b16e347e8d refactor(egress): extract request policy stages 2026-07-27 03:31:46 +00:00
didericis-codex a1acdd9665 fix(orchestrator): bound streamed request bodies
test / integration-docker (pull_request) Has been cancelled
tracker-policy-pr / check-pr (pull_request) Failing after 7s
test / image-input-builds (pull_request) Failing after 13m54s
test / unit (pull_request) Failing after 13m59s
test / coverage (pull_request) Has been skipped
2026-07-27 03:31:46 +00:00
didericis-codex bb9f1cbbb4 fix(orchestrator): keep host client dependency-free 2026-07-27 03:31:46 +00:00
didericis-codex 2e3fa5cc7a refactor(orchestrator): replace manual HTTP dispatch with FastAPI 2026-07-27 03:31:46 +00:00
didericis-codex 21973e3565 build(orchestrator): pin FastAPI runtime dependencies 2026-07-27 03:31:46 +00:00
didericis-codex 0146450951 docs(prd): extend authoritative cleanup boundaries
prd-number-check / require-numbered-prds (pull_request) Successful in 13s
test / image-input-builds (pull_request) Successful in 3m18s
test / unit (pull_request) Successful in 57s
test / integration-docker (pull_request) Successful in 1m9s
test / coverage (pull_request) Successful in 19s
tracker-policy-pr / check-pr (pull_request) Failing after 10m30s
2026-07-27 03:31:46 +00:00
@@ -36,6 +36,15 @@ misleading behavior:
destructive plan.
5. Gateway log-pump threads race stream closure during shutdown and emit
uncaught exceptions even when shutdown otherwise succeeds.
6. Firecracker discovers VMs through whitespace-split `pgrep -a` output.
A configured cache path containing spaces can hide a live VM from the
snapshot and make its run directory appear orphaned.
7. Docker cleanup asks compose for its project snapshot in best-effort mode.
A transient query failure can therefore become an empty stopped-project
set and authorize deletion of associated state directories.
8. Firecracker artifact downloads and registry publication have no network
deadline, so an unresponsive registry can hold setup or release work
indefinitely.
These are one design problem: state used to authorize deletion, replacement,
or resource allocation must be authoritative at the point of use.
@@ -46,6 +55,8 @@ or resource allocation must be authoritative at the point of use.
appeared in a pre-confirmation snapshot.
- Firecracker cleanup proves immediately before action that a PID is still the
same Firecracker process and that a run directory is still orphaned.
- Firecracker process discovery reads NUL-delimited argv from `/proc`; paths
are never reconstructed from whitespace-delimited process listings.
- All backend cleanup discovery primitives raise a typed enumeration error on
operational failure. No backend may independently continue from a partial
snapshot.
@@ -60,6 +71,8 @@ or resource allocation must be authoritative at the point of use.
callers because bottles themselves are untrusted.
- Gateway child-output pumping treats expected stream closure during shutdown
as completion while preserving diagnostics for unexpected failures.
- Artifact pull, existence-check, and publication requests use explicit
network deadlines.
- Unit tests cover PID/path reuse, partial backend enumeration, transient
policy resolution failure, slow bodies, concurrency saturation, and stream
closure races.
@@ -94,6 +107,13 @@ Backend-specific primitives define how to identify a resource. Firecracker
uses process start identity plus canonical config/run paths; container
backends use authoritative CLI queries and stable resource names/labels.
Container engines expose destructive name-based commands without a portable
compare-and-delete operation. Cleanup therefore refreshes after confirmation
and requires every discovery query to succeed, minimizing but not claiming to
eliminate the final name-reuse race. A future engine-specific stable-ID
primitive may close that residual window without moving control flow back
into each backend.
### Enforcement state versus introspection state
Egress enforcement retains its deny-all fallback because uncertainty must not
@@ -124,6 +144,8 @@ reported through the supervisor's normal diagnostic channel.
5. Shared cleanup refresh/revalidation plus authoritative macOS discovery.
6. Strict supervisor introspection and bounded supervisor/Git HTTP work.
7. Gateway shutdown log-pump closure handling.
8. Lossless Firecracker process identities, authoritative Docker cleanup
queries, and bounded Firecracker artifact transfers.
## Open questions