Repository navigation
Tracker init accepts non-skill prerequisites without completion credit #5266
Description
Tracker init accepts non-skill prerequisites without completion credit
Problem and impact
record_pipeline_step(op="init") accepts dependencies on ordinary MCP recipe steps, creates those steps as pending, and reports success. The completion authority only issues credits for acknowledged successful run_skill receipts. Consequently, an accepted graph such as plan -> clone cannot progress through the normal completion path when clone is bootstrap_clone; even the guarded operator repair refuses it.
This was observed during #5255 implementation commissioning after #5258/#5259 and their follow-up repairs were merged. It is a distinct input/credit compatibility bug. The live graph was supplied by the orchestrator during recovery, not a demonstrated default dependency graph generated by the implementation recipe. Initializing after earlier tool successes also explains why those successes were not backfilled; the stronger defect is that init accepts prerequisites whose tool kind has no completion-credit producer at all.
Provenance and actual reproduction
- MiniMax implementation run 38170536595, attempt 1, tested commit
959603ece0ba5f1bc5f81cf6551a0545cf36bc16onverify-runtime-state-e3-5258-20261011. - That commit contains develop
53ab68d2472153bf5667fce48f25913369527d8eand merged repairs Keep managed lineage runtime state invisible to Git #5261, Fix plan-part contract binding, replan feedback, and E2E evidence #5262, Fix remaining runtime-state visibility and failure reporting #5263, Register runtime-state classification in acceptance policy #5264. The audited tracker/receipt/clone/implementation source is identical on the resolved local Add seeded sandbox implementation E2E validation #5255 branch atc995db4ec40423476638d3b76612c9c754f110f7. - Sandbox:
TalonT-Org/autoskillit-e2e-sandbox, fixed OPEN issue #1, based6c143d2494488deeb6680d7d5cf2e55e3e01732. - Artifact:
e2e-implementation-38170536595-1(artifact ID11714301140). Root transcript:out/transcripts/-workspace-sandbox/10bd420d-7dde-49b8-80d4-461260557043.jsonl.
The transcript gives the following sequence (line numbers are JSONL records, including the real tool result; MCP names have the mcp__plugin_autoskillit_autoskillit__ prefix):
| Record | Actual result |
|---|---|
| 50 | bootstrap_clone(step_name="clone") returned the clone /workspace/autoskillit-runs/impl-20261011-201910-273707 and the unchanged sandbox base. |
| 57 | claim_and_resolve_issue(step_name="claim_and_resolve") returned success:true, claimed:true. |
| 62 | create_and_publish_branch(step_name="create_and_publish") published e2e-implementation-fixture-normalize-whitespace/1-4. |
| 76 | record_pipeline_step(op="init", pipeline_id="26ff1572-72ac-4406-82d2-142de68c0021", dependencies=...) returned success:true, step_count:135, dependency_count:7. |
| 85 | run_skill(..., step_name="plan") denied with DEPENDENCY UNMET, naming clone, claim_and_resolve, create_and_publish, all pending. |
| 90 | record_pipeline_step(op="complete", pipeline_id="26ff1572-72ac-4406-82d2-142de68c0021", step_name="clone") denied with no acknowledged success credit matches this tracker step, stage preflight:pipeline_tracker_credit. |
| 95 | Status confirmed these prerequisites remain pending. |
| 112, 119 | Init under kitchen ID 3fc3ac83-b73d-4a4c-850d-91f4955ec9ab also succeeded, and planning using that explicit order ID hit the same dependency denial. Changing identity did not supply the missing credits. |
Exact accepted dependencies at record 76:
{
"plan": ["clone", "claim_and_resolve", "create_and_publish"],
"salvage_plan": ["plan"],
"bind_plan_set": ["plan", "salvage_plan"],
"check_replan_iteration": ["bind_plan_set"],
"verify": ["bind_plan_set"],
"create_and_publish": ["claim_and_resolve"],
"claim_and_resolve": ["clone"]
}The earlier list-shaped dependencies call at record 72 was correctly rejected by schema validation. It is not evidence for this bug. The accepted dictionary above also contains optional-route assumptions; they are unnecessary to the non-skill prerequisite finding.
Investigator instructions
Download the existing evidence first; this requires GitHub artifact access but no model call or sandbox mutation:
mkdir -p .autoskillit/temp/investigate/tracker-credit-repro
gh run download 38170536595 --repo TalonT-Org/AutoSkillit \
--name e2e-implementation-38170536595-1 \
--dir .autoskillit/temp/investigate/tracker-credit-reproRead the specified transcript records, out/result.json, and out/envelope.json. Tool-result human text and mcpMeta.structuredContent.result contain the server replies; the latter is a JSON string. The final L3 narrative is secondary evidence, not a replacement for those replies.
A smaller live repro to validate while fixing is to load the implementation recipe, finish its recipe initialization, and initialize a fresh tracker for the actual dispatch/order identity with only {"plan":["clone"]}. Then execute its real bootstrap_clone with step_name="clone", inspect tracker status, and attempt the plan dispatch. This isolates the tool-kind mismatch from late initialization and unrelated optional steps. This minimal variant is derived from the source; the retained run above is the live reproduction already performed. Use the repository's installed MCP runtime and authorized sandbox credentials; do not simulate clone by running a different skill under the name clone.
Source evidence and mechanism
- Implementation recipe:
clone,claim_and_resolve, andcreate_and_publishare ordinary tools with explicit step names.planis the subsequentrun_skillstep. - Tracker init copies the active step inventory and supplied dependency mapping; it does not check whether prerequisites have a supported completion path. _build_tracker_steps marks all non-skipped kinds pending.
- Core initialization validation checks object/list/string shape; it does not validate a prerequisite's tool kind or completion support. Automatic dependency derivation uses curated planning/review targets, which is further evidence that the observed clone edge came from manual recovery rather than default derivation.
- Receipt acknowledgement inserts completion credits only for delivered successful
run_skillreceipts with a tracker incarnation. Credit consumption correctly refuses a missing matching credit. - bootstrap_clone prepares the recipe segment and returns clone evidence; it does not issue a run-skill receipt or completion credit.
- Recovery guidance says execute unmet prerequisites through
run_skill, which cannot faithfully execute these ordinary tool steps. Operator repair is constrained by credit, as it should be.
Parent investigation personally checked these source paths and the cited actual tool replies after independent evidence review.
Expected correction and focused validation
Make tracker init's accepted prerequisites agree with the completion authority. If non-skill prerequisites are unsupported, reject this mapping immediately with actionable guidance and ensure callers generate only supported dependencies. If supported, their actual successful tool execution must supply authoritative completion evidence. Preserve the receipt/credit guard; do not accept narrated success or indiscriminately mark pending steps complete.
Add a focused case for an implementation plan dependency on bootstrap_clone: either reject it at initialization without leaving an unusable tracker, or show real tool completion advancing the prerequisite. Retain existing skill acknowledgement, replay, and wrong-identity guard tests. Run the configured task test-local-gate; no direct pytest invocation.
Scope and history
The initial dispatch tracker was unavailable before manual recovery; the later close/reopen returned recipe_artifact_unavailable and intent-fingerprint conflicts. Those are observed context whose independent causes are not established by this ticket. This ticket does not claim they share the credit root cause.
Searches found no open exact duplicate for accepted non-skill prerequisites versus receipt credits. Closed #4293 concerned a previous file-based PostToolUse completion path; #4539 concerned internal tracker authority refactoring. Neither establishes that this mismatch is already fixed. #5258/#5259 were earlier, different commissioning failures.
Classification: bug; recipe:remediation; high confidence. No implementation requirements generation is needed. Full #5255 commissioning remains unaccepted until a fresh run succeeds with complete CI and teardown evidence.
Activity