Context
Four reusable lessons surfaced while running the savant↔scholar migration (Epics 1–3) as
multi-agent Workflow orchestrations end-to-end (savant v1.0.0 + scholar v3.0.0 shipped). Each came
from something that actually went wrong and was recovered. Filing so craft's orchestration guidance
and /craft:check can encode them. (Saved locally as feedback memories in the savant project.)
Proposed craft improvements
1. Orchestration guidance: a gate must be control-flow, not advisory
2. Orchestration guidance: cross-repo workflows need explicit paths for EVERY agent role
3. Docs: the fix-and-resume pattern for false aborts
4. /craft:check: detect ungated direct-to-dev doc debt
Acceptance
Guidance items land in craft's orchestration docs; item 4 lands as a /craft:check capability or a
recommended CI/pre-commit template.
—
Filed from the savant↔scholar migration session.
Context
Four reusable lessons surfaced while running the savant↔scholar migration (Epics 1–3) as
multi-agent Workflow orchestrations end-to-end (savant v1.0.0 + scholar v3.0.0 shipped). Each came
from something that actually went wrong and was recovered. Filing so craft's orchestration guidance
and
/craft:checkcan encode them. (Saved locally asfeedbackmemories in the savant project.)Proposed craft improvements
1. Orchestration guidance: a gate must be control-flow, not advisory
verify/gate agent only blocks if the scriptbranches on its result. A schema-less narrator string is advisory — the script never
reads it.
verifystep returned "FAIL: not release-ready" butreleaseran in thesame unconditional block, so a public v3.0.0 shipped with cosmetic doc defects.
{pass, blockers[]}) +if (!verify.pass) returnbeforeany irreversible step.
2. Orchestration guidance: cross-repo workflows need explicit paths for EVERY agent role
to docs in the other repo, and state which repo each lives in.
"default BLOCK if uncertain") falsely blocked a correct, CI-green PR — aborting the chain.
(block) from "can't find my reference" (fetch, don't block).
3. Docs: the fix-and-resume pattern for false aborts
Workflow({scriptPath, resumeFromRunId})for recovering from anorchestration/prompt bug: edit only the offending function in the saved script and resume —
unchanged agents replay from cache, live re-run starts at the first edit. Turned a ~70-min
false abort into a one-line fix.
4.
/craft:check: detect ungated direct-to-dev doc debt--post-merge(or a new check), flag docs that were committed directly to an integrationbranch when CI only runs on PRs — they're never linted. Recommend gating
markdownlint-cli2AND
mkdocs build --stricton push (or pre-commit), even for local-only sites.migration links (breaking
mkdocs build --strict) accumulated silently until a manual sweep.Acceptance
Guidance items land in craft's orchestration docs; item 4 lands as a
/craft:checkcapability or arecommended CI/pre-commit template.
—
Filed from the savant↔scholar migration session.