fdeops 3.15.2 → 3.17.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.
Files changed (46) hide show
  1. package/README.md +61 -69
  2. package/adapters/AGENTS.md +1 -1
  3. package/adapters/GEMINI.md +1 -1
  4. package/adapters/LOCAL-LLM.md +4 -4
  5. package/adapters/README.md +1 -1
  6. package/adapters/copilot-instructions.md +1 -1
  7. package/adapters/cursor.fde.mdc +1 -1
  8. package/bin/check.js +27 -15
  9. package/bin/fde.js +150 -13
  10. package/bin/lib/render.js +2 -2
  11. package/bin/lib/trust.js +38 -3
  12. package/mcp/README.md +1 -1
  13. package/mcp/fdeops-ingest/package.json +1 -1
  14. package/mcp/recipes/README.md +1 -1
  15. package/package.json +1 -1
  16. package/plugin.json +1 -1
  17. package/skills/fde/SKILL.md +30 -31
  18. package/skills/fde/references/ai.md +1 -1
  19. package/skills/fde/references/{exec-narrative.md → board-memo.md} +1 -1
  20. package/skills/fde/references/business-case.md +2 -2
  21. package/skills/fde/references/{ingest-connect.md → connect.md} +1 -1
  22. package/skills/fde/references/discover.md +33 -14
  23. package/skills/fde/references/{trust-engineering.md → earn-trust.md} +1 -1
  24. package/skills/fde/references/{pattern-extract.md → encode-pattern.md} +1 -1
  25. package/skills/fde/references/eval-pack.md +1 -1
  26. package/skills/fde/references/{scope-defense.md → hold-scope.md} +2 -2
  27. package/skills/fde/references/ingest.md +3 -3
  28. package/skills/fde/references/land.md +2 -2
  29. package/skills/fde/references/{initiative-triage.md → pick-three.md} +1 -1
  30. package/skills/fde/references/plan.md +10 -7
  31. package/skills/fde/references/{sketch.md → poc.md} +1 -1
  32. package/skills/fde/references/{status.md → readout.md} +2 -2
  33. package/skills/fde/references/rescue.md +1 -1
  34. package/skills/fde/references/review.md +1 -1
  35. package/skills/fde/references/{rollback-drill.md → rollback.md} +1 -1
  36. package/skills/fde/references/{handoff-engineering.md → runbook.md} +3 -3
  37. package/skills/fde/references/{use-case-scoring.md → score-use-cases.md} +3 -3
  38. package/skills/fde/references/ship.md +121 -18
  39. package/skills/fde/references/{multi-customer-ops.md → switch-clients.md} +1 -1
  40. package/skills/fde/references/{assumption-audit.md → test-assumptions.md} +2 -2
  41. package/skills/fde/references/{options-analysis.md → three-options.md} +1 -1
  42. package/skills/fde/references/{blast-radius.md → what-breaks.md} +3 -3
  43. package/skills/fde/references/{stakeholder-radar.md → who-decides.md} +1 -1
  44. package/templates/.fde/assumptions.md +2 -2
  45. package/templates/.fde/reality.md +6 -1
  46. package/skills/fde/references/incremental-build.md +0 -100
@@ -1,4 +1,4 @@
1
- # blast-radius - know what breaks before you touch it
1
+ # what-breaks - know what breaks before you touch it
2
2
 
3
3
  **Enter when:** about to make a change on a system you don't fully understand, touching a high-churn module from `terrain.md`, modifying shared infrastructure (auth, database, messaging), or the FDE asks "what could go wrong?"
4
4
 
@@ -38,7 +38,7 @@ IRREVERSIBLE → Cannot be rolled back without data loss or manual intervention
38
38
  Example: data migration, dropping a column, changing encryption keys
39
39
  ```
40
40
 
41
- **3. The blast-radius declaration.** Before writing any code, state it explicitly in `decisions.md`:
41
+ **3. The what-breaks declaration.** Before writing any code, state it explicitly in `decisions.md`:
42
42
 
43
43
  ```markdown
