Repository navigation
Dry-walkthrough rejects an authorized child stamp as zero writes #5285
Description
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- The make-plan worker
0b73e059-2657-4815-8bfe-65b83eec02bewrites a fresh plan at transcript record87. Its first line is# Implementation Plan: normalize_whitespace, with no verification marker. - The dry-walkthrough parent
640ddfca-f2a6-4893-81e7-f310698fb390, record37, callsAgentwith writablegeneral-purpose, modelsonnet. Its prompt explicitly delegates validation, direct correction and stamping at the original plan path. The source contract declareswrite_behavior=alwaysand defaultsread_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. - Owned child
aad2a2f86652757a4initially reads the unstamped plan (sidecar record19), then makes a successfulEditat records67–68 to prependDry-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. - The parent itself uses
AgentandRead, notEdit. Its summary recordswrite_call_count=0,file_changes_count=0,fs_writes_detected=true,git_writes_detected=false, exit0/natural_exit, butsuccess=false,subtype=zero_writes. Its child_outcomes includes the real child ID, parent session ID and transcript locator. out/result.jsonfails the fleet envelope withexpected 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 defaultsread_onlyto false. _compute_write_evidencecountssession.tool_usesfor 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_evidencerequires 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–180retains identity/terminal/provenance information but no write contribution. No owned-child write aggregation was found in this path. - Execution order matters:
_build_skill_resultperforms result construction/adjudication beforecollect_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
Merge develop with commissioning fixes for #5285 and #5286