Skip to content

Tracker init accepts non-skill prerequisites without completion credit #5266

Closed

Description

@Trecek

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

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-repro

Read 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, and create_and_publish are ordinary tools with explicit step names. plan is the subsequent run_skill step.
  • 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_skill receipts 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

  1. added
    bugExisting behavior is broken
    recipe:remediationRoute: investigate/decompose before implementation
    in-progressIssue is being actively worked on
    and removed
    in-progressIssue is being actively worked on
    on Oct 12, 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