Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
312 commits
Select commit Hold shift + click to select a range
77ba160
Run closed namespace test in Firecracker CI
JacobWeyer Nov 2, 2026
91405a9
Integrate reviewed MCP harness and network acceptance gates
JacobWeyer Nov 2, 2026
b346b27
Require exact capture authority at the destination boot
JacobWeyer Nov 2, 2026
5f0f324
Require exact capture authority at the destination boot
JacobWeyer Nov 2, 2026
6446314
Pin managed capture artifacts before host I/O
JacobWeyer Nov 2, 2026
f5e3404
Pin managed capture artifacts before host I/O
JacobWeyer Nov 2, 2026
c5c41d8
Inherit unknown MCP write restrictions through trusted ancestry
JacobWeyer Nov 2, 2026
4e03f85
Distinguish retained retired boot sources from missing owners
JacobWeyer Nov 2, 2026
ac41b4c
Distinguish retained retired boot sources from missing owners
JacobWeyer Nov 2, 2026
43c8ebf
Integrate reviewed inherited MCP unknown-write restrictions
JacobWeyer Nov 2, 2026
17353d1
Require all three actual helper acceptance targets in CI
JacobWeyer Nov 2, 2026
67144ff
Persist managed boot, capture, and start authority
JacobWeyer Nov 2, 2026
eff7cca
Merge reviewed MCP helper CI gate
JacobWeyer Nov 2, 2026
f313dd0
Stage MCP operator publication on coordinator checkpoint
JacobWeyer Nov 2, 2026
eaa2edd
Transfer only closed private allocation policy leases
JacobWeyer Nov 2, 2026
3531c23
Require exact finalized managed attach environment
JacobWeyer Nov 2, 2026
ef8f487
Seal managed attach identity before finalization
JacobWeyer Nov 2, 2026
b825d68
Require exact finalized managed attach environment
JacobWeyer Nov 2, 2026
96be624
Type managed recovery-required host outcomes
JacobWeyer Nov 2, 2026
1ea4117
Release and retire exact managed sandbox owners
JacobWeyer Nov 2, 2026
7614880
Own managed boot, policy retirement and disk capture on the host
JacobWeyer Nov 2, 2026
6961ace
Serialize managed harness events with cold interruption
JacobWeyer Nov 2, 2026
6d3ec1d
Merge reviewed durable MCP coordinator
JacobWeyer Nov 2, 2026
6b5f29c
Fence managed attachment and alternate disks without blocking inventory
JacobWeyer Nov 2, 2026
418f19f
feat: publish operator policy through an authenticated readiness barrier
JacobWeyer Nov 2, 2026
32639d7
Preserve MCP recovery while dispatch is disabled
JacobWeyer Nov 2, 2026
cd30514
Give managed boot finalization its own response envelope
JacobWeyer Nov 2, 2026
bc692ae
Merge managed host runtime with disabled recovery
JacobWeyer Nov 2, 2026
1848290
fix: require permanent source proof for operator publication
JacobWeyer Nov 2, 2026
0417b5a
Merge coordinator boot and operator publication producers
JacobWeyer Nov 2, 2026
561dbc7
Merge reviewed operator publication proof correction
JacobWeyer Nov 2, 2026
fec9f99
Enforce global MCP admission and persist discovery leases
JacobWeyer Nov 2, 2026
5ee7453
Merge reviewed MCP operator publication and protocol
JacobWeyer Nov 2, 2026
5d07367
Define authenticated managed cold asset inspection contract
JacobWeyer Nov 2, 2026
78dd730
Lock MCP connection before initial admission execution
JacobWeyer Nov 2, 2026
49a0725
Merge reviewed global MCP and discovery admission
JacobWeyer Nov 2, 2026
549f50a
Define authenticated managed cold asset inspection contract
JacobWeyer Nov 2, 2026
83cde7d
Add identity-only managed boot bridge contracts
JacobWeyer Nov 2, 2026
b400935
Verify actual managed cold boot assets on the host
JacobWeyer Nov 2, 2026
b15345e
Drive managed creation and recovery from durable pinned intents
JacobWeyer Nov 2, 2026
19b3c36
Preserve unsupported cold asset inspection on older hosts
JacobWeyer Nov 2, 2026
5b56470
Compose trusted MCP admission and managed lifecycle consumers
JacobWeyer Nov 2, 2026
18da1ae
Replace staging MCP adapters with durable cold lifecycle
JacobWeyer Nov 2, 2026
e18a44d
fix: fence managed placement and retain original launch inputs
JacobWeyer Nov 2, 2026
80ebdf0
Add standalone durable MCP stack fixture
JacobWeyer Nov 2, 2026
c6641fe
fix: use held slot reservation for managed placement
JacobWeyer Nov 2, 2026
abb99a1
Merge reviewed managed coordinator and host producers
JacobWeyer Nov 2, 2026
9632ab4
Integrate reviewed managed MCP boot and recovery producers
JacobWeyer Nov 2, 2026
8562c52
Wire managed MCP runtime into orchestrator startup
JacobWeyer Nov 2, 2026
1bd250d
Merge reviewed deterministic MCP stack fixture
JacobWeyer Nov 2, 2026
d4e3e98
test(mcp): add shared stack runner contract and observations
JacobWeyer Nov 2, 2026
a7e070e
Keep managed session listener enrollment idempotent
JacobWeyer Nov 2, 2026
313c83d
test(mcp): consume fixed call plans and native proof records
JacobWeyer Nov 2, 2026
394bf10
Merge reviewed deterministic MCP stack fixture
JacobWeyer Nov 2, 2026
01e545a
test(mcp): add bounded model fixture call plans and result proof
JacobWeyer Nov 2, 2026
34adead
Add bounded OAuth fixture token lifetimes
JacobWeyer Nov 2, 2026
73b0077
Merge shared MCP acceptance runner checkpoint
JacobWeyer Nov 2, 2026
020c48d
test(mcp): drive held-write recovery through public observations
JacobWeyer Nov 2, 2026
8c29cae
fix(mcp): preserve expected result depth in fixture plans
JacobWeyer Nov 2, 2026
bbcb079
test: launch stack scenarios through public automations
JacobWeyer Nov 2, 2026
fea3165
Merge reviewed MCP runtime for acceptance denial checks
JacobWeyer Nov 2, 2026
39beaac
test: emit native MCP completion evidence and bounded probes
JacobWeyer Nov 2, 2026
f1b8135
test: observe native barriers and managed recovery
JacobWeyer Nov 2, 2026
81032e7
test: allow a fixed same-call rebind denial probe
JacobWeyer Nov 2, 2026
c2399cc
test: add external MCP policy acceptance drivers
JacobWeyer Nov 2, 2026
1f7e749
fix(mcp): deny automation writes without an explicit grant
JacobWeyer Nov 2, 2026
da87b61
test: require observed MCP policy and OAuth refusals
JacobWeyer Nov 3, 2026
b6f7bb0
merge: assemble reviewed MCP source for cold-proof fixture correction
JacobWeyer Nov 3, 2026
d7f1875
merge: assemble reviewed MCP source for cold-proof fixture correction
JacobWeyer Nov 3, 2026
69e55d8
Use fresh names for native fixture proof files
JacobWeyer Nov 3, 2026
c4cb4d8
fix(crypto): place security entropy helper before tests
JacobWeyer Nov 3, 2026
151342a
fix(mcp): accept canonical origin issuer identifiers
JacobWeyer Nov 3, 2026
4eb9057
test: match task listener insert builder in fixture
JacobWeyer Nov 3, 2026
6bfafcc
Merge reviewed MCP qualification and fixture corrections
JacobWeyer Nov 3, 2026
00b7ec9
test: drive managed revocation and outbox recovery
JacobWeyer Nov 2, 2026
9dcb329
test: observe actual managed cold boot and network denial
JacobWeyer Nov 3, 2026
b8cb681
test: assemble complete public MCP stack runner
JacobWeyer Nov 3, 2026
d557573
test(mcp): correct native recovery evidence checks
JacobWeyer Nov 3, 2026
45a64dc
test: declare managed policy fixture binding writers
JacobWeyer Nov 3, 2026
00ddb80
ci: require MCP acceptance source tests
JacobWeyer Nov 3, 2026
8458bff
Merge reviewed managed MCP binding writer inventory qualification
JacobWeyer Nov 3, 2026
74a55d0
test: add isolated MCP platform substrate library
JacobWeyer Nov 3, 2026
ebeb032
test: close platform core validation and cleanup gaps
JacobWeyer Nov 3, 2026
535ee69
Fix empty persistent Claude test fixture loop
JacobWeyer Nov 3, 2026
2ca90d4
test: declare managed driver simulation exclusions
JacobWeyer Nov 3, 2026
a417345
Merge reviewed Claude empty-event fixture correction
JacobWeyer Nov 3, 2026
9926c5b
fix: align platform fixture with strict context
JacobWeyer Nov 3, 2026
ba29097
ci: require MCP platform source tests
JacobWeyer Nov 3, 2026
cf79576
test(mcp): add fixed guard and fixture image recipes
JacobWeyer Nov 3, 2026
1e3ac56
Materialize strict platform input manifests
JacobWeyer Nov 3, 2026
7f6d4fc
fix(firecracker): accept enabled read-only network sysctls
JacobWeyer Nov 3, 2026
4dbdbb1
Add native route and mutual TLS probe tools to test guard
JacobWeyer Nov 3, 2026
0031504
Build and require both physical MCP CI matrices
JacobWeyer Nov 3, 2026
2c6ec97
Fix physical CI checkout ownership and child cleanup
JacobWeyer Nov 3, 2026
5302cb1
test(mcp): compose isolated platform acceptance stack
JacobWeyer Nov 3, 2026
d9e8e9b
test(mcp): qualify native routes and production FC lifecycle
JacobWeyer Nov 3, 2026
b30db89
test(mcp): retain fatal physical evidence write failures
JacobWeyer Nov 3, 2026
6cd5775
fix(ci): prepare MCP source test scratch and select TAP
JacobWeyer Nov 3, 2026
01160d9
test(ci): align platform lane contract with root bootstrap
JacobWeyer Nov 3, 2026
a565b99
fix: execute managed guest commands through the live boot owner
JacobWeyer Nov 3, 2026
83d3d03
fix(mcp): allow the pinned fixture DNS capability
JacobWeyer Nov 3, 2026
11ac5e2
fix(ci): exclude legacy runtime files from MCP source export
JacobWeyer Nov 3, 2026
ca8f3e1
fix(mcp): export source images through the classic store
JacobWeyer Nov 3, 2026
e38afe0
fix(mcp): preserve config linkage across archive conversion
JacobWeyer Nov 3, 2026
f5b3c34
Consolidate feature-only Drizzle schema snapshots
JacobWeyer Nov 3, 2026
cf505a5
fix(netstack): preserve TCP half-close in both directions
JacobWeyer Nov 3, 2026
00b6905
test(mcp): close effect workers after setup failures
JacobWeyer Nov 3, 2026
3fce41e
fix(web): refresh connection state after MCP publication
JacobWeyer Nov 3, 2026
9ba2a44
fix(mcp): reject lossy numeric arguments before acceptance
JacobWeyer Nov 3, 2026
d0c9039
refactor(web): infer MCP grant type from profile form schema
JacobWeyer Nov 3, 2026
abf6a88
fix(mcp): trim numeric coefficients in linear time
JacobWeyer Nov 3, 2026
8be45ed
fix(sandbox): bind managed child to host lifetime
JacobWeyer Nov 3, 2026
c7e3434
fix(sandbox): reclaim closed addresses and disposable staging
JacobWeyer Nov 3, 2026
e7c8492
perf(mcp): batch live binding catalog reads
JacobWeyer Nov 3, 2026
ec45515
Integrate reviewed MCP numeric integrity and fixture ownership fixes
JacobWeyer Nov 3, 2026
bf837b8
fix(mcp): reject lossy numeric schema input
JacobWeyer Nov 3, 2026
65f0096
fix(sandbox): fence delayed managed network retirement
JacobWeyer Nov 3, 2026
1b50dc4
test(proxy): use valid retirement policy digest
JacobWeyer Nov 3, 2026
08993d1
Preserve administrator MCP schema numeric intent
JacobWeyer Nov 3, 2026
dcaa317
test: set loose file permissions independent of umask
JacobWeyer Nov 3, 2026
1efdb94
Merge reviewed sandbox lifecycle and incarnation cleanup fixes
JacobWeyer Nov 3, 2026
5b54a58
Merge reviewed umask-independent permission fixture
JacobWeyer Nov 3, 2026
6bf299d
Fix native macOS SDK discovery in MCP asset producer
JacobWeyer Nov 3, 2026
5f7bda7
Fix VZ entitlement format validation
JacobWeyer Nov 3, 2026
dff53ab
Fix native DNS startup order in MCP platform
JacobWeyer Nov 3, 2026
fb7b557
test(vz): preserve parked exec submission failures
JacobWeyer Nov 3, 2026
005c4bc
vz: supply boot entropy and gate saved configurations
JacobWeyer Nov 3, 2026
a4a897b
Accept exact defaults from pinned MCP platform images
JacobWeyer Nov 3, 2026
3235ac5
Use bounded temporary storage for archive inspection
JacobWeyer Nov 3, 2026
93d6fc8
Compare equivalent inspected capability names exactly
JacobWeyer Nov 3, 2026
ecac850
Fix local VZ DNS fixture TTL
JacobWeyer Nov 3, 2026
4f71c75
fix: let fixture hosts answer DNS queries
JacobWeyer Nov 3, 2026
d7f47b3
fix: request complete native link address metadata
JacobWeyer Nov 3, 2026
dc1030b
fix: retain private fixture container stderr
JacobWeyer Nov 3, 2026
e72cb41
fix: keep edge module temporary files in bounded tmpfs
JacobWeyer Nov 3, 2026
5b1aec0
fix(mcp): preserve source export permissions
JacobWeyer Nov 3, 2026
44c1ddb
fix: include worker dependencies in orchestrator image
JacobWeyer Nov 3, 2026
b5f91c0
fix: rebake orchestrator on worker dependency changes
JacobWeyer Nov 3, 2026
e9e61ca
fix(mcp): use bounded writable scratch for guest publication
JacobWeyer Nov 3, 2026
6b62407
fix(mcp): accept queued image jobs before digest observation
JacobWeyer Nov 4, 2026
e567bc1
fix: prepare private state in the MCP guest fixture image
JacobWeyer Nov 4, 2026
761f560
fix(mcp): accept ready jobs without informational digest
JacobWeyer Nov 4, 2026
0b6f766
fix: read MCP guest proof through authenticated download route
JacobWeyer Nov 4, 2026
f5f6cef
fix: encode MCP credential lease request digests
JacobWeyer Nov 4, 2026
66a11a5
fix: retain public RPC methods in fixture failure diagnostics
JacobWeyer Nov 4, 2026
98b5584
fix: enable fixture MCP connection after catalog publication
JacobWeyer Nov 4, 2026
b37cc8e
fix: match host observer drive IDs to production slots
JacobWeyer Nov 4, 2026
6cab6bd
Bound managed host calls by the restore RPC budget
JacobWeyer Nov 4, 2026
33fea9f
Log safe managed reconciliation failure reasons
JacobWeyer Nov 4, 2026
a85f5da
fix: use prepared guest identity for managed policy
JacobWeyer Nov 4, 2026
7af9daa
fix: verify managed policy against prepared network receipt
JacobWeyer Nov 4, 2026
ce6b675
fix: stop fixture host before cleaning proxy processes
JacobWeyer Nov 4, 2026
0eacac6
fix: retry guard package fetches and reject incomplete indexes
JacobWeyer Nov 4, 2026
8107e1c
fix: bound guard package retries outside apt
JacobWeyer Nov 4, 2026
a26f8c0
fix(mcp): preserve bounded file-download error codes
JacobWeyer Nov 4, 2026
ea7ec77
Merge upstream main into external MCP development
JacobWeyer Nov 4, 2026
0f1d682
fix(sandbox): route managed file transfers through their boot owner
JacobWeyer Nov 4, 2026
28f389e
test(mcp): stage acceptance and verify owner file transfers
JacobWeyer Nov 4, 2026
c7e64aa
fix(mcp): keep asset input generation dependency-free
JacobWeyer Nov 4, 2026
defc7c9
fix(host): preserve restore identity and disk-only readiness
JacobWeyer Nov 5, 2026
b248eb5
test(mcp): handle sessions without integration grants
JacobWeyer Nov 5, 2026
a13aa2f
test(mcp): cover empty Claude tool manifests
JacobWeyer Nov 5, 2026
0d068ec
fix(mcp): deny requests after authority revocation
JacobWeyer Nov 5, 2026
6fd0f7b
test(mcp): await durable approval in projection fixture
JacobWeyer Nov 5, 2026
d320159
fix(mcp): preserve exact deferred call identity across turn completion
JacobWeyer Nov 5, 2026
14b6c14
test(mcp): retain safe fixture readiness failure labels
JacobWeyer Nov 5, 2026
11038ed
test(mcp): keep automation fixtures alive and verify cleanup ownership
JacobWeyer Nov 5, 2026
a817d5a
test(mcp): accept automation task identifiers in observer
JacobWeyer Nov 5, 2026
db776d1
test(mcp): resume deferred write fixtures
JacobWeyer Nov 6, 2026
cccdefe
test(mcp): handle fresh prompts on resumed fixtures
JacobWeyer Nov 6, 2026
4f8c422
test(mcp): confirm session teardown before deleting ownership
JacobWeyer Nov 6, 2026
3c47e2e
test(mcp): match native plan approval results
JacobWeyer Nov 6, 2026
124ec88
test(mcp): verify trusted native plan denials
JacobWeyer Nov 6, 2026
9305f6f
Merge upstream main into external MCP development
JacobWeyer Nov 6, 2026
f64af04
Fix MCP child compilation from effective parent grants
JacobWeyer Nov 6, 2026
ec87828
test(mcp): wait for child session activation
JacobWeyer Nov 7, 2026
005ef3c
fix(mcp): retry requests during managed start publication
JacobWeyer Nov 7, 2026
43c4308
fix(mcp): identify staged harnesses in guest probes
JacobWeyer Nov 7, 2026
6b4d419
fix(mcp): keep platform source checks read-only
JacobWeyer Nov 7, 2026
520769d
test(mcp): separate managed DNS and TLS denial probes
JacobWeyer Nov 7, 2026
4e53a05
test(mcp): validate every duplicate unknown-write receipt
JacobWeyer Nov 7, 2026
731265d
test(mcp): keep managed authority proof independent of guest DNS
JacobWeyer Nov 7, 2026
1310277
test(mcp): probe worker authentication from the trusted runner
JacobWeyer Nov 7, 2026
4d7bcbe
test(mcp): observe denials from the proxy daemon log
JacobWeyer Nov 7, 2026
a048f30
test(mcp): type guest probes by their exec dependency
JacobWeyer Nov 7, 2026
c53604e
test(mcp): use finalized hashes for managed rebind
JacobWeyer Nov 7, 2026
3c73128
test(mcp): select revocation proof by denied exposure
JacobWeyer Nov 7, 2026
3d3fb7e
Record supervisor control failure phases
JacobWeyer Nov 7, 2026
36a79cd
Avoid shutdown grace for disposable TLS probes
JacobWeyer Nov 7, 2026
fa2da42
Validate settled unknown MCP recovery
JacobWeyer Nov 7, 2026
ed915d8
Align MCP OAuth acceptance fixture configuration
JacobWeyer Nov 7, 2026
6d482e8
Fix OAuth authority recovery fixture
JacobWeyer Nov 7, 2026
69097b4
Enable connection before OAuth rebind
JacobWeyer Nov 7, 2026
50f9b24
Accept recovery delivery run acknowledgements
JacobWeyer Nov 8, 2026
f97fa87
Report rebind precondition category
JacobWeyer Nov 8, 2026
b75b0d7
Classify upstream rebind preconditions
JacobWeyer Nov 8, 2026
99fe207
Merge upstream main into external MCP development
JacobWeyer Nov 8, 2026
ca46d63
Match OAuth fixture connection revision types
JacobWeyer Nov 8, 2026
1d7a827
Record bounded MCP rebind failure context
JacobWeyer Nov 8, 2026
45fe754
Use session disks for managed Firecracker boots
JacobWeyer Nov 8, 2026
1574d10
Keep MCP connection deletion behind credential authority
JacobWeyer Nov 8, 2026
c815409
Qualify MCP Firecracker acceptance on dm-thin
JacobWeyer Nov 8, 2026
bdb3591
Keep the ordinary host wire on version 38
JacobWeyer Nov 8, 2026
fe4bf78
Preserve ordinary Claude tool events
JacobWeyer Nov 8, 2026
b5a505a
Cover predecessor proxy discovery frames
JacobWeyer Nov 8, 2026
5662b09
Keep CPU limits in placement previews with unmeasured RAM
JacobWeyer Nov 8, 2026
9cdb411
Record the current orchestrator validation baseline
JacobWeyer Nov 8, 2026
1e54c3e
Fix thin-pool inventory reinspection
JacobWeyer Nov 9, 2026
85bf93a
Wait for fixture HTTPS listeners during startup
JacobWeyer Nov 9, 2026
434fac0
Validate Docker host PID security options
JacobWeyer Nov 9, 2026
faaba28
Validate Docker local DNS firewall rules
JacobWeyer Nov 9, 2026
08af5cf
Map the Firecracker fixture host to its service namespace
JacobWeyer Nov 9, 2026
f51ce45
Fix Firecracker fixture backing allocation checks
JacobWeyer Nov 9, 2026
abf0162
Allow native namespace mounts in the Firecracker test host
JacobWeyer Nov 9, 2026
f57bb75
Install managed network commands in the host image
JacobWeyer Nov 9, 2026
7dca6ec
Use a valid name for the managed NAT chain
JacobWeyer Nov 9, 2026
e2c0692
Qualify the Firecracker host for private namespace control
JacobWeyer Nov 9, 2026
f9b139f
fix(firecracker): drain the managed cold-boot ready signal
JacobWeyer Nov 9, 2026
a51cec9
test(mcp): wait for native teardown before checking disk release
JacobWeyer Nov 9, 2026
dcd1571
fix(firecracker): compare managed drives by stable identity
JacobWeyer Nov 9, 2026
532080c
test(mcp): retain safe Firecracker failure diagnostics
JacobWeyer Nov 9, 2026
0b168c1
test(mcp): confirm restored VM disk reads before release
JacobWeyer Nov 9, 2026
1507f1f
test(mcp): run independent status checks concurrently
JacobWeyer Nov 9, 2026
755b17b
fix(firecracker): create private managed disk captures
JacobWeyer Nov 9, 2026
5d57160
test(mcp): continue safe cases after assertion failures
JacobWeyer Nov 9, 2026
87f430c
test(mcp): keep probe credentials valid through reconnect
JacobWeyer Nov 9, 2026
fff3527
test(mcp): batch fidelity calls in the full matrix
JacobWeyer Nov 9, 2026
c5dc8e7
fix(mcp): let the scanner drive rebind recovery
JacobWeyer Nov 9, 2026
4bee6e4
Merge upstream main into external MCP development
JacobWeyer Nov 10, 2026
c060253
fix(ci): assert one MCP discovery invocation
JacobWeyer Nov 10, 2026
96c5449
fix(mcp): check catalog publishers inside the publication transaction
JacobWeyer Nov 10, 2026
5c95ada
fix(mcp): keep inherited argument constraints bounded
JacobWeyer Nov 10, 2026
ade12ae
fix(mcp): finish cancellation when admission has no journal row
JacobWeyer Nov 10, 2026
bfbbfa4
fix(host): isolate private handoff completion streams
JacobWeyer Nov 10, 2026
5cda761
fix(host): prepare managed TLS before registration
JacobWeyer Nov 10, 2026
8262c87
fix(claude): preserve distinct deferred MCP calls
JacobWeyer Nov 10, 2026
ee56b59
fix(codex): retain durable tool completion identity across restarts
JacobWeyer Nov 10, 2026
5913b77
fix(mcp-worker): terminate bound legacy sessions on close
JacobWeyer Nov 10, 2026
04a2c1b
fix(vz): release managed files only after confirmed native retirement
JacobWeyer Nov 10, 2026
55e2a77
fix(mcp): pin an account first observed during OAuth refresh
JacobWeyer Nov 10, 2026
d04d006
fix(mcp): report metadata outages as unavailable
JacobWeyer Nov 10, 2026
2a9cbfa
test(mcp): make the valid Firecracker input fixture complete
JacobWeyer Nov 10, 2026
c164fdb
test(mcp): wait for exact cleanup obligations before continuing
JacobWeyer Nov 10, 2026
f0b10af
fix(test): wait for owned process groups with unresolved permissions
JacobWeyer Nov 10, 2026
43b0330
refactor(core): share managed digest validation
JacobWeyer Nov 10, 2026
9add8db
docs(mcp): align policy notes and examples with current behavior
JacobWeyer Nov 10, 2026
fc487f3
fix(postgres): retain managed boot history after host deletion
JacobWeyer Nov 10, 2026
1451ed4
fix(postgres): serialize placement without blocking host references
JacobWeyer Nov 10, 2026
941b28e
fix(sim): match the missing MCP OAuth state error
JacobWeyer Nov 10, 2026
6e128c6
fix(sim): report current capture job assignments
JacobWeyer Nov 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
55 changes: 40 additions & 15 deletions .github/scripts/detect-rebake-lanes.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@
# exactly mirroring `web/`'s treatment. A source-only orchestrator change
# rebakes the orchestrator (and the other images in the matrix; that's the same
# coarse behavior `web/` has always had).
IMAGES_PATHS = ["docker/", "web/", "orchestrator/", "deploy/migrations/"] + BINARY_COMMON
IMAGES_PATHS = ["docker/", "web/", "orchestrator/", "mcp-worker/", "deploy/migrations/"] + BINARY_COMMON
# The build INSTRUCTIONS, as opposed to the sources they copy in. Only a change
# here can break an image in a way a native build does not already catch, so
# only a change here needs the PR-time `build-images` lane: `tests (linux)`
Expand Down Expand Up @@ -249,7 +249,7 @@
]


