Skip to content

Fleet root is never delivered the verify step digest and exhausts its context #5273

Closed

Description

@Trecek

Fix target and integration order — mandatory routing

Repository: TalonT-Org/AutoSkillit.
Fix PR base branch: develop, currently 381afb4e59cc23acf4ca9ace7a7644b75e6e7b14.
Scope: recipe-execution attestation and delivery of per-step invocation digests to a fleet root. This is product runtime; the files exist on develop.

Open the remediation PR against develop. Once merged, the owner of parent PR #5255 integrates the develop commit and reruns commissioning.

Defect

A fleet root running the implementation recipe reached the verify step without the invocation_template_digest that run_skill requires for it. No tool response in the whole run delivered that digest. The rejection told the root to read a map that was empty for that step. The root then spent its context searching: it pulled the whole recipe, guessed digests, and looped until it hit the output cap. That is what drove it to automatic compaction, which produced the failures tracked in #5271 and #5272.

Owner priority: a fleet root should not come near its context limit in a normal run.

Evidence

Run 38431354139, attempt 1 at 93457f16ecc30249799c02084c20f41d9cd88455, Claude Code 2.1.280, model MiniMax-M3. Artifact e2e-implementation-38431354139-1. Record numbers refer to the root transcript out/transcripts/-workspace-sandbox/123756d6-70db-4319-a2a1-226e765d3d30.jsonl.

What the gate asked for. Record 155, the first verify rejection:

RECIPE EXECUTION REJECTED [recipe_execution_attestation_missing]: an active recipe requires recipe_execution_id and invocation_template_digest; take both from the recipe_execution block of the complete_recipe_initialization receipt (bounded delivery) or of the open_kitchen response (inline delivery), using invocation_template_digests[step_name] for this step

What was delivered. Every product tool response in the run that carries an invocation_template_digests map (run_cmd output where the root printed files itself is excluded):

Record Tool (step_name sent) Step digests delivered
15 open_kitchen none
23 complete_recipe_initialization none
28 bootstrap_clone (clone) plan
35 claim_and_resolve_issue (claim_and_resolve) none
57 run_skill (plan) none
67, 103 complete_run_skill_result none
79 run_python (check_replan_iteration) none
155 run_skill (verify) none
807, 1003, 1301 complete_run_skill_result none
1017 merge_worktree (merge) none
1326 wait_for_ci (ci_watch) none

plan is the only step digest any response delivered.

What the root did.

  • verify attempts before compaction: record 154 with no digest (rejected, recipe_execution_attestation_missing); record 171 with a guessed digest and record 284 with sha256:0000… (both rejected, invocation_template_digest_mismatch).
  • 15 get_recipe_section calls between records 128 and 365, requesting verify, verify_segment, orchestration_rules, content, plan, flow, verify_invocation_template, flow_content, verify_template_digest, invocation_templates, verify_flow_record, verify_digest, section_registry and registry. The content call at record 148 returned 116,994 characters.
  • Context size (input plus cache-read tokens): 36,526 at record 13; 53,797 at record 112; 93,559 at record 164; 130,482 at record 376.
  • Record 376 is one thinking block of 261,571 characters, 64,000 output tokens, stop_reason: "max_tokens", about finding that digest. It took the context to 194,567.
  • Record 382: automatic compaction.
  • The digest that finally worked first appears at record 758. The root read it from the recipe-delivery artifact on disk (.autoskillit/temp/recipe-delivery/…/open_kitchen/implementation/descriptor-2-schema-2/…) through run_cmd. verify then succeeded at record 796, after two further rejections (recipe_execution_static_tool_mismatch).

step_name usage before compaction. Sent on bootstrap_clone, claim_and_resolve_issue, create_and_publish_branch, run_skill and bind_plan_set. Not sent on complete_recipe_initialization, complete_run_skill_result or record_pipeline_step.

Prior occurrence

#4411 (closed 2026-07-31) reported the same shape on the bounded-initialization path: the attestation values were never returned to the orchestrator, it started guessing, and the values survived only in the spilled payload on disk. In this run the first step's digest (plan) was delivered and the next skill step's (verify) was not.

verify does not use dispatch_items, so this is not #4775.

Not established

  • Whether the product is meant to deliver each next step's digest in a tool response and did not, or whether the root omitted a call or argument that would have triggered delivery. The PR Add seeded sandbox implementation E2E validation #5255 text attributes missing digests to the model omitting step_name. This ticket checked what was delivered, not the delivery code.
  • This is one run, on MiniMax-M3.

Required behaviour

  • A root that follows the recipe can obtain every step's digest from the tool responses it is told to read, without pulling the whole recipe into context or reading delivery artifacts from disk.
  • A rejection for a missing or wrong digest names the one action that yields the right digest for that step.
  • Add a regression covering the plan to bind_plan_set to verify transition under attestation. Run pre-commit run --all-files and the configured task test-local-gate.

Coordination

This is upstream of #5271 and #5272 in the same run and independent of #5270. It can be worked in parallel with all three.

Activity

  1. added
    recipe:remediationRoute: investigate/decompose before implementation
    bugExisting behavior is broken
    on Oct 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugExisting behavior is brokenrecipe:remediationRoute: investigate/decompose before implementation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions