fdeops 5.0.0 → 5.1.1
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/AGENTS.md +1 -1
- package/README.md +30 -26
- package/bin/catalog-doc.js +38 -0
- package/bin/check.js +20 -49
- package/bin/fde.js +2 -2
- package/bin/generate-skills.js +9 -1
- package/bin/install.js +9 -3
- package/bin/skill-catalog.js +283 -16
- package/mcp/fdeops-ingest/package.json +1 -1
- package/package.json +2 -2
- package/plugin.json +1 -1
- package/skills/README.md +7 -0
- package/skills/audit/.fde-generated.json +10 -0
- package/skills/audit/SKILL.md +21 -0
- package/skills/audit/references/audit.md +71 -0
- package/skills/audit/references/discover.md +112 -0
- package/skills/audit/references/task-context.md +18 -0
- package/skills/board-memo/.fde-generated.json +10 -0
- package/skills/board-memo/SKILL.md +21 -0
- package/skills/board-memo/references/board-memo.md +108 -0
- package/skills/board-memo/references/business-case.md +90 -0
- package/skills/board-memo/references/task-context.md +18 -0
- package/skills/brief/.fde-generated.json +9 -0
- package/skills/brief/SKILL.md +21 -0
- package/skills/brief/references/land.md +136 -0
- package/skills/brief/references/task-context.md +18 -0
- package/skills/build/.fde-generated.json +3 -3
- package/skills/build/references/build.md +1 -1
- package/skills/build/references/integrate.md +12 -2
- package/skills/build/references/task-context.md +7 -1
- package/skills/business-case/.fde-generated.json +9 -0
- package/skills/business-case/SKILL.md +21 -0
- package/skills/business-case/references/business-case.md +90 -0
- package/skills/business-case/references/task-context.md +18 -0
- package/skills/connect/.fde-generated.json +12 -0
- package/skills/connect/SKILL.md +21 -0
- package/skills/connect/references/connect.md +24 -0
- package/skills/connect/references/debrief.md +91 -0
- package/skills/connect/references/ingest.md +75 -0
- package/skills/connect/references/source-setup.md +30 -0
- package/skills/connect/references/task-context.md +18 -0
- package/skills/dashboard/.fde-generated.json +9 -0
- package/skills/dashboard/SKILL.md +21 -0
- package/skills/dashboard/references/dashboard.md +40 -0
- package/skills/dashboard/references/task-context.md +18 -0
- package/skills/debrief/.fde-generated.json +12 -0
- package/skills/debrief/SKILL.md +21 -0
- package/skills/debrief/references/connect.md +24 -0
- package/skills/debrief/references/debrief.md +91 -0
- package/skills/debrief/references/ingest.md +75 -0
- package/skills/debrief/references/source-setup.md +30 -0
- package/skills/debrief/references/task-context.md +18 -0
- package/skills/debug/.fde-generated.json +3 -3
- package/skills/debug/references/build.md +1 -1
- package/skills/debug/references/integrate.md +12 -2
- package/skills/debug/references/task-context.md +7 -1
- package/skills/demo-prep/.fde-generated.json +9 -0
- package/skills/demo-prep/SKILL.md +21 -0
- package/skills/demo-prep/references/demo-prep.md +31 -0
- package/skills/demo-prep/references/task-context.md +18 -0
- package/skills/discover/.fde-generated.json +1 -1
- package/skills/discover/references/task-context.md +7 -1
- package/skills/earn-trust/.fde-generated.json +9 -0
- package/skills/earn-trust/SKILL.md +21 -0
- package/skills/earn-trust/references/earn-trust.md +81 -0
- package/skills/earn-trust/references/task-context.md +18 -0
- package/skills/evaluate/.fde-generated.json +3 -3
- package/skills/evaluate/references/build.md +1 -1
- package/skills/evaluate/references/integrate.md +12 -2
- package/skills/evaluate/references/task-context.md +7 -1
- package/skills/fde/SKILL.md +24 -21
- package/skills/fde/references/build.md +1 -1
- package/skills/fde/references/connect.md +14 -24
- package/skills/fde/references/debrief.md +2 -0
- package/skills/fde/references/earn-trust.md +27 -46
- package/skills/fde/references/hold-scope.md +25 -24
- package/skills/fde/references/ingest.md +4 -2
- package/skills/fde/references/integrate.md +12 -2
- package/skills/fde/references/land.md +28 -28
- package/skills/fde/references/plan.md +6 -6
- package/skills/fde/references/rescue.md +18 -18
- package/skills/fde/references/runbook.md +52 -120
- package/skills/fde/references/source-setup.md +30 -0
- package/skills/fde/references/task-context.md +7 -1
- package/skills/fde/references/who-decides.md +29 -57
- package/skills/feedback/.fde-generated.json +1 -1
- package/skills/feedback/references/task-context.md +7 -1
- package/skills/handoff/.fde-generated.json +1 -1
- package/skills/handoff/references/task-context.md +7 -1
- package/skills/ingest/.fde-generated.json +12 -0
- package/skills/ingest/SKILL.md +21 -0
- package/skills/ingest/references/connect.md +24 -0
- package/skills/ingest/references/debrief.md +91 -0
- package/skills/ingest/references/ingest.md +75 -0
- package/skills/ingest/references/source-setup.md +30 -0
- package/skills/ingest/references/task-context.md +18 -0
- package/skills/integrate/.fde-generated.json +3 -3
- package/skills/integrate/references/build.md +1 -1
- package/skills/integrate/references/integrate.md +12 -2
- package/skills/integrate/references/task-context.md +7 -1
- package/skills/options/.fde-generated.json +1 -1
- package/skills/options/references/task-context.md +7 -1
- package/skills/plan/.fde-generated.json +10 -0
- package/skills/plan/SKILL.md +21 -0
- package/skills/plan/references/business-case.md +90 -0
- package/skills/plan/references/plan.md +167 -0
- package/skills/plan/references/task-context.md +18 -0
- package/skills/poc/.fde-generated.json +4 -4
- package/skills/poc/references/build.md +1 -1
- package/skills/poc/references/integrate.md +12 -2
- package/skills/poc/references/plan.md +6 -6
- package/skills/poc/references/task-context.md +7 -1
- package/skills/prioritize/.fde-generated.json +10 -0
- package/skills/prioritize/SKILL.md +21 -0
- package/skills/prioritize/references/business-case.md +90 -0
- package/skills/prioritize/references/pick-three.md +95 -0
- package/skills/prioritize/references/task-context.md +18 -0
- package/skills/qa/.fde-generated.json +3 -3
- package/skills/qa/references/build.md +1 -1
- package/skills/qa/references/integrate.md +12 -2
- package/skills/qa/references/task-context.md +7 -1
- package/skills/readout/.fde-generated.json +1 -1
- package/skills/readout/references/task-context.md +7 -1
- package/skills/red-team/.fde-generated.json +9 -0
- package/skills/red-team/SKILL.md +21 -0
- package/skills/red-team/references/red-team.md +105 -0
- package/skills/red-team/references/task-context.md +18 -0
- package/skills/rescue/.fde-generated.json +9 -0
- package/skills/rescue/SKILL.md +21 -0
- package/skills/rescue/references/rescue.md +82 -0
- package/skills/rescue/references/task-context.md +18 -0
- package/skills/review/.fde-generated.json +3 -3
- package/skills/review/references/build.md +1 -1
- package/skills/review/references/integrate.md +12 -2
- package/skills/review/references/task-context.md +7 -1
- package/skills/rollback/.fde-generated.json +9 -0
- package/skills/rollback/SKILL.md +21 -0
- package/skills/rollback/references/rollback.md +102 -0
- package/skills/rollback/references/task-context.md +18 -0
- package/skills/runbook/.fde-generated.json +11 -0
- package/skills/runbook/SKILL.md +21 -0
- package/skills/runbook/references/close.md +66 -0
- package/skills/runbook/references/encode-pattern.md +96 -0
- package/skills/runbook/references/runbook.md +73 -0
- package/skills/runbook/references/task-context.md +18 -0
- package/skills/scope/.fde-generated.json +2 -2
- package/skills/scope/references/hold-scope.md +25 -24
- package/skills/scope/references/task-context.md +7 -1
- package/skills/score-use-cases/.fde-generated.json +10 -0
- package/skills/score-use-cases/SKILL.md +21 -0
- package/skills/score-use-cases/references/business-case.md +90 -0
- package/skills/score-use-cases/references/score-use-cases.md +70 -0
- package/skills/score-use-cases/references/task-context.md +18 -0
- package/skills/ship/.fde-generated.json +3 -3
- package/skills/ship/references/build.md +1 -1
- package/skills/ship/references/integrate.md +12 -2
- package/skills/ship/references/task-context.md +7 -1
- package/skills/switch-clients/.fde-generated.json +9 -0
- package/skills/switch-clients/SKILL.md +21 -0
- package/skills/switch-clients/references/switch-clients.md +114 -0
- package/skills/switch-clients/references/task-context.md +18 -0
- package/skills/test-assumptions/.fde-generated.json +9 -0
- package/skills/test-assumptions/SKILL.md +21 -0
- package/skills/test-assumptions/references/task-context.md +18 -0
- package/skills/test-assumptions/references/test-assumptions.md +102 -0
- package/skills/what-breaks/.fde-generated.json +9 -0
- package/skills/what-breaks/SKILL.md +21 -0
- package/skills/what-breaks/references/task-context.md +18 -0
- package/skills/what-breaks/references/what-breaks.md +91 -0
- package/skills/who-decides/.fde-generated.json +9 -0
- package/skills/who-decides/SKILL.md +21 -0
- package/skills/who-decides/references/task-context.md +18 -0
- package/skills/who-decides/references/who-decides.md +63 -0
|
@@ -1,34 +1,24 @@
|
|
|
1
1
|
# connect - Connect a source
|
|
2
2
|
|
|
3
|
-
**Enter when:** the
|
|
3
|
+
**Enter when:** the user asks to connect a notes, chat or document source, or an expected source cannot be read.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
**Who runs setup:** you guide; the **host** (Cursor/Claude) must save MCP config. You cannot silently install servers into the host.
|
|
8
|
-
|
|
9
|
-
## Honest contract
|
|
10
|
-
|
|
11
|
-
- **Daily work does not need a source MCP.** Paste notes → debrief. File on disk → `fde ingest`.
|
|
12
|
-
- **Connect means a source**, not FDEOps. Granola/Slack/Notion credentials stay with that MCP. FDEOps never pushes, never ambient-syncs, never stores their tokens.
|
|
13
|
-
- **Sink is the CLI in this bound workspace** (`fde ingest`). `fdeops-ingest` MCP is optional. If you use it, pass `engagement` as the `.fde/` path from `fde resume --bind` (MCP servers often do not inherit the workspace bind).
|
|
14
|
-
- Never invent that Granola/Slack is available if tools are missing. Never auto-apply to `.fde/`.
|
|
5
|
+
Apply [task context](task-context.md). Source setup can run independently of a customer record. Follow [source setup](source-setup.md) for permitted tools, credentials, connectivity checks and export alternatives.
|
|
15
6
|
|
|
16
7
|
## Method
|
|
17
8
|
|
|
18
|
-
1.
|
|
19
|
-
2.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
3. **Emit config for the source only** - open `mcp/recipes/<source>.md`. Fill placeholders from *that product's* docs. Tell them to paste secrets into host env - never into `.fde/`.
|
|
24
|
-
4. **Tell them where to paste** - Cursor MCP settings / `mcp.json`. Claude Code: their MCP config. Save → reload MCP / restart session.
|
|
25
|
-
5. **Verify** - after reload: re-run capability check. If source tools appear, offer a **test pull** staged to `.inbox/` only. Stop before apply unless they ask to propose.
|
|
26
|
-
6. **Handoff phrase** - e.g. `@fde pull today's Acme Granola into the fieldbook`.
|
|
9
|
+
1. Identify the source and the material the user wants to read. Inspect the host's actual available tools before recommending setup.
|
|
10
|
+
2. If the source already works, use a narrowly scoped requested read. Do not install another connector.
|
|
11
|
+
3. If setup is needed, verify current provider and host documentation, explain the required access, and make only authorized configuration changes. Never put credentials into prompts or customer records.
|
|
12
|
+
4. Test the selected source and distinguish configuration from successful retrieval. If access is blocked, report the specific limitation and an available file or paste alternative.
|
|
13
|
+
5. If the user also wants to update a customer record, continue with [ingest](ingest.md) after selecting that record. Otherwise stop after the requested setup or read.
|
|
27
14
|
|
|
28
|
-
##
|
|
15
|
+
## Checkpoint
|
|
29
16
|
|
|
30
|
-
Do not
|
|
17
|
+
Return what is connected, what read was verified, any access gap, and how to request the next pull. Do not claim an integration works from configuration alone or write customer records during setup.
|
|
31
18
|
|
|
32
|
-
##
|
|
19
|
+
## Principles
|
|
33
20
|
|
|
34
|
-
|
|
21
|
+
- Existing source tools first; configuration only when needed.
|
|
22
|
+
- Minimum requested read, no ambient synchronization.
|
|
23
|
+
- Credentials stay in supported secret storage.
|
|
24
|
+
- Record updates require their own review and confirmation.
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
**Enter when:** the FDE just left a meeting/call and dumps raw notes, a transcript, or "they said…". Highest-frequency moment in FDE life. Capture within the hour.
|
|
4
4
|
|
|
5
|
+
**Standalone review:** apply [task context](task-context.md). If the user supplies notes and wants a summary or review, interpret them using **Prepare one update** below and return a draft. Keep requests, confirmed decisions, reported results and unknowns distinct. No CLI or customer record is needed; do not claim anything was saved. Use the bound-record path below only when updating an existing record or when the user asks to start one.
|
|
6
|
+
|
|
5
7
|
**Large transcripts or emails** sitting in Granola/Gmail/Notion → prefer **`fde ingest stage`** first (via source MCPs the FDE configured), then the same propose → confirm → **`fde ingest apply`** path. See `references/ingest.md`. Pasted short notes stay on this debrief verb.
|
|
6
8
|
|
|
7
9
|
**Read first:** the bounded `fde resume` packet for the bound client. Use `fde recall` for the specific prior decision, action, or delivery result needed to reconcile this update. Do not reload the whole engagement.
|
|
@@ -2,52 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
**Enter when:** new engagement where you don't have full access yet, trust is thin, the customer said "let's start small," or you need to navigate "we don't trust AI-generated code."
|
|
4
4
|
|
|
5
|
-
**Read first:**
|
|
5
|
+
**Read first:** apply [task context](task-context.md), then retrieve permitted trust constraints, stakeholder evidence and current context. Never read raw private blocks.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Build confidence through useful work, clear evidence and respect for the customer's process. Relationship confidence and access permissions are separate: a strong relationship does not grant production authority.
|
|
8
8
|
|
|
9
9
|
## Method (you do this work)
|
|
10
10
|
|
|
11
|
-
**1.
|
|
11
|
+
**1. Establish the access needed now.** Identify the next task, the minimum relevant access, and its actual policy or authorization source. Read-only access, reviewed PRs, branch writes and deployment rights can be granted independently. Reuse permissions already granted for the same scope; do not impose a ladder or ask the customer to re-earn established access. Record missing or disputed rights and continue work that does not depend on them.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
Level 0: Observer → read-only access, watching
|
|
15
|
-
Level 1: Advisor → recommendations, no code changes
|
|
16
|
-
Level 2: Contributor → PRs reviewed by their team
|
|
17
|
-
Level 3: Committer → direct push to feature branches
|
|
18
|
-
Level 4: Owner → production access, deploy authority
|
|
19
|
-
Level 5: Trusted → they call you before making decisions
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
**Never skip a level.** The FDE who asks for production access on day two gets observer access for a month. The FDE who ships a clean PR on day two gets committer access by week two. Each level is earned by demonstrating competence AND respect at the current level.
|
|
13
|
+
**2. Make progress visible.** Choose useful actions for the engagement's stage and agreed cadence:
|
|
23
14
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
| 1 | Ask the passed-over team what naming conventions they use - then use them | Shows respect before competence |
|
|
30
|
-
| 2 | Send a one-paragraph status to the sponsor without being asked | Sets the pattern: they hear from you before they have to ask |
|
|
31
|
-
| 3 | Find a genuine risk and flag it without drama | Demonstrates you're protecting them, not performing |
|
|
32
|
-
| 5 | Show a small win to the champion so they can share it upward | Gives them evidence their bet on you was right |
|
|
15
|
+
- Deliver a small verified result within scope, or clarify a consequential unknown when implementation is premature. A quick win does not bypass release gates.
|
|
16
|
+
- Ask the existing team about conventions and prior attempts; credit their contributions without assuming they were passed over.
|
|
17
|
+
- Prepare a concise status update using the agreed channel and audience. Send only within existing communication authority.
|
|
18
|
+
- Flag a supported risk and its consequence without exaggerating urgency.
|
|
19
|
+
- Show results the intended users can evaluate, distinguishing demonstrated behavior from reported satisfaction.
|
|
33
20
|
|
|
34
21
|
**3. Navigate "we don't trust AI-generated code":**
|
|
35
22
|
|
|
36
23
|
This is increasingly common. The right response is respect, not persuasion:
|
|
37
24
|
|
|
38
25
|
- **Ask the policy, don't assume.** "Does your organisation have a position on AI-assisted code in production?"
|
|
39
|
-
- **If prohibited:**
|
|
26
|
+
- **If prohibited:** do not load or work on their code with the model. Engagement notes and planning may also contain restricted data; use FDEOps on them only when that use is permitted. Continue with generic or explicitly permitted material, and identify what must be handled outside the AI workflow.
|
|
40
27
|
- **If permitted with review:** every AI-touched line goes through their normal review process. Flag it: "AI-assisted, human-reviewed" in commit messages if they want traceability.
|
|
41
|
-
- **If grey area:** treat as prohibited until someone with authority says otherwise.
|
|
42
|
-
- **Never hide it.**
|
|
28
|
+
- **If grey area:** treat as prohibited until someone with authority says otherwise. Clarify only the policy needed for the next action and continue work on already permitted material.
|
|
29
|
+
- **Never hide it.** Disclose AI involvement according to the agreed policy; do not represent prohibited use as ordinary local tooling.
|
|
43
30
|
|
|
44
31
|
**4. Trust recovery - when you've made a mistake:**
|
|
45
32
|
|
|
46
33
|
Mistakes happen. What matters is speed and honesty:
|
|
47
34
|
|
|
48
|
-
- **
|
|
35
|
+
- **Report promptly under the incident process.** State the known impact and your confirmed contribution. Do not assign yourself or another person a cause before evidence supports it.
|
|
49
36
|
- **Show the fix AND the prevention.** "Here's what happened, here's the fix, here's the test that prevents it next time."
|
|
50
|
-
- **
|
|
37
|
+
- **Agree a recovery checkpoint.** Use a verified corrective result and a realistic next update; do not promise a win within an arbitrary window.
|
|
51
38
|
- **Never minimise.** "It was a small bug" is your assessment, not theirs. Let them size it.
|
|
52
39
|
|
|
53
40
|
**5. The trust account - deposits and withdrawals:**
|
|
@@ -65,36 +52,30 @@ Mistakes happen. What matters is speed and honesty:
|
|
|
65
52
|
|
|
66
53
|
**`trust-profile.md`** - updated sections:
|
|
67
54
|
```markdown
|
|
68
|
-
##
|
|
69
|
-
Current: <
|
|
70
|
-
|
|
71
|
-
Next
|
|
55
|
+
## Access and working agreement
|
|
56
|
+
Current: <permitted task, system/environment and limits>
|
|
57
|
+
Source: <actual authorization/policy and date>
|
|
58
|
+
Next need: <access gap or none; responsible decision-maker if known>
|
|
72
59
|
|
|
73
60
|
## AI policy
|
|
74
61
|
Status: <prohibited / permitted-with-review / grey-area-treating-as-prohibited>
|
|
75
62
|
Source: <who confirmed, when>
|
|
76
63
|
```
|
|
77
64
|
|
|
78
|
-
**`decisions.md`** -
|
|
65
|
+
**`decisions.md`** - record consequential confirmed agreements with their sources. A risk raised is an observed action; increased trust is not established unless supported by the customer's response.
|
|
79
66
|
|
|
80
67
|
## Checkpoint
|
|
81
68
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
## The week 2-4 valley
|
|
69
|
+
Check whether the next task has the required access and agreement. Reuse current evidence; if a material gap remains, name the applicable decision and next action.
|
|
85
70
|
|
|
86
|
-
|
|
71
|
+
## Keep expectations current
|
|
87
72
|
|
|
88
|
-
|
|
89
|
-
- Ship one visible artifact per week, even if discovery isn't done. A terrain map, a risk register, a stakeholder signal update - something the sponsor can point to.
|
|
90
|
-
- Proactive status update at end of week 2 - explicitly name what discovery revealed that wasn't in the brief. This resets expectations with evidence.
|
|
91
|
-
- If still in discovery at week 3: the conversation with the sponsor about scope or timeline reset is overdue. Don't wait for them to ask.
|
|
73
|
+
At the agreed checkpoints, explain what changed, what has been demonstrated and what remains uncertain. If discovery invalidates the expected scope or timeline, surface the evidence when it affects the next decision. A long discovery phase may be appropriate for the work; week numbers alone do not establish impatience or failure.
|
|
92
74
|
|
|
93
75
|
## Principles
|
|
94
76
|
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
- AI policy
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
- Weeks 2-4 are where engagements silently die. Ship visible artifacts weekly to survive the valley.
|
|
77
|
+
- Earn confidence through observable work; permissions come from applicable authority.
|
|
78
|
+
- Use the customer's conventions and credit actual contributions.
|
|
79
|
+
- AI policy applies to the data and use, including engagement memory.
|
|
80
|
+
- Report mistakes promptly, distinguish known causes from hypotheses, and verify recovery.
|
|
81
|
+
- Choose updates and follow-up timing from impact and the agreed cadence.
|
|
@@ -6,51 +6,52 @@
|
|
|
6
6
|
|
|
7
7
|
**Read first:** `success.md` (the agreed boundary), `decisions.md`, `context.md`. Load `stakeholders.md` to know who's asking and their signal.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Small requests can accumulate into material changes to cost, timing or acceptance. Compare the request with the actual agreement before classifying it; an adjacent request may already be in scope, and a clarification is not automatically an addition.
|
|
10
10
|
|
|
11
11
|
## Method (you do this work)
|
|
12
12
|
|
|
13
|
-
**1. Detect before it compounds.**
|
|
13
|
+
**1. Detect before it compounds.** Patterns worth checking against the agreement:
|
|
14
14
|
|
|
15
|
-
| Pattern | What it sounds like | What
|
|
15
|
+
| Pattern | What it sounds like | What to check |
|
|
16
16
|
|---------|--------------------|--------------------------|
|
|
17
|
-
| **The friendly addition** | "While you're in there, could you also…" |
|
|
18
|
-
| **The evolved requirement** | "Oh, what I actually meant was…" |
|
|
19
|
-
| **The stakeholder swap** | A new person starts requesting features the original sponsor didn't |
|
|
17
|
+
| **The friendly addition** | "While you're in there, could you also…" | Whether the work is already covered and what it changes |
|
|
18
|
+
| **The evolved requirement** | "Oh, what I actually meant was…" | Whether this clarifies existing acceptance or proposes a change |
|
|
19
|
+
| **The stakeholder swap** | A new person starts requesting features the original sponsor didn't | The requester's authority and whether the request changes the agreed outcome |
|
|
20
20
|
|
|
21
|
-
**2. The scope receipt.**
|
|
21
|
+
**2. The scope receipt.** Record consequential proposed changes and cumulative impact in the existing task or engagement record. Routine clarifications within confirmed scope can share a concise update; do not add a separate ceremony for each request. Distinguish estimates from measured effort and proposals from decisions:
|
|
22
22
|
|
|
23
23
|
```markdown
|
|
24
24
|
## Scope change - <date>
|
|
25
25
|
Requested by: <who>
|
|
26
26
|
Request: <what, in their words>
|
|
27
|
-
Impact: <
|
|
28
|
-
|
|
27
|
+
Impact: <estimate with assumptions, or unknown; affected work/risk/acceptance>
|
|
28
|
+
Authority: <applicable agreement/decision source or unknown>
|
|
29
|
+
Status: proposed / confirmed in scope / agreed change / deferred / declined / disputed
|
|
29
30
|
```
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
Show consequential judgments and uncertainties for confirmation before saving unless already explicitly confirmed. Use the existing task or `decisions.md` workflow; label an unapproved request as proposed rather than logging it as an agreed scope change.
|
|
32
33
|
|
|
33
|
-
**3.
|
|
34
|
+
**3. Recommend a disposition.** Explain the fit and tradeoffs; use the relevant authority for any change:
|
|
34
35
|
|
|
35
36
|
| Bucket | What you say | When to use |
|
|
36
37
|
|--------|-------------|-------------|
|
|
37
|
-
| **This phase** | "That
|
|
38
|
-
| **Next phase** | "
|
|
39
|
-
| **Separate engagement** | "That's a different problem - it deserves its own brief and its own timeline." | The request
|
|
38
|
+
| **This phase** | "That is covered by the current agreement. Here is its impact on the plan." | The request is within confirmed scope and authority; do not promise unchanged timing without evidence |
|
|
39
|
+
| **Next phase** | "This adds <impact>. I recommend deferring it or agreeing a tradeoff." | The request changes current commitments; a future phase is proposed, not promised |
|
|
40
|
+
| **Separate engagement** | "That's a different problem - it deserves its own brief and its own timeline." | The request requires a materially different outcome, access or commercial agreement |
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
Decline a request clearly when it conflicts with policy or the applicable authority rejects it. No wording can substitute for a real scope decision.
|
|
42
43
|
|
|
43
44
|
**4. The accumulation conversation.** When the scope receipts show a pattern - a material cumulative impact on delivery, cost, risk, or acceptance - the FDE needs a conversation with the sponsor:
|
|
44
45
|
|
|
45
46
|
Frame it as **protection, not complaint:**
|
|
46
47
|
> "We've absorbed five changes since the original agreement. Each one made sense individually. Together, they've added roughly two weeks. I want to make sure the timeline expectation still matches - should we adjust the delivery date, or reprioritise to keep the original date?"
|
|
47
48
|
|
|
48
|
-
Evidence-based: point to `decisions.md` scope receipts with dates and requesters.
|
|
49
|
+
Evidence-based: point to `decisions.md` scope receipts with dates and requesters. Use the actual scope decision-maker; sponsorship alone does not establish delegated authority.
|
|
49
50
|
|
|
50
51
|
**5. The commercial boundary.** In paid engagements, scope creep silently moves billing and liability:
|
|
51
52
|
|
|
52
53
|
- If the engagement is time-and-materials: scope creep is the client's money, but flag it - they deserve to know what they're buying.
|
|
53
|
-
- If the engagement is fixed-price:
|
|
54
|
+
- If the engagement is fixed-price: check the change terms and contingency; material changes may affect margin or commitments. Surface the evidence to whoever owns the commercials.
|
|
54
55
|
- If the engagement has a success fee: scope changes that move the success criteria affect compensation. Log it.
|
|
55
56
|
|
|
56
57
|
## Artifact
|
|
@@ -69,15 +70,15 @@ Acme, week 5. Nothing has been formally added, and the slice is a week late.
|
|
|
69
70
|
|
|
70
71
|
The pattern shows in three requests: 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 sounds reasonable; their cumulative estimates explain part of the slip and need a scope decision.
|
|
71
72
|
|
|
72
|
-
Three-bucket response, applied while the requests can still be placed: the CSV export fits this phase only with an accepted trade (it displaces the runbook polish), the retry cleanup goes to the kill list in `decisions.md` with the what-breaks reason, and the tile is absorbed because it is genuinely twenty minutes -
|
|
73
|
+
Three-bucket response, applied while the requests can still be placed: the CSV export fits this phase only with an accepted trade (it displaces the runbook polish), the retry cleanup goes to the kill list in `decisions.md` with the what-breaks reason, and the tile is absorbed because it is genuinely twenty minutes - included in the existing progress receipt so cumulative impact remains visible.
|
|
73
74
|
|
|
74
|
-
That conversation happens with Priya when the added work threatens the date, with the receipts on screen: "here are the asks, their estimated impact, and what moved."
|
|
75
|
+
That conversation happens with Priya when the added work threatens the date, with the receipts on screen: "here are the asks, their estimated impact, and what moved." Confirm Priya holds the relevant scope authority before treating her response as agreement.
|
|
75
76
|
|
|
76
77
|
## Principles
|
|
77
78
|
|
|
78
|
-
-
|
|
79
|
-
-
|
|
79
|
+
- Compare requests with the agreement before classifying them.
|
|
80
|
+
- Record consequential changes with their source, authority and status; batch routine work.
|
|
80
81
|
- Escalate material impact, not an arbitrary count of requests.
|
|
81
|
-
-
|
|
82
|
-
- `success.md`
|
|
83
|
-
-
|
|
82
|
+
- Missing boundaries do not grant permission to expand scope.
|
|
83
|
+
- `success.md` records agreed scope; it does not replace the governing agreement.
|
|
84
|
+
- Make tradeoffs visible without inventing motives, approval or future commitments.
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
**Enter when:** the FDE wants to catch the engagement up from external sources - "make sure Acme is up to date," "pull what's relevant," "grab today's Granola and Denise's last email." Raw transcripts and long emails that are too big to paste usefully.
|
|
4
4
|
|
|
5
|
-
**Connect / capability (different entry):** "connect a new MCP", "connect Granola/Slack/Notion", "what can you pull?" → `references/connect.md` first.
|
|
5
|
+
**Connect / capability (different entry):** "connect a new MCP", "connect Granola/Slack/Notion", "what can you pull?" → `references/connect.md` first. Use [source setup](source-setup.md) for files and supported source tools.
|
|
6
|
+
|
|
7
|
+
**Review only:** requested source reads and a sourced draft can proceed without a customer record. Use [source setup](source-setup.md) and [debrief](debrief.md). Do not stage or apply anything until the intended customer is selected; do not silently create a record for a review-only request.
|
|
6
8
|
|
|
7
9
|
**Read first:** the bounded `fde resume` packet and targeted recall for affected prior facts. Bind the engagement before staging anything.
|
|
8
10
|
|
|
@@ -60,7 +62,7 @@ Carry an actual `[source: ...]` locator on each consequential fact. Preserve ups
|
|
|
60
62
|
|
|
61
63
|
## MCP sink + recipes
|
|
62
64
|
|
|
63
|
-
Optional `mcp/fdeops-ingest` wraps the same verbs over stdio. Source MCPs remain separate - the FDE adds whichever fetch tools they trust. Setup coach: `connect.md`.
|
|
65
|
+
Optional `mcp/fdeops-ingest` wraps the same verbs over stdio. Source MCPs remain separate - the FDE adds whichever fetch tools they trust. Setup coach: `connect.md`. Portable setup guidance: [source setup](source-setup.md).
|
|
64
66
|
|
|
65
67
|
## Checkpoint
|
|
66
68
|
|
|
@@ -6,13 +6,23 @@ Start from [task context](task-context.md). Permitted supplied context is enough
|
|
|
6
6
|
|
|
7
7
|
## Method
|
|
8
8
|
|
|
9
|
-
1. Map producer, consumer, owner, direction, and side effects. Inspect the actual installed version and local implementation; verify uncertain behavior against current official documentation. Identify the relevant schema, authentication scopes, network boundary, and permitted test environment.
|
|
9
|
+
1. Map producer, consumer, owner, direction, and side effects. Inspect the actual installed version and local implementation; verify uncertain behavior against current official documentation. Identify the relevant schema, authentication scopes, network boundary, and permitted test environment. Before changing an untested existing boundary, characterize the mappings, ordering or other observable behavior its callers depend on.
|
|
10
10
|
2. Write the acceptance example: an input at the real boundary and the observable downstream result. Include a rejection or failure example. Separate configuration validity, successful authentication, transport connectivity, contract compatibility, and end-to-end behavior; none proves the next.
|
|
11
11
|
3. Inspect credentials by presence and required scope without printing values. Use existing secret storage. Check data classification and retention before moving data; never pass raw `<private>` blocks into a model. Prefer sanitized or synthetic cases approved for the target environment.
|
|
12
|
-
4. Implement the narrow adapter using native repository patterns. Validate external inputs and model outputs, bound timeouts and retries, preserve error
|
|
12
|
+
4. Implement the narrow adapter using native repository patterns. Validate external inputs and model outputs, bound timeouts and retries, preserve error codes and failure phase without leaking payloads, and handle cancellation. Keep explicit authentication or permission rejections distinguishable from transport uncertainty. For writes, establish idempotency or duplicate detection before retries and apply the uncertain-write rules below when outcomes can be ambiguous; for events, check ordering, replay, and poison messages as applicable.
|
|
13
13
|
5. Exercise a permitted success case and relevant failures: denied access, malformed data, rate limit, timeout, duplicate delivery, or partial completion. Trace correlation IDs or safe evidence across both sides. A mock proves client behavior only; if live access is unavailable, report that gap instead of claiming an integration works.
|
|
14
14
|
6. Check cleanup and recovery for test side effects. Use [verification](verification.md) for receipts and [review](review.md) for security or data-contract changes. Route deployment through [ship](ship.md) only when authorized.
|
|
15
15
|
|
|
16
|
+
## When a write outcome is uncertain
|
|
17
|
+
|
|
18
|
+
Use the existing storage and worker mechanisms; do not introduce a new platform for these rules.
|
|
19
|
+
|
|
20
|
+
- Before a replayable write, persist its tenant-scoped operation identity and payload identity, with enough state to recover after restart. Establish who owns an in-flight attempt so concurrent workers cannot independently replay it. Establish whether upstream deduplication is guaranteed, including its key, payload rules and retention window; sending a key alone proves nothing.
|
|
21
|
+
- A timeout, cancellation or lost response after dispatch may leave a completed side effect. Preserve that uncertainty across restart; stopping the caller is not rollback. Do not silently turn an uncertain attempt into a fresh operation.
|
|
22
|
+
- Reconcile against an authoritative receipt or lookup that matches the operation and payload. One verified result can confirm completion; conflicting or multiple matches require resolution. An empty stale, partial or eventually consistent lookup does not prove absence or authorize replay. Retry only under the verified deduplication contract or evidence establishing that repeating the write is safe.
|
|
23
|
+
- Keep unresolved attempts visible with safe error context, a next action and a known resolution owner, or an explicit ownership gap. Manual resolution still needs authority for any corrective write; do not manufacture completion to clear a queue.
|
|
24
|
+
- Test the relevant failure boundary: committed write with lost response, cancellation or restart before recording success, and stale lookup or concurrent replay where applicable. Record which were exercised and which remain unproven.
|
|
25
|
+
|
|
16
26
|
## Deliverable and acceptance
|
|
17
27
|
|
|
18
28
|
Return the boundary contract, changed paths, environment, evidence at each tested layer, and remaining dependencies with owners when known. Done requires the agreed end-to-end result or an explicit narrower agreed scope. Do not silently replace live acceptance with a stub. In engagement mode, update the terrain/delivery record with confirmed facts; otherwise return the receipt directly.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Enter when:** new customer, first meeting, just got the brief, nothing started yet.
|
|
4
4
|
|
|
5
|
-
**Read first:** `context.md` if it exists
|
|
5
|
+
**Read first:** apply [task context](task-context.md), then permitted `context.md` evidence if it exists and the supplied brief. Once the engagement type and AI/access policy are known, inspect the supplied repo/docs relevant to the ask before asking questions they can answer. This is a bounded evidence check, not a full discovery scan.
|
|
6
6
|
|
|
7
7
|
## Validation gate (confirm understanding, clarify where it elevates)
|
|
8
8
|
|
|
@@ -26,27 +26,27 @@ Format - one question at a time, with a guess the FDE can correct:
|
|
|
26
26
|
|
|
27
27
|
```
|
|
28
28
|
READ: <one sentence - what you think they actually need>
|
|
29
|
-
|
|
29
|
+
MISSING: <fact or authority that changes the next action>
|
|
30
30
|
Q: <one focused question>
|
|
31
|
-
|
|
31
|
+
POSSIBLE READ: <clearly labeled interpretation, if useful; never guessed authority>
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
Wait for the reaction before the next question. Stop when
|
|
34
|
+
Wait for the reaction before the next question. Stop when the next authorized action is clear, or when the FDE says move on; unanswered material gaps remain visible. Every answer that is still unknown stays `unknown - ask:` in the artifact - never fill the gap with a plausible stakeholder.
|
|
35
35
|
|
|
36
36
|
## Method - part 1: interrogate the brief (you do this work)
|
|
37
37
|
|
|
38
38
|
Read the brief the FDE gives you. Separate **observed** (source/path and date), **reported** (who said it), and **hypothesis** (how to test it). A requested solution such as “build an agent” is not evidence of the cause. Ask only about gaps that change scope, access, acceptance, or the next investigation. What is **not** in the brief matters as much as what is. Produce the gap list yourself:
|
|
39
39
|
|
|
40
|
-
- **No named decision-maker** →
|
|
41
|
-
- **"Straightforward cleanup" on an 8-year-old system** →
|
|
42
|
-
- **Very tight timeline** →
|
|
43
|
-
- **No out-of-scope section** →
|
|
40
|
+
- **No named decision-maker** → identify who or what can accept the outcome and the source of that authority; keep it unknown until established.
|
|
41
|
+
- **"Straightforward cleanup" on an 8-year-old system** → inspect permitted relevant history and tests for prior attempts and constraints; age alone proves neither complexity nor a previous failure.
|
|
42
|
+
- **Very tight timeline** → establish the deadline, its source and which commitments are actually agreed.
|
|
43
|
+
- **No out-of-scope section** → clarify material boundaries against the existing agreement. An omission does not authorize additional work.
|
|
44
44
|
|
|
45
45
|
Write these into `brief.md` as **questions to answer**, not problems - they're what the FDE is walking in to resolve.
|
|
46
46
|
|
|
47
47
|
Pre-arrival checks to run through with the FDE:
|
|
48
|
-
- Access confirmed? Repo, environment
|
|
49
|
-
- Has someone tried this before?
|
|
48
|
+
- Access confirmed for the next task? Repo, environment and docs may have different permissions; identify gaps before dependent work.
|
|
49
|
+
- Has someone tried this before? Establish what happened and what evidence remains; do not assume the attempt failed.
|
|
50
50
|
- Other vendors/teams in scope? Then the FDE is not the only one in the room, even when alone in the meeting.
|
|
51
51
|
- Tech stack recon: job postings, GitHub org - know the stack before they say it.
|
|
52
52
|
|
|
@@ -59,21 +59,21 @@ Intent: coach the FDE's first *customer* conversation - what keeps the sponsor u
|
|
|
59
59
|
- "Who loses credibility if this goes wrong?"
|
|
60
60
|
- "If nothing changes over the agreed timeframe, what happens, and who bears it?" Record the consequence and its source in `brief.md`; distinguish reported impact from measured cost. Unknown cost stays unknown, not an invented ROI.
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
Allow time for an answer. If a stated concern differs from the brief, record the difference and clarify whether it changes the agreed outcome; neither statement automatically supersedes the other.
|
|
63
63
|
|
|
64
64
|
**Listen for, and capture as you hear it:**
|
|
65
|
-
- **
|
|
66
|
-
- **The previous attempt** - "we tried something similar last year"
|
|
67
|
-
- **The
|
|
68
|
-
- **The sacred thing** - "Is there anything in this environment I should treat as untouchable?"
|
|
65
|
+
- **Decision rights** - who can approve scope, accept the result and authorize release, as relevant. A frequently mentioned person may be influential; confirm their actual authority and scope.
|
|
66
|
+
- **The previous attempt** - "we tried something similar last year" identifies evidence to investigate. Who was involved, what happened, and which constraints still apply? Do not infer why someone left.
|
|
67
|
+
- **The existing internal team** - ask what they tried, what they know and what they expect to own. Use established terminology and credit their work. Do not assume resentment, displacement or complete knowledge of the problem.
|
|
68
|
+
- **The sacred thing** - "Is there anything in this environment I should treat as untouchable?" Capture the stated boundary and applicable policy; hesitation alone does not identify a restriction.
|
|
69
69
|
- **Exception path (operating map seed)** - "When the happy path breaks this week, what do people actually do - who do they call, what spreadsheet opens, what do they skip?" Capture the break → workaround → who owns it. Do not build a full map on day 1; seed rows later in `terrain.md` → `## Operating map (exception-led)` during discover. Unknowns stay `unknown - ask:`.
|
|
70
70
|
- **AI posture and policy** - tools already in use (sanctioned or shadow), and: "Does your organisation have a policy on AI-generated code? Are there decisions where you would not be comfortable with AI involvement?"
|
|
71
71
|
- **Future operator** - "Who will run this after we leave, and have they agreed?" Record the proposed operator and unresolved ownership in `success.md`, separately from the signer. A sponsor naming a team is not that team accepting responsibility; verify with the operator during discover.
|
|
72
72
|
- **Boundaries in multi-vendor rooms** - who owns what surface, who signs off before a change crosses it.
|
|
73
73
|
|
|
74
|
-
##
|
|
74
|
+
## An early deliverable
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
Choose an early useful result within confirmed scope: a verified small fix, a permitted diagnostic, or a concise map of an unresolved problem. Reuse the existing outcome and authority for routine work. A first-day deadline does not grant deployment permission or waive verification; use `ship` for a release. If a missing signer blocks a consequential decision, keep it visible and continue independent preparation.
|
|
77
77
|
|
|
78
78
|
## Artifact (write as the conversation is debriefed)
|
|
79
79
|
|
|
@@ -81,7 +81,7 @@ After `success.md` names a signer (or the FDE explicitly overrides with `unknown
|
|
|
81
81
|
|
|
82
82
|
**`success.md`** - what done looks like, **primary value bucket** (`cost-save` | `risk-mitigation` | `revenue-uplift`), baseline → target, who actually signs off, what is explicitly out of scope. Record agreement only with its source and scope; otherwise label the target proposed. For each baseline, record source, date/window, environment, and sample size when relevant. An operator recollection is reported, not measured. If no baseline exists, name the measurement owner and cheapest way to obtain it; do not manufacture a number.
|
|
83
83
|
|
|
84
|
-
For every target number, run the **gaming check** before it is written down: *how could this metric hit its target without the customer being any better off?*
|
|
84
|
+
For every target number, run the **gaming check** before it is written down: *how could this metric hit its target without the customer being any better off?* Identify plausible failure modes without predicting that the customer will exploit them. Write a relevant guard next to the metric:
|
|
85
85
|
|
|
86
86
|
```markdown
|
|
87
87
|
| Metric | Baseline → target | Gamed by | Guard |
|
|
@@ -89,19 +89,19 @@ For every target number, run the **gaming check** before it is written down: *ho
|
|
|
89
89
|
| reconciliation alert latency | 4h → 15min | alerting on everything, so nobody reads them | alerts acked by a named owner, ≤2/week |
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
If a proposed guard is disputed, capture the stated reason and assess its cost and effect on the outcome. Do not infer that the customer values the number over the result.
|
|
93
93
|
|
|
94
94
|
**`stakeholders.md`**:
|
|
95
95
|
```markdown
|
|
96
96
|
| Who | Role | Signal | Notes |
|
|
97
97
|
|-----|------|--------|-------|
|
|
98
|
-
| <name> |
|
|
98
|
+
| <name> | <observed participation role; authority recorded separately> | green/amber/red | <evidence, day> |
|
|
99
99
|
```
|
|
100
100
|
If `stakeholders.md` already has a `## Signal history` section (it does from the template), **never delete or overwrite it** when you rewrite this file - it holds the dated `[signal:...]` tokens `fde log contact --signal` and `fde debrief` write, and `fde status`/`fde receipts`/the dashboard read only from that section. Edit the table above it freely; keep the section below intact.
|
|
101
101
|
|
|
102
102
|
**`trust-profile.md`** - sacred data (`<private>` tagged), fears heard, AI policy, approval chain. Sensitive: skip for status reads; use CLI/redacted surfaces; never paste raw `<private>` into prompts or subagents.
|
|
103
103
|
|
|
104
|
-
**`assumptions.md`** - seed
|
|
104
|
+
**`assumptions.md`** - seed consequential unverified claims from the brief (and the initial hypothesis) as rows with Kind `UNKNOWN` (or `CONVENTION` if they said "we always"), blast radius CRITICAL / LOAD-BEARING / CONVENIENCE, and status `OPEN`. Do not wait for test-assumptions - land makes the register exist. Example:
|
|
105
105
|
|
|
106
106
|
```markdown
|
|
107
107
|
| # | Assumption | Kind | Blast radius | How we test | Status | Evidence |
|
|
@@ -113,7 +113,7 @@ One falsifiable hypothesis about the real problem also goes at the bottom of `br
|
|
|
113
113
|
|
|
114
114
|
## Checkpoint
|
|
115
115
|
|
|
116
|
-
One page back to the FDE: success + value bucket + sign-off owner, out-of-scope boundary, sacred data, stakeholder map with veto power, AI posture, the hypothesis, the top CRITICAL assumptions still OPEN, and any exception-path seeds heard (break → workaround → owner) for discover to map into `terrain.md`.
|
|
116
|
+
One page back to the FDE: success + value bucket + sign-off owner, out-of-scope boundary, sacred data, stakeholder map with veto power, AI posture, the hypothesis, the top CRITICAL assumptions still OPEN, and any exception-path seeds heard (break → workaround → owner) for discover to map into `terrain.md`. Keep the summary short and link necessary detail; a complex engagement may need supporting evidence.
|
|
117
117
|
|
|
118
118
|
If remote: agree how progress and blockers will be shared; use a short call when asynchronous context is insufficient.
|
|
119
119
|
|
|
@@ -121,16 +121,16 @@ If remote: agree how progress and blockers will be shared; use a short call when
|
|
|
121
121
|
|
|
122
122
|
Kickoff at Acme payments. Priya (VP Eng) sponsors; the brief says "add monitoring to the reconciliation service."
|
|
123
123
|
|
|
124
|
-
Asking what happens the week after a perfect delivery gets: "I stop hearing about it from finance." That
|
|
124
|
+
Asking what happens the week after a perfect delivery gets: "I stop hearing about it from finance." That suggests a concern to clarify alongside the monitoring request. The previous attempt surfaces too: the platform team built alerting last year, it was turned off. Raj, who built it, is still there and was not in the kickoff. Ask for his account of the earlier attempt; his absence does not explain his views.
|
|
125
125
|
|
|
126
|
-
What gets written: `success.md` with bucket `risk-mitigation`, `reconciliation failures reach a named owner within 15 min (baseline: 4h, found by finance)`, gaming check `alerting on everything so nobody reads them` → guard `≤2 alerts/week, acked by name`, sign-off Priya. `brief.md` carries the gap list and the hypothesis: *the job is not unmonitored, it is unowned*. `assumptions.md` seeds `"finance would act on an alert" - CRITICAL - OPEN - (stated, unverified)`. `trust-profile.md` records the
|
|
126
|
+
In this example Priya reports a four-hour baseline and proposes the following target; her acceptance authority still needs its source. What gets written: `success.md` with proposed bucket `risk-mitigation`, `reconciliation failures reach a named owner within 15 min (baseline: 4h, found by finance)`, gaming check `alerting on everything so nobody reads them` → guard `≤2 alerts/week, acked by name`, proposed sign-off Priya until confirmed. `brief.md` carries the gap list and the hypothesis: *the job is not unmonitored, it is unowned*. `assumptions.md` seeds `"finance would act on an alert" - CRITICAL - OPEN - (stated, unverified)`. `trust-profile.md` records the boundary Priya explicitly names, through the permitted privacy-safe workflow.
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
Early deliverable: verify and fix the log line that swallows the job's exit code within the existing scope. Deployment remains subject to the established release authority and checks.
|
|
129
129
|
|
|
130
130
|
## Principles
|
|
131
131
|
|
|
132
|
-
-
|
|
132
|
+
- Establish the outcome and authority needed for the next action; missing record files do not block useful standalone work.
|
|
133
133
|
- Sacred data tagged `<private>` stays out of model context: use CLI/redacted reads; never paste raw private blocks.
|
|
134
|
-
-
|
|
135
|
-
-
|
|
134
|
+
- Treat unverified parts of the brief as hypotheses; discovery may support or overturn them. Record consequential assumptions.
|
|
135
|
+
- Learn from the existing team and verify consequential claims without guessing motives.
|
|
136
136
|
- If the customer cannot define success, that is the first problem to solve.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
**Read first:** `reality.md`, `success.md`, `terrain.md`, `stakeholders.md`. Load `business-case.md` if poc produced one. Not the full folder.
|
|
8
8
|
|
|
9
|
-
**On an initialized engagement, before a new delivery plan or material scope change:** run `fde doctor --ready`. For standalone planning, check the supplied outcome, scope, acceptance and authority directly; do not initialize records to run this validator. Missing
|
|
9
|
+
**On an initialized engagement, before a new delivery plan or material scope change:** run `fde doctor --ready`. For standalone planning, check the supplied outcome, scope, acceptance and authority directly; do not initialize records to run this validator. Missing acceptance criteria or authority blocks the affected implementation commitment, not a provisional plan. Draft proposed checks and next steps, mark them pending, and ask only what changes the next action. Use a test/input and observable pass/fail under **Done when:** or **Acceptance check:**. A number, role, or successful demo alone is insufficient. Do not invent missing facts to pass lint. Routine reversible fixes within confirmed scope reuse the existing signer, acceptance criteria, and engineering plan; record verification without reopening settled decisions.
|
|
10
10
|
|
|
11
11
|
## Validation gate (confirm understanding, clarify where it elevates)
|
|
12
12
|
|
|
@@ -17,8 +17,8 @@ Before planning, state what you're working from in 2-3 lines:
|
|
|
17
17
|
Then check - probe ONLY if it prevents a bad plan:
|
|
18
18
|
|
|
19
19
|
1. **Success is measurable.** If "done" is vague ("make it better") → rephrase it: "I'm reading success as: [specific measurable outcome]. That the target?"
|
|
20
|
-
2. **Reality matches the brief.** If discovery contradicted the brief → name it: "Discovery found [X] but the brief says [Y].
|
|
21
|
-
3. **Out-of-scope exists.** If missing → one line: "
|
|
20
|
+
2. **Reality matches the brief.** If discovery contradicted the brief → name it: "Discovery found [X] but the brief says [Y]. Here is the proposed adjustment; it remains unagreed until confirmed."
|
|
21
|
+
3. **Out-of-scope exists.** If missing → one line: "I will keep this draft within the supplied request and mark proposed exclusions for confirmation."
|
|
22
22
|
|
|
23
23
|
State your read, let the FDE correct, then plan.
|
|
24
24
|
|
|
@@ -42,19 +42,19 @@ An FDE plan is not a sprint backlog. The technical sequence is the easy part. Th
|
|
|
42
42
|
|
|
43
43
|
**6. Stakeholder touchpoints every 2-3 tasks.** "Show progress to <name from stakeholders.md>." Not ceremony: a customer who sees small wins stays bought in; silence gets filled with doubt.
|
|
44
44
|
|
|
45
|
-
**7. End with a kill list.** Every plan names what you will **not** do this phase. If everything is "later," you have no plan - you have a wish list.
|
|
45
|
+
**7. End with a kill list.** Every plan names what you will **not** do this phase. If everything is "later," you have no plan - you have a wish list. Keep **Now** small enough to review and act on; split by independently verifiable outcomes.
|
|
46
46
|
|
|
47
47
|
**Acceptance criteria gate:** no task moves to build without written happy-path AND unhappy-path criteria. Can't write them = the task isn't understood; the open question goes to the customer **before** the task starts. Vague criteria surface later as scope creep and rework.
|
|
48
48
|
|
|
49
49
|
## Artifact
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
For standalone planning, return the requested draft or save to the authorized project document. In a bound engagement, propose the plan for **`decisions.md`** under its confirmation rules, or link the existing approved plan; do not duplicate it.
|
|
52
52
|
|
|
53
53
|
A plan is **not done** until all four blocks exist:
|
|
54
54
|
|
|
55
55
|
```markdown
|
|
56
56
|
## Plan - <date>
|
|
57
|
-
### Now
|
|
57
|
+
### Now
|
|
58
58
|
Task N: <outcome, not activity>
|
|
59
59
|
Delivers: <what someone can see/test>
|
|
60
60
|
Accepts: <happy path> / <unhappy path>
|