# ── PR test-lane gating (ci.yml + ci-macos-vz.yml) ─────────────────────
# ── PR test-lane gating (ci.yml) ─────────────────────
# These gate the CI *test* lanes (not the bake lanes above) so a change only
# runs the lanes it can affect. Protos live in the engram-protocol crate, so a
# proto change is already in every Rust binary's closure (→ cc, host_binaries,
Expand All @@ -263,7 +263,10 @@
# touching ci.yml (ci-macos-vz.yml was folded into
# ci.yml; its old entry here was a dead path).
".github/actions/",
".github/scripts/detect-rebake-lanes.py"]
".github/scripts/detect-rebake-lanes.py",
".github/scripts/tests/",
".github/scripts/mcp-acceptance-",
".github/scripts/mcp-stack-"]
PROTO_PATHS = ["crates/engram-protocol/proto/", "buf.gen.yaml"]
WEB_PATHS = ["web/", "orchestrator/packages/spec-document/"]
# The public docs + landing site (site/, Astro + Starlight). Its content is
Expand All @@ -279,10 +282,11 @@
# version it ships on. They were absent here, so a change to either skipped
# this lane entirely — which is half of how prod came to run a Bun the tests
# never saw (the other half was the Dockerfile floating on `oven/bun:1`).
ORCH_PATHS = ["orchestrator/",
MCP_STACK_FIXTURE_PATHS = ["tests/fixtures/mcp-stack/"]
ORCH_PATHS = ["orchestrator/", "mcp-worker/",
"docker/orchestrator.Dockerfile",
".bun-version",
"crates/engram-egress-proxy/policy/google-credential-denylist.json"]
"crates/engram-egress-proxy/policy/google-credential-denylist.json"] + MCP_STACK_FIXTURE_PATHS
# A lockfile/manifest/toolchain bump recompiles the whole workspace.
RUST_COMMON = ["Cargo.lock", "Cargo.toml", "rust-toolchain.toml"]

