Skip to content

dld-goal: preconditions, verification, and blocked-item escalation - #32

Closed
jimutt wants to merge 2 commits into
feat/dld-goal-itemsfrom
feat/dld-goal-gates
Closed

dld-goal: preconditions, verification, and blocked-item escalation#32
jimutt wants to merge 2 commits into
feat/dld-goal-itemsfrom
feat/dld-goal-gates

Conversation

@jimutt

@jimutt jimutt commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Stacks on #31. Mechanical halves of DL-003 and DL-004 — both stay proposed until the skill drives them in the next PR.

What

  • guard-preconditions.sh — config, clean tree, single active run, decisions exist and are proposed, no ID collisions with the base branch. Resume additionally re-checks pinned hashes including in-flight items. Reports every problem, not just the first.
  • verify-item.sh — annotation verification plus acceptance checks, recording evidence for passes and failures alike.
  • block-item.sh / resolve-block.sh — escalation as an operator question inside the run, never as a decision record.

Notable

  • Checks execute as argv, never through a shell. An earlier revision used eval; that's gone. Checks are stored as argv arrays and exec'd directly, and --check rejects shell metacharacters with a pointer to a repo script. The exposure being closed is deferred execution — a check written during planning runs later, unattended, possibly on another machine when run artifacts are committed.
  • block-item.sh refuses to block before the retry has been used, making DL-004's one-retry policy an enforced invariant rather than prose an agent might skip. --force for failures retrying can't fix.
  • Collision checking is skipped when no usable base ref exists, so fresh repos without a remote aren't blocked. Base resolution reuses dld-reindex's own resolve-base.sh.

45 new tests.

jimutt and others added 2 commits August 21, 2026 13:47
…calation

Mechanical halves of DL-003 and DL-004 (both stay proposed until the
skill drives them in the next slice):

- guard-preconditions.sh checks config, clean tree, single active run,
  decision existence and proposed status, and unresolved ID collisions
  against the base branch; resume additionally re-checks pinned hashes
  including in-flight items. Reports every problem, not just the first.
- verify-item.sh runs annotation verification and each acceptance check,
  recording evidence for passes and failures alike, and logs the outcome
- block-item.sh blocks an item and raises an operator question in the run,
  refusing to block before the retry has been used unless forced
- resolve-block.sh records the answer and either retries or skips

37 new tests, suite at 297.

Co-Authored-By: Claude Opus 5 <noreply@pi.dev>
Generated-By: pi 0.84.2
Checks are stored as argv arrays and exec'd directly, removing eval from
verify-item.sh. --check still takes a plain command string but rejects
shell metacharacters and quoting, pointing at a repo script instead.

The exposure removed is deferred execution: a check is written during
planning and runs later, unattended, possibly on another machine when
run artifacts are committed. Shell interpretation of stored contract
content is a laundering path even though the agent already has bash.

DL-003 refined inline to record the argv rule and its cost.

Co-Authored-By: Claude Opus 5 <noreply@pi.dev>
Generated-By: pi 0.84.2
@jimutt
jimutt force-pushed the feat/dld-goal-gates branch from 0d06b94 to c22f3e6 Compare August 21, 2026 11:49
@jimutt

jimutt commented Aug 25, 2026

Copy link
Copy Markdown
Owner Author

Superseded by feat/pi-harness-extension — all commits from this branch are merged there. See #41 for the findings log on top.

@jimutt jimutt closed this Aug 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant