You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
-[ ][0021 — MCP dogfood gap closure](0021-mcp-dogfood-gap-closure.md) (owner-mandated 2026-08-11: orchestrator live-probes the MCP surface against the bank use cases, logs ranked gaps, fixes graduate out; phase 1 done — 4 gaps + 1 confirmed-by-design)
148
+
-[ ][0021 — MCP dogfood gap closure](0021-mcp-dogfood-gap-closure.md) (owner-mandated 2026-08-11: orchestrator live-probes the MCP surface against the bank use cases, logs ranked gaps, fixes graduate out; **Phase 1 fully complete 2026-08-12** — all 4 gaps fixed/verified + 1 confirmed-by-design; Phase 2/3 still open, need live interactive probing not code changes)
149
149
-[ ] Workflow pins/favorites (tech debt, split from goal 0015's remainder 2026-08-12) — no pin/favorite concept exists anywhere in Mill today (grepped before scoping it out); needs its own small schema decision (which store owns a pin list, per-workflow or a plain ID set) before any build — deliberately not invented ad hoc under 0015's frecency-only ship. Quick Panel's workflow list sorts by frequency alone until this lands.
150
150
-[ ] ⌘?/⌘/ multi-binding keybinding alias (tech debt, split from goal 0015's remainder 2026-08-12) — the owner's goal-0015 "bind ⌘? (and/or ⌘/) to open the palette too" ask needs a command to carry more than one `KeyCombo`; today's registry (`shared/commands.ts`) is 1:1 (`defaultBinding: KeyCombo | null`). Needs a real schema call (array vs. a small alias table) before it's buildable — real data-model infrastructure, not a self-contained UI change.
151
151
-[ ] Copy-management migration — `app/` (tech debt, split from goal 0032 2026-08-12) — extract `app/`'s remaining hardcoded JSX copy (App.tsx's shell chrome, QuickPanel/QuickPanelApp, ApprovalPromptApp, workflowFrecency-adjacent UI, etc. — ~11 files carry inline strings) into `frontend/src/locales/en/app.json` (already scaffolded, currently `{}`) following `SettingsView.tsx`'s established pattern (`useTranslation()`/`t()`, namespace-per-bounded-context). DoR: read `docs/goals/0032-copy-management.md` for the locked i18n pattern before starting — no new library/schema decision needed, this is mechanical extraction. DoD: every `app/*.tsx` file free of inline user-facing string literals in JSX (aria-labels included), `app.json` populated, existing e2e specs touching `app/` still pass unchanged (translated text must match original English exactly).
return"", fmt.Errorf("a workflow must have exactly one starting node (found none -- every node has an incoming edge because these nodes form a cycle: %s)", strings.Join(cycle, " -> "))
74
+
}
75
+
return"", fmt.Errorf("a workflow must have exactly one starting node")
76
+
}
64
77
ifrootCount!=1 {
65
78
return"", fmt.Errorf("a workflow must have exactly one starting node")
0 commit comments