Expand Down Expand Up @@ -499,6 +503,7 @@ def main():
e2e_core = (
bool(cc & e2e_closure)
or any_path(changed, E2E_PATHS)
or any_path(changed, ["sandbox-netstack/"])
or any_path(changed, HARNESS_PATHS)
)
e2e_orchestrator = e2e_core or any_path(changed, ORCH_PATHS)
Expand Down Expand Up @@ -550,14 +555,27 @@ def main():
# lint + tests(linux) + the two macOS lanes build/test the whole workspace:
# any workspace crate (cc — protos included via engram-protocol), a
# lockfile/toolchain bump, or a CI-definition change.
fixture_changed = any_path(changed, ["tests/fixtures/mcp-model-cli/"])
test_rust = (
ci_self
fixture_changed
or ci_self
or bool(cc)
or any_path(changed, RUST_COMMON)
or any_path(changed, HARNESS_PATHS)
or any_path(changed, ["mcp-worker/", "sandbox-netstack/"])
)
test_mcp_worker = ci_self or proto or any_path(changed, ["mcp-worker/", "docker/mcp-worker.Dockerfile"] + MCP_STACK_FIXTURE_PATHS)
# Self-contained producers use one selector: no skipped artifact dependency.
test_mcp_physical = (
ci_self or proto or test_rust or any_path(changed, ORCH_PATHS + [
"crates/", ".sqlx/", "deploy/migrations/", "docker/", "deploy/bundles/",
"deploy/demo/", "deploy/kernel/", "third_party/firecracker",
"sandbox-netstack/", ".bun-version", ".dockerignore", ".cargo/config.toml",
])
)
test_netstack = test_rust
# musl cross-compile of the FC host binaries — same closure as host_binaries.
test_cross = ci_self or host_binaries
test_cross = ci_self or host_binaries or fixture_changed or harness_changed
# Firecracker integration lane. Gated on the e2e binary CLOSURE (the FC
# backend + host-agent + their deps — the Rust the FC integration tests
# exercise; engram-sandbox-firecracker is in host-agent's closure, and the
Expand All @@ -567,7 +585,8 @@ def main():
# fixtures and mount bundles via the sandbox crates already in the closure;
# tripping FC on a bundle-payload edit was a needless ~KVM lane. The
# e2e-STACK lane still gates on `e2e`, so bundle staging is validated there.
test_fc = ci_self or bool(cc & e2e_closure) or fc_fork or any_path(changed, FC_POOL_PATHS)
test_fc = ci_self or bool(cc & e2e_closure) or fc_fork or any_path(
changed, FC_POOL_PATHS + ["sandbox-netstack/"])
# web / orchestrator: their own sources or the protos they codegen from.
# (The `engrams` CLI is a workspace crate: test_rust covers it.)
test_web = ci_self or proto or any_path(changed, WEB_PATHS)
Expand All @@ -576,9 +595,9 @@ def main():
test_buf = ci_self or proto
test_integrations_cli = ci_self or any_path(changed, INTEGRATIONS_CLI_PATHS)
# ADR 0122: the deploy-config lane (helm lint/template + terraform
# fmt/validate). Same path set as the bake-side tf_or_helm flag,
# plus ci_self like every test lane.
test_deploy = ci_self or tf_or_helm
# fmt/validate + actual nginx callback canary). The web runtime image
# also changes the effective nginx behavior, without changing the chart.
test_deploy = ci_self or tf_or_helm or any_path(changed, ["docker/web.Dockerfile"])
# The site lane: leak lint + astro build, build-only (no deploy on PRs).
test_site = ci_self or any_path(changed, SITE_PATHS)
# ADR 0098 R-CoSim: the coordinator↔host boundary sim — its own (spanning)
Expand Down Expand Up @@ -634,14 +653,17 @@ def image_flag(name):
])
if name == "orchestrator":
return bake_all_l or proto_l or any_path(
cs, ["orchestrator/", "docker/orchestrator.Dockerfile"])
cs, ["orchestrator/", "mcp-worker/src/", "mcp-worker/package.json",
"mcp-worker/package-lock.json", "docker/orchestrator.Dockerfile"])
if name == "mcp-worker":
return bake_all_l or any_path(cs, ["mcp-worker/", "docker/mcp-worker.Dockerfile"])
raise ValueError(name)

