@limina-labs/momentum 0.30.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +214 -0
- package/adapters/antigravity/adapter.js +196 -0
- package/adapters/antigravity/hooks.json +39 -0
- package/adapters/antigravity/instructions/AGENTS.md +638 -0
- package/adapters/antigravity/instructions/header.md +3 -0
- package/adapters/antigravity/instructions/surfaces.md +153 -0
- package/adapters/antigravity/instructions/vars.json +1 -0
- package/adapters/antigravity/scripts/antigravity-hook-adapter.sh +147 -0
- package/adapters/antigravity/skills/momentum-orient/SKILL.md +29 -0
- package/adapters/antigravity/skills/momentum-reviewer-architecture/SKILL.md +39 -0
- package/adapters/antigravity/skills/momentum-reviewer-qa/SKILL.md +38 -0
- package/adapters/antigravity/skills/momentum-reviewer-security/SKILL.md +42 -0
- package/adapters/antigravity/skills/swarm-supervisor/SKILL.md +75 -0
- package/adapters/antigravity/workflows/continue.md +39 -0
- package/adapters/antigravity/workflows/dispatch.md +49 -0
- package/adapters/antigravity/workflows/handoff.md +38 -0
- package/adapters/antigravity/workflows/review-code.md +84 -0
- package/adapters/antigravity/workflows/scout.md +42 -0
- package/adapters/antigravity/workflows/swarm.md +203 -0
- package/adapters/claude-code/adapter.js +148 -0
- package/adapters/claude-code/commands/continue.md +82 -0
- package/adapters/claude-code/commands/dispatch.md +154 -0
- package/adapters/claude-code/commands/handoff.md +85 -0
- package/adapters/claude-code/commands/review-code.md +194 -0
- package/adapters/claude-code/commands/scout.md +119 -0
- package/adapters/claude-code/commands/swarm.md +242 -0
- package/adapters/claude-code/instructions/header.md +3 -0
- package/adapters/claude-code/instructions/vars.json +1 -0
- package/adapters/claude-code/settings.json +36 -0
- package/adapters/codex/adapter.js +225 -0
- package/adapters/codex/agents/momentum-reviewer-architecture.toml +57 -0
- package/adapters/codex/agents/momentum-reviewer-qa.toml +52 -0
- package/adapters/codex/agents/momentum-reviewer-security.toml +57 -0
- package/adapters/codex/agents/swarm-supervisor.toml +76 -0
- package/adapters/codex/commands/continue.md +40 -0
- package/adapters/codex/commands/dispatch.md +111 -0
- package/adapters/codex/commands/handoff.md +57 -0
- package/adapters/codex/commands/scout.md +90 -0
- package/adapters/codex/commands/swarm.md +334 -0
- package/adapters/codex/hooks.json +36 -0
- package/adapters/codex/instructions/AGENTS.md +691 -0
- package/adapters/codex/instructions/header.md +3 -0
- package/adapters/codex/instructions/surfaces.md +206 -0
- package/adapters/codex/instructions/vars.json +1 -0
- package/adapters/codex/skills/momentum-orient/SKILL.md +29 -0
- package/adapters/opencode/adapter.js +224 -0
- package/adapters/opencode/agents/momentum-reviewer-architecture.md +54 -0
- package/adapters/opencode/agents/momentum-reviewer-qa.md +48 -0
- package/adapters/opencode/agents/momentum-reviewer-security.md +48 -0
- package/adapters/opencode/agents/swarm-supervisor.md +51 -0
- package/adapters/opencode/commands/continue.md +40 -0
- package/adapters/opencode/commands/dispatch.md +111 -0
- package/adapters/opencode/commands/handoff.md +57 -0
- package/adapters/opencode/commands/review-code.md +194 -0
- package/adapters/opencode/commands/scout.md +90 -0
- package/adapters/opencode/commands/swarm.md +334 -0
- package/adapters/opencode/instructions/AGENTS.md +604 -0
- package/adapters/opencode/instructions/header.md +3 -0
- package/adapters/opencode/instructions/surfaces.md +119 -0
- package/adapters/opencode/instructions/vars.json +1 -0
- package/adapters/opencode/plugins/momentum.js +219 -0
- package/adapters/opencode/skills/momentum-lanes/SKILL.md +30 -0
- package/adapters/opencode/skills/momentum-orient/SKILL.md +29 -0
- package/adapters/opencode/skills/momentum-track/SKILL.md +28 -0
- package/adapters/opencode/skills/momentum-validate/SKILL.md +31 -0
- package/bin/antigravity.js +112 -0
- package/bin/ecosystem.js +1302 -0
- package/bin/lanes.js +300 -0
- package/bin/momentum.js +1857 -0
- package/bin/okf.js +72 -0
- package/bin/orchestration-commands.js +305 -0
- package/bin/state-commands.js +218 -0
- package/bin/swarm.js +1104 -0
- package/bin/waves.js +147 -0
- package/core/adapter-capabilities.md +112 -0
- package/core/adapter-parity-matrix.md +170 -0
- package/core/commands/brainstorm-idea.md +98 -0
- package/core/commands/brainstorm-phase.md +129 -0
- package/core/commands/complete-phase.md +130 -0
- package/core/commands/ecosystem.md +161 -0
- package/core/commands/hotfix.md +64 -0
- package/core/commands/initiative.md +119 -0
- package/core/commands/lanes.md +94 -0
- package/core/commands/log.md +45 -0
- package/core/commands/migrate.md +70 -0
- package/core/commands/review.md +31 -0
- package/core/commands/session.md +79 -0
- package/core/commands/start-phase.md +161 -0
- package/core/commands/start-project.md +142 -0
- package/core/commands/sync-docs.md +81 -0
- package/core/commands/systematic-debug.md +46 -0
- package/core/commands/track.md +54 -0
- package/core/commands/validate.md +96 -0
- package/core/ecosystem/layout.md +128 -0
- package/core/ecosystem/lib/index.js +245 -0
- package/core/ecosystem/lib/initiative.js +258 -0
- package/core/ecosystem/lib/pointer.js +198 -0
- package/core/ecosystem/lib/state.js +295 -0
- package/core/ecosystem/schema/ecosystem.schema.json +85 -0
- package/core/ecosystem/schema/initiative.schema.json +61 -0
- package/core/ecosystem/scripts/session-append.sh +167 -0
- package/core/ecosystem/templates/ecosystem-agents.md +79 -0
- package/core/ecosystem/templates/ecosystem-claude.md +79 -0
- package/core/ecosystem/templates/ecosystem-settings-claude.json +14 -0
- package/core/ecosystem/templates/initiative-template.md +50 -0
- package/core/engines/subagent-dispatch.md +80 -0
- package/core/git-hooks/commit-msg +14 -0
- package/core/git-hooks/contract.js +176 -0
- package/core/git-hooks/pre-push +15 -0
- package/core/git-hooks/run-check.js +160 -0
- package/core/instructions/legacy-project-md-hashes.json +12 -0
- package/core/instructions/navigation.md +14 -0
- package/core/instructions/rules-body.md +454 -0
- package/core/lanes/lib/board.js +161 -0
- package/core/lanes/lib/land.js +301 -0
- package/core/lanes/lib/signals.js +207 -0
- package/core/lanes/lib/state.js +325 -0
- package/core/lib/frontmatter.js +163 -0
- package/core/lib/okf-migrate.js +374 -0
- package/core/lib/okf-types.js +61 -0
- package/core/lifecycle-contract.md +59 -0
- package/core/orchestration/capability-routing.js +120 -0
- package/core/orchestration/continue.js +102 -0
- package/core/orchestration/dispatch.js +366 -0
- package/core/orchestration/events.js +197 -0
- package/core/orchestration/handoff.js +317 -0
- package/core/orchestration/index.js +50 -0
- package/core/orchestration/run-artifact.js +93 -0
- package/core/orchestration/scout.js +327 -0
- package/core/orchestration/session-log.js +123 -0
- package/core/orchestration/tracking.js +180 -0
- package/core/orchestration/types.js +131 -0
- package/core/scripts/brainstorm-gate.sh +157 -0
- package/core/scripts/check-history-reminder.sh +110 -0
- package/core/scripts/sessionstart-handoff.sh +180 -0
- package/core/specs-templates/CLAUDE.md +484 -0
- package/core/specs-templates/README.md +32 -0
- package/core/specs-templates/specs/README.md +30 -0
- package/core/specs-templates/specs/adhoc/README.md +31 -0
- package/core/specs-templates/specs/adhoc/_TEMPLATE.md +29 -0
- package/core/specs-templates/specs/architecture/ecosystem.md +214 -0
- package/core/specs-templates/specs/backlog/backlog.md +46 -0
- package/core/specs-templates/specs/backlog/details/.gitkeep +0 -0
- package/core/specs-templates/specs/changelog/.gitkeep +0 -0
- package/core/specs-templates/specs/decisions/0000-template.md +33 -0
- package/core/specs-templates/specs/decisions/README.md +29 -0
- package/core/specs-templates/specs/decisions/impact-map.md +14 -0
- package/core/specs-templates/specs/decisions/index.md +4 -0
- package/core/specs-templates/specs/index.md +16 -0
- package/core/specs-templates/specs/phases/README.md +41 -0
- package/core/specs-templates/specs/phases/index.md +6 -0
- package/core/specs-templates/specs/planning/roadmap.md +23 -0
- package/core/specs-templates/specs/status.md +70 -0
- package/core/specs-templates/specs/vision/principles.md +16 -0
- package/core/specs-templates/specs/vision/project-charter.md +35 -0
- package/core/specs-templates/specs/vision/success-criteria.md +19 -0
- package/core/swarm/absorb.js +294 -0
- package/core/swarm/conductor.js +499 -0
- package/core/swarm/focus.js +151 -0
- package/core/swarm/inbox.js +222 -0
- package/core/swarm/join.js +138 -0
- package/core/swarm/lib/board.js +178 -0
- package/core/swarm/lib/brief.js +157 -0
- package/core/swarm/lib/git-sha-cache.js +71 -0
- package/core/swarm/lib/incremental-log.js +117 -0
- package/core/swarm/lib/manifest.js +578 -0
- package/core/swarm/lib/pre-merge.js +112 -0
- package/core/swarm/lib/saga.js +146 -0
- package/core/swarm/lib/sessions.js +83 -0
- package/core/swarm/lib/tokens.js +255 -0
- package/core/swarm/lib/wave-ordering.js +55 -0
- package/core/swarm/schema/board.schema.json +54 -0
- package/core/swarm/schema/contract.schema.json +56 -0
- package/core/swarm/schema/dispatch-run.schema.json +70 -0
- package/core/swarm/schema/manifest.schema.json +234 -0
- package/core/swarm/schema/signal.schema.json +61 -0
- package/core/swarm/signals.js +296 -0
- package/core/swarm/supervise.md +81 -0
- package/core/waves/lib/plan-graph.js +175 -0
- package/core/waves/lib/waves.js +83 -0
- package/package.json +46 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Architecture Spec
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Ecosystem Layer — Reference
|
|
6
|
+
|
|
7
|
+
> Single source of truth for how momentum models multi-repo
|
|
8
|
+
> coordination. Shipped with `momentum init` (Phase 9, v0.12.0+).
|
|
9
|
+
> Member repos read this when they need to understand the cross-repo
|
|
10
|
+
> contract; the runtime helpers live in the momentum package itself
|
|
11
|
+
> at `core/ecosystem/`.
|
|
12
|
+
|
|
13
|
+
## When to use ecosystem mode
|
|
14
|
+
|
|
15
|
+
| You have… | Use mode | First command |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| One project | **Single-project** *(default)* | `momentum init` |
|
|
18
|
+
| Several related projects working as one product | **Ecosystem** | `momentum init --ecosystem <name>` |
|
|
19
|
+
| An existing momentum project that should join an existing ecosystem | **Ecosystem** *(join)* | `momentum join <ecosystem-path>` |
|
|
20
|
+
| A member repo you want to detach from its ecosystem | **Standalone** *(leave)* | `momentum leave` |
|
|
21
|
+
| Confusion about what state a repo is in | **Diagnostic** | `momentum doctor` |
|
|
22
|
+
|
|
23
|
+
**Single-project usage is fully supported and is the default.** Ecosystem mode is strictly additive — when no ecosystem.json is reachable, every `momentum` and slash command behaves identically to single-project use. There is no cost to ignoring this entire document if you only have one project.
|
|
24
|
+
|
|
25
|
+
## What an ecosystem is
|
|
26
|
+
|
|
27
|
+
A **momentum ecosystem** is a sibling git repo that coordinates a set
|
|
28
|
+
of related momentum-installed repos as one logical product. It holds
|
|
29
|
+
three things:
|
|
30
|
+
|
|
31
|
+
1. A **manifest** (`ecosystem.json`) — declares members + roles +
|
|
32
|
+
dependency edges.
|
|
33
|
+
2. **Initiatives** (`initiatives/NNNN-<slug>.md`) — first-class records
|
|
34
|
+
of features that span multiple member repos.
|
|
35
|
+
3. A **daily session log** (`sessions/YYYY-MM-DD.md`) — auto-appended
|
|
36
|
+
by each member's PostToolUse hook on `git commit` / `gh pr` events.
|
|
37
|
+
|
|
38
|
+
The ecosystem layer is **strictly additive**. It never writes into a
|
|
39
|
+
member's `specs/`. The only touch on a member is one fenced line in
|
|
40
|
+
its `CLAUDE.md` / `AGENTS.md` pointing back at the ecosystem.
|
|
41
|
+
|
|
42
|
+
## Layout
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
<ecosystem-root>/ ← its own git repo
|
|
46
|
+
├── ecosystem.json ← manifest (members, roles, edges)
|
|
47
|
+
├── README.md
|
|
48
|
+
├── initiatives/
|
|
49
|
+
│ ├── README.md
|
|
50
|
+
│ └── NNNN-<slug>.md
|
|
51
|
+
├── sessions/
|
|
52
|
+
│ └── YYYY-MM-DD.md
|
|
53
|
+
├── .state/ ← gitignored runtime
|
|
54
|
+
│ ├── active-initiative
|
|
55
|
+
│ └── last-session
|
|
56
|
+
└── .gitignore
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Member opt-in / opt-out
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# From inside the ecosystem root:
|
|
63
|
+
momentum ecosystem init <name> # scaffold a new ecosystem
|
|
64
|
+
momentum ecosystem add ../<repo> # register a member
|
|
65
|
+
momentum ecosystem add ../<repo> --role infra # with explicit role
|
|
66
|
+
momentum ecosystem remove <id> # unregister
|
|
67
|
+
momentum ecosystem status # print state
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
After `add`, the target repo's CLAUDE.md / AGENTS.md gains:
|
|
71
|
+
|
|
72
|
+
```html
|
|
73
|
+
<!-- ecosystem:begin -->
|
|
74
|
+
> Member of `<name>` ecosystem at `../<name>`.
|
|
75
|
+
> See ecosystem.json for siblings and `momentum ecosystem status` for live state.
|
|
76
|
+
<!-- ecosystem:end -->
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Re-running `add` is a no-op. `remove` strips both the manifest entry
|
|
80
|
+
and the fenced block from the member.
|
|
81
|
+
|
|
82
|
+
## Initiatives
|
|
83
|
+
|
|
84
|
+
A cross-repo feature is one markdown file at
|
|
85
|
+
`initiatives/NNNN-<slug>.md`. Frontmatter:
|
|
86
|
+
|
|
87
|
+
```yaml
|
|
88
|
+
---
|
|
89
|
+
id: 1
|
|
90
|
+
slug: memory-module
|
|
91
|
+
status: in-progress # | closed | abandoned
|
|
92
|
+
started: 2026-06-07
|
|
93
|
+
closed: # required when status=closed
|
|
94
|
+
owner: avinash
|
|
95
|
+
repos: [sapience, frontend, infra]
|
|
96
|
+
title: "Memory module v1"
|
|
97
|
+
---
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Body sections are fixed: **Why** · **Per-repo contributions** ·
|
|
101
|
+
**Linked decisions** · **Deploy chronology** · **Close**. See the
|
|
102
|
+
template at `core/ecosystem/templates/initiative-template.md`.
|
|
103
|
+
|
|
104
|
+
The slash-command surface is `/initiative create|status|close|list`
|
|
105
|
+
(see the `/initiative` recipe). Numbering is monotonically increasing
|
|
106
|
+
across the ecosystem; the slug is for human readability.
|
|
107
|
+
|
|
108
|
+
## Session log
|
|
109
|
+
|
|
110
|
+
Auto-populated by each member repo's PostToolUse hook. Triggers:
|
|
111
|
+
|
|
112
|
+
| Trigger | Line emitted |
|
|
113
|
+
|---|---|
|
|
114
|
+
| `git commit` (via Bash tool) | `HH:MMZ [<member>] commit: <subject> (<sha>)` |
|
|
115
|
+
| `gh pr create` / `gh pr merge` (via Bash tool) | `HH:MMZ [<member>] pr: <cmd-preview>` |
|
|
116
|
+
| `/session log <message>` | `HH:MMZ [<member>] note: <message>` |
|
|
117
|
+
|
|
118
|
+
First write of the day prepends a header:
|
|
119
|
+
|
|
120
|
+
```markdown
|
|
121
|
+
# Session YYYY-MM-DD
|
|
122
|
+
Active initiative: <slug> # only when .state/active-initiative is set
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Outside any ecosystem the hook is a silent no-op — single-repo
|
|
126
|
+
momentum projects see no change.
|
|
127
|
+
|
|
128
|
+
## How discovery works
|
|
129
|
+
|
|
130
|
+
Every command (CLI or hook) finds the ecosystem root via a
|
|
131
|
+
bounded upward walk. From `$PWD`, climb up to 5 parents by default
|
|
132
|
+
(configurable via the `MOMENTUM_MAX_PARENT_WALK` env var) looking for
|
|
133
|
+
a directory whose **siblings** contain an `ecosystem.json`. First hit
|
|
134
|
+
wins; cached per-process.
|
|
135
|
+
|
|
136
|
+
This means the ecosystem repo and member repos live as **siblings**
|
|
137
|
+
under one parent directory:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
<parent>/
|
|
141
|
+
├── <ecosystem>/ ← contains ecosystem.json
|
|
142
|
+
├── <member-1>/ ← contains CLAUDE.md + the ecosystem pointer
|
|
143
|
+
├── <member-2>/
|
|
144
|
+
└── <member-3>/
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## What stays per-repo (unchanged)
|
|
148
|
+
|
|
149
|
+
| Per-repo (member) | Cross-repo (ecosystem) |
|
|
150
|
+
|---|---|
|
|
151
|
+
| `specs/status.md` | `ecosystem.json` |
|
|
152
|
+
| `specs/phases/*` | `initiatives/*` |
|
|
153
|
+
| `specs/backlog/` | (Tier 2) — backlog aggregation |
|
|
154
|
+
| `specs/changelog/` | `sessions/` |
|
|
155
|
+
| `specs/decisions/` (ADRs) | (Tier 2) — federated impact-map |
|
|
156
|
+
| `/track`, `/brainstorm-phase`, `/start-phase`, `/complete-phase`, `/sync-docs` | `/ecosystem`, `/initiative`, `/session` |
|
|
157
|
+
|
|
158
|
+
## What's NOT in Tier 1
|
|
159
|
+
|
|
160
|
+
The following are deferred to a future phase ("Tier 2"):
|
|
161
|
+
|
|
162
|
+
- `/switch-repo` with context carry-over between repos.
|
|
163
|
+
- Federated impact-map and cross-repo `/sync-docs`.
|
|
164
|
+
- Shared rules of record (a single source of truth for Rules 1–12).
|
|
165
|
+
- Deploy-order awareness (e.g. "platform must deploy before client").
|
|
166
|
+
- Multi-repo `/review-code`.
|
|
167
|
+
- Inter-repo parallel agent orchestration (extending Phase 8
|
|
168
|
+
worktrees across repos).
|
|
169
|
+
|
|
170
|
+
## Orchestration (Phase 11, v0.14.0+)
|
|
171
|
+
|
|
172
|
+
Once an ecosystem is set up, momentum gives you three primitives for
|
|
173
|
+
working across member repos from one agent session — three doors into
|
|
174
|
+
one shared library.
|
|
175
|
+
|
|
176
|
+
| Primitive | Behaviour | Where it lands |
|
|
177
|
+
|---|---|---|
|
|
178
|
+
| `scout <repo> "<prompt>"` | Read-only context fetch from one member | `.momentum/runs/scout-NNN.md` in originating repo; one line in ecosystem session log; `[DISCOVERY]` in scouted repo's active phase history if a meaningful finding |
|
|
179
|
+
| `dispatch <r1> <r2> … --prompt "<text>"` | Parallel fan-out + synthesis across members; sequential fallback labeled when adapter doesn't support parallel sub-agents | `.momentum/runs/dispatch-NNN.md`; one session log line; per-repo `[DISCOVERY]` for meaningful findings; `[NOTE]` in originating phase history for the synthesis |
|
|
180
|
+
| `handoff <repo>` | Cross-session control transfer with a structured context block | `<receiving repo>/.momentum/inbox/handoff-NNN.md`; one session log line; `[DECISION]` in originating phase history |
|
|
181
|
+
| `continue [--handoff <id>]` | Pick up a pending handoff in the current repo | Inbox file moved to `.momentum/inbox/read/`; `[NOTE]` in receiving phase history |
|
|
182
|
+
|
|
183
|
+
**Three doors, identical output shape:**
|
|
184
|
+
|
|
185
|
+
- **Slash command** (Claude Code, Codex): `/scout`, `/dispatch`, `/handoff`, `/continue`.
|
|
186
|
+
- **Natural-language inference**: describe the task; the agent picks the primitive ("inferred: scout (single repo, read-only)").
|
|
187
|
+
- **CLI**: `momentum scout|dispatch|handoff|continue` — universal floor, works on every adapter including chat-driven ones.
|
|
188
|
+
|
|
189
|
+
**Tracking contract — auto when meaningful, never noise:**
|
|
190
|
+
|
|
191
|
+
- **Cheap layer (always auto):** ecosystem session log line + `.momentum/runs/` artifact + handoff inbox file.
|
|
192
|
+
- **Curated layer (auto when meaningful):** `[DISCOVERY]` / `[DECISION]` / `[NOTE]` entries in the relevant repo's active phase `history.md`, applying Rule 3 thresholds (real bug, real tech debt, real enhancement, real cross-repo decision). **No new entry types.**
|
|
193
|
+
- **Never auto:** `backlog.md` writes — tracking proposes; the user confirms.
|
|
194
|
+
|
|
195
|
+
**Capability-driven routing.** Some adapters don't support parallel
|
|
196
|
+
sub-agent fan-out (Codex today, until parallel dispatch is validated
|
|
197
|
+
in CI) or SessionStart hooks (Antigravity). The router degrades
|
|
198
|
+
gracefully and labels the degraded mode up front, e.g.:
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
▸ note: this adapter does not declare parallel subagents — running sequentially
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
The user sees output of the same shape; just slower in degraded mode.
|
|
205
|
+
|
|
206
|
+
## Failure modes (operator playbook)
|
|
207
|
+
|
|
208
|
+
| Symptom | Cause | Fix |
|
|
209
|
+
|---|---|---|
|
|
210
|
+
| `not inside an ecosystem root` | cwd is not in/under a known ecosystem | `cd` into one, or `momentum ecosystem init <name>` |
|
|
211
|
+
| `target doesn't look momentum-installed` | `add`'s target lacks CLAUDE.md/AGENTS.md | run `momentum init` on the target first |
|
|
212
|
+
| `member id already registered` | id collision in manifest | `--id <different>` or `remove` first |
|
|
213
|
+
| Session log not updating | hook script missing or unreadable; member not registered | `cat scripts/check-history-reminder.sh`; verify with `momentum ecosystem status` |
|
|
214
|
+
| Manifest rejected by `add` | schema violation in the new state | read the per-path error list; fix `ecosystem.json` by hand or call `remove` then `add` |
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Backlog
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Backlog
|
|
6
|
+
|
|
7
|
+
> **Last Updated**: YYYY-MM-DD
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Priority Levels
|
|
12
|
+
|
|
13
|
+
| Level | Meaning |
|
|
14
|
+
|-------|---------|
|
|
15
|
+
| **P0** | Critical — blocks current phase |
|
|
16
|
+
| **P1** | High — address in current/next phase |
|
|
17
|
+
| **P2** | Medium — within 2 phases |
|
|
18
|
+
| **P3** | Low — nice to have |
|
|
19
|
+
|
|
20
|
+
**Status**: `open` | `in-progress` | `resolved` | `deferred` | `deprecated`
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Bugs
|
|
25
|
+
|
|
26
|
+
| ID | Title | Priority | Status | Phase | Detail |
|
|
27
|
+
|----|-------|----------|--------|-------|--------|
|
|
28
|
+
| _(none)_ | | | | | |
|
|
29
|
+
|
|
30
|
+
## Features
|
|
31
|
+
|
|
32
|
+
| ID | Title | Priority | Status | Phase | Detail |
|
|
33
|
+
|----|-------|----------|--------|-------|--------|
|
|
34
|
+
| _(none)_ | | | | | |
|
|
35
|
+
|
|
36
|
+
## Tech Debt
|
|
37
|
+
|
|
38
|
+
| ID | Title | Priority | Status | Phase | Detail |
|
|
39
|
+
|----|-------|----------|--------|-------|--------|
|
|
40
|
+
| _(none)_ | | | | | |
|
|
41
|
+
|
|
42
|
+
## Enhancements
|
|
43
|
+
|
|
44
|
+
| ID | Title | Priority | Status | Phase | Detail |
|
|
45
|
+
|----|-------|----------|--------|-------|--------|
|
|
46
|
+
| _(none)_ | | | | | |
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Decision
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# NNNN — Decision Title
|
|
6
|
+
|
|
7
|
+
> **Status**: proposed | accepted | superseded | deprecated
|
|
8
|
+
> **Date**: YYYY-MM-DD
|
|
9
|
+
> **Deciders**: <!-- names or roles -->
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
|
|
13
|
+
<!-- What is the problem or situation that requires a decision? What forces are at play? -->
|
|
14
|
+
|
|
15
|
+
## Options Considered
|
|
16
|
+
|
|
17
|
+
### Option A — Name
|
|
18
|
+
<!-- Describe the option. -->
|
|
19
|
+
**Pros:** …
|
|
20
|
+
**Cons:** …
|
|
21
|
+
|
|
22
|
+
### Option B — Name
|
|
23
|
+
<!-- Describe the option. -->
|
|
24
|
+
**Pros:** …
|
|
25
|
+
**Cons:** …
|
|
26
|
+
|
|
27
|
+
## Decision
|
|
28
|
+
|
|
29
|
+
<!-- What was chosen and why? -->
|
|
30
|
+
|
|
31
|
+
## Consequences
|
|
32
|
+
|
|
33
|
+
<!-- What are the positive and negative results of this decision? What becomes easier or harder? -->
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Guide
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Architecture Decision Records
|
|
6
|
+
|
|
7
|
+
> Lightweight ADRs — one file per decision, append-only once accepted.
|
|
8
|
+
|
|
9
|
+
## Index
|
|
10
|
+
|
|
11
|
+
| ID | Title | Status | Date |
|
|
12
|
+
|----|-------|--------|------|
|
|
13
|
+
| [0000](0000-template.md) | ADR Template | template | — |
|
|
14
|
+
|
|
15
|
+
## Process
|
|
16
|
+
|
|
17
|
+
1. Copy `0000-template.md` → `NNNN-short-title.md`
|
|
18
|
+
2. Fill in context, options, and decision
|
|
19
|
+
3. Add a row to the index above
|
|
20
|
+
4. Add affected topics to the `impact-map.md` table
|
|
21
|
+
|
|
22
|
+
## Status Values
|
|
23
|
+
|
|
24
|
+
| Status | Meaning |
|
|
25
|
+
|--------|---------|
|
|
26
|
+
| `proposed` | Under discussion |
|
|
27
|
+
| `accepted` | Decided, in effect |
|
|
28
|
+
| `superseded` | Replaced by a later ADR |
|
|
29
|
+
| `deprecated` | No longer applicable |
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Impact Map
|
|
3
|
+
title: Decision Impact Map
|
|
4
|
+
description: "Topic keywords → spec files/sections, consumed by /sync-docs."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Impact Map
|
|
8
|
+
|
|
9
|
+
Maps topic keywords to the spec files/sections they affect. Used by
|
|
10
|
+
`/sync-docs` to find documents needing updates when a phase history
|
|
11
|
+
entry carries matching `Topics:`.
|
|
12
|
+
|
|
13
|
+
| Topic | File | Section |
|
|
14
|
+
|-------|------|---------|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
okf_version: "0.1"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Specs
|
|
6
|
+
|
|
7
|
+
* [Status](/status.md) - current project state — the first file to read
|
|
8
|
+
* [Backlog](/backlog/backlog.md) - bugs, features, tech debt, enhancements
|
|
9
|
+
* [Roadmap](/planning/roadmap.md) - phase timeline and upcoming work
|
|
10
|
+
|
|
11
|
+
# Directories
|
|
12
|
+
|
|
13
|
+
* [Phases](/phases/index.md) - one directory per phase (overview, plan, tasks, history)
|
|
14
|
+
* [Decisions](/decisions/index.md) - architecture decision records + impact map
|
|
15
|
+
* [Ad-hoc work](/adhoc/) - quick-task and spike records (Rule 14)
|
|
16
|
+
* [Changelog](/changelog/) - month-by-month change log
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Guide
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Phases Index
|
|
6
|
+
|
|
7
|
+
| Phase | Name | Status | Directory |
|
|
8
|
+
|-------|------|--------|-----------|
|
|
9
|
+
| _(none yet)_ | | | |
|
|
10
|
+
|
|
11
|
+
## Phase Structure
|
|
12
|
+
|
|
13
|
+
Each phase directory contains:
|
|
14
|
+
|
|
15
|
+
| File | Purpose |
|
|
16
|
+
|------|---------|
|
|
17
|
+
| `overview.md` | Goal, scope, deliverables, acceptance criteria |
|
|
18
|
+
| `plan.md` | Group execution pattern with tasks |
|
|
19
|
+
| `tasks.md` | Checklist `[ ]` / `[x]` |
|
|
20
|
+
| `history.md` | Append-only log |
|
|
21
|
+
| `retrospective.md` | Post-completion review (created by /complete-phase) |
|
|
22
|
+
|
|
23
|
+
## Swarm-member briefs (optional)
|
|
24
|
+
|
|
25
|
+
When a phase is driven by a swarm conductor (Phase 17+), `overview.md`
|
|
26
|
+
MAY carry an optional YAML frontmatter block declaring its swarm
|
|
27
|
+
context. Solo briefs omit this entirely — they remain plain markdown.
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
---
|
|
31
|
+
swarm: 0007-user-auth
|
|
32
|
+
wave: 2
|
|
33
|
+
initiative: user-auth
|
|
34
|
+
claimed_by_session: <session-uuid>
|
|
35
|
+
---
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`/start-phase` populates these when invoked from a swarm context.
|
|
39
|
+
`/validate` checks that `swarm:` resolves to a real swarm manifest,
|
|
40
|
+
that `wave:` matches the wave the swarm has assigned this repo, and
|
|
41
|
+
that `initiative:` matches the swarm's initiative.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Roadmap
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Roadmap
|
|
6
|
+
|
|
7
|
+
> **Last Updated**: YYYY-MM-DD
|
|
8
|
+
|
|
9
|
+
## Vision
|
|
10
|
+
|
|
11
|
+
<!-- One sentence: what does this project become at full maturity? -->
|
|
12
|
+
|
|
13
|
+
## Release Plan
|
|
14
|
+
|
|
15
|
+
| Version | Phase | Key Deliverables | Target |
|
|
16
|
+
|---------|-------|-----------------|--------|
|
|
17
|
+
| v0.1.0 | Phase 0 — Bootstrap | _(TBD)_ | _(TBD)_ |
|
|
18
|
+
|
|
19
|
+
## Guiding Principles
|
|
20
|
+
|
|
21
|
+
1. Ship working software in every phase
|
|
22
|
+
2. Each phase leaves the project in a releasable state
|
|
23
|
+
3. Defer scope, not quality
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Status
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Project Status
|
|
6
|
+
|
|
7
|
+
> **Last Updated**: YYYY-MM-DD
|
|
8
|
+
> **Current Phase**: Phase 0 — Bootstrap (`not started`)
|
|
9
|
+
> **Latest Release**: None
|
|
10
|
+
> **Health**: On Track
|
|
11
|
+
|
|
12
|
+
## Summary
|
|
13
|
+
|
|
14
|
+
<!-- One paragraph describing what this project is and what it does. -->
|
|
15
|
+
|
|
16
|
+
## Completed Phases
|
|
17
|
+
|
|
18
|
+
| Phase | Name | Status | Released |
|
|
19
|
+
|-------|------|--------|---------|
|
|
20
|
+
| _(none yet)_ | | | |
|
|
21
|
+
|
|
22
|
+
## Ad-hoc / Patch Releases
|
|
23
|
+
|
|
24
|
+
> Releases NOT tied to a numbered phase — hotfixes, patch/audit releases,
|
|
25
|
+
> chores. Keep these out of the Completed Phases table. Work records live in
|
|
26
|
+
> `specs/adhoc/`. See Rule 14 for when ad-hoc work must become a phase instead.
|
|
27
|
+
|
|
28
|
+
| Version | Date | Type | Summary |
|
|
29
|
+
|---------|------|------|---------|
|
|
30
|
+
| _(none yet)_ | | | |
|
|
31
|
+
|
|
32
|
+
## Active Phase
|
|
33
|
+
|
|
34
|
+
> One row per active lane (Rule 15, ADR-0001). Each session's phase is the
|
|
35
|
+
> one bound to its branch; this table is the cross-lane overview and the
|
|
36
|
+
> fallback for branches that don't resolve. Lanes touch only their own row.
|
|
37
|
+
|
|
38
|
+
| Phase | Branch | Status | Progress |
|
|
39
|
+
|-------|--------|--------|----------|
|
|
40
|
+
| _(none — no active phase)_ | | | |
|
|
41
|
+
|
|
42
|
+
## Upcoming Phases
|
|
43
|
+
|
|
44
|
+
| Phase | Name | Status | Key Deliverables |
|
|
45
|
+
|-------|------|--------|-----------------|
|
|
46
|
+
| _(TBD)_ | | | |
|
|
47
|
+
|
|
48
|
+
## Blockers
|
|
49
|
+
|
|
50
|
+
| ID | Description | Severity |
|
|
51
|
+
|----|-------------|----------|
|
|
52
|
+
| _(none)_ | | |
|
|
53
|
+
|
|
54
|
+
## Critical Items (P0)
|
|
55
|
+
|
|
56
|
+
| ID | Type | Description |
|
|
57
|
+
|----|------|-------------|
|
|
58
|
+
| _(none)_ | | |
|
|
59
|
+
|
|
60
|
+
## Next Actions
|
|
61
|
+
|
|
62
|
+
1. Run `/brainstorm-idea` to explore the concept, then `/start-project` to scaffold
|
|
63
|
+
|
|
64
|
+
## Key Decisions Made
|
|
65
|
+
|
|
66
|
+
_(none yet)_
|
|
67
|
+
|
|
68
|
+
## Recent Changes
|
|
69
|
+
|
|
70
|
+
_(none yet)_
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Vision
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Principles
|
|
6
|
+
|
|
7
|
+
> Guiding decisions throughout the project. When trade-offs arise, these resolve them.
|
|
8
|
+
|
|
9
|
+
## Core Principles
|
|
10
|
+
|
|
11
|
+
1. **Simplicity first** — the simplest solution that solves the problem is the right one
|
|
12
|
+
2. **Ship incrementally** — each phase leaves the project in a releasable state
|
|
13
|
+
3. **Defer scope, not quality** — cut features before cutting correctness
|
|
14
|
+
4. **Document decisions** — every significant choice gets an ADR
|
|
15
|
+
|
|
16
|
+
<!-- Add or replace principles to match this project's values. -->
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Vision
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Project Charter
|
|
6
|
+
|
|
7
|
+
> **Project**: <Project Name>
|
|
8
|
+
> **Created**: YYYY-MM-DD
|
|
9
|
+
|
|
10
|
+
## Problem Statement
|
|
11
|
+
|
|
12
|
+
<!-- What problem does this project solve? Who has this problem? Why does it matter? -->
|
|
13
|
+
|
|
14
|
+
## Solution
|
|
15
|
+
|
|
16
|
+
<!-- What does this project build or do? How does it solve the problem? -->
|
|
17
|
+
|
|
18
|
+
## Stakeholders
|
|
19
|
+
|
|
20
|
+
| Role | Name / Team | Responsibility |
|
|
21
|
+
|------|-------------|----------------|
|
|
22
|
+
| Owner | _(TBD)_ | Final decisions |
|
|
23
|
+
| Users | _(TBD)_ | Primary audience |
|
|
24
|
+
|
|
25
|
+
## Scope
|
|
26
|
+
|
|
27
|
+
### In
|
|
28
|
+
- _(TBD)_
|
|
29
|
+
|
|
30
|
+
### Out
|
|
31
|
+
- _(TBD)_
|
|
32
|
+
|
|
33
|
+
## Success
|
|
34
|
+
|
|
35
|
+
<!-- How will you know this project succeeded? See `success-criteria.md` for measurable targets. -->
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Vision
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Success Criteria
|
|
6
|
+
|
|
7
|
+
> Measurable targets. When all are met, the project has achieved its goals.
|
|
8
|
+
|
|
9
|
+
## Phase 0 Targets
|
|
10
|
+
|
|
11
|
+
| Criterion | Target | How to Measure |
|
|
12
|
+
|-----------|--------|----------------|
|
|
13
|
+
| _(TBD)_ | _(TBD)_ | _(TBD)_ |
|
|
14
|
+
|
|
15
|
+
## Long-Term Targets
|
|
16
|
+
|
|
17
|
+
| Criterion | Target | How to Measure |
|
|
18
|
+
|-----------|--------|----------------|
|
|
19
|
+
| _(TBD)_ | _(TBD)_ | _(TBD)_ |
|