Two things land together:
1. Ships the 5 workflow recipes as TOML files under
templates/workflows/*.toml:
- research_only (hub_spoke research → MD + PDF)
- research_and_code (research → coding loop until INT-XX drained)
- security_hardening (scan → research patches → coding with
reviewer approval + full MCP bundle)
- refactor (single-pass coding with dep audit
preamble + before/after benchmarks)
- benchmark (author + baseline benchmarks per stack)
Each declares phases[], per-phase config, default_team_template.
Loaded read-only into an in-memory registry (workflow_registry)
via OnceLock — no DB row per recipe.
2. Ships the mission-launch orchestrator that closes the loop from
Slice 3.5d's mechanics. When a mission transitions draft→running,
`mission_orchestrator::on_launch`:
- Reads mission.team_template_id (skips if unset)
- Loads the team template detail (roles + skills bindings)
- Builds a topology graph from role slots via cm_topology::build
- Inserts the teams row + stamps template_id/version/risk_profile/mcp_bundles
- For each role: agent insert, model binding, runtime provision
(opt-in via RuntimeProvisioner::from_env), brain_seed::ingest
(Slice 3.5d), agent_template_link::upsert (Slice 3.5d),
team_members bind, audit trail
- UPDATE missions SET team_id = ...
Wired into routes::missions::set_status when prior.status='draft'
and new='running'. Failures log + are non-fatal (mission still
flips to running so the user can inspect + retry).
With this, Slice 3.5d's brain-seed + link machinery actually gets
populated, and the MCP skills server's template-defaults-merge path
(Slice 3.5b/d) starts serving real bindings to real agents.
Follow-ups (Slice 5-8):
- Task-card parser watches run events for TASK/COMPLETED markers
→ mission_tasks rows
- PDF renderer worker turns MD artifacts into PDFs
- Before/after benchmark runner honors phases[].config.benchmark
- Security scan MCP bundle exposes cargo-audit/gitleaks/trivy/semgrep
- Level-up endpoints diff learned-vs-seeded via agent_template_link
Co-Authored-By: Claude Opus 4.7 <[email protected]>
32 lines
1.2 KiB
TOML
32 lines
1.2 KiB
TOML
key = "research_and_code"
|
|
title = "Research + Coding Loop"
|
|
blurb = "Research a topic against a repo, then loop the coding team through the produced INT-XX items until done."
|
|
requires_repo = true
|
|
|
|
[[phases]]
|
|
kind = "research"
|
|
order_idx = 0
|
|
[phases.config]
|
|
produces = ["md", "pdf"]
|
|
default_topology = "hub_spoke"
|
|
|
|
[[phases]]
|
|
kind = "coding"
|
|
order_idx = 1
|
|
[phases.config]
|
|
# Loop policy: keep iterating until the artifact yields no more
|
|
# unconsumed INT-XX items. Scheduler stops when `consumed_int_ids`
|
|
# equals the artifact's declared set.
|
|
loop = "until_no_more_int_items"
|
|
# Preamble injected at the head of each iteration's task text so
|
|
# the agents know where the repo lives + how to commit. Slice 3.5c's
|
|
# `workspace-repo-commit-protocol` skill also covers this — the
|
|
# preamble is the belt, the skill the suspenders.
|
|
task_preamble = "workspace_repo_v1"
|
|
# Only commit when tests pass. Enforced by the team's TEST_PASS
|
|
# marker before the committer runs. If a coding role wants to bypass
|
|
# (rare — pure docs commit), it emits COMMIT_POLICY_OVERRIDE: <reason>.
|
|
commit_policy = "on_green_tests"
|
|
|
|
default_team_template = "rust_sdlc"
|