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
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: what-breaks
|
|
3
|
+
description: Assess the impact of a proposed change on dependencies and shared infrastructure. Use before touching unfamiliar or consequential systems.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# what-breaks
|
|
7
|
+
|
|
8
|
+
<!-- Generated by bin/generate-skills.js; edit the canonical references and catalog. -->
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
Assess the impact of a proposed change on dependencies and shared infrastructure. Use before touching unfamiliar or consequential systems.
|
|
13
|
+
|
|
14
|
+
Read [the task context contract](references/task-context.md), then [the method](references/what-breaks.md). Load further references only when the task needs them. Everything linked is included in this skill; no other skill pack is required.
|
|
15
|
+
|
|
16
|
+
## Principles
|
|
17
|
+
|
|
18
|
+
- Work directly from the supplied permitted context. Standalone work does not require an engagement folder or initialization. Record filenames in the method are optional persistence destinations when no engagement is bound.
|
|
19
|
+
- If called by @fde, reuse its current sanitized packet and scope. Do not restart setup, discovery or questions already answered.
|
|
20
|
+
- The task context contract controls persistence and authority in both modes. Preserve unknowns and distinguish implementation, verification, deployment and acceptance.
|
|
21
|
+
- Use the customer's repository instructions and available tools. Report a missing capability or unrun check honestly; do not claim that installing a skill provisions infrastructure.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Task context and evidence
|
|
2
|
+
|
|
3
|
+
Use this contract for standalone methods and methods routed through `@fde`.
|
|
4
|
+
|
|
5
|
+
- **Standalone work:** use the supplied, permitted facts, notes, code, and artifacts. A client name, `.fde/` directory, or initialized engagement is not a prerequisite for work on supplied context. Tasks that inspect actual records need those records; staging or saving requires a selected customer. Never fabricate records to make an operational task appear complete. Do not bootstrap records merely to run a method. Ask only for missing information or authority that changes the next action; mark other gaps as unknown.
|
|
6
|
+
- **Artifact names are destinations:** names such as `success.md`, `decisions.md`, and `delivery.md` identify relevant evidence and, when bound, record destinations. If absent, use supplied facts and return the requested draft or result in the current workspace or conversation. Do not invent files or require initialization to complete useful work.
|
|
7
|
+
- **Bound engagement:** honor the current client binding and constraints. Before reading records, run `fde privacy` to verify masking support. Obtain a fresh, identity-matching sanitized `fde resume` packet for this task (or reuse a fresh session-hook packet); retrieve missing evidence with targeted `fde recall <topic>`. Use bounded `fde handoff` for transfer work. Refresh after binding, masking, or record changes. Never substitute raw `.fde/` reads, private blocks, masking dictionaries, or full transcripts. If the CLI is unavailable, use only permitted supplied excerpts and report the context limitation.
|
|
8
|
+
- **Authority:** continue reversible work within authorized scope. Reuse prior authorization when it covers the specific action. Show consequential engagement-record judgments and uncertainties for confirmation before saving unless already explicitly confirmed. New scope, acceptance changes, production actions, exports, and external messages need the applicable authority; a method invocation alone does not supply it. Keep one customer's writes in that customer's record.
|
|
9
|
+
- **Evidence:** distinguish supplied facts, estimates, hypotheses, and unknowns. Cite actual sources; a log date is not attribution. Never invent a source, signer, signature, customer reaction, or acceptance. Keep outcomes **promised → measured → accepted** distinct, and implementation, verification, deployment, and customer acceptance separate. Missing evidence means unproven, not an observed failure.
|
|
10
|
+
- **Data boundary:** use only data permitted by the customer's AI policy; clarify unknown policy before loading their code or data. Never load `<private>` content into a model. Cross-client comparison and exporting reusable material require permission and removal of customer-identifying or confidential content; anonymization alone does not grant permission.
|
|
11
|
+
|
|
12
|
+
## CLI availability
|
|
13
|
+
|
|
14
|
+
Only locate the CLI when the selected task needs it. Check `fde` on PATH and its `fde privacy` capability before reading records. If unavailable, use `node ~/.claude/fdeops/fde.js` when the disk installer placed it there, or `npx --yes fdeops <command>` when package downloads are permitted. Respect local installation and network rules. Run commands for the user; do not turn a missing bare `fde` command into unnecessary manual setup.
|
|
15
|
+
|
|
16
|
+
If no permitted executable is available, explain the missing capability. Continue any useful draft from supplied excerpts, but do not claim to have read, switched, staged, saved or rendered real records. Do not read raw private record files as a fallback.
|
|
17
|
+
|
|
18
|
+
Apply the selected method to this context. Follow its linked supporting methods only when needed; do not restart discovery or repeat already answered questions.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# what-breaks - Assess impact
|
|
2
|
+
|
|
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
|
+
|
|
5
|
+
**Read first:** `terrain.md`, `decisions.md`, `trust-profile.md` (for sacred systems), `context.md`.
|
|
6
|
+
|
|
7
|
+
On your own codebase, you know what breaks. On someone else's, you discover it in production. Blast-radius analysis is the discipline of mapping the damage before making the change - not after.
|
|
8
|
+
|
|
9
|
+
## Method (you do this work)
|
|
10
|
+
|
|
11
|
+
**1. Trace the dependency chain.** For the file/module/system you're about to change, answer:
|
|
12
|
+
|
|
13
|
+
| Question | How to find it |
|
|
14
|
+
|----------|---------------|
|
|
15
|
+
| Who calls this? | `grep -rn "function_name\|module_name" --include="*.ts" --include="*.py" .` |
|
|
16
|
+
| Who does this call? | Read the imports and external calls in the module |
|
|
17
|
+
| What data flows through? | Trace inputs to outputs - especially user data and money |
|
|
18
|
+
| What breaks if this returns differently? | Check every caller's assumptions about the return value |
|
|
19
|
+
| What breaks if this is slow? | Timeouts, queues, user-facing latency |
|
|
20
|
+
| What breaks if this is down? | Circuit breakers? Fallbacks? Or cascade failure? |
|
|
21
|
+
|
|
22
|
+
**2. Classify the blast radius:**
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
CONTAINED → Only the module you're changing is affected
|
|
26
|
+
Rollback: revert the PR
|
|
27
|
+
Example: changing a utility function with no external callers
|
|
28
|
+
|
|
29
|
+
ADJACENT → 2-5 callers or one downstream system affected
|
|
30
|
+
Rollback: revert the PR + verify downstream
|
|
31
|
+
Example: changing an API response format used by the frontend
|
|
32
|
+
|
|
33
|
+
SYSTEMIC → Multiple systems, shared infrastructure, or data integrity
|
|
34
|
+
Rollback: may require data migration or coordinated rollback
|
|
35
|
+
Example: changing the auth token format, modifying a shared database schema
|
|
36
|
+
|
|
37
|
+
IRREVERSIBLE → Cannot be rolled back without data loss or manual intervention
|
|
38
|
+
Example: data migration, dropping a column, changing encryption keys
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**3. The what-breaks declaration.** Before writing any code, state it explicitly in `decisions.md`:
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
## Blast radius: <change name>
|
|
45
|
+
Classification: ADJACENT
|
|
46
|
+
Affected: payment-service, billing-dashboard, reconciliation-job
|
|
47
|
+
Data impact: none (read-only change to response format)
|
|
48
|
+
Rollback: revert PR; frontend falls back to previous format handler
|
|
49
|
+
Monitoring: error rate on /api/payments endpoint, billing dashboard load time
|
|
50
|
+
Time to detect: <5 minutes via error rate alert
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**4. Match the change to the blast radius:**
|
|
54
|
+
|
|
55
|
+
| Blast radius | Required before merge |
|
|
56
|
+
|-------------|----------------------|
|
|
57
|
+
| CONTAINED | Unit tests + self-review |
|
|
58
|
+
| ADJACENT | Unit + integration tests + team review + monitoring plan |
|
|
59
|
+
| SYSTEMIC | Full test suite + team review + staged rollout + incident playbook |
|
|
60
|
+
| IRREVERSIBLE | All of the above + sponsor approval + tested rollback of the rollback + go/no-go checkpoint |
|
|
61
|
+
|
|
62
|
+
**5. The invisible integration.** The most dangerous blast radius is the one you can't see in the code:
|
|
63
|
+
|
|
64
|
+
- A webhook endpoint that an external system calls - not in your repo's imports
|
|
65
|
+
- A cron job that reads the table you're modifying - runs at midnight, fails silently
|
|
66
|
+
- A reporting pipeline that depends on the exact column format
|
|
67
|
+
- An monitoring alert that triggers on a metric your change affects
|
|
68
|
+
|
|
69
|
+
**Ask the team:** "Is anything outside this repo reading from or writing to <the thing you're changing>?" The answer is almost always "yes, and here's one we forgot about."
|
|
70
|
+
|
|
71
|
+
**6. The 2am test.** For any SYSTEMIC or IRREVERSIBLE change, ask: "If this fails at 2am on Saturday, who gets woken up, what do they see, and what can they do?" If the answer is "they see nothing until Monday" - the monitoring plan needs work before the change ships.
|
|
72
|
+
|
|
73
|
+
## Artifact
|
|
74
|
+
|
|
75
|
+
**`decisions.md`** - the what-breaks declaration, filed before the change starts. Updated if the blast radius grew during implementation.
|
|
76
|
+
|
|
77
|
+
**`risks.md`** - new risks discovered during the trace (the invisible integrations, the midnight cron job).
|
|
78
|
+
|
|
79
|
+
**`terrain.md`** - update if the dependency trace revealed connections the map didn't know about.
|
|
80
|
+
|
|
81
|
+
## Checkpoint
|
|
82
|
+
|
|
83
|
+
Before merge: blast radius declared and still accurate, monitoring in place for the affected scope, rollback tested (not just planned). If the blast radius grew during implementation: re-classify, update the declaration, adjust the review/rollout requirements.
|
|
84
|
+
|
|
85
|
+
## Principles
|
|
86
|
+
|
|
87
|
+
- Declare the blast radius before writing code, not after.
|
|
88
|
+
- The invisible integration is always there. Ask the team.
|
|
89
|
+
- Match the process to the blast radius - contained gets speed, systemic gets ceremony.
|
|
90
|
+
- "We can always revert" is not a rollback plan. Test the rollback.
|
|
91
|
+
- If the 2am failure is invisible until Monday, the monitoring isn't ready.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"generator": "bin/generate-skills.js",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"files": {
|
|
5
|
+
"SKILL.md": "33a822a1e10824461543e296f93e07ed3f8e2eab7a719bcde4bb3bbef597859c",
|
|
6
|
+
"references/task-context.md": "73eea2d7f164fac3226599e5be26ae4e79dcf69e0d24428dd12d623861410490",
|
|
7
|
+
"references/who-decides.md": "fa1f65d921943e76f42284570004a603488905417d96b4bd52dc6c4a11dd5a97"
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: who-decides
|
|
3
|
+
description: Map stakeholders, decision rights, influence and blockers from supplied evidence. Use when ownership is unclear or the stakeholder landscape changes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# who-decides
|
|
7
|
+
|
|
8
|
+
<!-- Generated by bin/generate-skills.js; edit the canonical references and catalog. -->
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
Map stakeholders, decision rights, influence and blockers from supplied evidence. Use when ownership is unclear or the stakeholder landscape changes.
|
|
13
|
+
|
|
14
|
+
Read [the task context contract](references/task-context.md), then [the method](references/who-decides.md). Load further references only when the task needs them. Everything linked is included in this skill; no other skill pack is required.
|
|
15
|
+
|
|
16
|
+
## Principles
|
|
17
|
+
|
|
18
|
+
- Work directly from the supplied permitted context. Standalone work does not require an engagement folder or initialization. Record filenames in the method are optional persistence destinations when no engagement is bound.
|
|
19
|
+
- If called by @fde, reuse its current sanitized packet and scope. Do not restart setup, discovery or questions already answered.
|
|
20
|
+
- The task context contract controls persistence and authority in both modes. Preserve unknowns and distinguish implementation, verification, deployment and acceptance.
|
|
21
|
+
- Use the customer's repository instructions and available tools. Report a missing capability or unrun check honestly; do not claim that installing a skill provisions infrastructure.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Task context and evidence
|
|
2
|
+
|
|
3
|
+
Use this contract for standalone methods and methods routed through `@fde`.
|
|
4
|
+
|
|
5
|
+
- **Standalone work:** use the supplied, permitted facts, notes, code, and artifacts. A client name, `.fde/` directory, or initialized engagement is not a prerequisite for work on supplied context. Tasks that inspect actual records need those records; staging or saving requires a selected customer. Never fabricate records to make an operational task appear complete. Do not bootstrap records merely to run a method. Ask only for missing information or authority that changes the next action; mark other gaps as unknown.
|
|
6
|
+
- **Artifact names are destinations:** names such as `success.md`, `decisions.md`, and `delivery.md` identify relevant evidence and, when bound, record destinations. If absent, use supplied facts and return the requested draft or result in the current workspace or conversation. Do not invent files or require initialization to complete useful work.
|
|
7
|
+
- **Bound engagement:** honor the current client binding and constraints. Before reading records, run `fde privacy` to verify masking support. Obtain a fresh, identity-matching sanitized `fde resume` packet for this task (or reuse a fresh session-hook packet); retrieve missing evidence with targeted `fde recall <topic>`. Use bounded `fde handoff` for transfer work. Refresh after binding, masking, or record changes. Never substitute raw `.fde/` reads, private blocks, masking dictionaries, or full transcripts. If the CLI is unavailable, use only permitted supplied excerpts and report the context limitation.
|
|
8
|
+
- **Authority:** continue reversible work within authorized scope. Reuse prior authorization when it covers the specific action. Show consequential engagement-record judgments and uncertainties for confirmation before saving unless already explicitly confirmed. New scope, acceptance changes, production actions, exports, and external messages need the applicable authority; a method invocation alone does not supply it. Keep one customer's writes in that customer's record.
|
|
9
|
+
- **Evidence:** distinguish supplied facts, estimates, hypotheses, and unknowns. Cite actual sources; a log date is not attribution. Never invent a source, signer, signature, customer reaction, or acceptance. Keep outcomes **promised → measured → accepted** distinct, and implementation, verification, deployment, and customer acceptance separate. Missing evidence means unproven, not an observed failure.
|
|
10
|
+
- **Data boundary:** use only data permitted by the customer's AI policy; clarify unknown policy before loading their code or data. Never load `<private>` content into a model. Cross-client comparison and exporting reusable material require permission and removal of customer-identifying or confidential content; anonymization alone does not grant permission.
|
|
11
|
+
|
|
12
|
+
## CLI availability
|
|
13
|
+
|
|
14
|
+
Only locate the CLI when the selected task needs it. Check `fde` on PATH and its `fde privacy` capability before reading records. If unavailable, use `node ~/.claude/fdeops/fde.js` when the disk installer placed it there, or `npx --yes fdeops <command>` when package downloads are permitted. Respect local installation and network rules. Run commands for the user; do not turn a missing bare `fde` command into unnecessary manual setup.
|
|
15
|
+
|
|
16
|
+
If no permitted executable is available, explain the missing capability. Continue any useful draft from supplied excerpts, but do not claim to have read, switched, staged, saved or rendered real records. Do not read raw private record files as a fallback.
|
|
17
|
+
|
|
18
|
+
Apply the selected method to this context. Follow its linked supporting methods only when needed; do not restart discovery or repeat already answered questions.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# who-decides - Map decision rights
|
|
2
|
+
|
|
3
|
+
**Enter when:** a consequential decision has unclear authority, ownership is disputed, stakeholders change, or observed communication changes affect the next action.
|
|
4
|
+
|
|
5
|
+
**Read first:** apply [task context](task-context.md), then permitted `stakeholders.md` and `context.md` evidence. Retrieve relevant trust constraints only when access or disclosure is involved.
|
|
6
|
+
|
|
7
|
+
Titles, influence and responsiveness can help you find the right conversation. They do not establish approval authority or explain someone's motives.
|
|
8
|
+
|
|
9
|
+
## Method (you do this work)
|
|
10
|
+
|
|
11
|
+
**1. Resolve the decisions in front of you.** Reuse the customer's existing agreement, delegation or decision process. For each relevant decision, identify who or what can decide, the scope of that right, its source, and whether it is confirmed, proposed, disputed or unknown. Distinguish budget/scope approval, data/AI-policy approval, release authority, customer acceptance, and operating/recovery responsibility when they differ. Do not require separate people or a full matrix for a routine decision already covered by confirmed authority.
|
|
12
|
+
|
|
13
|
+
A sponsor naming an operating team is a proposal until that team accepts responsibility. If accounts conflict, record both attributed positions and the unresolved decision; ask the applicable authority to resolve it. Do not choose an owner from seniority, authorship, repository access or silence. Continue authorized work that does not depend on the disputed right.
|
|
14
|
+
|
|
15
|
+
**2. Understand participation.** Identify the sponsor, people helping the work, access/process owners, people raising concerns, and required participants not yet consulted. One person may fill several roles; none must exist merely to complete a taxonomy. Capture their stated concerns and useful knowledge. Opposition may identify a real defect or unaccepted obligation. Being absent does not prove hidden authority or disengagement.
|
|
16
|
+
|
|
17
|
+
**3. Track observable changes.** Compare communication and decisions with the agreed cadence and the person's usual pattern. A delayed reply, shortened meeting or new participant may merit a check; holidays, workload, delegation and scheduling are alternative explanations to escalation. Record the observation separately from any hypothesis. Use green/amber/red only when supported by attributed evidence and its effect on the work; do not derive motives or authority from a color.
|
|
18
|
+
|
|
19
|
+
Choose follow-up timing from the decision deadline and potential impact. An imminent release with a missing owner warrants prompt resolution; an ordinary delayed reply does not have an automatic 48-hour escalation clock. Offer a neutral question such as “Has anything changed in the decision or timing we should account for?” Messages and outreach still require authorization.
|
|
20
|
+
|
|
21
|
+
**4. Learn from the existing team.** Ask what they tried, what constraints remain and what they expect to own. Use established terminology and credit actual contributions. Do not assume the team was passed over, resents outside help, or knows every cause. Verify consequential technical claims through the relevant evidence.
|
|
22
|
+
|
|
23
|
+
**5. Prepare the decision conversation.** For a decision involving several parties, identify unresolved questions, relevant decision rights and needed evidence. Address dependencies in a useful order through existing channels. Record stated objections faithfully; label any possible motivation as an unverified hypothesis only when it matters to the next action. A short pre-mortem can ask “What missing evidence or unresolved responsibility could prevent this decision?” It must not invent an opponent or predict agreement.
|
|
24
|
+
|
|
25
|
+
**6. Keep identities consistent.** Use one confirmed spelling per person across the table and contact records. `fde doctor` can flag possible identity clusters; verify that they are the same person before consolidating. Do not erase historical evidence to tidy the display.
|
|
26
|
+
|
|
27
|
+
## Artifact
|
|
28
|
+
|
|
29
|
+
Return the relevant decision rights directly, or update the existing `stakeholders.md` under the confirmed record rules. Link an existing authoritative record instead of duplicating its full contents.
|
|
30
|
+
|
|
31
|
+
```markdown
|
|
32
|
+
| Decision / responsibility | Person or mechanism | Scope | Source | Status / next action |
|
|
33
|
+
|---------------------------|---------------------|-------|--------|----------------------|
|
|
34
|
+
| <relevant decision> | <confirmed person/mechanism or unknown> | <system, environment, limit> | <actual agreement/policy/reference> | <confirmed / proposed / disputed / unknown; next step> |
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Keep a compact participation/signal table where it helps:
|
|
38
|
+
|
|
39
|
+
```markdown
|
|
40
|
+
| Who | Role | Signal | Last evidence | Notes |
|
|
41
|
+
|-----|------|--------|---------------|-------|
|
|
42
|
+
| <name> | <observed role> | <supported signal or unknown> | <source and date> | <stated concern / unresolved question> |
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Preserve the existing `## Signal history` section and its dated `[signal:...]` entries. CLI status, receipts and dashboard read that history; changing the display table alone does not update those signals. Use the existing confirmed contact/debrief workflow for signal changes. Never delete or overwrite history while refreshing the tables.
|
|
46
|
+
|
|
47
|
+
## Checkpoint
|
|
48
|
+
|
|
49
|
+
State the decision that can proceed under confirmed authority and any dependent action still blocked by an unknown or disputed right. Include material observed changes and the next evidence or conversation needed. If nothing relevant changed, reuse the map; no calendar interval alone requires a new review.
|
|
50
|
+
|
|
51
|
+
## Worked example
|
|
52
|
+
|
|
53
|
+
A sponsor requests release on Thursday and names Platform as operator. The Platform lead says the team has not accepted on-call responsibility. The sponsor's slower replies and a new finance participant are observed, but their cause is unknown.
|
|
54
|
+
|
|
55
|
+
Return the map as a draft; when bound and confirmed, save it in `stakeholders.md` and the next action in `context.md`. Record the sponsor's request and Platform's objection with their sources. Existing policy confirms who approves production releases; it does not establish that Platform accepted recovery duties. The release authority row cites that policy; the operating responsibility row remains disputed. Acceptance and data-policy rights are checked only to the extent required by this change, reusing existing evidence. Prepare verification and the release receipt while the responsible parties resolve coverage. Do not infer escalation, assign Platform by title, or turn the sponsor's deadline into deployment permission.
|
|
56
|
+
|
|
57
|
+
## Principles
|
|
58
|
+
|
|
59
|
+
- Resolve scoped authority from evidence; influence is not delegation.
|
|
60
|
+
- Separate observed behavior, stated concerns and possible explanations.
|
|
61
|
+
- Ownership requires applicable agreement, not an unchallenged name in a table.
|
|
62
|
+
- Reuse confirmed decisions and scale follow-up to impact.
|
|
63
|
+
- Preserve attributed history and unknowns; never fabricate agreement.
|