fdeops 3.9.20 → 3.10.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.
@@ -131,6 +131,16 @@ Write migration strategy to `decisions.md` under `## Migration`. Each service ge
131
131
 
132
132
  Never quietly update tasks. Name the reset: update `reality.md` and `success.md`, one paragraph in `decisions.md` - what changed, why, new sequence. An undocumented reset looks like drift; a documented one looks like the FDE caught something important.
133
133
 
134
+ ## Worked example
135
+
136
+ Acme, after discover: the reconciliation job is unowned, Marco's spreadsheet is the real fallback.
137
+
138
+ **Now** is three tasks, not eight. Task 1 is *failures reach a named human* — delivers a page to a rota, accepts "kill the job mid-run → the on-call is paged within 15 min", touches the job wrapper and the alert config, rollback is re-disable the route, verify by killing it in staging. Value promised: `risk-mitigation — a silent failure becomes a 15-minute one`.
139
+
140
+ The kill list in `decisions.md` is where the plan earns its keep: the rewrite of the reconciliation service that Tom keeps proposing goes there — *deferred, the failure mode is ownership not architecture (Priya accepted, Jun 12)* — along with the finance dashboard finance asked for directly. Both stay visible so the same argument is not re-litigated in week 4 without a receipt.
141
+
142
+ First visible slice goes to Marco, not Priya: he is the one whose morning changes, and his confirmation is what makes the sponsor update true.
143
+
134
144
  ## Principles
135
145
 
136
146
  - Plan from success backwards, not from today forwards.
@@ -61,6 +61,16 @@ Evidence-based: point to `decisions.md` scope receipts with dates and requesters
61
61
 
62
62
  Weekly check: count the scope receipts since last conversation. Three or more unaddressed → recommend the accumulation conversation to the FDE. Zero → "scope holding, `success.md` current."
63
63
 
64
+ ## Worked example
65
+
66
+ Acme, week 5. Nothing has been formally added, and the slice is a week late.
67
+
68
+ The pattern shows in three receipts, not one argument: a "quick" finance CSV export (Jun 20, half a day, from Denise directly), retry-logic cleanup asked for mid-build (Jun 24, one day, Tom), and a dashboard tile "while you're in there" (Jun 27, half a day). Each was individually reasonable; together they are the slip.
69
+
70
+ Three-bucket response, applied at the moment of the third ask rather than in a retrospective: the CSV export goes to Next with an accepted trade (it displaces the runbook polish), the retry cleanup goes to the kill list in `decisions.md` with the blast-radius reason, and the tile is absorbed because it is genuinely twenty minutes — logged anyway, since an unlogged absorption is the one that gets forgotten in the accumulation conversation.
71
+
72
+ That conversation happens with Priya at three receipts, with the dates on screen: "these are the four asks, here is the two days, here is what moved." Not a complaint — a decision she gets to make, with evidence, before the deadline makes it for her.
73
+
64
74
  ## Principles
65
75
 
66
76
  - "Let me place it" is the phrase. Not "no," not "sure."
@@ -186,6 +186,16 @@ Adoption isn't a handoff-stage problem - it starts during build. Software that l
186
186
 
187
187
  Before 100%: canary clean, business metric verified, pulse written into `delivery.md`. Also green: value bucket named, audit receipt dated, eval receipt **n/a or pass**, **intent vs diff clean** (no unresolved SPLIT/DROP). Missing any of those → not green. For enterprise-scale: scale-readiness gate passed before broad rollout.
188
188
 
