Skip to content

fix: goal 0021 Phase 1 remainder — DBOS pseudo-steps, input mapping, cycle naming - #20

Merged
alicoding merged 1 commit into
mainfrom
goal/0021-phase1-remainder
Aug 12, 2026
Merged

fix: goal 0021 Phase 1 remainder — DBOS pseudo-steps, input mapping, cycle naming#20
alicoding merged 1 commit into
mainfrom
goal/0021-phase1-remainder

Conversation

@alicoding

Copy link
Copy Markdown
Owner

Summary

  • Gap 2 (DBOS parking pseudo-steps in get_run): investigated and confirmed already fixed by goal 0026's PR the same day it was logged — added the missing test proof for the stepped/breakpoint-flow case specifically.
  • Gap 3 (per-step input field unverified): proved the mapping is correct on a real multi-step run with a real payload; fixed the actual cause of the dogfood confusion (RunStep.Input's omitempty asymmetry with Output).
  • Gap 4 (generic cycle-detection errors): both cycle shapes (a pure cycle with no root, and a cycle downstream of a valid root) now name the actual looping node IDs instead of a generic message.

Phase 1 of goal 0021 is now fully complete (4 gaps fixed/verified + 1 confirmed-by-design). Phase 2/3 remain open — they need live interactive probing, not code changes, and are explicitly out of scope for this PR.

Test plan

  • go vet, golangci-lint, go build (desktop + server tags)
  • go test ./... -race -cover (full suite, all green)
  • New Go tests: TestFindRoot_PureCycle_NamesTheLoopingNodes, TestExecuteWorkflow_CycleDownstreamOfARealRoot_NamesTheLoopingNodes, TestGetRun_MultiStepInput_PopulatedAndChained, plus assertNoDBOSPseudoSteps added to the existing stepped-run breakpoint test
  • Frontend: tsc --noEmit, eslint, boundaries (dependency-cruiser), vitest all green
  • Bindings regenerated for the RunStep.Input JSON-tag change
  • Full lefthook pre-commit suite green (11/11 jobs)

https://claude.ai/code/session_018pkViCNAuZp2vBv2K9AbUh

…, input mapping, cycle naming)

Three verified fixes closing out goal 0021's Phase 1 gap log:

- Gap 2 (DBOS parking pseudo-steps in get_run): investigated and found
  already fixed by goal 0026's PR the same day it was logged (the
  "DBOS." step-name-prefix filter covers every DBOS system op, and the
  stepped/breakpoint flow parks through the identical parkForApproval
  mechanism as a plain guardrail ask). Added the missing proof for the
  stepped-flow case specifically via assertNoDBOSPseudoSteps in
  breakpoint_test.go.
- Gap 3 (per-step input field unverified): proved the mapping itself
  is correct on a real multi-step run with a real payload
  (TestGetRun_MultiStepInput_PopulatedAndChained). Found and fixed the
  actual cause of the dogfood confusion: RunStep.Input carried
  omitempty while sibling Output didn't, silently dropping the JSON
  key on a genuinely-empty first-step input. Removed the omitempty;
  regenerated bindings.
- Gap 4 (generic cycle-detection errors): both cycle shapes now name
  the actual looping node IDs. findRoot's zero-root case (a pure
  cycle) uses a new findAnyCycle DFS helper (graph_cycle.go, split out
  to respect the 500-line file limit). ExecuteWorkflow's runtime walk
  (a cycle downstream of a valid root -- a shape ValidateGraph's
  reachability check doesn't catch at all) now tracks traversal order
  instead of a bare seen-set to report the real loop too.

Phase 1 is now fully complete (4 gaps fixed/verified + 1
confirmed-by-design). Phase 2/3 stay open -- they need live
interactive probing, not code changes, per the goal's own scope.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018pkViCNAuZp2vBv2K9AbUh
@alicoding
alicoding enabled auto-merge (squash) August 12, 2026 13:47
@alicoding
alicoding merged commit 70d41c9 into main Aug 12, 2026
29 of 31 checks passed
alicoding added a commit that referenced this pull request Aug 12, 2026
PR #20's test-go job failed with 'Shutdown: context deadline exceeded'
on TestMillMCPService_RealClientRoundTrip -- unrelated to that PR's own
diff (composition/graph.go, executionsvc), and a rerun of the exact
same failing job went green, confirming a shared-CI-runner timing
flake rather than a real bug: 2s was too tight a grace window for a
real network server's Shutdown() under variable runner load.


Claude-Session: https://claude.ai/code/session_01FYwojT8GdUbYSoggbvEFft

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
alicoding added a commit that referenced this pull request Aug 15, 2026
…, input mapping, cycle naming) (#20)

Three verified fixes closing out goal 0021's Phase 1 gap log:

- Gap 2 (DBOS parking pseudo-steps in get_run): investigated and found
  already fixed by goal 0026's PR the same day it was logged (the
  "DBOS." step-name-prefix filter covers every DBOS system op, and the
  stepped/breakpoint flow parks through the identical parkForApproval
  mechanism as a plain guardrail ask). Added the missing proof for the
  stepped-flow case specifically via assertNoDBOSPseudoSteps in
  breakpoint_test.go.
- Gap 3 (per-step input field unverified): proved the mapping itself
  is correct on a real multi-step run with a real payload
  (TestGetRun_MultiStepInput_PopulatedAndChained). Found and fixed the
  actual cause of the dogfood confusion: RunStep.Input carried
  omitempty while sibling Output didn't, silently dropping the JSON
  key on a genuinely-empty first-step input. Removed the omitempty;
  regenerated bindings.
- Gap 4 (generic cycle-detection errors): both cycle shapes now name
  the actual looping node IDs. findRoot's zero-root case (a pure
  cycle) uses a new findAnyCycle DFS helper (graph_cycle.go, split out
  to respect the 500-line file limit). ExecuteWorkflow's runtime walk
  (a cycle downstream of a valid root -- a shape ValidateGraph's
  reachability check doesn't catch at all) now tracks traversal order
  instead of a bare seen-set to report the real loop too.

Phase 1 is now fully complete (4 gaps fixed/verified + 1
confirmed-by-design). Phase 2/3 stay open -- they need live
interactive probing, not code changes, per the goal's own scope.


Claude-Session: https://claude.ai/code/session_018pkViCNAuZp2vBv2K9AbUh

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
alicoding added a commit that referenced this pull request Aug 15, 2026
PR #20's test-go job failed with 'Shutdown: context deadline exceeded'
on TestMillMCPService_RealClientRoundTrip -- unrelated to that PR's own
diff (composition/graph.go, executionsvc), and a rerun of the exact
same failing job went green, confirming a shared-CI-runner timing
flake rather than a real bug: 2s was too tight a grace window for a
real network server's Shutdown() under variable runner load.


Claude-Session: https://claude.ai/code/session_01FYwojT8GdUbYSoggbvEFft

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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