Skip to content

Dry-walkthrough rejects an authorized child stamp as zero writes #5285

Closed

Description

@Trecek

Dry-walkthrough rejects an authorized child stamp as zero writes

Fix target and integration order — mandatory routing

Repository: TalonT-Org/AutoSkillit.
Fix PR base: develop, baseline 75141403a04ca98bb4c7e6c3af9ce03eaf838f03 or a descendant.

The skill, evidence collection and adjudication code are already on develop. This does not require the unmerged E2E collector. Merge the remediation into develop, then integrate that commit into PR #5255 before fresh commissioning. Do not target the feature branch because its test exposed the failure.

Defect

The dry-walkthrough contract permits a writable delegated worker to validate/correct the original plan and add its required verification marker. A real owned child did that successfully on a fresh unstamped plan. The parent invocation nevertheless failed write_behavior=always because its write evidence counts only the parent's tool calls and supplied file changes; the child edit appears in the owned sidecar, and the plan is in ignored temp storage.

This is a mismatch between permitted delegation and the write-evidence scope, not a request to accept arbitrary filesystem activity. The existing instructions do not explicitly require the primary session to write personally. Whether root-only evidence was intentional must be resolved consistently with the captured parent Agent instruction assigning the stamp and the skill's original-plan-path boundary. The expected plan write really occurred; the failure is not the model omitting the stamp or assigning it to a worker instructed to be read-only.

Actual failure and complete artifact reproduction

Run 38960069882, attempt 1 at tested commit 20ee39237e8e89a8d21f403c3a825273fcac6bf7 used MiniMax-M3 and failed at verify after successful make-plan and sealed binding. Artifact: e2e-implementation-38960069882-1.

Download that artifact under .autoskillit/temp/investigate/. No new model call is required to reproduce the evidence discrepancy:

gh run download 38960069882 --repo TalonT-Org/AutoSkillit --name e2e-implementation-38960069882-1 --dir .autoskillit/temp/investigate/child-write-38960069882
  1. The make-plan worker 0b73e059-2657-4815-8bfe-65b83eec02be writes a fresh plan at transcript record87. Its first line is # Implementation Plan: normalize_whitespace, with no verification marker.
  2. The dry-walkthrough parent 640ddfca-f2a6-4893-81e7-f310698fb390, record37, calls Agent with writable general-purpose, model sonnet. Its prompt explicitly delegates validation, direct correction and stamping at the original plan path. The source contract declares write_behavior=always and defaults read_only=false (links below); these values are not fields captured in the retained summary or manifest. The skill requires a delegated worker and does not reserve editing for the parent.
  3. Owned child aad2a2f86652757a4 initially reads the unstamped plan (sidecar record19), then makes a successful Edit at records67–68 to prepend Dry-walkthrough verified = TRUE. Record71 reads the same path back with the marker on line1. The retained plan artifact also starts with that marker. The original plan body is otherwise unchanged.
  4. The parent itself uses Agent and Read, not Edit. Its summary records write_call_count=0, file_changes_count=0, fs_writes_detected=true, git_writes_detected=false, exit0/natural_exit, but success=false, subtype=zero_writes. Its child_outcomes includes the real child ID, parent session ID and transcript locator.
  5. out/result.json fails the fleet envelope with expected implementation writes were not observed. No implementation or PR is produced by this attempt.

Paths in the retained artifact:

out/transcripts/-workspace-autoskillit-runs-impl-20261016-203741-466617/
  0b73e059-2657-4815-8bfe-65b83eec02be.jsonl
  640ddfca-f2a6-4893-81e7-f310698fb390.jsonl
  640ddfca-f2a6-4893-81e7-f310698fb390/subagents/agent-aad2a2f86652757a4.jsonl
out/pipeline-artifacts/impl-20261016-203741-466617/make-plan/
  normalize_whitespace_plan_2026-10-16_203900.md
logs/sessions/640ddfca-f2a6-4893-81e7-f310698fb390/summary.json
out/result.json

The child reports that no substantive plan corrections were needed, and the parent calls the marker already present. Those prose statements do not erase the recorded successful stamp edit. Use the before/edit/readback/artifact evidence, not the summaries' wording, to establish the effect.

