Skip to content

Support unbounded Goal traversal and truthful child completion - #120

Draft
Ken Chau (kenotron-ms) wants to merge 1 commit into
mainfrom
fix/goal-unbounded-traversal-incomplete
Draft

Ken Chau (kenotron-ms) wants to merge 1 commit into
mainfrom
fix/goal-unbounded-traversal-incomplete

Conversation

@kenotron-ms

@kenotron-ms Ken Chau (kenotron-ms) commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Allow explicit graph max_steps=0 to disable main/subgraph traversal and gate/failure-routing retry ceilings, and prevent interrupted spawned children from being promoted to success by intermediate output or status files. Other graph defaults and node infrastructure retry policies remain unchanged.

Why this change is needed

An author-selected convergence loop can hit an engine-imposed ceiling before satisfying its goal. Separately, nonempty child text or fresh success files do not establish that an incomplete/cancelled execution finished. These are distinct changes: traversal policy and truthful lifecycle interpretation.

How it works

PipelineEngine stores the graph limit, rejects negative/invalid values, and treats zero as unlimited in both execution loops and gate/failure retry checks. AmplifierBackend returns non-explicit FAIL with execution_complete=False for incomplete/cancelled spawn envelopes. Codergen skips status-file overrides for those results; completed children retain the existing verdict channel. Cancellation and externally owned deadlines remain in force.

Importance and ecosystem impact

specs/EXTENSIONS.md §49 records the author-controlled graph extension against Attractor canonical sections 3.2/4.5 and coding-agent 2.5, retaining surrounding lifecycle/verification obligations and existing history-entry turn counting. This is shared runner behavior consumed by resolvers, not a Resolve placement or permission change. Downstream publication must follow upstream review and exact runtime qualification. The owner later selected Goal-budget removal without changing loop-pipeline; this draft is excluded from that release and must not be silently pinned into it.

Verification checklist

  • Current-head GitHub workflow states observed and linked below; failures remain failures.
  • Full current-candidate module/ledger suite and identical-baseline failure comparison complete.
  • Canonical installed runner exercises both traversal and interrupted-child deltas.
  • Current spec fidelity, EXTENSIONS decision and owning AGENTS.md satisfied.
  • Cancellation/deadline/standard-graph regressions qualified.
  • Maintainer decision clears the held engine-extension scope.

Verification evidence

Historical body reports 14 new focused controls and an earlier expanded 62. Candidate full suite reported 2,379 passed/9 failures against a 2,344-passed baseline with the same nine mtime-freshness failures; final local-suite accounting remained unresolved. A later retained transcript excerpt records 2383 passed / 9 failed / 237 skipped; its exact relationship to the earlier 2379-pass scope is not established, so the counts are not combined or presented as a new full-suite pass. New tests cover root/subgraph convergence at 160 calls, failure routing beyond 50, and interrupted text/success-file refusal while completed-child files remain authoritative. The hosted uncapped Goal used an older runner with an uncapped Goal copy, so it does not qualify this engine delta. These are recorded results, not a newly executed acceptance run.

Current-head remote evidence:

  • CI run 37970503816: head 05b239de4c41586088b3c3ac4dac5c4fa4750fea, conclusion success.
  • Workflow completion is not runtime acceptance or formal maintainer approval; no formal submitted review approval was returned.

Notes for reviewers

Review the graph extension and completion-envelope change independently. Trace the additive Outcome field through status overrides and transcript markers; default True is compatibility-sensitive. Unlimited retries are not permission to omit cancellation, resource containment or terminal verification. Historical successful Goal execution cannot be transferred to different runner bytes.

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.

2 participants