fix: decide the Codex session value for the doctor engine-floor test - #909
Merged
Conversation
`a2b9403f` added `codex_chatgpt` to `SandboxConfig` and updated one of the two longhand initializers in the workspace. This is the other one, in a different crate, so `cargo test -p maxplayer` does not compile at main. The value follows the answer already recorded three lines above it for `file_credentials`: this check asserts the engine-version floor, and a host ChatGPT session is a containment concern that would only add a second reason for the check to move. Its only assertion is that a check named "sandbox engine floor" runs, so no field value here is observable by it. The reasoning goes in beside the field because the tripwire cannot tell a decision from a compile-fix — both produce identical bytes, and the note is the only artifact that survives to distinguish them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
maindoes not compile.cargo test -p maxplayerfails atcrates/maxplayer/src/doctor.rs:2796witherror[E0063]: missing field codex_chatgpt in initializer of SandboxConfig. This adds the field, with its reasoning, and nothing else.Why main is red
a2b9403f("feat: read Codex ChatGPT sessions on the host") addedcodex_chatgpttoSandboxConfig. That struct has two longhand initializers in the workspace that do not use..Default::default(). The commit updated one and missed the other, because they live in different crates:crates/maxplayer-core/tests/sandbox_netns_live.rs— updated in the commit itself, a +1/−0 change settingcodex_chatgpt: None.crates/maxplayer/src/doctor.rs— not in the commit at all. Its four files arecodex_subscription.rs,home.rs,lib.rs, andsandbox_netns_live.rs; a filter fordoctorover that commit's file list returns empty while the others return patches.So this is an incomplete enumeration of literals, not an open question.
One field is enough, and that is measured rather than assumed. A repo-wide classification at
c2bb4caefinds exactly two longhandSandboxConfigliterals — every other construction site uses..Default::default()or a struct-update base:This matters because the compiler stops at the first failing crate, so a longhand literal in a crate that never got built would stay invisible behind this one. There is none. (Bound: that is a text classifier over the
SandboxConfig {literal form in*.rsat one commit, not the compiler — a macro-generated or builder-constructed initializer would not match it.)⚠ And a trap for anyone re-checking that scope the same way: classifying a block as safe because it contains
..Default::default()false-clears this exact literal. The tripwire comment three lines up contains that string verbatim — "Written out rather than..Default::default()so that adding another sandbox field breaks this test" — so a text probe reads the mention of the construct as the construct and scores the one longhand literal as shorthand. It fails in the reassuring direction. Strip comments before classifying, and keepdoctor.rs:2796as a positive control that must come back LONGHAND.Why
None, and why the comment goes in with itThe literal is written longhand deliberately. Its own note, three lines above the change:
The same tripwire already fired once in this literal and was answered in place, for
file_credentials:codex_chatgptis that same class. It isOption<CodexChatgptConfig>under[sandbox.*], naming a hostauth.jsonthat the per-job proxy reads so a contained run can use a host ChatGPT session; the field's own doc states that absent means existing auth behaviour is unchanged. The prior rationale covers it without extension, so this change copies that answer's form as well as its value and records the reasoning beside the field.That is deliberate. This test's only assertion is that
build_checksruns a check named"sandbox engine floor"— no field value in the literal is observable by it. The tripwire is therefore a prompt, not a check: it cannot distinguish "someone decided" from "someone made it compile," because both produce the identical green and the identical bytes. The inline note is the only artifact that survives to tell them apart, and it is what let the precedent answer this question from the file rather than from a person. The next sandbox field will fire this again; it compounds if each answer writes its reasoning down and merely repeats if one is typed bare.Evidence
Red before, on unmodified main. A detached checkout of
c2bb4caewith no PR involved:cargo test -p maxplayer --locked --no-run→ rc=101,E0063atdoctor.rs:2796. Independently corroborated by PR #907, whose two failing rows —Build & test (acp)andBuild & test (default features)— both report the same error atdoctor.rs:2796:36, a file outside that PR's diff.Green after.
cargo test -p maxplayer --locked --no-runon this branch, run undernix developso the toolchain is the flake's: rc=0, finished in 4m22s, emitting four test executables (maxplayer,cli_e2e,mcp_daemon,seller_declared_output). ZeroE0063, zerocould not compile. The rc is read from inside the log rather than from the wrapper's exit status.⚠ Worth stating because it nearly fooled me: my first attempt to reproduce the red returned exactly the
rc=101I predicted — but for the wrong reason. It died onlinker 'cc' not foundin dependency build scripts and never compiledmaxplayerat all. An expected failure arriving for an unexpected reason is the most convincing false confirmation available, because it agrees with the hypothesis and nothing prompts you to read further. That is why the red-before evidence above is cited from three sources that did reach the compiler, and not from my own first run.The change is 3 added lines in 1 file: one field and its two-line note.
Scope and one caveat stated plainly
This fixes the compile only. It makes no claim about runtime containment behaviour, and it changes no shipped default —
codex_chatgptis#[serde(default)]and absent already meantNone.⚠ The sibling literal cited above as precedent lives in a test that is
#[ignore]d and gated#![cfg(all(acp, wallet))], and has never been executed. So "the author wroteNone" is authorial intent and is solid; "Nonewas observed to contain" is not established by it. That distinction does not affect this change — the test touched here never launches a container and cannot observe the field — but it should not be carried elsewhere as if the value had been exercised.Unblocks #900, #890 and #907, all of which are red or held on this one line.