Repository navigation
Description
Problem
In pkgs/id, a world.toml manifest that sets the legitimate execution-profile field total_memory_bytes under [profile] fails to parse — world_manifest::parse rejects it as an unknown field, even though the field is a real, validated member of WorldExecutionProfile:
WorldExecutionProfilegainedtotal_memory_bytes: Option<u64>in the id(world): F12.12 many worlds per node: 1,000 idle / 100 active with a per-world memory budget #557 per-world memory-budget work (pkgs/id/crates/id-core/src/world_limits.rs:307). It is validated inWorldExecutionProfile::validate(world_limits.rs:351, nonzero) and resolved/clamped inresolve(world_limits.rs:380-381).WorldManifest::validaterunsself.profile.validate()at parse time, andparse's own docs promise the profile bounds in a manifest are honored (see the id(world-manifest): validate() never checks the execution profile or the schedule count — manifests parse and plan clean, then fail partway through a live apply #3015 comment inpkgs/id/src/world_manifest.rs).- But the unknown-key probe
reject_unknown_profile_keys(pkgs/id/src/world_manifest.rs:179-215) still lists only the six pre-id(world): F12.12 many worlds per node: 1,000 idle / 100 active with a per-world memory budget #557 fields in its#[serde(deny_unknown_fields)] ProfileKeysProbe(wasm_fuel,wasm_memory_bytes,wasm_message_bytes,native_memory_bytes,native_cpu_seconds,native_call_deadline_ms).total_memory_bytesis missing, so the probe — whichparseruns first (world_manifest.rs:156) — refuses the valid key before the real parse ever sees it.
The inconsistency is self-contained: WorldManifest::to_toml serializes a manifest whose profile.total_memory_bytes is set, emitting total_memory_bytes = … under [profile], and round_trip (parse of to_toml) then fails on the manifest's own output.
Evidence (verified this run, laptop probe at origin/main ece818d)
Laptop cargo probe (~/git/fleet/probe-2026-11-03-laneA3-manifest on the laptop, one test added to world_manifest::tests, kept for inspection):
parse("[profile]\ntotal_memory_bytes = 67108864\n")→ Err:TOML parse error at line 2, column 1: unknown field 'total_memory_bytes', expected one of 'wasm_fuel', 'wasm_memory_bytes', 'wasm_message_bytes', 'native_memory_bytes', 'native_cpu_seconds', 'native_call_deadline_ms'— the expected list is exactly the probe's six stale fields- The same probe test's later assertions (never reached) cover the
round_tripof aWorldManifestwithprofile.total_memory_bytes = Some(67108864), which fails for the same reason on the manifest's ownto_tomloutput - Controls: all 29 pre-existing
world_manifest::testspass on the same binary (the typo-refusal tests for id(world-manifest): unknown or misspelled world.toml keys are silently ignored — a typo'd grants/ceiling revocation parses clean, plans zero steps, and diff reports 'no drift' #2876 among them); only the probe test fails
Probe result: world_manifest::tests::probe_total_memory_bytes_profile_key_parses FAILED at the first assertion on unmodified main; full module run: 29 passed, 1 failed (the probe).
Why it matters
The per-world total memory budget (#557) is settable through the server/profile paths and is persisted/restored, but the declarative path — world.toml + id world apply/diff — cannot express it at all: any manifest naming the budget is refused wholesale, so an admin cannot set or pin a world's total memory budget declaratively, and any tooling that round-trips a manifest carrying the field breaks. The probe struct is a hand-maintained mirror of WorldExecutionProfile's field list, so the same failure recurs the next time a profile field is added unless the fix also guards the mirror (see acceptance criteria).
Acceptance criteria
parseaccepts[profile] total_memory_bytes = <u64>and the value reachesWorldManifest.profile.total_memory_bytes;validatestill refusestotal_memory_bytes = 0via the existingWorldExecutionProfile::validaterule.- A manifest carrying
total_memory_bytessurvivesto_toml→parseround-trip unchanged. - Typo'd/unknown
[profile]keys are still refused, naming the key (the id(world-manifest): unknown or misspelled world.toml keys are silently ignored — a typo'd grants/ceiling revocation parses clean, plans zero steps, and diff reports 'no drift' #2876 behavior is preserved — e.g.wasm_fuellstill fails). - A regression test pins the probe's field list against
WorldExecutionProfile's actual fields (or the probe is restructured so drift is impossible), so adding a future profile field cannot silently reintroduce this. - Existing
world_manifestandworld_limitstests stay green.
Activity
dezren39 commentedon Nov 4, 2026
🤖 Agent note · state: filed
dezren39 commentedon Nov 4, 2026
🤖 Agent note · picked up
direct; this lane works it per the runbookdezren39 commentedon Nov 4, 2026
🤖 Agent note · done — PR opened