Add draft-topology repair escalation + open-requirements ledger#317
Merged
Conversation
A declared output that can't be computed from its wired inputs (output category no upstream step produces) can only spin or fabricate. Add recovery: - New Mold repair-galaxy-draft-topology: escalation target the per-step loop reaches when implementation proves the settled topology can't support a step. Bounded topology *repair* (insert producer/sub-path or narrow output) vs the template's *settling*; reuses the template reference set. Declares the draft schema on its in/out. - New artifact open-requirements-ledger (reframes #281 as autonomous obligations the pipeline discharges or surrenders, not human questions); countable substrate for the loop's decreasing-blocker convergence gate. Threaded read+write through the Galaxy design tier (interface, data-flow, reference-data, IWC-compare, template) + implement + repair. Carries a loop-level topology_repair escalation budget (escalations/cap/open_history); long-term home is the draft. - draft-format: additive escalation clause — loop never decides topology, it returns the decision to the template tier; boundary preserved. - advance-galaxy-draft-step: completes the raise->receive contract. Declares the ledger as in/out + references its note; new Sequence step reads the ledger after implement for a blocking entry and escalates to repair-galaxy-draft-topology (tracking escalations/open_history under cap), independent of the red/green validate branch — the uncomputable case validates green, so it can't ride the draft-validate failure buckets. Routing lives in the per-step loop, not a pipeline branch. - implement-galaxy-tool-step: appends the blocking entry naming step, uncomputable output, and missing evidence; falls through rather than fabricating. - Template bodies gain computability-review pass targeting the ledger; design-tier bodies carry/append/resolve ledger entries. - glossary entries (open-requirements-ledger, topology-repair); regenerated Dashboard/Index. validate: no new errors (3 pre-existing on main); test: 134 pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1d084ee to
b881d36
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
#311: the per-step Galaxy authoring loop is wrapper-tier only. When a draft step's declared output can't be computed from the inputs wired to it — e.g. a classification category no upstream step produces — the loop's only paths are spin or fabricate. The connection graph validates (ports connect) but the step can't be implemented.
Approach
The loop never decides topology — it escalates the decision back to the template tier. This preserves the draft-format boundary ("topology decisions do not belong in the per-step loop") rather than relaxing it.
repair-galaxy-draft-topology(new Mold) — the escalation target. Bounded topology repair (insert a producer step or small sub-path, or honestly narrow the output) as distinct from the template Mold's settling. Reuses the template's reference set; emits draft-tier TODO steps the existing discover-or-author → implement machinery realizes.open-requirements-ledger(new artifact + research note) — reframes #281 from "open questions for a human" to obligations the autonomous pipeline discharges or explicitly surrenders. It is the countable substrate for the loop's decreasing-blocker convergence invariant (each escalation must reduce open entries, under a hard cap; leftovers are surrendered into the draft as labelled gaps). Threaded read+write through the whole design tier (interface, data-flow, reference-data, design, IWC-compare, template) plusimplement-galaxy-tool-stepandrepair-galaxy-draft-topology.implement-galaxy-tool-step(LLM, mid-implementation) — it can't live in thegxwforacle, which is blind to whether wired inputs carry the needed evidence. It appends a blocking entry and falls through.implement-galaxy-tool-stepphase becomes animplement-or-repair[branch]with fallthrough to repair, mirroringdiscover-or-author, in all four Galaxy pipelines.galaxy-workflow-draft-format.mdis additive (settle vs repair); glossary entries added;Dashboard.md/Index.mdregenerated.Validation
npm run validate→ 0 errors (158 pre-existing warnings, unchanged).npm run test→ 100 pass.Known follow-ups (left as open work)
validate-galaxy-steptreats a step backed by a surrendered (still-open) ledger entry is unspecified.implement-galaxy-tool-stepremains a stub apart from the now-real blocking-entry behavior.🤖 Generated with Claude Code