Symptom
A /discovery:explore run dispatched discovery:explorer and got back status: complete with good findings, but preload_token: none received and the artifact written as PARITY-MATRIX.md instead of EXPLORE.md plus EXPLORE-<section>.md sidecars. The parent gate caught it (check-dispatch-artifact.sh --index-name EXPLORE.md exited 1, unusable: no EXPLORE.md), and recovery cost a full resume cycle plus re-verification. A parallel discovery:researcher dispatch in the same session returned preload: fallback with a correctly shaped artifact set.
Root cause
agents/explorer.md tells a dispatched explorer that the skill body is preloaded and, when no body reached it, to set preload_token: MISSING and stop. It has no disk fallback and its payload contract has no preload: provenance field. agents/researcher.md and agents/intent-tracer.md both instruct the agent to confirm the body is in context, Read the skill file from disk when it is not, and report preload: fired | fallback; skills/research/SKILL.md and skills/trace-intent/SKILL.md grade that field in gate step 1 and treat a matching token as file-identity rather than preload proof. The explore lane never received that port, so a preload miss on the explorer runs undisciplined, and the agent looks for the token in the dispatch prompt and the memory slice because nothing tells it where the token lives.
Reproduction
- Dispatch
discovery:explorer under a skills: preload that does not resolve (the harness skips it silently and logs to the debug log only).
- The agent reports no token, reads the tree, and writes an artifact shaped by the dispatch prompt's description of the deliverable.
check-dispatch-artifact.sh <slice> --index-name EXPLORE.md --newer-than <slice>/.explore-dispatch exits 1.
Fix
Port the research lane's liveness contract to the explore lane: agents/explorer.md confirms the body is in context before any exploration work, Reads ${CLAUDE_PLUGIN_ROOT}/skills/explore/SKILL.md otherwise, and reports preload: fired | fallback; skills/explore/SKILL.md grades the field in gate step 1, demotes the token to file-identity, and treats a payload without the field as an out-of-date agent definition; skills/explore/reference/dispatch.md carries the rationale; scripts/contract.test.sh section 11 pins the explore lane beside the other two; the explore evals gain the fallback-recovery case.
Origin: handoff-inbox item 20260909-124500-discovery-explorer-preload-miss-and-artifact-shape, observed at discovery 0.19.8 on 2026-09-09.
Symptom
A
/discovery:explorerun dispatcheddiscovery:explorerand got backstatus: completewith good findings, butpreload_token: none receivedand the artifact written asPARITY-MATRIX.mdinstead ofEXPLORE.mdplusEXPLORE-<section>.mdsidecars. The parent gate caught it (check-dispatch-artifact.sh --index-name EXPLORE.mdexited 1,unusable: no EXPLORE.md), and recovery cost a full resume cycle plus re-verification. A paralleldiscovery:researcherdispatch in the same session returnedpreload: fallbackwith a correctly shaped artifact set.Root cause
agents/explorer.mdtells a dispatched explorer that the skill body is preloaded and, when no body reached it, to setpreload_token: MISSINGand stop. It has no disk fallback and its payload contract has nopreload:provenance field.agents/researcher.mdandagents/intent-tracer.mdboth instruct the agent to confirm the body is in context, Read the skill file from disk when it is not, and reportpreload: fired | fallback;skills/research/SKILL.mdandskills/trace-intent/SKILL.mdgrade that field in gate step 1 and treat a matching token as file-identity rather than preload proof. The explore lane never received that port, so a preload miss on the explorer runs undisciplined, and the agent looks for the token in the dispatch prompt and the memory slice because nothing tells it where the token lives.Reproduction
discovery:explorerunder askills:preload that does not resolve (the harness skips it silently and logs to the debug log only).check-dispatch-artifact.sh <slice> --index-name EXPLORE.md --newer-than <slice>/.explore-dispatchexits 1.Fix
Port the research lane's liveness contract to the explore lane:
agents/explorer.mdconfirms the body is in context before any exploration work, Reads${CLAUDE_PLUGIN_ROOT}/skills/explore/SKILL.mdotherwise, and reportspreload: fired | fallback;skills/explore/SKILL.mdgrades the field in gate step 1, demotes the token to file-identity, and treats a payload without the field as an out-of-date agent definition;skills/explore/reference/dispatch.mdcarries the rationale;scripts/contract.test.shsection 11 pins the explore lane beside the other two; the explore evals gain the fallback-recovery case.Origin: handoff-inbox item
20260909-124500-discovery-explorer-preload-miss-and-artifact-shape, observed at discovery 0.19.8 on 2026-09-09.