189
+ ## Worked example
190
+
191
+ Acme, shipping the failure-routing slice into a payments environment on a Thursday.
192
+
193
+ Readiness scoring catches two things the diff does not. The audit receipt is missing: the operating map says Marco's manual re-run is the fallback, and nobody has checked whether the new page fires *before* his morning run or after — if after, the alert changes nothing. That gets walked and cited before deploy. Second, the intent-vs-diff read shows the PR also touches the settlement retry that was deferred in build; it comes out.
194
+
195
+ Pre-blast challenge: "what does this break if it fires at 3am and nobody acks?" Answer: nothing breaks, but the rota is not yet agreed — so the deploy waits on a name, not on code. That is a one-day slip that prevents a fake green.
196
+
197
+ After deploy: `delivery.md` ship receipt with the audit cite, the kill test evidence, and the rollback line. Eval receipt: n/a, no AI in this path.
198
+
189
199
  ## Principles
190
200
 
191
201
  - A deployment without a tested rollback is reckless.
@@ -45,6 +45,17 @@ In every engagement where an external FDE was brought in, an internal team was p
45
45
  - **Use their language.** In every meeting. They hear their words coming back and they feel consulted, not replaced.
46
46
  - **Make them look right.** Credit their prior work in your artifacts. They protect you if they feel respected; they wait for your mistake if they don't.
47
47
 
48
+ **6. Before a decision meeting: pre-wire, then pre-mortem.**
49
+
50
+ A recommendation that needs several people to say yes is not won in the room; it is won in the week before it. When the FDE is heading into a go/no-go, a budget ask, or anything that visibly costs someone territory:
51
+
52
+ - **Sort by position, not by seniority.** Firm supporter / firm opponent / **swing**. Effort goes almost entirely to swings - supporters need reinforcement, not persuasion, and a firm opponent is rarely moved by a louder version of the argument that already failed.
53
+ - **Name what each swing is protecting.** The objection voiced in a meeting is usually a proxy: headcount, budget, credibility, control, or the reporting line that gets messier. Write the underlying motivation next to the stated objection - they are different sentences.
54
+ - **Sequence the conversations.** Whoever makes the others easier to win goes first; whoever is reassured by seeing names already on board goes last. One-on-one for anyone who would lose face conceding in a group.
55
+ - **Pre-mortem the meeting.** "It's Thursday, the meeting went badly - who sank it, and with what sentence?" That sentence is the pre-wire you are missing. If the answer is a specific person's objection, their conversation happens *before* the room convenes, not in it.
56
+
57
+ Log the sequence and the pre-mortem sentence in `context.md` as the plan for the week - a pre-wire plan that lives only in the FDE's head is not a plan.
58
+
48
59
  ## Artifact
49
60
 
50
61
  **`stakeholders.md`** - updated with evidence-dated signal changes:
@@ -61,6 +72,16 @@ Signal changes get a dated evidence note. A signal that moved without evidence l
61
72
 
62
73
  One line per stakeholder who changed signal this week. If nobody changed: "Map stable - next check <date>." If a ghost appeared or a resistor went quiet: name it, recommend the move, and update `context.md` with the action.
63
74
 
75
+ ## Worked example
76
+
77
+ Acme, week 6. Priya's replies have gone from same-day to two days, and a phase-2 go/no-go is scheduled for Thursday.
78
+
79
+ Two signals, not one feeling: response time doubled *and* a finance analyst nobody introduced started asking when the work completes. That combination is an invisible escalation — someone above Priya is asking, and the meeting is already happening without the FDE.
80
+
81
+ Positions: Priya is a supporter under pressure. Marco is a supporter who does not vote. Denise (finance) is the swing, and what she is protecting is not the budget line she cites — it is that her team's escalation started this and she has nothing to show her own director. Raj is a firm opponent on the rewrite question, and no amount of the same argument moves him.
82
+
83
+ Sequence: Denise one-on-one Tuesday with the incident numbers in her units, then Priya Wednesday, so Priya walks in already knowing finance is not going to object. Pre-mortem sentence: *"Denise says 'we still don't know if this actually caught anything'"* — which is precisely why Tuesday exists. `stakeholders.md` records `Priya | sponsor | green→amber | reply latency 1d → 2d, unintroduced analyst (Jul 3)`; `context.md` carries the sequence.
84
+
64
85
  ## Principles