image_flags = {name: image_flag(name) for name in
["coordinator", "host-agent", "host-operator", "web", "orchestrator"]}
["coordinator", "host-agent", "host-operator", "web", "orchestrator", "mcp-worker"]}
# Stable matrix order; the bake job consumes this as `fromJSON`.
images_matrix = [name for name in
["coordinator", "host-agent", "host-operator", "web", "orchestrator"]
["coordinator", "host-agent", "host-operator", "web", "orchestrator", "mcp-worker"]
if image_flags[name]]
# The deploy-dispatch gate must fire whenever ANY container lane trips —
# level-triggered lanes can trip when the push range alone would not
Expand Down Expand Up @@ -687,8 +709,11 @@ def b(v):
f.write(f"e2e={b(e2e)}\n")
f.write(f"e2e_matrix={json.dumps({'include': e2e_matrix})}\n")
f.write(f"e2e_full_matrix={json.dumps({'include': e2e_full_matrix})}\n")
# PR test lanes (ci.yml + ci-macos-vz.yml gate on these).
# PR test lanes (ci.yml gates on these).
f.write(f"test_rust={b(test_rust)}\n")
f.write(f"test_mcp_worker={b(test_mcp_worker)}\n")
f.write(f"test_mcp_physical={b(test_mcp_physical)}\n")
f.write(f"test_netstack={b(test_netstack)}\n")
f.write(f"test_cross={b(test_cross)}\n")
f.write(f"test_fc={b(test_fc)}\n")
f.write(f"test_web={b(test_web)}\n")
Expand Down
41 changes: 41 additions & 0 deletions .github/scripts/mcp-acceptance-fc-closed.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/usr/bin/env bash
# Run the installed CLOSED namespace check on the isolated Linux CI worker.
set -euo pipefail
[[ $(uname -s) == Linux ]] || { echo 'CLOSED namespace gate requires Linux' >&2; exit 1; }
for tool in cargo python3 sudo ip sysctl nft; do
command -v "$tool" >/dev/null || { echo "Missing required tool: $tool" >&2; exit 1; }
done
name=managed::network::linux::tests::actual_closed_namespace_readback_detects_route_tampering
state=$(mktemp -d)
trap 'rm -rf "$state"' EXIT
# Cargo builds as the runner; only its current libtest executable runs as root.
export CARGO_TARGET_DIR="$PWD/target"
cargo test --locked -p engram-sandbox-firecracker --lib --no-run --message-format=json > "$state/artifacts.jsonl"
artifact=$(ARTIFACT_LIST="$state/artifacts.jsonl" python3 - "$PWD" "${CARGO_TARGET_DIR:-$PWD/target}" < /dev/null <<'PY'
import json, os, pathlib, stat, sys
workspace, target = map(pathlib.Path, sys.argv[1:])
workspace = workspace.resolve()
target = (workspace / target).resolve()
assert target.is_relative_to(workspace), 'target must be inside this checkout'
with open(os.environ['ARTIFACT_LIST']) as stream:
paths = [m['executable'] for line in stream if (m := json.loads(line)).get('reason') == 'compiler-artifact'
and m.get('executable') and m['target']['name'] == 'engram_sandbox_firecracker'
and pathlib.Path(m['target']['src_path']).resolve() == workspace / 'crates/engram-sandbox-firecracker/src/lib.rs'
and m['profile']['test']]
assert len(paths) == 1, 'one current Firecracker libtest artifact is required'
p = pathlib.Path(paths[0]).resolve(strict=True)
s = p.stat()
assert p.is_relative_to(target) and stat.S_ISREG(s.st_mode) and s.st_uid == os.getuid()
assert not s.st_mode & 0o022 and os.access(p, os.X_OK), 'unsafe test artifact'
print(p)
PY
)
# Check selection before sudo, then require a positive result from the same artifact.
"$artifact" --ignored --exact "$name" --list > "$state/selected"
grep -Fxq "$name: test" "$state/selected"
grep -Fxq '1 test, 0 benchmarks' "$state/selected"
[[ $(grep -c ': test$' "$state/selected") == 1 ]] || { echo 'Expected exactly one CLOSED namespace test' >&2; exit 1; }
sudo env PATH=/usr/sbin:/usr/bin:/sbin:/bin "$artifact" --ignored --exact "$name" --nocapture 2>&1 | tee "$state/result"
grep -Fxq 'running 1 test' "$state/result"
grep -Fxq "test $name ... ok" "$state/result"
grep -Eq '^test result: ok\. 1 passed; 0 failed; 0 ignored; 0 measured; [0-9]+ filtered out;' "$state/result"
14 changes: 14 additions & 0 deletions .github/scripts/mcp-acceptance-helper.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -euo pipefail
root="$PWD"
artifact="$root/var/mcp-netstack-artifact"
(cd "$artifact" && test -s engram-sandbox-netstack && shasum -a 256 -c SHA256SUMS)
export ENGRAM_SANDBOX_NETSTACK_TEST_BIN="$artifact/engram-sandbox-netstack"
test -x "$ENGRAM_SANDBOX_NETSTACK_TEST_BIN"
mkdir -p var/mcp-acceptance-ci
log=$(mktemp "$root/var/mcp-acceptance-ci/helper.XXXXXXXX")
trap 'rm -f "$log"' EXIT
cargo nextest run -p engram-sandbox-vz --lib --run-ignored ignored-only \
-E 'test(=managed::helper::tests::actual_helper_closed_lifetime_and_descriptor_isolation) or test(=managed::helper::tests::actual_helper_release_ack_and_active_dns_cleanup) or test(=managed::helper::tests::actual_helper_rejects_wrong_epoch_and_canceled_release)' \
--no-tests fail --test-threads 1 2>&1 | tee "$log"
grep -Eq "(^|[[:space:]])3 tests run: 3 passed, [0-9]+ skipped([[:space:]]|$)" "$log"
41 changes: 41 additions & 0 deletions .github/scripts/mcp-acceptance-linux.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/usr/bin/env bash
# Real Linux wrappers and SDK transport. No VM, provider, or upstream server.
set -euo pipefail
[[ $(uname -s) == Linux ]] || { echo 'Linux wrapper gate requires Linux' >&2; exit 1; }
: "${CARGO_TARGET_DIR:?Set an owned absolute target directory}"
[[ "$CARGO_TARGET_DIR" == /* ]] || exit 1
cargo build --locked --manifest-path tests/fixtures/mcp-model-cli/Cargo.toml --bin engram-mcp-model-fixture
cargo build --locked -p engram-harness-claude -p engram-harness-codex --bins
export ENGRAM_FIXTURE_BIN="$CARGO_TARGET_DIR/debug/engram-mcp-model-fixture"
export ENGRAM_TEST_CLAUDE_BIN="$CARGO_TARGET_DIR/debug/engram-harness-claude"
export ENGRAM_TEST_CODEX_BIN="$CARGO_TARGET_DIR/debug/engram-harness-codex"
for artifact in "$ENGRAM_FIXTURE_BIN" "$ENGRAM_TEST_CLAUDE_BIN" "$ENGRAM_TEST_CODEX_BIN"; do
test -x "$artifact"
file "$artifact" | grep -Fq 'ELF 64-bit'
done
test "$("$ENGRAM_FIXTURE_BIN" --fixture-version)" = 'engram-mcp-model-fixture 1'
# An example is an explicitly built test utility, never a production binary
# or a harness=false target that breaks workspace nextest discovery.
cargo build --locked -p engram-harness-claude --example linux_mcp_supervisor
# Keep generated Unix socket paths below Linux's sockaddr_un limit.
state=$(mktemp -d /tmp/mcp-linux.XXXXXXXX)
trap 'if [[ -f "$state/cleanup-complete" ]]; then rm -rf "$state"; else echo "Cleanup unconfirmed; retained owned state: $state" >&2; fi' EXIT
export ENGRAM_TEST_STATE_ROOT="$state"
cargo test --locked -p engram-harness-claude --test linux_mcp_entrypoint \
--no-run --message-format=json > "$state/artifacts.jsonl"
export ENGRAM_TEST_DRIVER_BIN
ENGRAM_TEST_DRIVER_BIN=$(python3 -c '
import json, sys
paths = [m["executable"] for line in sys.stdin if (m := json.loads(line)).get("reason") == "compiler-artifact" and m.get("executable") and m["target"]["name"] == "linux_mcp_entrypoint"]
assert len(paths) == 1, "one current Linux test driver is required"
print(paths[0])
' < "$state/artifacts.jsonl")
test -x "$ENGRAM_TEST_DRIVER_BIN"
# The supervisor has an earlier bounded deadline and reaps all descendants.
# This hard outer kill is only a final bound if the supervisor itself fails.
timeout --signal=KILL 240s "$CARGO_TARGET_DIR/debug/examples/linux_mcp_supervisor" \
--check-cleanup-and-run 2>&1 | tee "$state/entrypoint.log"
grep -Fq 'forced deadline cleanup: passed; all descendants reaped before state removal' "$state/entrypoint.log"
grep -Fq 'running 9 tests' "$state/entrypoint.log"
grep -Fq 'test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out' "$state/entrypoint.log"
test "$(cat "$state/cleanup-complete")" = complete
30 changes: 30 additions & 0 deletions .github/scripts/mcp-acceptance-native.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/env bash
set -euo pipefail
: "${CARGO_TARGET_DIR:?Set an owned target directory}"
root="$PWD"
mkdir -p var/mcp-acceptance-ci
state=$(mktemp -d "$root/var/mcp-acceptance-ci/native.XXXXXXXX")
trap 'rm -rf "$state"' EXIT
unset ENGRAM_FIXTURE_BARRIER
cargo test --locked --manifest-path tests/fixtures/mcp-model-cli/Cargo.toml --bins --test protocol 2>&1 | tee "$state/protocol.log"
# Binary unit results cannot satisfy the protocol suite's positive-count guard.
awk '
/Running tests\/protocol.rs / { protocol = 1; next }
protocol && /^test result: ok\. [1-9][0-9]* passed; 0 failed; 0 ignored/ { passed = 1 }
END { exit !passed }
' "$state/protocol.log"
grep -Fxq 'test evidence::tests::expired_deadline_cannot_consume_a_release ... ok' "$state/protocol.log"
cargo build --locked --manifest-path tests/fixtures/mcp-model-cli/Cargo.toml --bin engram-mcp-model-fixture
export ENGRAM_FIXTURE_BIN="$CARGO_TARGET_DIR/debug/engram-mcp-model-fixture"
test -x "$ENGRAM_FIXTURE_BIN"
test "$("$ENGRAM_FIXTURE_BIN" --fixture-version)" = 'engram-mcp-model-fixture 1'
export ENGRAM_FIXTURE_TOOL=remote_inventory
for mode in read held-call; do
export ENGRAM_FIXTURE_MODE="$mode"
export ENGRAM_FIXTURE_STATE_DIR="$state/$mode"
mkdir -m 700 "$ENGRAM_FIXTURE_STATE_DIR"
export ENGRAM_FIXTURE_PROOF="$ENGRAM_FIXTURE_STATE_DIR/proof"
cargo test --locked -p engram-harness-codex --bin engram-harness-codex \
tests::external_mcp_static_fixture_adapter_gate -- --ignored --exact 2>&1 | tee "$state/$mode.log"
grep -Fq 'test result: ok. 1 passed; 0 failed; 0 ignored' "$state/$mode.log"
done
Loading
Loading