CodexConnector/deployment/idunn/recipe.toml
Meta Vens 3ddc12e9f3 REC-100/REC-101: drop impossible gitlink requirement and fictitious RUST_LOG passthrough
deployment/idunn/recipe.toml declared required_gitlinks = ["vendor/cultcache-rs",
"vendor/cultnet-rs"], but HEAD (6519289, "Consume the core stack from CultLib
instead of forking it") already deleted both vendor directories and
.gitmodules. Idunn's TargetDeclaration::admit() (F:/Projects/Idunn/src/
deployment.rs:1390-1399) requires the operator's bound gitlink set to match
required_gitlinks exactly, so with no vendor dirs left to bind, this recipe
cannot currently be admitted at all — a live deployment defect, not just
dead text. required_gitlinks is #[serde(default)] (deployment.rs:26-27), so
dropping the line is a valid empty declaration, not a schema violation.

Also drops optional_environment = ["RUST_LOG"]: the recipe declares Idunn
may forward an operator-set RUST_LOG into the child process, but
src/provider_backend.rs:634 unconditionally overwrites it with
.env("RUST_LOG", "warn") right before spawn. The declaration currently
promises a passthrough the code never honors.

Kill attempts that failed to find a live consumer of the removed lines:
- git ls-tree origin/main -- vendor/: empty. No .gitmodules file exists.
- git grep -n "RUST_LOG" over the whole repo: only the two lines touched
  here (the recipe declaration and the hardcoded overwrite).
- Read F:/Projects/Idunn/src/deployment.rs to confirm both fields are
  optional (serde default) before cutting, per the assignment's
  instruction to understand Idunn's parser before touching recipe fields.

Collision check: git diff --stat origin/main...codex/ghostlight-release-binding
and ...codex/ghostlight-model-allowlist over deployment/idunn/recipe.toml
and src/provider_backend.rs: both empty, no in-flight work touches these
lines.

Validated deployment/idunn/recipe.toml still parses as TOML after the edit
(python tomllib load succeeded). Not touched: the RUST_LOG overwrite in
provider_backend.rs itself is a behavior question (should the child honor
an operator override?), not a dead-code cut, so it stays as-is per the
subtraction-only mandate.

REC-100, REC-101

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-13 14:05:19 +02:00

122 lines
2.8 KiB
TOML

schema = "gamecult.idunn.target_declaration.v1"
target = "codex-connector"
source_stamp_environment = "CODEX_CONNECTOR_BUILD_COMMIT"
[[steps]]
id = "extract-codex"
phase = "prepare"
runner = "rust-build"
argv = [
"tar",
"--extract",
"--gzip",
"--file",
".idunn-inputs/codex-linux-x64.tgz",
"--strip-components=4",
"package/vendor/x86_64-unknown-linux-musl/bin/codex",
]
[[steps]]
id = "test-contract"
phase = "test"
runner = "rust-build"
argv = ["cargo", "test", "--locked"]
[[steps]]
id = "test-daemon"
phase = "test"
runner = "rust-build"
argv = ["cargo", "test", "--locked", "--features", "daemon"]
[[steps]]
id = "build-daemon"
phase = "build"
runner = "rust-build"
argv = [
"cargo",
"build",
"--locked",
"--release",
"--features",
"daemon",
"--bin",
"codex-connector",
]
[[external_inputs]]
id = "codex-linux-x64"
url = "https://registry.npmjs.org/@openai/codex/-/codex-0.150.0-alpha.7-linux-x64.tgz"
sha256 = "8aca3112aef60127d4ffaf4c6f08e524fa7315279a1d08e7aa9c5e7f1a6943e0"
runner = "rust-build"
destination = ".idunn-inputs/codex-linux-x64.tgz"
[[artifacts]]
id = "codex-connector"
source_kind = "runner-output"
runner = "rust-build"
source = "target/release/codex-connector"
destination = "codex-connector"
executable = true
[[artifacts]]
id = "codex"
source_kind = "runner-output"
runner = "rust-build"
source = "codex"
destination = "codex"
expected_sha256 = "aca268dc02dcef8b1ea9f528a10173d5071ae76d659a03cce6458bbebe228bee"
executable = true
[service]
executable_artifact = "codex-connector"
required_adjacent_artifacts = ["codex"]
arguments = [
{ kind = "literal", value = "--config" },
{ kind = "binding", name = "config_path" },
{ kind = "literal", value = "--state-root" },
{ kind = "binding", name = "state_root" },
]
transport = "tcp"
route_required = true
required_environment = [
"CODEX_CONNECTOR_CULTNET_RUDP",
"GAMECULT_IDUNN_CANDIDATE_BIND",
"GAMECULT_IDUNN_PROCESS_WRITE_LEASE",
"GAMECULT_IDUNN_RUNTIME_BUNDLE",
]
[service.health]
contract = "codex-connector.runtime-health.v1"
[state]
schema_generation = "connector-v1"
[[state.slots]]
id = "replay"
relative_path = "replay.cc"
kind = "cultcache-file"
schema = "gamecult.codex.replay_record.v1"
writer = "process-bound-single-writer"
recovery = "preserve"
startup = "create-or-open-after-write-lease"
[[state.slots]]
id = "codex-auth"
relative_path = "codex-home/auth.json"
kind = "external-file"
schema = "openai.codex.auth-json.v1"
writer = "process-bound-single-writer"
recovery = "preserve"
startup = "create-or-open-after-write-lease"
[[provides]]
capability = "gamecult.codex.subscription-inference"
schema = "gamecult.codex.transport_envelope.v2"
compatibility = "v2"
[[dependencies]]
kind = "bootstrap"
capability = "odin.verse-rendezvous"
schema = "odin.verse-topology.v1"
compatibility = "v1"
startup = "before-start"