Skip to content

Multi-feature kickoff sessions#26

Merged
Extentsoftware merged 2 commits intomainfrom
feat/multi-feature-kickoff
May 10, 2026
Merged

Multi-feature kickoff sessions#26
Extentsoftware merged 2 commits intomainfrom
feat/multi-feature-kickoff

Conversation

@Extentsoftware
Copy link
Copy Markdown
Owner

Summary

A team session sometimes produces a transcript that covers more than one feature. The kickoff flow now branches between two workflows based on a transcript-level scope classifier (auto-detect, PO confirms):

  • kickoff/v2 (existing) — single-feature kickoff. Root is a Feature. Decompose proposes capabilities under it.
  • kickoff-multi/v1 (new) — multi-feature initiative. Root is an Initiative. Decompose returns a two-level tree: features at the top, capabilities nested under each via parentSlug.

The Kickoff page now reads:

Analyse → classifier returns { mode, confidence, reason, suggestedTitles } → Single / Multi buttons (recommended option highlighted) → user confirms → workflow starts.

What's in

  • IScopeClassifier + ScopeClassifier — one-shot Foundry agent call, bypasses the workflow engine because the result is advisory and short-lived. Failures fall back to single-feature with confidence 0 so the PO still sees both options.
  • KickoffMultiWorkflowFactory — mirrors KickoffWorkflowFactory's shape; selectors point at the new prompt fragments.
  • Three prompt fragments in SeedFragments.cs: initiative-framing, transcript-multi-discovery-extraction, multi-feature-decomposition. The decomposition fragment mandates the two-level tree shape.
  • Kickoff.razor — replaces the single-step Begin kickoff button with the analyse-then-confirm flow.
  • DI + bootstrapper wiring — registers IScopeClassifier and seeds kickoff-multi/v1.
  • Tests — two focused KickoffServiceTests cover parentSlug topo-resolution (nesting capabilities under their feature) and orphan-fallback behaviour.
  • Docsloom-design.md adds a "Single-feature vs multi-feature kickoff" subsection; team-walkthrough.md updates the kickoff scene to show the analyse-then-confirm UX.

What's reused (unchanged)

Test plan

  • dotnet build Loom.sln -p:TreatWarningsAsErrors=true — clean.
  • dotnet test --filter KickoffKickoffServiceTests (2 tests, parent-slug nesting + orphan fallback) and EndToEndKickoffTests (1 test, single-feature flow) all pass.
  • Manual: paste a multi-feature transcript ("checkout improvements: guest flow, saved-card surfacing, fraud panel"), confirm the classifier suggests Multi, walk through the gates, verify the Operating Picture shows Initiative ▸ Feature ▸ Capability indented.
  • Manual: paste a single-feature transcript, confirm Single is recommended, complete; existing single-feature flow unchanged.
  • Manual: low-confidence override — pick Multi on a single-feature transcript and verify the Initiative+1Feature path still works.

🤖 Generated with Claude Code

Marcus Poulton added 2 commits May 10, 2026 15:00
A team session sometimes covers more than one feature. The kickoff
flow now branches between a single-feature workflow (Feature root,
existing behaviour) and a multi-feature workflow (Initiative root,
decompose returns a tree of features each with their capabilities).

Pipeline on the Kickoff page:
1. PO pastes the transcript, hits "Analyse".
2. IScopeClassifier runs a one-shot agent call (Foundry) and returns
   { mode, confidence, reason, suggestedTitles }. Failures fall back
   to single-feature with confidence 0.
3. The page surfaces the classification with Single / Multi buttons;
   the recommended option is highlighted.
4. PO clicks one — the page creates a Feature or Initiative root and
   starts kickoff/v2 or kickoff-multi/v1 accordingly.

Multi-feature workflow (kickoff-multi/v1) shape:
  normalize (InProc) → initiative-discovery (Foundry, HumanPo,
  DiscoveryObject) → multi-decompose (Foundry, HumanPo,
  DecompositionProposal — tree).

Three new prompt fragments back the multi-feature steps:
- initiative-framing — discovery framed at initiative level.
- transcript-multi-discovery-extraction — schema rules for the
  multi-feature discovery.
- multi-feature-decomposition — mandates the two-level tree using
  parentSlug per the methodology hierarchy.

KickoffService.AcceptDecompositionAsync is reused unchanged — its
parentSlug topo-resolution from the prior PR already handles the
tree shape. Two focused tests cover the resolution explicitly so
the multi-feature wiring is verified.

Docs: kickoff section in loom-design.md describes both flows; team
walkthrough opens the kickoff scene with the analyse-then-confirm UX.
The Kickoff page was rendering "Unknown gate." for the multi-feature
workflow because PoGate.razor matched step keys against the
single-feature constants ("discovery"/"decompose") and KickoffService
hardcoded the same constant when resolving the gate. The multi
workflow uses "initiative-discovery"/"multi-decompose".

Changes:
- PoGate.razor recognises either set via IsDiscoveryStep /
  IsDecomposeStep helpers and passes the actual _step.Key when calling
  ResolveGateAsync (was hardcoded to KickoffWorkflowFactory.DiscoveryStepKey).
- KickoffService.AcceptDecompositionAsync now takes gateStepKey and
  forwards it; callers (PoGate, the focused tests) pass _step.Key so
  the right gate resolves.
@Extentsoftware Extentsoftware merged commit cb0c1f0 into main May 10, 2026
1 check passed
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