44
44
  ## Blast radius: <change name>
@@ -72,7 +72,7 @@ Time to detect: <5 minutes via error rate alert
72
72
 
73
73
  ## Artifact
74
74
 
75
- **`decisions.md`** - the blast-radius declaration, filed before the change starts. Updated if the blast radius grew during implementation.
75
+ **`decisions.md`** - the what-breaks declaration, filed before the change starts. Updated if the blast radius grew during implementation.
76
76
 
77
77
  **`risks.md`** - new risks discovered during the trace (the invisible integrations, the midnight cron job).
78
78
 
@@ -1,4 +1,4 @@
1
- # stakeholder-radar - reading the room before it reads you
1
+ # who-decides - reading the room before it reads you
2
2
 
3
3
  **Enter when:** new stakeholders appear, signals shift mid-engagement, a meeting felt off but you can't say why, or it's been two weeks and the map hasn't been updated.
4
4
 
@@ -1,6 +1,6 @@
1
1
  # Assumptions
2
2
 
3
- <!-- Brief claims that are not yet evidence. Land seeds; assumption-audit / discover update. -->
3
+ <!-- Brief claims that are not yet evidence. Land seeds; test-assumptions / discover update. -->
4
4
 
5
5
  | # | Assumption | Blast radius | How we test | Status | Evidence |
6
6
  |---|------------|--------------|-------------|--------|----------|
@@ -8,4 +8,4 @@
8
8
  **Blast radius:** `CRITICAL` · `LOAD-BEARING` · `CONVENIENCE`
9
9
  **Status:** `OPEN` · `TESTING` · `CONFIRMED` · `DISPROVED` · `PARKED`
10
10
 
11
- **Rule:** a CRITICAL assumption still OPEN blocks plan. DISPROVED → update `reality.md` / `success.md` and log the reset in `decisions.md` the same day.
11
+ **Rule:** a CRITICAL assumption still OPEN blocks plan. `How we test` is the kill observation (the result that stops the work) - plan copies it as `Kill if`. DISPROVED → update `reality.md` / `success.md` and log the reset in `decisions.md` the same day.
@@ -1,7 +1,12 @@
1
1
  # Reality (actual problem)
2
2
 
3
- <!-- Hypothesis until the discover phase confirms with evidence. -->
3
+ <!-- Hypothesis until the discover phase confirms with evidence. Dashboard reads Working theory / Evidence / Differs from brief how. -->
4
4
 
5
5
  **Working theory:**
6
6
  **Evidence:**
7
7
  **Differs from brief how:**