Source mechanism

  • dry-walkthrough semantic contract requires delegated work. Constraints at lines88–103 allow corrections/verification marker at the original plan path; Step6 requires the marker and immediate readback. There is no primary-session-only writer requirement.
  • skill_contracts.yaml declares write_behavior: always; SkillContract defaults read_only to false.
  • _compute_write_evidence counts session.tool_uses for that session. For non-worktree skills it counts direct non-denied write-tool calls or supplied file changes. It does not incorporate the owned child's successful sidecar edit.
  • WriteEvidence.has_implementation_evidence requires a write call or file change. Filesystem-write activity alone is deliberately insufficient.
  • adjudication demotes an otherwise successful always-write invocation without implementation evidence.
  • Existing child-outcome metadata in _type_execution_identity.py:152–180 retains identity/terminal/provenance information but no write contribution. No owned-child write aggregation was found in this path.
  • Execution order matters: _build_skill_result performs result construction/adjudication before collect_and_project_child_outcomes. Adding evidence only to later telemetry would leave this failure unchanged.

Required behavior and meaningful regressions

Make permitted delegation and write adjudication agree. A proven successful edit by the authorized, writable child of this invocation, at the exact in-scope plan path, must not be represented as no expected write. Preserve truthful parent-versus-child attribution rather than claiming a parent direct edit occurred.

Use existing child identity, transcript and skill/Agent authorization boundaries. The root SkillContract's read_only=false is not a structured child permission, and ChildOutcomeDict's role string alone does not establish write authority. An implementation should resolve the ownership scope explicitly rather than add a broad write-rollup subsystem. Do not make fs_writes_detected=true sufficient: runtime/log writes, an unowned child, denied or otherwise unauthorized child writes and out-of-scope paths must remain insufficient. Existing worktree temp-only exclusion must also remain intact.

The matching owned-child evidence must reach adjudication before the zero-write demotion. This artifact's real child outcome has terminal_reason=unknown; do not require a completed telemetry sentinel without making it reliable first. Here the successful Agent hand-back, successful Edit result and readback prove the action completed.

Add a composition regression with a fresh unstamped plan, a parent Agent call, a correctly attributed writable child Edit and successful readback, parent read-only tool history, then final write adjudication. Include negatives for no child write, pre-existing marker with no change, denied/unowned/out-of-scope edits and filesystem noise. Existing root Edit/Write and worktree-write evidence tests must retain their meaning. Run all-files pre-commit and configured task test-local-gate.

Distinct from existing issues

OPEN #3910 is an already-stamped no-op rerun after interruption. This attempt began unstamped and the owned child changed it, so that is not the observed cause. Closed #4234 protects worktree progress from temp-only activity; preserve that boundary. #5283 is fixed and did not recur: both planning workers completed naturally and both attempts have complete lifecycle coverage. This ticket does not change the review or E2E ownership guards.

Classification: bug, recipe:remediation. Full commissioning remains incomplete until the failure is resolved and two fresh implementation attempts are accepted.

Scoped follow-up verification — 2026-10-17

Fix #5288 is included in PR5255 head28448805b through developf66c21cc6. Focused configured verification passed457 tests across both commissioning repairs and the harness; all-files pre-commit and same-head full Tests39082335995 passed.

In implementation39082343853, dry-walkthroughafb18a92 has parent write_call_count0, delegated_write_count2 and success; the real child performed two successful changed bound-plan edits. However, parent Agent37 had explicitly said Do NOT edit any files. Parent inspection corrected an earlier statement that these were authorized. This run is not a clean prompt-compliant live replay of the original writable-delegation case.

Two independent reviewers and parent source inspection found no regression of the declared effect policy: delegated_write_input authorizes scoped owned-child effect admission, not natural-language prompt interpretation. Keep this issue closed. A distinct generated prep-output case, which has explicit writable delegation but no pre-existing input target, is filed as #5289; it is not solved merely by copying plan_path input binding. Full commissioning remains incomplete for the separately documented failures in #5255.

Activity

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