Worker w-execcarrier-a1; task execcarrier; implement. Read .agent-cache/WORKER.md. Bus: python "%USERPROFILE%/.claude/skills/agent-cache-orchestrator/scripts/acbus.py" Parallel: w-savestructure-a1.
Objective
Assemble the smallest mountable DLC that carries one cfile resource, so the
resourceExec route can finally be tested in the running game - and make that
test cost the user about 60 seconds of clicking, because their time at the PC
comes in five-minute windows.
Everything needed is solved and independently re-verified by the master today:
wolfsdk/idclwrite.py- container writer. Round-trips BYTE-IDENTICAL on three retail archives (401 KB / 27.8 MB / 97.4 MB), 6/6 negative controls. Recomputes entry+0x50,+0x60, header+0x20then+0x08, in that order.tools/probe_cfilekey.py- cfile encryptor. 67/67 byte-identical round-trip, 7/7 negative controls.encrypt(plain, name, salt12, iv16, declen).re_probes/cfilekey/wolfsdk_test.cfg.cfile- 96 bytes, plaintextmap game/dlc/c02/c2v1_custom\n, resource namewolfsdk_test.cfg,declen=0xFFFFFFFF.
Measured at runtime today, this is what the carrier has to satisfy:
resourceExec wolfsdk_test.cfg resolved its argument as cfile:wolfsdk_test.cfg
and refused only because it would have had to generate it in a production
build. Present it as a real cfile resource in a mounted container and that
objection disappears.
Hard requirements from the two reports - do not rediscover these
- Entry type
cfile,compression == 0(the payload is already encrypted). - The resource name is an input to the encryption key. The entry must be
named exactly
wolfsdk_test.cfg. A different name, different case, or abase/prefix each fail the HMAC tag - the cfile worker checked all three. If you need another name, re-encrypt withprobe_cfilekey.encrypt. - The reader takes the ciphertext length as
Length() - 32 - Tell(), so any trailing padding inside the resource payload breaks the tag. - A new
chunk_N.resourcesgetschunk_N.texdbmounted automatically from the container name (re_probes/agent_reports/texdbkey.md), andMountDatabasechecks only the magic. A minimal/empty texdb should therefore be enough for a container that holds no images - verify that claim against the texdb header format rather than assuming it.
Sources
- re_probes/agent_reports/{idclwriter,cfilekey2,texdbkey,cmdtable}.md
- The live retail DLCs as the structural model, READ ONLY:
/steamapps/common/Wolfenstein.II.The.New.Colossus/dlc/dlc_1..3 ( dlcinfo.json,base/packagemapspec.json,base/chunk_NN.resources) dlc/dlc_4is already installed and has mounted successfully before; it carries thegame/dlc/c02/c2v1_customalias the script will call. Your carrier should be a SEPARATE dlc so the two concerns stay separable - read dlc_4, do not modify it.- tools/dlcinfo.py, tools/dlcmod.py (read-only) for the dlcinfo/mapspec format.
Ownership
tools/build_exec_carrier.py (new - builds and verifies the carrier), tools/install_exec_carrier.py (new - installs AND uninstalls, see below), re_probes/execcarrier/ (new dir, the built carrier), and re_probes/agent_reports/execcarrier.md.
wolfsdk/idclwrite.py, tools/probe_cfilekey.py, tools/probe_datahash.py,
tools/probe_idclhash.py are READ-ONLY for you: import them, do not edit.
Forbidden / do not touch
Do not install anything into the game folder yourself, and do not launch the game. The installer script you write must not run as a side effect of building - installing is the user's call, in their window, with their hands. No writes to "%USERPROFILE%/Saved Games". Do not modify dlc_4, re_probes/map_alias_v3/, re_probes/idclwriter/, re_probes/custom_save_candidates/, re_probes/cfilekey/, docs/*, config.json, or another worker's tools. No pip install.
Hard constraints
Python 3.11, stdlib only. Reproducible from the command line.
Acceptance criteria
- A built carrier under
re_probes/execcarrier/with the full DLC directory shape, containingcfile:wolfsdk_test.cfgbyte-identical tore_probes/cfilekey/wolfsdk_test.cfg.cfile. - It passes, run by you and quoted in the report:
python tools/probe_datahash.py <carrier chunk>-> n/npython tools/probe_idclhash.py <carrier chunk>-> +0x08 and +0x20 OKpython tools/probe_cfilekey.pydecrypting the entry straight back OUT of the built container and gettingmap game/dlc/c02/c2v1_custom\n. That is the end-to-end check that matters: it proves the archive round-trip did not disturb the payload the encryption depends on.
tools/install_exec_carrier.pyinstalls with one command and uninstalls with one command, refuses to overwrite an existing dlc directory, prints exactly what it will touch before touching it, and is a no-op on failure. The uninstall path must be tested by you against a temporary copy - never against the real game folder.- A chunk id and dlc id that provably collide with nothing: enumerate the ids the installed DLCs already use and say which you picked and why.
Verification expectations
Every important assurance needs a check that fails if it is false. In particular, do not assert that the container mounts - nothing offline can show that. Say "structurally valid by these checks, mount unconfirmed". If a minimal texdb turns out NOT to be sufficient, that is a finding, not a setback - report it with the header evidence.
Failure honesty
If the mapspec/dlcinfo format needs a map entry and a pure resource-carrier DLC is not expressible, say so and propose the smallest alternative (e.g. adding the cfile entry to a copy of an existing carrier). Do not ship a bundle you cannot justify.
Deliverable - and the part that matters most
End the report with a five-line runbook the user can follow without reading anything else: the install command, what to click, the one console line to type, what a success looks like, and the uninstall command. Their window is five minutes; every sentence they have to read in it is a sentence too many.
Checkpoint at milestones. Publish a bus fact when the carrier verifies. Concise German report in re_probes/agent_reports/execcarrier.md. Finish the task.