8
+
9
+ **Situation:**
10
+ **Complication:**
11
+ **Question:**
12
+ **Answer-space:**
@@ -1,100 +0,0 @@
1
- # incremental-build - thin slices on someone else's codebase
2
-
3
- **Enter when:** the build task is larger than a single PR, multiple files or systems are involved, or the FDE needs to show visible progress to a stakeholder every 2-3 days.
4
-
5
- **Read first:** `decisions.md` (the plan), `terrain.md` (the danger zones), `context.md`. This skill works *inside* the build phase - it's the execution discipline that makes large features safe on codebases you don't own.
6
-
7
- The FDE who builds a 2,000-line feature in one PR gets it rejected. The FDE who ships five 200-line PRs - each reviewable, testable, and revertible - earns the team's trust. On someone else's codebase, small and visible beats clever and large.
8
-
9
- ## Method (you do this work)
10
-
11
- **1. Slice vertically, never horizontally.**
12
-
13
- ```
14
- BAD (horizontal):
15
- PR 1: Build all database models
16
- PR 2: Build all API endpoints
17
- PR 3: Build all UI components
18
- PR 4: Wire everything together (and pray)
19
-
20
- GOOD (vertical):
21
- PR 1: User can create a payment (schema + endpoint + minimal UI) - testable
22
- PR 2: User can view payment status (query + endpoint + UI) - testable
23
- PR 3: Payment retry on failure (logic + endpoint + UI feedback) - testable
24
- PR 4: Admin can void a payment (auth + logic + UI) - testable
25
- ```
26
-
27
- Each vertical slice delivers working functionality the customer can see. Each slice is independently revertible.
28
-
29
- **2. The slice checklist.** Before starting any slice:
30
-
31
- - [ ] Slice is in `decisions.md` with acceptance criteria (happy + unhappy path)
32
- - [ ] Blast radius declared: which files, which systems, which users affected
33
- - [ ] Rollback path identified: "revert this PR" or something more specific
34
- - [ ] No dependency on an unmerged slice (if dependent, state it and merge in order)
35
-
36
- **3. The implementation loop.** For each slice, in this order:
37
-
38
- ```
39
- Read existing code in the area (search before creating)
40
- → Characterise what is already there (their tests, their runner)
41
- → Implement the minimal working path
42
- → On-site proof (below)
43
- → Cleanup pass (dedupe, simplify - behaviour unchanged)
44
- → Self-review against acceptance criteria
45
- → Commit with a message the client's team can read
46
- → Update decisions.md + delivery.md
47
- ```
48
-
49
- **On-site proof.** A green check on your laptop is not delivery. Before the slice is done:
50
-
51
- - Run **their** test command, typecheck, or smallest proving path. Write the command and the result in `delivery.md`.
52
- - If the signer in `success.md` cannot reject this slice on a screen they already use, it is not proven.
53
- - Staging they operate beats a local demo. If you have no staging: `unknown - ask:` who owns an environment, then stop pretending it shipped.
54
- - Model in the path: `eval-pack` until `evals.md` says SHIP. Do not skip because "it looked right in chat."
55
-
56
- Do not prove it with a textbook ritual. The proof is whatever this client already believes, plus one new receipt they can replay.
57
-
58
- **4. Size discipline.** Each slice targets:
59
-
60
- | Metric | Target | Why |
61
- |--------|--------|-----|
62
- | Lines changed | 100-300 | Reviewable in one sitting |
63
- | Time to implement | 30-90 minutes | Testable before context decays |
64
- | Files touched | 1-5 | Blast radius stays containable |
65
- | Tests added | ≥1 per new behaviour | Proves the slice works; guards against regression |
66
-
67
- A slice larger than 300 lines → split before implementing. "It's all connected" means the design needs work, not the slice limit.
68
-
69
- **5. Stakeholder visibility rhythm.** Every 2-3 slices, something the customer can see:
70
-
71
- - A working endpoint they can hit
72
- - A UI change they can click
73
- - A metric that moved
74
- - A risk that was retired
75
-
76
- Technical progress invisible to stakeholders is trust decay. `delivery.md` gets updated after every visible slice.
77
-
78
- **6. The scope trap.** Mid-slice discoveries - "this module also needs updating," "I should refactor this while I'm here":
79
-
80
- - If it's in `decisions.md`: do it as a separate slice.
81
- - If it's NOT in `decisions.md`: log it as a scope receipt (see `scope-defense.md`), don't touch it.
82
- - The hardest discipline: leaving ugly code alone when it's not in your slice.
83
-
84
- ## Artifact
85
-
86
- **`decisions.md`** - each slice logged with: what was implemented, what was tested, what was deferred.
87
-
88
- **`delivery.md`** - each visible slice with business-language description of what it delivers.
89
-
90
- ## Checkpoint
91
-
92
- After each slice: tests pass (state the command and result), acceptance criteria met, blast radius as declared. After every 2-3 slices: stakeholder visibility confirmed - what did they see, and what's their signal?
93
-
94
- ## Principles
95
-
96
- - Vertical slices, always. Horizontal layers are untestable until assembled.
97
- - 100-300 lines per slice. Larger means split first.
98
- - Every slice is independently revertible. If it isn't, the design is coupled.
99
- - Visible progress every 2-3 slices. Technical progress alone is trust decay.
100
- - The ugly code outside your slice stays ugly. That's discipline, not laziness.