65
86
 
66
87
  - Signals are evidence-based, not feeling-based. "Seemed distant" doesn't move a signal; "stopped responding to three messages" does.
@@ -16,7 +16,7 @@
16
16
  | **A — Answer** | What you recommend / what happens next week (≤3 bullets) | plan Now lane, delivery promised→measured |
17
17
 
18
18
  Then add, still on the same page:
19
- 1. **Value this week** - from the value ledger: promised → measured (or "pending") with evidence citation.
19
+ 1. **Value this week** - from the value ledger: promised → measured (or "pending") → **accepted by whom**, with evidence citation. A measured number nobody on the customer side has agreed to is written as `claimed`, and the Ask never rests on it - if the whole case for the next phase is a claimed number, the real ask this week is "who signs off that this is real?".
20
20
  2. **Kill / defer reminder** - one line from the plan kill list so scope fights stay visible.
21
21
  3. **Hostile Q prep** - three questions a skeptical sponsor will ask, with one-line answers from memory.
22
22
 
@@ -34,7 +34,7 @@ Append the draft to `delivery.md` under `## Status - <date>` using the SCQA head
34
34
  **C:** ...
35
35
  **Q:** ...
36
36
  **A:** ...
37
- **Value ledger:** promised … / measured … (evidence)
37
+ **Value ledger:** promised … / measured … / accepted by … (evidence) — or `claimed, unaccepted`
38
38
  **Kill list reminder:** …
39
39
  **Hostile Qs:** 1) … 2) … 3) …
40
40
  ```
@@ -43,6 +43,16 @@ Append the draft to `delivery.md` under `## Status - <date>` using the SCQA head
43
43
 
44
44
  Walk the FDE through the Complication and the Ask - confirm the framing matches what the sponsor can hear right now (check `stakeholders.md` signal first: a red-signal sponsor gets a different opening than a green one).
45
45
 
46
+ ## Worked example
47
+
48
+ Acme, week 3, Priya's Friday update.
49
+
50
+ **S:** failure routing is live; detection is 12 min against the 4h baseline in `success.md`. **C** leads with the bad news, not the win: the second incident was acked 40 minutes late because the rota has one name on it, and that name was on leave. **Q:** one ask — a second name on the rota by Wednesday. **A:** three bullets, top of the Now lane.
51
+
52
+ Value ledger line: `promised 4h → 15min / measured 12min over 2 incidents / accepted by — (Marco confirmed operationally, finance not yet)` → written as `claimed, unaccepted`, which is what makes the Ask honest rather than a victory lap.
53
+
54
+ Hostile Q prep, from memory not imagination: "why did we pay for alerting we already had?" → the receipt from `decisions.md` and the disabled-alerting finding in `reality.md`. Kill list reminder: the service rewrite is still deferred, accepted by Priya on Jun 12.
55
+
46
56
  ## Principles
47
57
 
48
58
  - SCQA every time. Situation → Complication → Ask → Answer.
@@ -4,9 +4,9 @@
4
4
 
5
5
  ## Value ledger
6
6
 
7
- | Date | Slice | Bucket | Promised | Measured | Evidence | Rollback |
8
- |------|-------|--------|----------|----------|----------|----------|
9
- | | | *(cost-save / risk-mitigation / revenue-uplift)* | *(what we said it would change)* | *(what actually changed, or pending)* | *(who/when/metric)* | |
7
+ | Date | Slice | Bucket | Promised | Measured | Accepted by | Evidence | Rollback |
8
+ |------|-------|--------|----------|----------|-------------|----------|----------|
9
+ | | | *(cost-save / risk-mitigation / revenue-uplift)* | *(what we said it would change)* | *(what actually changed, or pending)* | *(customer-side name + date, or it stays claimed)* | *(who/when/metric)* | |
10
10
 
11
11
  ## Ship receipts
12
12