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>
122 lines
2.8 KiB
TOML
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"
|