Agentic AI Atlasby a5c.ai
OverviewWikiGraphFor AgentsEdgesSearchWorkspace
/
GitHubDocsDiscord
iiRecord
Agentic AI Atlas · Composition: Startup MVP (Shape Up + Example Mapping + TDD + Scrum) (Library)
page:library-composition-startup-mvpa5c.ai
Search record views/
Record · tabs

Available views

II.Record viewspp. 1 - 1
overviewarticlejsongraph
II.
Page JSON

page:library-composition-startup-mvp

Structured · live

Composition: Startup MVP (Shape Up + Example Mapping + TDD + Scrum) (Library) json

Inspect the normalized record payload exactly as the atlas UI reads it.

File · wiki/library/composition-startup-mvp.mdCluster · wiki
Record JSON
{
  "id": "page:library-composition-startup-mvp",
  "_kind": "Page",
  "_file": "wiki/library/composition-startup-mvp.md",
  "_cluster": "wiki",
  "attributes": {
    "nodeKind": "Page",
    "title": "Composition: Startup MVP (Shape Up + Example Mapping + TDD + Scrum) (Library)",
    "displayName": "Composition: Startup MVP (Shape Up + Example Mapping + TDD + Scrum) (Library)",
    "slug": "library/composition-startup-mvp",
    "articlePath": "wiki/library/composition-startup-mvp.md",
    "article": "\n# Composition: Startup MVP (Shape Up + Example Mapping + TDD + Scrum)\n\nImplements methodology backlog **Example 3** (startup MVP fitness-app archetype, greenfield\ndiscovery -> bet -> build). See `../backlog.md` (~line 1871): \"Startup MVP - Fitness Tracking App\".\n\n## Why this composition\n\n- **Shape Up** owns discovery and commitment: shaping produces the pitch (appetite statement,\n  breadboards, fat-marker notes, rabbit holes, no-gos, 2-5 buildable scopes with demo criteria);\n  the betting table decides bet-or-pass; the appetite runs the circuit breaker mid-build; and\n  cool-down closes the cycle. The artifact that crosses its seam is the **pitch**.\n- **Example Mapping** owns elaboration: each pitch scope gets a 25-minute-session-shaped mapping\n  into blue (story) / yellow (rule) / green (example) / red (question) cards, with gherkin\n  generated per green card. The artifact that crosses its seam is the **example map** (and its\n  gherkin file).\n- **TDD** owns construction: each story is implemented red-green-refactor **directly from its\n  green-card examples**, every test annotated with its `exampleId` — the example->test\n  traceability matrix is the pass currency of the ship gate. The artifact that crosses its seam\n  is the **example-derived test suite**.\n- **Scrum** owns cadence: sprint planning maps the appetite onto sprints\n  (`sprintCount = ceil(appetiteWeeks / sprintLengthWeeks)`), sprint review demos against the\n  pitch demo criteria and places scopes on the hill chart, and the whole-cycle retrospective\n  feeds cool-down. The artifact that crosses its seam is the **sprint increment**.\n\nThe seam this composition exists to encode: **pitch -> bet -> example maps -> example-derived\ntests -> sprint increments -> ship**, all bounded by the appetite.\n\n## Seam map\n\n| Phase | Methodology | Artifact in | Artifact out | Combinator used |\n|-------|-------------|-------------|--------------|-----------------|\n| P0 kip recall | (memory) | kip store | prior seam insights | `kipRecall` |\n| P1 shaping | Shape Up | product idea + insights | pitch (scopes, appetite, no-gos) | — |\n| P2 betting table | Shape Up | pitch | bet decision + provenance | `routedBreakpoint` (`bet-commitment`) |\n| P3 elaboration | Example Mapping | pitch scopes + stories | example maps + gherkin (parallel per scope) | — (`ctx.parallel.all`) |\n| P4 sprint setup | Scrum | example maps | sprint plan + **appetite->sprint mapping** | — |\n| P5 build loop | TDD inside Scrum | sprint backlog + example maps | tested increments, hill chart, appetite check | `routedBreakpoint` (`scope-cut-approval`, conditional) |\n| P6 ship gate | (verification) | executed suite + traceability matrix | ship-readiness verdict | `adversarialGate` (`csm.ship-readiness`) |\n| P7 ship | (release) | gate evidence | shipped MVP (guarded) | `routedBreakpoint` (`mvp-ship`) |\n| P8 close | Scrum retro + Shape Up cool-down | cycle record | retro actions, cool-down notes, kip facts | `kipAssert` |\n\nThe **circuit-breaker/scope-cut seam** (P5) is Shape Up's fixed-time-variable-scope rule living\ninside Scrum's cadence: when the appetite check reports `exceeded` or `forecastOverrun`, a scope\ncut is proposed and policy-gated; the founder may instead grant a one-time `extend-one-sprint`\nor order `stop-and-ship-what-is-done`. At most `maxScopeCutRounds` rounds; no silent extension.\n\n## Inputs\n\n```\n{\n  productName: string (required),\n  mvpDescription: string (required),\n  appetiteWeeks?: number (default 2 — startup pace, not 6),\n  sprintLengthWeeks?: number (default 1; sprintCount = ceil(appetiteWeeks / sprintLengthWeeks)),\n  teamContext?: string,\n  maxFixAttempts?: number (default 2 — ship-gate fixer budget),\n  maxScopeCutRounds?: number (default 1),\n  kipEnabled?: boolean (default true),\n  kipDir?: string (default '.a5c/kip'),\n  kipModel?: string (default 'sonnet')\n}\n```\n\n## Outputs\n\n```\n{\n  success: boolean,\n  bet: { approved, breakpointId, expert, autoApproved, response },\n  pitch: { pitchPath, appetiteWeeks, scopes, rabbitHoles, noGos },\n  exampleMaps: [{ scopeId, cards, gherkinPath }],\n  sprints: [{ sprint, goal, storiesCompleted, tddSummaries, hillChart, appetiteRemainingWeeks }],\n  circuitBreaker: { tripped, scopeCut? { approved, breakpointId, cutScopes, response } },\n  shipGate: { passed, attempts, escalated, issues, evidence },\n  ship: { approved, shipped, breakpointId, expert, autoApproved, response },\n  coolDown: { retroActions, coolDownNotes },\n  kipFactsAsserted: number,\n  artifacts: array,\n  metadata: { processId, runId, breakpointsHit, appetite: { budgetWeeks, consumedWeeks } }\n}\n```\n\nA rejected bet (\"pass\") is a **valid** outcome, not an error: the process records provenance,\nruns cool-down with reason `bet-passed`, asserts the kip facts, and returns `success: false`\nwith nothing downstream ever invoked.\n\n## Policy-gated actions\n\n| Action | breakpointId | Expert | Phase | Executor guard |\n|--------|--------------|--------|-------|----------------|\n| Commit the bet + appetite | `bet-commitment` | `product-founder` | P2 | downstream phases run only if `approved === true` |\n| Approve circuit-breaker scope cuts | `scope-cut-approval` | `product-founder` | P5 (conditional) | cuts applied only if `approved === true`; rejection must carry an explicit decision |\n| Ship the MVP | `mvp-ship` | `product-founder` | P7 | `shipMvpTask` runs ONLY inside `if (approved === true)` |\n\nAll three are raised via `routedBreakpoint` with tags `['policy-gated', 'csm', <phase-tag>]`,\nstrategy `single`, and **no** `autoApproveAfterN` — the process never auto-approves a policy\ngate. Provenance `{ approved, autoApproved, breakpointId, expert, response }` is always recorded\n(`autoApproved` reflects `response?.autoApproved === true` set by an external rule). Ready for\n`adapters/policy` YAML gating on the `policy-gated` tag.\n\n## Ship-readiness gate (executed evidence)\n\n`adversarialGate` with `gateId: 'csm.ship-readiness'` over the ship-readiness report written by\n`csm.test-suite-execution` (which itself EXECUTES the full suite and builds the example->test\ntraceability matrix). Three independent critics — `example-coverage-critic`,\n`tdd-evidence-critic`, `mvp-scope-critic` — are fanned out in parallel by the combinator; none\nis the implementer or the test-executor, and none sees another's verdict. Iron law: critics\n**re-run the suite themselves**; every in-scope green-card example must map to an EXECUTED\npassing test (skipped/todo/unexecuted mappings are FAIL); passing without evidence is coerced to\na protocol failure. A bounded fix loop (`maxFixAttempts`, built-in fixer) runs between rounds;\nexhaustion escalates via the combinator-owned `csm.ship-readiness.gate-escalation` breakpoint to\n`owner`. If the gate still fails, the process returns `success: false` and **`mvp-ship` is never\nraised**.\n\n## Composed modules\n\n- [`../shape-up/`](../shape-up/) — shaping, betting table, hill chart, circuit breaker, cool-down\n- [`../example-mapping/`](../example-mapping/) — card-session shape and gherkin output\n- [`../scrum/`](../scrum/) — sprint planning / review / retrospective cadence\n- [`../tdd.js`](../tdd.js) — red-green-refactor loop (a **file**, exporting only `process`; its\n  task constants are not exported, so this composition defines its own `csm.*` tasks mirroring\n  those phase semantics rather than importing constants)\n- [`../atdd-tdd/`](../atdd-tdd/) is the acceptance-first sibling — cited for orientation, **not**\n  composed here\n\nCombinators come from\n[`../../specializations/common-utilities/routed-gate-combinators.js`](../../specializations/common-utilities/routed-gate-combinators.js)\n(`routedBreakpoint`, `adversarialGate`, `kipRecall`, `kipAssert`).\n\n## Usage\n\n```js\nconst result = await orchestrate('methodologies/composition-startup-mvp', {\n  productName: 'FitTrack',\n  mvpDescription: 'Fitness tracking mobile app MVP: workout logging and progress charts',\n  appetiteWeeks: 2,\n  sprintLengthWeeks: 1,\n});\n```\n\n## Design rules honored\n\n- **No shell subtasks**: every `csm.*` task is `kind: 'agent'`; test execution is performed BY\n  agents who paste executed output as evidence.\n- **No fallbacks**: invalid inputs throw; an unapproved bet or ship and a failed gate return\n  explicit `success: false` shapes; a rejected scope cut must carry an explicit founder decision\n  (`extend-one-sprint`, once, or `stop-and-ship-what-is-done`) — never a silent alternate path.\n- **Sparse breakpoints**: exactly the three policy gates plus the combinator-owned gate\n  escalation; unresolved red cards are carried as named sprint risks instead of extra\n  breakpoints.\n- **Bounded loops**: circuit breaker at most `maxScopeCutRounds`; gate fixer at most\n  `maxFixAttempts`.\n- **Honest scheduling**: `ctx.parallel.all` is used exactly twice in process code (P3 per-scope\n  elaboration, P5 `parallelSafe` story fan-out); dependent stories are awaited in `dependsOn`\n  order, never speculatively co-scheduled.\n",
    "documents": [
      "specialization:composition-startup-mvp"
    ]
  },
  "outgoingEdges": [
    {
      "from": "page:library-composition-startup-mvp",
      "to": "specialization:composition-startup-mvp",
      "kind": "documents"
    }
  ],
  "incomingEdges": [
    {
      "from": "page:index",
      "to": "page:library-composition-startup-mvp",
      "kind": "contains_page"
    }
  ]
}

Shortcuts

Back to overview
Open graph tab