@cluesmith/codev 3.1.8 → 3.2.0
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 +201 -0
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +12 -5
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.d.ts +6 -1
- package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.js +49 -45
- package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts +14 -1
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +151 -34
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/tower.d.ts +1 -0
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +6 -2
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +2 -0
- package/dist/agent-farm/servers/overview.js.map +1 -1
- package/dist/agent-farm/servers/tower-instances.d.ts +18 -0
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +9 -1
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +34 -0
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.js +7 -1
- package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
- package/dist/agent-farm/utils/architect-name.d.ts +13 -0
- package/dist/agent-farm/utils/architect-name.d.ts.map +1 -1
- package/dist/agent-farm/utils/architect-name.js +16 -0
- package/dist/agent-farm/utils/architect-name.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +15 -1
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +26 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +19 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/prompts.d.ts +12 -0
- package/dist/commands/porch/prompts.d.ts.map +1 -1
- package/dist/commands/porch/prompts.js +33 -5
- package/dist/commands/porch/prompts.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +37 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/forge-contracts.d.ts +9 -0
- package/dist/lib/forge-contracts.d.ts.map +1 -1
- package/dist/lib/forge-contracts.js.map +1 -1
- package/dist/lib/framework-ref-audit.d.ts +23 -0
- package/dist/lib/framework-ref-audit.d.ts.map +1 -0
- package/dist/lib/framework-ref-audit.js +84 -0
- package/dist/lib/framework-ref-audit.js.map +1 -0
- package/dist/lib/managed-block.d.ts +31 -0
- package/dist/lib/managed-block.d.ts.map +1 -0
- package/dist/lib/managed-block.js +114 -0
- package/dist/lib/managed-block.js.map +1 -0
- package/dist/lib/scaffold.d.ts +42 -0
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +81 -0
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/lib/skeleton.d.ts +12 -0
- package/dist/lib/skeleton.d.ts.map +1 -1
- package/dist/lib/skeleton.js +21 -0
- package/dist/lib/skeleton.js.map +1 -1
- package/dist/lib/templates.d.ts.map +1 -1
- package/dist/lib/templates.js +3 -0
- package/dist/lib/templates.js.map +1 -1
- package/dist/terminal/pty-manager.d.ts +18 -2
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +27 -2
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/pty-session.d.ts +2 -0
- package/dist/terminal/pty-session.d.ts.map +1 -1
- package/dist/terminal/pty-session.js +13 -0
- package/dist/terminal/pty-session.js.map +1 -1
- package/dist/terminal/ring-buffer.d.ts +25 -1
- package/dist/terminal/ring-buffer.d.ts.map +1 -1
- package/dist/terminal/ring-buffer.js +40 -12
- package/dist/terminal/ring-buffer.js.map +1 -1
- package/dist/terminal/session-manager.d.ts +4 -0
- package/dist/terminal/session-manager.d.ts.map +1 -1
- package/dist/terminal/session-manager.js +74 -9
- package/dist/terminal/session-manager.js.map +1 -1
- package/dist/terminal/shellper-process.d.ts +1 -0
- package/dist/terminal/shellper-process.d.ts.map +1 -1
- package/dist/terminal/shellper-process.js +17 -2
- package/dist/terminal/shellper-process.js.map +1 -1
- package/package.json +22 -23
- package/scripts/forge/gitea/auth-status.sh +0 -0
- package/scripts/forge/gitea/issue-comment.sh +0 -0
- package/scripts/forge/gitea/issue-list.sh +0 -0
- package/scripts/forge/gitea/issue-search.sh +0 -0
- package/scripts/forge/gitea/issue-view.sh +0 -0
- package/scripts/forge/gitea/pr-exists.sh +0 -0
- package/scripts/forge/gitea/pr-list.sh +14 -1
- package/scripts/forge/gitea/pr-merge.sh +0 -0
- package/scripts/forge/gitea/pr-view.sh +0 -0
- package/scripts/forge/gitea/recently-closed.sh +0 -0
- package/scripts/forge/gitea/recently-merged.sh +0 -0
- package/scripts/forge/gitea/repo-archive.sh +0 -0
- package/scripts/forge/gitea/user-identity.sh +0 -0
- package/scripts/forge/github/auth-status.sh +0 -0
- package/scripts/forge/github/issue-comment.sh +0 -0
- package/scripts/forge/github/issue-list.sh +0 -0
- package/scripts/forge/github/issue-search.sh +0 -0
- package/scripts/forge/github/issue-view.sh +0 -0
- package/scripts/forge/github/on-it-timestamps.sh +0 -0
- package/scripts/forge/github/pr-diff.sh +0 -0
- package/scripts/forge/github/pr-exists.sh +0 -0
- package/scripts/forge/github/pr-list.sh +9 -2
- package/scripts/forge/github/pr-merge.sh +0 -0
- package/scripts/forge/github/pr-search.sh +0 -0
- package/scripts/forge/github/pr-view.sh +0 -0
- package/scripts/forge/github/recently-closed.sh +0 -0
- package/scripts/forge/github/recently-merged.sh +0 -0
- package/scripts/forge/github/repo-archive.sh +0 -0
- package/scripts/forge/github/team-activity.sh +0 -0
- package/scripts/forge/github/user-identity.sh +0 -0
- package/scripts/forge/gitlab/auth-status.sh +0 -0
- package/scripts/forge/gitlab/issue-comment.sh +0 -0
- package/scripts/forge/gitlab/issue-list.sh +0 -0
- package/scripts/forge/gitlab/issue-search.sh +0 -0
- package/scripts/forge/gitlab/issue-view.sh +0 -0
- package/scripts/forge/gitlab/pr-diff.sh +0 -0
- package/scripts/forge/gitlab/pr-exists.sh +0 -0
- package/scripts/forge/gitlab/pr-list.sh +11 -1
- package/scripts/forge/gitlab/pr-merge.sh +0 -0
- package/scripts/forge/gitlab/pr-search.sh +0 -0
- package/scripts/forge/gitlab/pr-view.sh +0 -0
- package/scripts/forge/gitlab/recently-closed.sh +0 -0
- package/scripts/forge/gitlab/recently-merged.sh +0 -0
- package/scripts/forge/gitlab/repo-archive.sh +0 -0
- package/scripts/forge/gitlab/user-identity.sh +0 -0
- package/scripts/forge/linear/auth-status.sh +0 -0
- package/scripts/forge/linear/issue-comment.sh +0 -0
- package/scripts/forge/linear/issue-list.sh +0 -0
- package/scripts/forge/linear/issue-search.sh +0 -0
- package/scripts/forge/linear/issue-view.sh +0 -0
- package/scripts/forge/linear/recently-closed.sh +0 -0
- package/scripts/forge/linear/user-identity.sh +0 -0
- package/skeleton/.claude/skills/update-arch-docs/SKILL.md +38 -13
- package/skeleton/porch/prompts/review.md +19 -11
- package/skeleton/protocols/air/builder-prompt.md +7 -1
- package/skeleton/protocols/aspir/builder-prompt.md +7 -2
- package/skeleton/protocols/aspir/prompts/plan.md +2 -34
- package/skeleton/protocols/aspir/prompts/review.md +19 -11
- package/skeleton/protocols/aspir/templates/review.md +4 -4
- package/skeleton/protocols/bugfix/builder-prompt.md +7 -1
- package/skeleton/protocols/bugfix/protocol.md +78 -0
- package/skeleton/protocols/experiment/builder-prompt.md +7 -1
- package/skeleton/protocols/experiment/protocol.md +7 -28
- package/skeleton/protocols/maintain/builder-prompt.md +7 -1
- package/skeleton/protocols/maintain/prompts/maintain.md +5 -4
- package/skeleton/protocols/maintain/prompts/review.md +1 -1
- package/skeleton/protocols/maintain/protocol.md +30 -22
- package/skeleton/protocols/maintain/templates/maintenance-run.md +2 -2
- package/skeleton/protocols/pir/builder-prompt.md +8 -3
- package/skeleton/protocols/pir/prompts/review.md +9 -7
- package/skeleton/protocols/pir/protocol.md +1 -1
- package/skeleton/protocols/research/builder-prompt.md +7 -1
- package/skeleton/protocols/spike/builder-prompt.md +7 -1
- package/skeleton/protocols/spike/protocol.md +7 -1
- package/skeleton/protocols/spir/builder-prompt.md +7 -2
- package/skeleton/protocols/spir/prompts/plan.md +2 -34
- package/skeleton/protocols/spir/prompts/review.md +19 -11
- package/skeleton/protocols/spir/protocol.md +5 -6
- package/skeleton/protocols/spir/templates/review.md +4 -4
- package/skeleton/resources/arch-critical.md +17 -0
- package/skeleton/resources/lessons-critical.md +17 -0
- package/skeleton/roles/builder.md +2 -2
- package/skeleton/templates/arch-critical.md +17 -0
- package/skeleton/templates/arch.starter.md +9 -0
- package/skeleton/templates/lessons-critical.md +17 -0
- package/skeleton/templates/lessons-learned.starter.md +9 -0
|
@@ -7,8 +7,8 @@ MAINTAIN is a single-pass maintenance protocol for keeping codebases healthy. Th
|
|
|
7
7
|
**Core Principle**: Do the work in one pass. Don't over-ceremonialize housekeeping.
|
|
8
8
|
|
|
9
9
|
**Key Documents** MAINTAIN keeps current:
|
|
10
|
-
- `codev/resources/arch.md` - Architecture
|
|
11
|
-
- `codev/resources/lessons-learned.md` -
|
|
10
|
+
- `codev/resources/arch.md` (COLD reference) + `codev/resources/arch-critical.md` (HOT, always-injected) — Architecture, two tiers (Spec 987)
|
|
11
|
+
- `codev/resources/lessons-learned.md` (COLD reference) + `codev/resources/lessons-critical.md` (HOT, always-injected) — Engineering wisdom, two tiers
|
|
12
12
|
|
|
13
13
|
The two governance docs are siblings with **different purposes**: `arch.md` owns system shape (services, transports, mental models, verified-wrong assumptions about *this* system); `lessons-learned.md` owns durable engineering wisdom that applies *across* specs. Use the routing matrix below to decide where each fact belongs.
|
|
14
14
|
|
|
@@ -18,8 +18,10 @@ The two governance docs are siblings with **different purposes**: `arch.md` owns
|
|
|
18
18
|
|---|---|
|
|
19
19
|
| Current system shape (services, transports, key mental models) | `codev/resources/arch.md` |
|
|
20
20
|
| Mechanism for a unique subsystem | `codev/resources/arch.md` (subsystem section) OR a meta-spec under `codev/architecture/<domain>.md` if the mechanism is large enough to warrant its own doc |
|
|
21
|
-
| A durable engineering pattern that applies across multiple specs | `codev/resources/lessons-learned.md` |
|
|
22
|
-
| A
|
|
21
|
+
| A durable engineering pattern that applies across multiple specs | `codev/resources/lessons-learned.md` (COLD reference) |
|
|
22
|
+
| A **behavior-changing, cross-cutting** rule (should change how the next project is built) | `codev/resources/lessons-critical.md` (HOT, capped) — demote to `lessons-learned.md` if full |
|
|
23
|
+
| A **behavior-changing, cross-cutting** architecture invariant (a future builder must know up front) | `codev/resources/arch-critical.md` (HOT, capped) — demote to `arch.md` if full |
|
|
24
|
+
| A spec-narrow fix recipe (reference detail) | `codev/resources/lessons-learned.md` (COLD) — kept as reference; **never** the hot file |
|
|
23
25
|
| A system-shape surprise verified-wrong in production ("looks like X but isn't") | `codev/resources/arch.md` § "Verified-Wrong Assumptions" |
|
|
24
26
|
| Aspirational architectural direction (where we want to go) | The relevant meta-spec or roadmap doc, NOT `arch.md` body |
|
|
25
27
|
| A changelog entry ("we shipped X in spec Y on date Z") | `git log` + the spec/review document — NOT `arch.md`, NOT `lessons-learned.md` |
|
|
@@ -113,7 +115,7 @@ The `update-arch-docs` skill (at `.claude/skills/update-arch-docs/SKILL.md`) is
|
|
|
113
115
|
|
|
114
116
|
#### Step 3a: Audit documentation
|
|
115
117
|
|
|
116
|
-
Invoke the `update-arch-docs` skill in **audit-mode**. The skill reads `codev/resources/arch.md` and `codev/resources/lessons-learned.md` end-to-end against the discipline below
|
|
118
|
+
Invoke the `update-arch-docs` skill in **audit-mode**. The skill reads all four governance files — `codev/resources/arch.md` / `arch-critical.md` and `codev/resources/lessons-learned.md` / `lessons-critical.md` — end-to-end against the discipline below, applies the cuts via the Edit tool, and records each cut's reason in the run file (`codev/maintain/NNNN.md`) under a `## Audit Findings` section. The diff plus the recorded reasons **is** the proposal; the architect's PR review is the human-confirmation step (consistent with the skill's audit-mode).
|
|
117
119
|
|
|
118
120
|
**Per-arch.md-section pruning checklist** — for each section in `arch.md`, ask:
|
|
119
121
|
- Does it describe **current state**? If aspirational, the section moves to a meta-spec; `arch.md` keeps a 1-paragraph summary + pointer (or nothing, if the meta-spec stands on its own).
|
|
@@ -122,21 +124,27 @@ Invoke the `update-arch-docs` skill in **audit-mode**. The skill reads `codev/re
|
|
|
122
124
|
- Is it a changelog/narrative section ("Spec 0042 added X")? If yes, absorb the architecturally-relevant facts and remove the spec-numbered framing.
|
|
123
125
|
- Is the component still alive? If retired, delete the section entirely.
|
|
124
126
|
|
|
125
|
-
**Per-lessons-learned.md
|
|
126
|
-
- Is it cross-applicable beyond the spec that produced it? If no, remove (the lesson belongs in the spec's review).
|
|
127
|
+
**Per-COLD-`lessons-learned.md`-entry pruning checklist** — for each entry, ask:
|
|
127
128
|
- Is it terse (1–3 sentences)? If multi-paragraph, split or compress.
|
|
128
129
|
- Is the topic section the right home? If filed under "Architecture (continued)" or a spec-numbered section, move it to the right topical home.
|
|
129
130
|
- Is it a duplicate of an adjacent entry? If yes, fold them.
|
|
131
|
+
- (Spec-narrow recipes are **kept** as reference — do not cut them just for being spec-narrow. Anti-accretion now lives in the hot cap, not the cold archive.)
|
|
132
|
+
|
|
133
|
+
**Per-HOT-file checklist** (`arch-critical.md`, `lessons-critical.md`) — audit the cap and map:
|
|
134
|
+
- Within the cap (≈10 entries + a ≈12-topic map, ≤35 lines)? If over, **demote** the weakest entries into the cold doc.
|
|
135
|
+
- Does every map topic name a real top-level cold-doc section, and is any new/renamed section reflected? Fix drift; keep the map top-level only.
|
|
136
|
+
- Is every entry still behavior-changing? Demote reference detail into the cold archive.
|
|
130
137
|
|
|
131
138
|
**Sample audit prompt** (paste into the skill invocation if you want a baseline checklist run):
|
|
132
139
|
|
|
133
140
|
```
|
|
134
|
-
Audit codev/resources/arch.md
|
|
135
|
-
|
|
136
|
-
arch
|
|
137
|
-
|
|
138
|
-
Bias toward fewer, higher-confidence
|
|
139
|
-
|
|
141
|
+
Audit all four governance files — codev/resources/arch.md + arch-critical.md and
|
|
142
|
+
lessons-learned.md + lessons-critical.md — against the discipline in the
|
|
143
|
+
update-arch-docs skill. For each cold section/entry run the cold pruning checklists,
|
|
144
|
+
and for each hot file check the cap, displacement, and map accuracy (Step 3a).
|
|
145
|
+
Apply the cuts with one-line reasons. Bias toward fewer, higher-confidence
|
|
146
|
+
cuts ("when in doubt, KEEP"). Record each cut's reason in the current run
|
|
147
|
+
file's ## Audit Findings section as you go — the diff plus those reasons is the proposal.
|
|
140
148
|
```
|
|
141
149
|
|
|
142
150
|
**When in doubt, KEEP.** This rule is preserved from the older Step 3. A confident cut is better than three speculative ones. The audit pass is a *proposal*; the architect's PR review confirms it.
|
|
@@ -145,14 +153,14 @@ findings in the current run file's ## Audit Findings section before applying.
|
|
|
145
153
|
|
|
146
154
|
Apply the audit decisions from Step 3a, plus any additive content needed.
|
|
147
155
|
|
|
148
|
-
**arch.md**: Compare documented structure with actual codebase. Update:
|
|
156
|
+
**arch.md / arch-critical.md**: Compare documented structure with actual codebase. Route behavior-changing invariants to `arch-critical.md` (HOT — respect the cap + keep its map accurate); reference detail to `arch.md` (COLD). Update:
|
|
149
157
|
- Directory structure
|
|
150
158
|
- Component descriptions (explain HOW things work, not just WHAT)
|
|
151
159
|
- Key files and their purposes
|
|
152
160
|
- Remove references to deleted code (per Step 3a audit findings)
|
|
153
161
|
- Add new components/utilities
|
|
154
162
|
|
|
155
|
-
**lessons-learned.md**: Scan `codev/reviews/` for new reviews since last run.
|
|
163
|
+
**lessons-learned.md / lessons-critical.md**: Scan `codev/reviews/` for new reviews since last run. **Route** each new lesson by tier — behavior-changing + cross-cutting → `lessons-critical.md` (HOT; respect the cap, demote a weaker entry to cold if full); reference recipe / spec-narrow → `lessons-learned.md` (COLD). Apply Step 3a's per-entry cuts and keep each hot file's cold-doc map accurate.
|
|
156
164
|
|
|
157
165
|
For specific additive changes, invoke `update-arch-docs` in **diff-mode** — it applies the smallest section update needed.
|
|
158
166
|
|
|
@@ -192,13 +200,13 @@ Each run creates `codev/maintain/NNNN.md`:
|
|
|
192
200
|
|
|
193
201
|
## Audit Findings
|
|
194
202
|
|
|
195
|
-
Recorded by Step 3a (Audit documentation)
|
|
203
|
+
Recorded by Step 3a (Audit documentation) as the cuts are applied — one line per cut, with its reason. The diff plus these reasons is the proposal; the architect's PR review is the gate.
|
|
196
204
|
|
|
197
|
-
### arch.md
|
|
198
|
-
- <section
|
|
205
|
+
### arch.md (cold) / arch-critical.md (hot)
|
|
206
|
+
- <section or hot entry>: <reason for cut / compression / demotion>
|
|
199
207
|
|
|
200
|
-
### lessons-learned.md
|
|
201
|
-
- <entry>: <reason>
|
|
208
|
+
### lessons-learned.md (cold) / lessons-critical.md (hot)
|
|
209
|
+
- <entry>: <reason; note hot→cold demotions and any cold-doc-map fixes>
|
|
202
210
|
|
|
203
211
|
## What Was Done
|
|
204
212
|
|
|
@@ -207,8 +215,8 @@ Recorded by Step 3a (Audit documentation) before any edits land. One line per ca
|
|
|
207
215
|
- Removed `some-package` dependency — zero imports
|
|
208
216
|
|
|
209
217
|
### Documentation Updated
|
|
210
|
-
- arch.md: Added VS Code extension section
|
|
211
|
-
- lessons-learned.md: Extracted 3 lessons from reviews 653, 672
|
|
218
|
+
- arch.md / arch-critical.md: Added VS Code extension section + removed old dashboard-server refs (cold); routed 1 invariant to the hot tier, demoted 1 stale entry to cold
|
|
219
|
+
- lessons-learned.md / lessons-critical.md: Extracted 3 lessons from reviews 653, 672 (cold); promoted 1 behavior-changer to the hot tier, refreshed its cold-doc map
|
|
212
220
|
|
|
213
221
|
### Documentation Changes Log
|
|
214
222
|
| Document | Section | Action | Reason |
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
- <package> — <reason>
|
|
18
18
|
|
|
19
19
|
### Documentation Updated
|
|
20
|
-
- arch.md: <what changed>
|
|
21
|
-
- lessons-learned.md: <what changed>
|
|
20
|
+
- arch.md (cold) / arch-critical.md (hot): <what changed; note any demotions + map fixes>
|
|
21
|
+
- lessons-learned.md (cold) / lessons-critical.md (hot): <what changed; note any demotions + map fixes>
|
|
22
22
|
|
|
23
23
|
### Documentation Changes Log
|
|
24
24
|
| Document | Section | Action | Reason |
|
|
@@ -27,8 +27,7 @@ You are running in STRICT mode. This means:
|
|
|
27
27
|
{{/if}}
|
|
28
28
|
|
|
29
29
|
## Protocol
|
|
30
|
-
Follow the PIR protocol
|
|
31
|
-
Read and internalize the protocol before starting any work.
|
|
30
|
+
Follow the PIR protocol. Read and internalize the protocol before starting any work. The full protocol text is included below under **## Protocol Reference (full text)**.
|
|
32
31
|
|
|
33
32
|
PIR has three phases:
|
|
34
33
|
1. **plan** (gated by `plan-approval`) — write `codev/plans/{{artifact_name}}.md`, await human review
|
|
@@ -87,6 +86,12 @@ If your Claude session crashes mid-flow, Tower's `while true` loop will relaunch
|
|
|
87
86
|
|
|
88
87
|
## Getting Started
|
|
89
88
|
|
|
90
|
-
1. Read the PIR protocol
|
|
89
|
+
1. Read the PIR protocol (provided inline in this prompt).
|
|
91
90
|
2. Run `porch next {{project_id}}` to see what to do next
|
|
92
91
|
3. Begin work
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Protocol Reference (full text)
|
|
96
|
+
|
|
97
|
+
{{protocol_reference}}
|
|
@@ -58,13 +58,13 @@ Output of `git log main..HEAD --oneline`:
|
|
|
58
58
|
|
|
59
59
|
## Architecture Updates
|
|
60
60
|
|
|
61
|
-
What
|
|
61
|
+
What you routed where, across the **two tiers** (Spec 987): **HOT** = `codev/resources/arch-critical.md` (tiny, hard-capped, always-injected) for a behavior-changing cross-cutting fact (demote a weaker entry into `arch.md` if the hot file is full); **COLD** = `codev/resources/arch.md` for reference detail. Update the file(s) you routed to in this same commit. If nothing qualifies, write a single line explaining why: "No arch changes — this PR fixes a typo without affecting module boundaries."
|
|
62
62
|
|
|
63
|
-
Use the `update-arch-docs` skill if available (`.claude/skills/update-arch-docs/SKILL.md`) — it encodes the discipline for what NOT to include in arch docs.
|
|
63
|
+
Use the `update-arch-docs` skill if available (`.claude/skills/update-arch-docs/SKILL.md`) — it encodes the discipline for what NOT to include in arch docs and how the hot/cold tiers relate.
|
|
64
64
|
|
|
65
65
|
## Lessons Learned Updates
|
|
66
66
|
|
|
67
|
-
What durable
|
|
67
|
+
What durable wisdom emerged, routed by tier: **HOT** `codev/resources/lessons-critical.md` for a behavior-changing cross-cutting rule (cap + displacement); **COLD** `codev/resources/lessons-learned.md` for a spec-narrow recipe/reference tip. Update the file(s) you routed to in this commit. If nothing qualifies: "No lessons captured — change was mechanical."
|
|
68
68
|
|
|
69
69
|
## Things to Look At During PR Review
|
|
70
70
|
|
|
@@ -85,7 +85,7 @@ List any tests you skipped due to pre-existing flakiness, with file:line refs an
|
|
|
85
85
|
|
|
86
86
|
### 2. Update Architecture / Lessons Docs (if applicable)
|
|
87
87
|
|
|
88
|
-
If your "Architecture Updates" or "Lessons Learned Updates" section
|
|
88
|
+
If your "Architecture Updates" or "Lessons Learned Updates" section routed real changes, update the tier you chose — `arch-critical.md` / `lessons-critical.md` (hot, capped) or `arch.md` / `lessons-learned.md` (cold) — accordingly. Use the `update-arch-docs` skill if it's available.
|
|
89
89
|
|
|
90
90
|
If neither doc needs updating, your review file's sections still need to explain why — the porch `checks` block enforces section presence.
|
|
91
91
|
|
|
@@ -93,9 +93,11 @@ If neither doc needs updating, your review file's sections still need to explain
|
|
|
93
93
|
|
|
94
94
|
```bash
|
|
95
95
|
git add codev/reviews/{{artifact_name}}.md
|
|
96
|
-
# Add
|
|
97
|
-
git add codev/resources/arch.md
|
|
98
|
-
git add codev/resources/lessons-
|
|
96
|
+
# Add the governance file(s) you routed to, only if changed
|
|
97
|
+
git add codev/resources/arch-critical.md # hot — only if changed
|
|
98
|
+
git add codev/resources/lessons-critical.md # hot — only if changed
|
|
99
|
+
git add codev/resources/arch.md # cold — only if changed
|
|
100
|
+
git add codev/resources/lessons-learned.md # cold — only if changed
|
|
99
101
|
git commit -m "[PIR #{{issue.number}}] Review + retrospective"
|
|
100
102
|
git push
|
|
101
103
|
```
|
|
@@ -98,7 +98,7 @@ porch approve <id> dev-approval --a-human-explicitly-approved-this
|
|
|
98
98
|
|
|
99
99
|
The builder:
|
|
100
100
|
1. Writes `codev/reviews/<id>-<slug>.md` with **Summary**, **Architecture Updates**, **Lessons Learned Updates**, plus the supporting sections (Files Changed, Commits, Test Results, Things to Look At, How to Test Locally).
|
|
101
|
-
2.
|
|
101
|
+
2. Routes new facts/wisdom by tier (Spec 987) — HOT `codev/resources/arch-critical.md` / `lessons-critical.md` (capped) or COLD `codev/resources/arch.md` / `lessons-learned.md` (reference) — if real changes need recording. If not, the review file's sections state "no changes needed" with a one-line explanation (the porch `checks` block enforces section presence, not content).
|
|
102
102
|
3. Commits the review file (and arch / lessons updates if any) and pushes
|
|
103
103
|
4. Opens a PR with `gh pr create`; PR body is the review file content + `Fixes #<N>`. Records the PR with `porch done <id> --pr <M> --branch <name>`.
|
|
104
104
|
5. Runs `porch done <id>` — porch's `verify` block runs 3-way consultation (Gemini, Codex, Claude; type=impl) as a **single advisory pass** (`max_iterations: 1`); consultation outputs land in `codev/projects/<id>-*/`. There is no iterate-until-APPROVE loop: whatever the verdicts, porch records them and advances to the `pr` gate. A `REQUEST_CHANGES` is not auto-re-reviewed — the builder addresses or rebuts it, adds a regression test if it's a real defect, and escalates it in the architect notification so the human verifies it at the `pr` gate. Outcomes are not auto-appended to the PR body; reviewers with the worktree read them from the projects dir.
|
|
@@ -24,7 +24,7 @@ You are running in STRICT mode. This means:
|
|
|
24
24
|
{{/if}}
|
|
25
25
|
|
|
26
26
|
## Protocol
|
|
27
|
-
Follow the RESEARCH protocol
|
|
27
|
+
Follow the RESEARCH protocol. Read and internalize the protocol before starting any work. The full protocol text is included below under **## Protocol Reference (full text)**.
|
|
28
28
|
|
|
29
29
|
## RESEARCH Overview
|
|
30
30
|
|
|
@@ -83,3 +83,9 @@ wait
|
|
|
83
83
|
2. Understand the research question from the architect
|
|
84
84
|
3. Write the research brief (Phase 1)
|
|
85
85
|
4. Wait for scope-approval before proceeding to investigation
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Protocol Reference (full text)
|
|
90
|
+
|
|
91
|
+
{{protocol_reference}}
|
|
@@ -11,7 +11,7 @@ You are running in SOFT mode. This means:
|
|
|
11
11
|
{{/if}}
|
|
12
12
|
|
|
13
13
|
## Protocol
|
|
14
|
-
Follow the SPIKE protocol
|
|
14
|
+
Follow the SPIKE protocol. Read and internalize the protocol before starting any work. The full protocol text is included below under **## Protocol Reference (full text)**.
|
|
15
15
|
|
|
16
16
|
{{#if task}}
|
|
17
17
|
## Spike Question
|
|
@@ -60,3 +60,9 @@ If you encounter **pre-existing flaky tests** (intermittent failures unrelated t
|
|
|
60
60
|
1. Read the SPIKE protocol document
|
|
61
61
|
2. Understand the question you're investigating
|
|
62
62
|
3. Start with research — don't jump straight to code
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Protocol Reference (full text)
|
|
67
|
+
|
|
68
|
+
{{protocol_reference}}
|
|
@@ -52,7 +52,7 @@ The following 3-step workflow is **guidance only** — not enforced by porch. Fo
|
|
|
52
52
|
### Step 3: Findings
|
|
53
53
|
|
|
54
54
|
- Write the findings document at `codev/spikes/<id>-<name>.md`
|
|
55
|
-
- Use the template
|
|
55
|
+
- Use the embedded template at the end of this protocol
|
|
56
56
|
- Provide a clear feasibility verdict
|
|
57
57
|
- Commit and notify the architect
|
|
58
58
|
|
|
@@ -120,3 +120,9 @@ When a spike finds something is not feasible:
|
|
|
120
120
|
1. Document clearly in findings
|
|
121
121
|
2. Close the related GitHub issue with a link to findings
|
|
122
122
|
3. The findings become institutional knowledge
|
|
123
|
+
|
|
124
|
+
## Template: findings.md
|
|
125
|
+
|
|
126
|
+
Write the findings document using the following template:
|
|
127
|
+
|
|
128
|
+
{{> protocols/spike/templates/findings.md}}
|
|
@@ -27,8 +27,7 @@ You are running in STRICT mode. This means:
|
|
|
27
27
|
{{/if}}
|
|
28
28
|
|
|
29
29
|
## Protocol
|
|
30
|
-
Follow the SPIR protocol
|
|
31
|
-
Read and internalize the protocol before starting any work.
|
|
30
|
+
Follow the SPIR protocol. Read and internalize the protocol before starting any work. The full protocol text is included below under **## Protocol Reference (full text)**.
|
|
32
31
|
|
|
33
32
|
## Baked Decisions
|
|
34
33
|
|
|
@@ -112,3 +111,9 @@ If you encounter **pre-existing flaky tests** (intermittent failures unrelated t
|
|
|
112
111
|
1. Read the protocol document thoroughly
|
|
113
112
|
2. Review the spec and plan (if available)
|
|
114
113
|
3. Begin implementation following the protocol phases
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Protocol Reference (full text)
|
|
118
|
+
|
|
119
|
+
{{protocol_reference}}
|
|
@@ -74,41 +74,9 @@ After completing the plan draft, signal completion. Porch will run 3-way consult
|
|
|
74
74
|
|
|
75
75
|
## Output
|
|
76
76
|
|
|
77
|
-
Create the plan file at `codev/plans/{{artifact_name}}.md
|
|
77
|
+
Create the plan file at `codev/plans/{{artifact_name}}.md`, following the template below:
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
### Plan Structure
|
|
82
|
-
|
|
83
|
-
```markdown
|
|
84
|
-
# Implementation Plan: {{title}}
|
|
85
|
-
|
|
86
|
-
## Overview
|
|
87
|
-
Brief summary of what will be implemented.
|
|
88
|
-
|
|
89
|
-
## Phases
|
|
90
|
-
|
|
91
|
-
### Phase 1: [Name]
|
|
92
|
-
- **Objective**: [Single clear goal]
|
|
93
|
-
- **Files**: [List of files to create/modify]
|
|
94
|
-
- **Dependencies**: None
|
|
95
|
-
- **Success Criteria**: [How to verify completion]
|
|
96
|
-
- **Tests**: [What tests will be written]
|
|
97
|
-
|
|
98
|
-
### Phase 2: [Name]
|
|
99
|
-
- **Objective**: [Single clear goal]
|
|
100
|
-
- **Files**: [List of files]
|
|
101
|
-
- **Dependencies**: Phase 1
|
|
102
|
-
- **Success Criteria**: [Verification method]
|
|
103
|
-
- **Tests**: [Test approach]
|
|
104
|
-
|
|
105
|
-
[Continue for all phases...]
|
|
106
|
-
|
|
107
|
-
## Risk Assessment
|
|
108
|
-
- [Risk 1]: [Mitigation]
|
|
109
|
-
- [Risk 2]: [Mitigation]
|
|
110
|
-
|
|
111
|
-
```
|
|
79
|
+
{{> protocols/spir/templates/plan.md}}
|
|
112
80
|
|
|
113
81
|
## Signals
|
|
114
82
|
|
|
@@ -148,17 +148,25 @@ Read the consultation output files from the project directory (`codev/projects/{
|
|
|
148
148
|
|
|
149
149
|
**MANDATORY**: The review document MUST include `## Architecture Updates` and `## Lessons Learned Updates` sections. Porch will block advancement if these are missing.
|
|
150
150
|
|
|
151
|
-
**
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
3.
|
|
161
|
-
|
|
151
|
+
Each governance doc has **two tiers** (Spec 987) — **route** each new fact/lesson to the right tier; do **not** just append to the cold archive:
|
|
152
|
+
- **HOT** — `codev/resources/arch-critical.md` / `lessons-critical.md`: tiny, **hard-capped**, **always injected** into every prompt and into CLAUDE.md/AGENTS.md. The behavior-changer.
|
|
153
|
+
- **COLD** — `codev/resources/arch.md` / `lessons-learned.md`: full, on-demand reference.
|
|
154
|
+
|
|
155
|
+
**Architecture Updates**:
|
|
156
|
+
1. Read `arch-critical.md` (hot) and skim `arch.md` (cold).
|
|
157
|
+
2. If this project produced a system-shape fact, route it:
|
|
158
|
+
- **Behavior-changing + cross-cutting** (an invariant/decision a future builder must know up front) → add to **`arch-critical.md`**. Respect the cap: if the hot file is full, **demote** a weaker entry into `arch.md` to make room. If you add/rename a top-level `arch.md` section, keep the hot file's cold-doc map accurate.
|
|
159
|
+
- **Reference detail** (subsystem mechanism, file location, one-off) → add to **`arch.md`** (cold).
|
|
160
|
+
3. Describe what you routed where in the `## Architecture Updates` section. If nothing qualifies: write "No architecture updates needed" with a brief reason.
|
|
161
|
+
|
|
162
|
+
**Lessons Learned Updates**:
|
|
163
|
+
1. Read `lessons-critical.md` (hot) and skim `lessons-learned.md` (cold).
|
|
164
|
+
2. If this project produced a durable lesson, route it:
|
|
165
|
+
- **Behavior-changing + cross-cutting** (a rule that should change how the next project is built) → add to **`lessons-critical.md`**, respecting the cap (demote a weaker entry into `lessons-learned.md` if full).
|
|
166
|
+
- **Spec-narrow recipe / reference tip** → add to **`lessons-learned.md`** (cold). Spec-narrow recipes belong in the cold archive, never the always-on hot file.
|
|
167
|
+
3. Describe what you routed where in the `## Lessons Learned Updates` section. If nothing qualifies: write "No lessons learned updates needed" with a brief reason.
|
|
168
|
+
|
|
169
|
+
**Never** grow a hot file past its cap by appending — route to cold or displace. The cap is what keeps the hot tier cheap enough to always inject.
|
|
162
170
|
|
|
163
171
|
### 4b. Update Other Documentation
|
|
164
172
|
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
>
|
|
5
5
|
> Each phase has one build-verify cycle with 3-way consultation.
|
|
6
6
|
|
|
7
|
-
> **Quick Reference**: See `codev/resources/workflow-reference.md` for stage diagrams and common commands.
|
|
8
7
|
|
|
9
8
|
## Prerequisites
|
|
10
9
|
|
|
@@ -164,7 +163,7 @@ When filing an issue for SPIR, you can pin architectural decisions you don't wan
|
|
|
164
163
|
- All consultation feedback incorporated directly into this document
|
|
165
164
|
- Include a "Consultation Log" section summarizing key feedback and changes
|
|
166
165
|
- Version control captures evolution through commits
|
|
167
|
-
**
|
|
166
|
+
**Structure**: developed through the specify phase
|
|
168
167
|
**Review Required**: Yes - Human approval AFTER consultations
|
|
169
168
|
|
|
170
169
|
### P - Plan (Structured Decomposition)
|
|
@@ -243,7 +242,7 @@ Each phase should be:
|
|
|
243
242
|
- Include phase status tracking within this document
|
|
244
243
|
- **DO NOT include time estimates** - Focus on deliverables and dependencies, not hours/days
|
|
245
244
|
- Version control captures evolution through commits
|
|
246
|
-
**
|
|
245
|
+
**Structure**: follows the plan template provided by the plan phase
|
|
247
246
|
**Review Required**: Yes - Technical lead approval AFTER consultations
|
|
248
247
|
|
|
249
248
|
### I - Implement (Per Plan Phase)
|
|
@@ -508,8 +507,8 @@ Execute for each phase in the plan. Each phase follows a build-verify cycle.
|
|
|
508
507
|
- Enhance documentation
|
|
509
508
|
|
|
510
509
|
3. **Update Architecture Documentation**
|
|
511
|
-
-
|
|
512
|
-
- Use the **`update-arch-docs` skill** (at `.claude/skills/update-arch-docs/SKILL.md`) to apply changes —
|
|
510
|
+
- Route new system-shape facts and durable wisdom by tier (Spec 987): behavior-changing + cross-cutting → the HOT `codev/resources/arch-critical.md` / `lessons-critical.md` (capped, always-injected; demote a weaker entry to cold if full); reference detail → the COLD `codev/resources/arch.md` / `lessons-learned.md`
|
|
511
|
+
- Use the **`update-arch-docs` skill** (at `.claude/skills/update-arch-docs/SKILL.md`) to apply changes — it encodes the hot/cold two-tier discipline (caps + cold-doc maps for the hot files; reference archive for the cold files) and what NOT to include
|
|
513
512
|
- Follow guidance in the MAINTAIN protocol's Step 3 ("Sync Documentation") for structure, the "Lives where" routing matrix, and pruning checklists
|
|
514
513
|
- Ensure both docs reflect current state
|
|
515
514
|
|
|
@@ -642,7 +641,7 @@ spir/1-user-authentication/database-schema
|
|
|
642
641
|
|
|
643
642
|
## Templates
|
|
644
643
|
|
|
645
|
-
|
|
644
|
+
Each phase has a template that ships in the package skeleton; the phase prompts deliver the structure you need, so you do not fetch these files directly:
|
|
646
645
|
- `spec.md` - Specification template
|
|
647
646
|
- `plan.md` - Planning template (includes phase status tracking)
|
|
648
647
|
- `review.md` - Review and lessons learned template
|
|
@@ -99,16 +99,16 @@ Iterations that could have been prevented with better builder behavior:
|
|
|
99
99
|
|
|
100
100
|
## Architecture Updates
|
|
101
101
|
|
|
102
|
-
[What
|
|
102
|
+
[What you routed where — HOT `codev/resources/arch-critical.md` (tiny, capped, always-injected) vs COLD `codev/resources/arch.md` (reference) — or why no changes were needed.]
|
|
103
103
|
|
|
104
|
-
-
|
|
104
|
+
- Routed: [hot | cold] — [fact/section] — [what was added/changed; note any demotion if the hot file was full]
|
|
105
105
|
- Or: "No architecture updates needed — [brief reason]"
|
|
106
106
|
|
|
107
107
|
## Lessons Learned Updates
|
|
108
108
|
|
|
109
|
-
[What
|
|
109
|
+
[What you routed where — HOT `codev/resources/lessons-critical.md` (capped) vs COLD `codev/resources/lessons-learned.md` (reference) — or why no changes were needed.]
|
|
110
110
|
|
|
111
|
-
-
|
|
111
|
+
- Routed: [hot | cold] — [category] — [lesson summary]
|
|
112
112
|
- Or: "No lessons learned updates needed — [brief reason]"
|
|
113
113
|
|
|
114
114
|
## Technical Debt
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# arch-critical.md — Always-On System-Shape Facts (HOT tier)
|
|
2
|
+
|
|
3
|
+
<!-- HOT tier: capped facts + a bounded map of arch.md. Always injected into every porch
|
|
4
|
+
phase prompt and into CLAUDE.md/AGENTS.md. CAP: <=10 facts, <=12 map topics, <=35 lines.
|
|
5
|
+
To add a fact, DEMOTE a weaker one into arch.md (displacement). MAINTAIN polices the cap
|
|
6
|
+
and keeps the map in sync with arch.md's top-level sections.
|
|
7
|
+
STARTER: replace the examples below with YOUR project's facts and arch.md sections. -->
|
|
8
|
+
|
|
9
|
+
## Critical facts (consult before deciding)
|
|
10
|
+
- <A system-shape fact that should change implementation choices — e.g. "all persistent state lives in X; never write it directly.">
|
|
11
|
+
- <An invariant a contributor must not violate — e.g. "service A only talks to service B through the queue.">
|
|
12
|
+
- <Keep to <=10, one line each; demote weaker facts into arch.md.>
|
|
13
|
+
|
|
14
|
+
## Map of arch.md (consult when…)
|
|
15
|
+
- <Top-level arch.md section> — consult when <situation>.
|
|
16
|
+
- <Top-level arch.md section> — consult when <situation>.
|
|
17
|
+
- <List your arch.md's top-level sections here; keep <=12, top-level only.>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# lessons-critical.md — Always-On Engineering Wisdom (HOT tier)
|
|
2
|
+
|
|
3
|
+
<!-- HOT tier: capped lessons + a bounded map of lessons-learned.md. Always injected into
|
|
4
|
+
every porch phase prompt and into CLAUDE.md/AGENTS.md. CAP: <=10 lessons, <=12 map topics,
|
|
5
|
+
<=35 lines. To add a lesson, DEMOTE a weaker one into lessons-learned.md (displacement).
|
|
6
|
+
MAINTAIN polices the cap and keeps the map in sync with lessons-learned.md's sections.
|
|
7
|
+
STARTER: a few universal lessons are seeded; add your project's as you learn them. -->
|
|
8
|
+
|
|
9
|
+
## Critical lessons (consult before deciding)
|
|
10
|
+
- Check for existing work (PRs, git history) before building from scratch.
|
|
11
|
+
- "It compiled" / "tests pass" is not "it works" — verify the real user path before calling it done.
|
|
12
|
+
- When stuck (2 failed hypotheses or ~30 min), get an outside perspective instead of guessing.
|
|
13
|
+
- <Add your project's hard-won, cross-cutting lessons; keep <=10, one line each.>
|
|
14
|
+
|
|
15
|
+
## Map of lessons-learned.md (consult when…)
|
|
16
|
+
- <Top-level section> — consult when <situation>.
|
|
17
|
+
- <List your lessons-learned.md's top-level sections here; keep <=12, top-level only.>
|
|
@@ -79,8 +79,8 @@ In soft mode, you follow the protocol document yourself. The architect monitors
|
|
|
79
79
|
cat codev/specs/XXXX-*.md
|
|
80
80
|
cat codev/plans/XXXX-*.md
|
|
81
81
|
|
|
82
|
-
#
|
|
83
|
-
|
|
82
|
+
# (The full protocol text is inlined in your spawn prompt under the
|
|
83
|
+
# "## Protocol Reference (full text)" heading; no need to fetch it.)
|
|
84
84
|
|
|
85
85
|
# Start implementing
|
|
86
86
|
```
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# arch-critical.md — Always-On System-Shape Facts (HOT tier)
|
|
2
|
+
|
|
3
|
+
<!-- HOT tier: capped facts + a bounded map of arch.md. Always injected into every porch
|
|
4
|
+
phase prompt and into CLAUDE.md/AGENTS.md. CAP: <=10 facts, <=12 map topics, <=35 lines.
|
|
5
|
+
To add a fact, DEMOTE a weaker one into arch.md (displacement). MAINTAIN polices the cap
|
|
6
|
+
and keeps the map in sync with arch.md's top-level sections.
|
|
7
|
+
STARTER: replace the examples below with YOUR project's facts and arch.md sections. -->
|
|
8
|
+
|
|
9
|
+
## Critical facts (consult before deciding)
|
|
10
|
+
- <A system-shape fact that should change implementation choices — e.g. "all persistent state lives in X; never write it directly.">
|
|
11
|
+
- <An invariant a contributor must not violate — e.g. "service A only talks to service B through the queue.">
|
|
12
|
+
- <Keep to <=10, one line each; demote weaker facts into arch.md.>
|
|
13
|
+
|
|
14
|
+
## Map of arch.md (consult when…)
|
|
15
|
+
- <Top-level arch.md section> — consult when <situation>.
|
|
16
|
+
- <Top-level arch.md section> — consult when <situation>.
|
|
17
|
+
- <List your arch.md's top-level sections here; keep <=12, top-level only.>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
<!-- STARTER: replace the "_No architecture documented yet._" line below with your
|
|
4
|
+
project's architecture as it emerges (usually during a review phase). Delete this
|
|
5
|
+
comment once the file has real content. -->
|
|
6
|
+
|
|
7
|
+
This document evolves as the project grows. Update it during the review phase of any work that introduces or changes architectural patterns.
|
|
8
|
+
|
|
9
|
+
_No architecture documented yet._
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# lessons-critical.md — Always-On Engineering Wisdom (HOT tier)
|
|
2
|
+
|
|
3
|
+
<!-- HOT tier: capped lessons + a bounded map of lessons-learned.md. Always injected into
|
|
4
|
+
every porch phase prompt and into CLAUDE.md/AGENTS.md. CAP: <=10 lessons, <=12 map topics,
|
|
5
|
+
<=35 lines. To add a lesson, DEMOTE a weaker one into lessons-learned.md (displacement).
|
|
6
|
+
MAINTAIN polices the cap and keeps the map in sync with lessons-learned.md's sections.
|
|
7
|
+
STARTER: a few universal lessons are seeded; add your project's as you learn them. -->
|
|
8
|
+
|
|
9
|
+
## Critical lessons (consult before deciding)
|
|
10
|
+
- Check for existing work (PRs, git history) before building from scratch.
|
|
11
|
+
- "It compiled" / "tests pass" is not "it works" — verify the real user path before calling it done.
|
|
12
|
+
- When stuck (2 failed hypotheses or ~30 min), get an outside perspective instead of guessing.
|
|
13
|
+
- <Add your project's hard-won, cross-cutting lessons; keep <=10, one line each.>
|
|
14
|
+
|
|
15
|
+
## Map of lessons-learned.md (consult when…)
|
|
16
|
+
- <Top-level section> — consult when <situation>.
|
|
17
|
+
- <List your lessons-learned.md's top-level sections here; keep <=12, top-level only.>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Lessons Learned
|
|
2
|
+
|
|
3
|
+
<!-- STARTER: replace the "_No lessons captured yet._" line below with durable, cross-cutting
|
|
4
|
+
lessons as they emerge (usually during a review phase). Delete this comment once the file has
|
|
5
|
+
real content. -->
|
|
6
|
+
|
|
7
|
+
Durable engineering wisdom captured across the project's work. Update it during the review phase of any work that surfaces a generally-applicable pattern, gotcha, or constraint.
|
|
8
|
+
|
|
9
|
+
_No lessons captured yet._
|