fdeops 5.1.20 → 5.1.22
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/README.md +7 -1
- package/bin/fde.js +17 -5
- package/mcp/fdeops-ingest/package.json +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/skills/build/.fde-generated.json +2 -2
- package/skills/build/references/debug.md +1 -1
- package/skills/build/references/review.md +1 -1
- package/skills/debug/.fde-generated.json +2 -2
- package/skills/debug/references/debug.md +1 -1
- package/skills/debug/references/review.md +1 -1
- package/skills/evaluate/.fde-generated.json +2 -2
- package/skills/evaluate/references/debug.md +1 -1
- package/skills/evaluate/references/review.md +1 -1
- package/skills/fde/references/debug.md +1 -1
- package/skills/fde/references/pick-three.md +17 -17
- package/skills/fde/references/review.md +1 -1
- package/skills/fde/references/score-use-cases.md +10 -8
- package/skills/integrate/.fde-generated.json +2 -2
- package/skills/integrate/references/debug.md +1 -1
- package/skills/integrate/references/review.md +1 -1
- package/skills/poc/.fde-generated.json +2 -2
- package/skills/poc/references/debug.md +1 -1
- package/skills/poc/references/review.md +1 -1
- package/skills/prioritize/.fde-generated.json +1 -1
- package/skills/prioritize/references/pick-three.md +17 -17
- package/skills/qa/.fde-generated.json +2 -2
- package/skills/qa/references/debug.md +1 -1
- package/skills/qa/references/review.md +1 -1
- package/skills/review/.fde-generated.json +2 -2
- package/skills/review/references/debug.md +1 -1
- package/skills/review/references/review.md +1 -1
- package/skills/score-use-cases/.fde-generated.json +1 -1
- package/skills/score-use-cases/references/score-use-cases.md +10 -8
- package/skills/ship/.fde-generated.json +2 -2
- package/skills/ship/references/debug.md +1 -1
- package/skills/ship/references/review.md +1 -1
package/README.md
CHANGED
|
@@ -2,13 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
**Skills for forward deployed engineers, used through your AI coding agent.**
|
|
4
4
|
|
|
5
|
+
[](https://github.com/suboss87/fdeops/actions/workflows/validate.yml)
|
|
6
|
+
[](https://www.npmjs.com/package/fdeops)
|
|
7
|
+
[](https://www.npmjs.com/package/fdeops)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+

|
|
10
|
+
|
|
5
11
|
<a name="why-use-it"></a>
|
|
6
12
|
|
|
7
13
|
FDEOps helps you turn a customer problem into a working system: clarify the goal, choose an architecture, build and integrate, then verify the result and prepare for rollout.
|
|
8
14
|
|
|
9
15
|
Use a task skill on its own, or let `fde` coordinate work across strategy, architecture and engineering. Customer memory keeps decisions, evidence and next steps available between sessions.
|
|
10
16
|
|
|
11
|
-
I built FDEOps around design thinking, first-principles thinking and systems thinking: understand the people doing the work, question assumptions, and examine how a change affects the whole system. I turned
|
|
17
|
+
I built FDEOps around design thinking, first-principles thinking and systems thinking: understand the people doing the work, question assumptions, and examine how a change affects the whole system. I turned my field approach and experience into skills that help your AI coding agent investigate, build and verify, with customer memory to carry the work forward.
|
|
12
18
|
|
|
13
19
|
[Get started](#quick-start) · [What it helps with](#three-things-it-helps-with) · [Choose a skill](#task-skills) · [Data boundaries](#your-records-your-control) · [Docs](docs/README.md)
|
|
14
20
|
|
package/bin/fde.js
CHANGED
|
@@ -1773,21 +1773,33 @@ function looksLikePersonName(s) {
|
|
|
1773
1773
|
function signerFromLine(text) {
|
|
1774
1774
|
const t = String(text || '').replace(/^[-*+]\s+/, '').trim()
|
|
1775
1775
|
if (!t || /\?|\b(?:not|nobody|unclear|maybe|might|whether|could|should|if|unless|pending|unconfirmed)\b/i.test(t)) return ''
|
|
1776
|
+
// A component/budget/release approver is not the engagement's acceptance
|
|
1777
|
+
// signer. Infer only a bare authority statement or explicit outcome/test
|
|
1778
|
+
// sign-off; leave other scope wording in the original note for agent review.
|
|
1779
|
+
const roleWords = text => text.trim().split(/\s+/).every(word => word.match(ROLE_TOKEN)?.[0] === word)
|
|
1780
|
+
const candidate = (match, who, rolePrefix = false) => {
|
|
1781
|
+
if (!match || !looksLikePersonName(who)) return ''
|
|
1782
|
+
const before = t.slice(0, match.index)
|
|
1783
|
+
const after = t.slice(match.index + match[0].length).replace(/\[source:[^\]]*\]/gi, '').trim()
|
|
1784
|
+
if (before.trim() && (!rolePrefix || !roleWords(before))) return ''
|
|
1785
|
+
if (!/^(?:(?:on\s+)?(?:the\s+)?(?:acceptance tests?|(?:customer |delivered )?outcome))?[.!]?$/i.test(after)) return ''
|
|
1786
|
+
return who.trim()
|
|
1787
|
+
}
|
|
1776
1788
|
// "Priya (VP Eng) signs off" → Priya. "Finance controller (Helena) signs off" → Helena.
|
|
1777
1789
|
const titled = t.match(new RegExp('\\b' + SIGNER_NAME + '\\s+\\(' + SIGNER_NAME + '\\)\\s+' + SIGNER_VERB + '\\b'))
|
|
1778
1790
|
if (titled) {
|
|
1779
1791
|
const before = titled[1].trim()
|
|
1780
1792
|
const inside = titled[2].trim()
|
|
1781
|
-
if (looksLikePersonName(before) &&
|
|
1782
|
-
if (looksLikePersonName(inside)) return inside
|
|
1783
|
-
|
|
1793
|
+
if (looksLikePersonName(before) && roleWords(inside)) return candidate(titled, before)
|
|
1794
|
+
if (roleWords(before) && looksLikePersonName(inside)) return candidate(titled, inside)
|
|
1795
|
+
return ''
|
|
1784
1796
|
}
|
|
1785
1797
|
const paren = t.match(new RegExp('\\(' + SIGNER_NAME + '\\)\\s+' + SIGNER_VERB + '\\b'))
|
|
1786
|
-
if (paren && looksLikePersonName(paren[1])) return paren[1]
|
|
1798
|
+
if (paren && looksLikePersonName(paren[1])) return candidate(paren, paren[1], true)
|
|
1787
1799
|
const named = t.match(new RegExp('\\b' + SIGNER_NAME + '\\s+' + SIGNER_VERB + '\\b'))
|
|
1788
1800
|
if (!named) return ''
|
|
1789
1801
|
const who = named[1].trim()
|
|
1790
|
-
return
|
|
1802
|
+
return candidate(named, who)
|
|
1791
1803
|
}
|
|
1792
1804
|
|
|
1793
1805
|
function setSigner(eng, who) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fdeops",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.22",
|
|
4
4
|
"description": "Skills for forward deployed engineers across strategy, architecture and engineering. Use individual tasks or @fde coordination; local customer memory supports continuity.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"fdeops": "bin/install.js",
|
package/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "fdeops",
|
|
4
|
-
"version": "5.1.
|
|
4
|
+
"version": "5.1.22",
|
|
5
5
|
"description": "Skills for forward deployed engineers across strategy, architecture and engineering. Use individual tasks or @fde coordination; local customer memory supports continuity.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Subash Natarajan",
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
"SKILL.md": "77570e69b8d708d60cd6ab1dcc79c95a75824ab668f60a83a0dedbe668de2a70",
|
|
6
6
|
"agents/openai.yaml": "abd0a33ab4efa25ea038932d37eae2faa2527baa96ebae8732ea90f1ebc3865e",
|
|
7
7
|
"references/build.md": "4ebea9776605f79f902d9bf83a065e4cded191d7b5f8defcf58c054514fc34f5",
|
|
8
|
-
"references/debug.md": "
|
|
8
|
+
"references/debug.md": "bdc09abdd7a075574fc2daf91cecfd2858e67d75a964146a118bf782328192f6",
|
|
9
9
|
"references/eval-pack.md": "0590b85d3cae0903c6b1274540c92eaa2a4373047e8a0548d6942516ef0bb9e1",
|
|
10
10
|
"references/integrate.md": "1cb7a60d7545b0bf224fce678a04ce6ccdf368c47877d9c8e4dc4272bb0d5b0c",
|
|
11
11
|
"references/qa.md": "41de4d70827c83291efa217e97d777f62ec2849827687fbba7e4b1d17484b87e",
|
|
12
|
-
"references/review.md": "
|
|
12
|
+
"references/review.md": "8fa35eacdc04d5e818e046e6da8f61f126e08d9c6a1073b2eaa19f72d4bfea3a",
|
|
13
13
|
"references/ship.md": "95f51772b29de6f7d174f1f7678f15d46a3a5327dcb8facb94288e27907ae92c",
|
|
14
14
|
"references/task-context.md": "9f995c1fe4d8a27d313b4c008a943fbcdd150029358c70b450dbbfb303a2666e",
|
|
15
15
|
"references/verification.md": "8ee2502112a37eedfdacf929041e7b91e9e6fabb007408a1ee2e2992e3af6ff6"
|
|
@@ -10,7 +10,7 @@ Follow [task context](task-context.md); permitted supplied evidence is enough wi
|
|
|
10
10
|
|
|
11
11
|
Capture expected and observed behavior, the trigger or input, revision, environment, and last known working state. Keep useful errors and timestamps, without secrets or raw private data. Label unverified reports as reports.
|
|
12
12
|
|
|
13
|
-
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding.
|
|
13
|
+
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding. Ask for the smallest permitted observation that distinguishes the remaining causes; an operator-run check or approved excerpt may be enough without granting the agent additional access.
|
|
14
14
|
|
|
15
15
|
## Test the explanation
|
|
16
16
|
|
|
@@ -6,7 +6,7 @@ Use [task context](task-context.md). Obtain the intended outcome, acceptance che
|
|
|
6
6
|
|
|
7
7
|
## Establish what was reviewed
|
|
8
8
|
|
|
9
|
-
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations.
|
|
9
|
+
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations. For each limitation that affects the verdict, name the narrow excerpt or owner-run check needed to resolve it; continue reviewing the supplied scope without requesting whole-repository or production access by default.
|
|
10
10
|
|
|
11
11
|
State the review source: **self-check** when the author inspects their own work; **independent review** only when a separate person or agent actually examines it. A second pass by the same agent is still a self-check. Name the actual reviewer/source and reviewed revision when available. Do not fabricate a reviewer, dialogue, approval, or clean verdict. Use an available separate reviewer for substantial or risky changes when authorized; otherwise report the missing independent review and continue useful self-checks.
|
|
12
12
|
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
"SKILL.md": "00b6f8c7c56be7a665f9401c58319fc4cd344e1c865d88021c116d94149a4a35",
|
|
6
6
|
"agents/openai.yaml": "f9178e65a1e2e9ee27f2f5917a36a50e3ebe64bd6e331b43379efcf1c7d5aac3",
|
|
7
7
|
"references/build.md": "4ebea9776605f79f902d9bf83a065e4cded191d7b5f8defcf58c054514fc34f5",
|
|
8
|
-
"references/debug.md": "
|
|
8
|
+
"references/debug.md": "bdc09abdd7a075574fc2daf91cecfd2858e67d75a964146a118bf782328192f6",
|
|
9
9
|
"references/eval-pack.md": "0590b85d3cae0903c6b1274540c92eaa2a4373047e8a0548d6942516ef0bb9e1",
|
|
10
10
|
"references/integrate.md": "1cb7a60d7545b0bf224fce678a04ce6ccdf368c47877d9c8e4dc4272bb0d5b0c",
|
|
11
11
|
"references/qa.md": "41de4d70827c83291efa217e97d777f62ec2849827687fbba7e4b1d17484b87e",
|
|
12
|
-
"references/review.md": "
|
|
12
|
+
"references/review.md": "8fa35eacdc04d5e818e046e6da8f61f126e08d9c6a1073b2eaa19f72d4bfea3a",
|
|
13
13
|
"references/ship.md": "95f51772b29de6f7d174f1f7678f15d46a3a5327dcb8facb94288e27907ae92c",
|
|
14
14
|
"references/task-context.md": "9f995c1fe4d8a27d313b4c008a943fbcdd150029358c70b450dbbfb303a2666e",
|
|
15
15
|
"references/verification.md": "8ee2502112a37eedfdacf929041e7b91e9e6fabb007408a1ee2e2992e3af6ff6"
|
|
@@ -10,7 +10,7 @@ Follow [task context](task-context.md); permitted supplied evidence is enough wi
|
|
|
10
10
|
|
|
11
11
|
Capture expected and observed behavior, the trigger or input, revision, environment, and last known working state. Keep useful errors and timestamps, without secrets or raw private data. Label unverified reports as reports.
|
|
12
12
|
|
|
13
|
-
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding.
|
|
13
|
+
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding. Ask for the smallest permitted observation that distinguishes the remaining causes; an operator-run check or approved excerpt may be enough without granting the agent additional access.
|
|
14
14
|
|
|
15
15
|
## Test the explanation
|
|
16
16
|
|
|
@@ -6,7 +6,7 @@ Use [task context](task-context.md). Obtain the intended outcome, acceptance che
|
|
|
6
6
|
|
|
7
7
|
## Establish what was reviewed
|
|
8
8
|
|
|
9
|
-
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations.
|
|
9
|
+
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations. For each limitation that affects the verdict, name the narrow excerpt or owner-run check needed to resolve it; continue reviewing the supplied scope without requesting whole-repository or production access by default.
|
|
10
10
|
|
|
11
11
|
State the review source: **self-check** when the author inspects their own work; **independent review** only when a separate person or agent actually examines it. A second pass by the same agent is still a self-check. Name the actual reviewer/source and reviewed revision when available. Do not fabricate a reviewer, dialogue, approval, or clean verdict. Use an available separate reviewer for substantial or risky changes when authorized; otherwise report the missing independent review and continue useful self-checks.
|
|
12
12
|
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
"SKILL.md": "396110a1cb9a555b4096ef77bf45e531b60d78b18bd617c654f19c8e07506ce1",
|
|
6
6
|
"agents/openai.yaml": "731f3c81d46444af542369f0aa27736d24530d00fc1aa717436ddefe3f3bdef7",
|
|
7
7
|
"references/build.md": "4ebea9776605f79f902d9bf83a065e4cded191d7b5f8defcf58c054514fc34f5",
|
|
8
|
-
"references/debug.md": "
|
|
8
|
+
"references/debug.md": "bdc09abdd7a075574fc2daf91cecfd2858e67d75a964146a118bf782328192f6",
|
|
9
9
|
"references/eval-pack.md": "0590b85d3cae0903c6b1274540c92eaa2a4373047e8a0548d6942516ef0bb9e1",
|
|
10
10
|
"references/integrate.md": "1cb7a60d7545b0bf224fce678a04ce6ccdf368c47877d9c8e4dc4272bb0d5b0c",
|
|
11
11
|
"references/qa.md": "41de4d70827c83291efa217e97d777f62ec2849827687fbba7e4b1d17484b87e",
|
|
12
|
-
"references/review.md": "
|
|
12
|
+
"references/review.md": "8fa35eacdc04d5e818e046e6da8f61f126e08d9c6a1073b2eaa19f72d4bfea3a",
|
|
13
13
|
"references/ship.md": "95f51772b29de6f7d174f1f7678f15d46a3a5327dcb8facb94288e27907ae92c",
|
|
14
14
|
"references/task-context.md": "9f995c1fe4d8a27d313b4c008a943fbcdd150029358c70b450dbbfb303a2666e",
|
|
15
15
|
"references/verification.md": "8ee2502112a37eedfdacf929041e7b91e9e6fabb007408a1ee2e2992e3af6ff6"
|
|
@@ -10,7 +10,7 @@ Follow [task context](task-context.md); permitted supplied evidence is enough wi
|
|
|
10
10
|
|
|
11
11
|
Capture expected and observed behavior, the trigger or input, revision, environment, and last known working state. Keep useful errors and timestamps, without secrets or raw private data. Label unverified reports as reports.
|
|
12
12
|
|
|
13
|
-
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding.
|
|
13
|
+
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding. Ask for the smallest permitted observation that distinguishes the remaining causes; an operator-run check or approved excerpt may be enough without granting the agent additional access.
|
|
14
14
|
|
|
15
15
|
## Test the explanation
|
|
16
16
|
|
|
@@ -6,7 +6,7 @@ Use [task context](task-context.md). Obtain the intended outcome, acceptance che
|
|
|
6
6
|
|
|
7
7
|
## Establish what was reviewed
|
|
8
8
|
|
|
9
|
-
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations.
|
|
9
|
+
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations. For each limitation that affects the verdict, name the narrow excerpt or owner-run check needed to resolve it; continue reviewing the supplied scope without requesting whole-repository or production access by default.
|
|
10
10
|
|
|
11
11
|
State the review source: **self-check** when the author inspects their own work; **independent review** only when a separate person or agent actually examines it. A second pass by the same agent is still a self-check. Name the actual reviewer/source and reviewed revision when available. Do not fabricate a reviewer, dialogue, approval, or clean verdict. Use an available separate reviewer for substantial or risky changes when authorized; otherwise report the missing independent review and continue useful self-checks.
|
|
12
12
|
|
|
@@ -10,7 +10,7 @@ Follow [task context](task-context.md); permitted supplied evidence is enough wi
|
|
|
10
10
|
|
|
11
11
|
Capture expected and observed behavior, the trigger or input, revision, environment, and last known working state. Keep useful errors and timestamps, without secrets or raw private data. Label unverified reports as reports.
|
|
12
12
|
|
|
13
|
-
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding.
|
|
13
|
+
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding. Ask for the smallest permitted observation that distinguishes the remaining causes; an operator-run check or approved excerpt may be enough without granting the agent additional access.
|
|
14
14
|
|
|
15
15
|
## Test the explanation
|
|
16
16
|
|
|
@@ -29,23 +29,23 @@ Notice: every stakeholder's initiative is P0 or P1. That's the problem this skil
|
|
|
29
29
|
| **Dependency** | How many other initiatives are blocked waiting for this? | 0 (standalone) → 5 (critical path for 3+ others) |
|
|
30
30
|
| **Cost of delay** | What happens each week this doesn't ship? | 1 (nothing) → 5 (measurable loss or regulatory exposure) |
|
|
31
31
|
|
|
32
|
-
**Triage score = Impact + Dependency + Cost of delay** (simple sum,
|
|
32
|
+
**Triage score = Impact + Dependency + Cost of delay** (simple sum, 2-15 range).
|
|
33
33
|
|
|
34
34
|
**3. Sort into three lanes:**
|
|
35
35
|
|
|
36
36
|
| Lane | Score | Action |
|
|
37
37
|
|------|-------|--------|
|
|
38
|
-
| **Now** (max 3) | 11-15 |
|
|
39
|
-
| **Next** (max 5) | 7-10 |
|
|
40
|
-
| **Later** (unlimited) |
|
|
38
|
+
| **Now** (max 3) | 11-15 | Proposed active work, subject to actual capacity, dependencies and authority. |
|
|
39
|
+
| **Next** (max 5) | 7-10 | Proposed sequencing; dependencies tracked but not started. |
|
|
40
|
+
| **Later** (unlimited) | 2-6 | Captured, not committed. Revisit at next triage. |
|
|
41
41
|
|
|
42
|
-
**The cap matters.**
|
|
42
|
+
**The cap matters.** Three is a maximum, not a quota. Use fewer or zero Now items when capacity, unresolved dependencies or required permissions prevent useful authorized work. Check who is available, effort within the phase and shared bottlenecks; one engineer cannot be allocated to several full-capacity initiatives at once. The score bands are a starting point, not automatic lane assignments: high-scoring blocked work waits, and a lower-scoring prerequisite may come first with an explained rationale. Keep uncertain allocations proposed rather than inventing capacity or approval.
|
|
43
43
|
|
|
44
44
|
**4. Handle the political override.** When a powerful stakeholder pushes a low-scoring initiative into "Now":
|
|
45
45
|
|
|
46
|
-
- Show the
|
|
47
|
-
-
|
|
48
|
-
-
|
|
46
|
+
- Show the capacity and dependency trade-off. If Now is full for the available team, adding X requires deferring work or an explicitly agreed capacity change; a vacant slot alone is not capacity.
|
|
47
|
+
- Ask the responsible decision-maker to resolve the actual choice, without assuming three items are already active. Record the supplied choice and its source under the existing confirmation rules.
|
|
48
|
+
- An override cannot waive required permissions or create capacity. Keep an unresolved request proposed, with its impact, rather than reporting it as an allocated commitment.
|
|
49
49
|
|
|
50
50
|
**5. Set the triage cadence.** Triage is not a one-time event:
|
|
51
51
|
|
|
@@ -55,15 +55,15 @@ Notice: every stakeholder's initiative is P0 or P1. That's the problem this skil
|
|
|
55
55
|
| Standard (1-4 weeks) | Weekly | New P0 from sponsor |
|
|
56
56
|
| Programme (months) | Bi-weekly | Quarterly review, team change, market shift |
|
|
57
57
|
|
|
58
|
-
**6. Communicate the triage result.**
|
|
58
|
+
**6. Communicate the triage result.** Distinguish a proposed allocation from an authorized commitment:
|
|
59
59
|
|
|
60
|
-
> "
|
|
60
|
+
> "For the available capacity, I propose [eligible items, or none] this phase. Here's what they deliver, what is blocked or deferred, and which allocation still needs confirmation. Existing agreed work remains agreed; changes need the appropriate decision authority."
|
|
61
61
|
|
|
62
62
|
## Artifact
|
|
63
63
|
|
|
64
|
-
**`decisions.md`** - the triage table with scores, lanes,
|
|
64
|
+
**`decisions.md`** - the triage table with scores, lanes, and proposed or agreed deferrals. Keep status and decision sources explicit. Update the same Now/Next/Later section plan already uses under the record-confirmation rules; do not open a second plan section. Standalone work returns the draft without initializing records.
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
For a recorded triage result, preserve this closing block. A draft may contain pending allocations and deferrals; missing agreement must not be filled with invented acceptance:
|
|
67
67
|
|
|
68
68
|
```markdown
|
|
69
69
|
## Triage - <date>
|
|
@@ -75,21 +75,21 @@ Required closing block (plan will not treat triage as done without it):
|
|
|
75
75
|
### Kill / defer (not this phase)
|
|
76
76
|
| Initiative | Why not now | Who accepted |
|
|
77
77
|
|------------|-------------|--------------|
|
|
78
|
-
| ... | ... | <name, date> |
|
|
78
|
+
| ... | ... | <pending, or supplied name, date and source> |
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
Allocation: <proposed, or agreed with source>. Now contains only work feasible within the stated capacity and authority. Additions require a capacity and dependency check, and displacement when full.
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
**`reality.md`** - if triage revealed that the engagement scope is larger than the timeline supports, update the assessment.
|
|
84
84
|
|
|
85
85
|
## Checkpoint
|
|
86
86
|
|
|
87
|
-
Walk the FDE through: the
|
|
87
|
+
Walk the FDE through: the proposed or agreed Now items and available capacity, the Next items and what enables their promotion, and any real trade-off requiring a decision. Explain an empty Now lane when applicable; do not fill it to satisfy the title.
|
|
88
88
|
|
|
89
89
|
## Principles
|
|
90
90
|
|
|
91
|
-
-
|
|
92
|
-
- Every addition requires a
|
|
91
|
+
- Now has at most three items and must fit actual capacity and dependencies.
|
|
92
|
+
- Every addition requires a capacity check; displace work when full rather than silently overloading the team.
|
|
93
93
|
- Triage is recurring, not one-time. The list changes; the discipline doesn't.
|
|
94
94
|
- A logged override protects the FDE. An unlogged override blames them.
|
|
95
95
|
- The initiative everyone wants but nobody will trade for is the one to watch.
|
|
@@ -6,7 +6,7 @@ Use [task context](task-context.md). Obtain the intended outcome, acceptance che
|
|
|
6
6
|
|
|
7
7
|
## Establish what was reviewed
|
|
8
8
|
|
|
9
|
-
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations.
|
|
9
|
+
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations. For each limitation that affects the verdict, name the narrow excerpt or owner-run check needed to resolve it; continue reviewing the supplied scope without requesting whole-repository or production access by default.
|
|
10
10
|
|
|
11
11
|
State the review source: **self-check** when the author inspects their own work; **independent review** only when a separate person or agent actually examines it. A second pass by the same agent is still a self-check. Name the actual reviewer/source and reviewed revision when available. Do not fabricate a reviewer, dialogue, approval, or clean verdict. Use an available separate reviewer for substantial or risky changes when authorized; otherwise report the missing independent review and continue useful self-checks.
|
|
12
12
|
|
|
@@ -4,13 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
**Read first:** `reality.md`, `brief.md`, `terrain.md`, `context.md`. If `business-case.md` or `prototype-log.md` exist from poc, load those - they carry forward.
|
|
6
6
|
|
|
7
|
-
The most dangerous moment in a multi-use-case engagement is when the technically interesting problem wins over the high-value problem. Scoring
|
|
7
|
+
The most dangerous moment in a multi-use-case engagement is when the technically interesting problem wins over the high-value problem. Scoring makes assumptions and trade-offs visible; it does not replace evidence or judgment. These ordinal ratings are a discussion aid, not calibrated estimates of value or a reason to override a hard constraint.
|
|
8
8
|
|
|
9
9
|
## Method (you do this work)
|
|
10
10
|
|
|
11
11
|
**1. List every candidate.** From the brief, from discovery conversations, from the FDE's own observations. Include the ones the customer hasn't said aloud but the codebase implies - a high-churn module with no tests is a candidate even if nobody named it.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Before ranking work for the proposed step, identify hard feasibility, access, data-permission and policy constraints. Keep blocked or unverified candidates visible with the affected step, owner or authority gap, and evidence needed to reconsider. A high score cannot make dependent work eligible. An authorized design or evidence check may proceed while implementation is blocked; a sponsor's preference does not grant missing API or data permission.
|
|
14
|
+
|
|
15
|
+
**2. Score on five dimensions.** Each 1-5, with the scoring rubric below. Reuse discovery's evidence and rationale, rechecking whether the candidates are eligible for the same next step. Do not invent dimension scores from a thin brief - write `unknown`, return a conditional recommendation and ask only what changes the decision.
|
|
14
16
|
|
|
15
17
|
| Dimension | 1 | 3 | 5 |
|
|
16
18
|
|-----------|---|---|---|
|
|
@@ -27,11 +29,11 @@ Score = (Business value × Urgency × Stakeholder alignment) / (6 - Feasibility)
|
|
|
27
29
|
```
|
|
28
30
|
|
|
29
31
|
Why this formula:
|
|
30
|
-
- **Multiplied numerator** -
|
|
32
|
+
- **Multiplied numerator** - a lower rating reduces the score relative to otherwise identical ratings. Because every scale starts at 1, the formula does not establish that urgency, sponsorship or permission is present; eligibility must be checked separately.
|
|
31
33
|
- **Feasibility inverted** - harder problems get a higher denominator, pulling the score down. A feasibility of 5 (easy) gives denominator 1; feasibility of 1 (hard) gives denominator 5.
|
|
32
34
|
- **Data readiness as multiplier** - for data-dependent use cases (ML, analytics). For pure engineering work, set to 3 (neutral) unless data quality is genuinely a factor.
|
|
33
35
|
|
|
34
|
-
**4. Rank and present.**
|
|
36
|
+
**4. Rank and present.** Compare eligible candidates; show up to three useful options and list blocked work separately. If an uncertain input could reverse the order, show the plausible alternative rankings and the smallest permitted check that distinguishes them, with its owner or an explicit ownership gap. Do not hide uncertainty in a precise-looking score or delay independent authorized work while waiting. The following scores illustrate a recommendation, not a commitment:
|
|
35
37
|
|
|
36
38
|
```markdown
|
|
37
39
|
| Rank | Use case | Value | Urgency | Feasibility | Data | Alignment | Score | Recommend |
|
|
@@ -49,7 +51,7 @@ Why this formula:
|
|
|
49
51
|
**6. Handle the CEO's pet project.** Sometimes the highest-scoring use case isn't the one the most powerful stakeholder wants. That's information, not a problem:
|
|
50
52
|
|
|
51
53
|
- Present the scores honestly - the stakeholder sees you're being rigorous, not political.
|
|
52
|
-
- If
|
|
54
|
+
- If the responsible decision-maker overrides the ranking, preserve the choice, source and trade-off under the existing record-confirmation rules. Check capacity and required permissions before dependent work; an override changes preference, not hard constraints or acceptance authority. An unconfirmed choice remains proposed.
|
|
53
55
|
|
|
54
56
|
## Artifact
|
|
55
57
|
|
|
@@ -59,12 +61,12 @@ Why this formula:
|
|
|
59
61
|
|
|
60
62
|
## Checkpoint
|
|
61
63
|
|
|
62
|
-
Walk the FDE through the
|
|
64
|
+
Walk the FDE through the eligible options, relevant blockers and any uncertainty that could reverse the recommendation. Keep the proposed allocation pending the appropriate decision authority; silence is not approval. Reuse existing authorization when it covers the next step. If evidence is insufficient, recommend a bounded distinguishing check rather than automatically proceeding with the highest score.
|
|
63
65
|
|
|
64
66
|
## Principles
|
|
65
67
|
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
+
- Scores expose assumptions; evidence and eligible scope govern the recommendation.
|
|
69
|
+
- A numerical advantage cannot override a hard constraint or unknown permission.
|
|
68
70
|
- The technically interesting problem that scores low gets deferred, not pursued.
|
|
69
71
|
- Present the model; let the human decide. If overridden, log the trade-off.
|
|
70
72
|
- A use case with no active sponsor is a research project, not an engagement deliverable.
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
"SKILL.md": "63cc6cef59cadd45b36a080ac97f1d0bc8e777b12f39a9a6f62b63dfb5029b2d",
|
|
6
6
|
"agents/openai.yaml": "20f8c8f7ab4bc2730260052e378a86c062b503a3ba26fd4b7a37559756b0f756",
|
|
7
7
|
"references/build.md": "4ebea9776605f79f902d9bf83a065e4cded191d7b5f8defcf58c054514fc34f5",
|
|
8
|
-
"references/debug.md": "
|
|
8
|
+
"references/debug.md": "bdc09abdd7a075574fc2daf91cecfd2858e67d75a964146a118bf782328192f6",
|
|
9
9
|
"references/eval-pack.md": "0590b85d3cae0903c6b1274540c92eaa2a4373047e8a0548d6942516ef0bb9e1",
|
|
10
10
|
"references/integrate.md": "1cb7a60d7545b0bf224fce678a04ce6ccdf368c47877d9c8e4dc4272bb0d5b0c",
|
|
11
11
|
"references/qa.md": "41de4d70827c83291efa217e97d777f62ec2849827687fbba7e4b1d17484b87e",
|
|
12
|
-
"references/review.md": "
|
|
12
|
+
"references/review.md": "8fa35eacdc04d5e818e046e6da8f61f126e08d9c6a1073b2eaa19f72d4bfea3a",
|
|
13
13
|
"references/ship.md": "95f51772b29de6f7d174f1f7678f15d46a3a5327dcb8facb94288e27907ae92c",
|
|
14
14
|
"references/task-context.md": "9f995c1fe4d8a27d313b4c008a943fbcdd150029358c70b450dbbfb303a2666e",
|
|
15
15
|
"references/verification.md": "8ee2502112a37eedfdacf929041e7b91e9e6fabb007408a1ee2e2992e3af6ff6"
|
|
@@ -10,7 +10,7 @@ Follow [task context](task-context.md); permitted supplied evidence is enough wi
|
|
|
10
10
|
|
|
11
11
|
Capture expected and observed behavior, the trigger or input, revision, environment, and last known working state. Keep useful errors and timestamps, without secrets or raw private data. Label unverified reports as reports.
|
|
12
12
|
|
|
13
|
-
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding.
|
|
13
|
+
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding. Ask for the smallest permitted observation that distinguishes the remaining causes; an operator-run check or approved excerpt may be enough without granting the agent additional access.
|
|
14
14
|
|
|
15
15
|
## Test the explanation
|
|
16
16
|
|
|
@@ -6,7 +6,7 @@ Use [task context](task-context.md). Obtain the intended outcome, acceptance che
|
|
|
6
6
|
|
|
7
7
|
## Establish what was reviewed
|
|
8
8
|
|
|
9
|
-
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations.
|
|
9
|
+
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations. For each limitation that affects the verdict, name the narrow excerpt or owner-run check needed to resolve it; continue reviewing the supplied scope without requesting whole-repository or production access by default.
|
|
10
10
|
|
|
11
11
|
State the review source: **self-check** when the author inspects their own work; **independent review** only when a separate person or agent actually examines it. A second pass by the same agent is still a self-check. Name the actual reviewer/source and reviewed revision when available. Do not fabricate a reviewer, dialogue, approval, or clean verdict. Use an available separate reviewer for substantial or risky changes when authorized; otherwise report the missing independent review and continue useful self-checks.
|
|
12
12
|
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
"references/audit.md": "ed32ea78cbccb100742dd838e8cf4cd4b6f33ad44b3de7424fc624670d571dbc",
|
|
8
8
|
"references/build.md": "4ebea9776605f79f902d9bf83a065e4cded191d7b5f8defcf58c054514fc34f5",
|
|
9
9
|
"references/business-case.md": "32e000e8351cd59f9eaad8be40babb276df69948ea4f81e01a4672e47f48cb25",
|
|
10
|
-
"references/debug.md": "
|
|
10
|
+
"references/debug.md": "bdc09abdd7a075574fc2daf91cecfd2858e67d75a964146a118bf782328192f6",
|
|
11
11
|
"references/discover.md": "f65aa11a539b4dbbed70cfaa94ec2a35595aa9a2d0282790510b933ac9c721ce",
|
|
12
12
|
"references/eval-pack.md": "0590b85d3cae0903c6b1274540c92eaa2a4373047e8a0548d6942516ef0bb9e1",
|
|
13
13
|
"references/integrate.md": "1cb7a60d7545b0bf224fce678a04ce6ccdf368c47877d9c8e4dc4272bb0d5b0c",
|
|
14
14
|
"references/plan.md": "f5c456b5e2c00a6a44fdf94935b143f3b5271c31187bf06d09eae724f9d466fa",
|
|
15
15
|
"references/poc.md": "65c91866037dc034a64484683ad9a329896786f1487265c9fddecd19b09a3039",
|
|
16
16
|
"references/qa.md": "41de4d70827c83291efa217e97d777f62ec2849827687fbba7e4b1d17484b87e",
|
|
17
|
-
"references/review.md": "
|
|
17
|
+
"references/review.md": "8fa35eacdc04d5e818e046e6da8f61f126e08d9c6a1073b2eaa19f72d4bfea3a",
|
|
18
18
|
"references/ship.md": "95f51772b29de6f7d174f1f7678f15d46a3a5327dcb8facb94288e27907ae92c",
|
|
19
19
|
"references/task-context.md": "9f995c1fe4d8a27d313b4c008a943fbcdd150029358c70b450dbbfb303a2666e",
|
|
20
20
|
"references/test-assumptions.md": "977acbf88dc0468afeb0fb222fae88100ee6a5078a729e0651c28a45870e3925",
|
|
@@ -10,7 +10,7 @@ Follow [task context](task-context.md); permitted supplied evidence is enough wi
|
|
|
10
10
|
|
|
11
11
|
Capture expected and observed behavior, the trigger or input, revision, environment, and last known working state. Keep useful errors and timestamps, without secrets or raw private data. Label unverified reports as reports.
|
|
12
12
|
|
|
13
|
-
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding.
|
|
13
|
+
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding. Ask for the smallest permitted observation that distinguishes the remaining causes; an operator-run check or approved excerpt may be enough without granting the agent additional access.
|
|
14
14
|
|
|
15
15
|
## Test the explanation
|
|
16
16
|
|
|
@@ -6,7 +6,7 @@ Use [task context](task-context.md). Obtain the intended outcome, acceptance che
|
|
|
6
6
|
|
|
7
7
|
## Establish what was reviewed
|
|
8
8
|
|
|
9
|
-
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations.
|
|
9
|
+
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations. For each limitation that affects the verdict, name the narrow excerpt or owner-run check needed to resolve it; continue reviewing the supplied scope without requesting whole-repository or production access by default.
|
|
10
10
|
|
|
11
11
|
State the review source: **self-check** when the author inspects their own work; **independent review** only when a separate person or agent actually examines it. A second pass by the same agent is still a self-check. Name the actual reviewer/source and reviewed revision when available. Do not fabricate a reviewer, dialogue, approval, or clean verdict. Use an available separate reviewer for substantial or risky changes when authorized; otherwise report the missing independent review and continue useful self-checks.
|
|
12
12
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"SKILL.md": "07e8a3b485762e6b6897472fe4c934cb63ed0240d8258761be445729714d782d",
|
|
6
6
|
"agents/openai.yaml": "3cfc01668b1bc6ec42d429e9730c68fd01520a7d15ea4289dee265e16bcd6b55",
|
|
7
7
|
"references/business-case.md": "32e000e8351cd59f9eaad8be40babb276df69948ea4f81e01a4672e47f48cb25",
|
|
8
|
-
"references/pick-three.md": "
|
|
8
|
+
"references/pick-three.md": "c64a04fd0724b28701bbe334f444d0df93da4d858de993e82ccae04e48b66db9",
|
|
9
9
|
"references/task-context.md": "9f995c1fe4d8a27d313b4c008a943fbcdd150029358c70b450dbbfb303a2666e"
|
|
10
10
|
}
|
|
11
11
|
}
|
|
@@ -29,23 +29,23 @@ Notice: every stakeholder's initiative is P0 or P1. That's the problem this skil
|
|
|
29
29
|
| **Dependency** | How many other initiatives are blocked waiting for this? | 0 (standalone) → 5 (critical path for 3+ others) |
|
|
30
30
|
| **Cost of delay** | What happens each week this doesn't ship? | 1 (nothing) → 5 (measurable loss or regulatory exposure) |
|
|
31
31
|
|
|
32
|
-
**Triage score = Impact + Dependency + Cost of delay** (simple sum,
|
|
32
|
+
**Triage score = Impact + Dependency + Cost of delay** (simple sum, 2-15 range).
|
|
33
33
|
|
|
34
34
|
**3. Sort into three lanes:**
|
|
35
35
|
|
|
36
36
|
| Lane | Score | Action |
|
|
37
37
|
|------|-------|--------|
|
|
38
|
-
| **Now** (max 3) | 11-15 |
|
|
39
|
-
| **Next** (max 5) | 7-10 |
|
|
40
|
-
| **Later** (unlimited) |
|
|
38
|
+
| **Now** (max 3) | 11-15 | Proposed active work, subject to actual capacity, dependencies and authority. |
|
|
39
|
+
| **Next** (max 5) | 7-10 | Proposed sequencing; dependencies tracked but not started. |
|
|
40
|
+
| **Later** (unlimited) | 2-6 | Captured, not committed. Revisit at next triage. |
|
|
41
41
|
|
|
42
|
-
**The cap matters.**
|
|
42
|
+
**The cap matters.** Three is a maximum, not a quota. Use fewer or zero Now items when capacity, unresolved dependencies or required permissions prevent useful authorized work. Check who is available, effort within the phase and shared bottlenecks; one engineer cannot be allocated to several full-capacity initiatives at once. The score bands are a starting point, not automatic lane assignments: high-scoring blocked work waits, and a lower-scoring prerequisite may come first with an explained rationale. Keep uncertain allocations proposed rather than inventing capacity or approval.
|
|
43
43
|
|
|
44
44
|
**4. Handle the political override.** When a powerful stakeholder pushes a low-scoring initiative into "Now":
|
|
45
45
|
|
|
46
|
-
- Show the
|
|
47
|
-
-
|
|
48
|
-
-
|
|
46
|
+
- Show the capacity and dependency trade-off. If Now is full for the available team, adding X requires deferring work or an explicitly agreed capacity change; a vacant slot alone is not capacity.
|
|
47
|
+
- Ask the responsible decision-maker to resolve the actual choice, without assuming three items are already active. Record the supplied choice and its source under the existing confirmation rules.
|
|
48
|
+
- An override cannot waive required permissions or create capacity. Keep an unresolved request proposed, with its impact, rather than reporting it as an allocated commitment.
|
|
49
49
|
|
|
50
50
|
**5. Set the triage cadence.** Triage is not a one-time event:
|
|
51
51
|
|
|
@@ -55,15 +55,15 @@ Notice: every stakeholder's initiative is P0 or P1. That's the problem this skil
|
|
|
55
55
|
| Standard (1-4 weeks) | Weekly | New P0 from sponsor |
|
|
56
56
|
| Programme (months) | Bi-weekly | Quarterly review, team change, market shift |
|
|
57
57
|
|
|
58
|
-
**6. Communicate the triage result.**
|
|
58
|
+
**6. Communicate the triage result.** Distinguish a proposed allocation from an authorized commitment:
|
|
59
59
|
|
|
60
|
-
> "
|
|
60
|
+
> "For the available capacity, I propose [eligible items, or none] this phase. Here's what they deliver, what is blocked or deferred, and which allocation still needs confirmation. Existing agreed work remains agreed; changes need the appropriate decision authority."
|
|
61
61
|
|
|
62
62
|
## Artifact
|
|
63
63
|
|
|
64
|
-
**`decisions.md`** - the triage table with scores, lanes,
|
|
64
|
+
**`decisions.md`** - the triage table with scores, lanes, and proposed or agreed deferrals. Keep status and decision sources explicit. Update the same Now/Next/Later section plan already uses under the record-confirmation rules; do not open a second plan section. Standalone work returns the draft without initializing records.
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
For a recorded triage result, preserve this closing block. A draft may contain pending allocations and deferrals; missing agreement must not be filled with invented acceptance:
|
|
67
67
|
|
|
68
68
|
```markdown
|
|
69
69
|
## Triage - <date>
|
|
@@ -75,21 +75,21 @@ Required closing block (plan will not treat triage as done without it):
|
|
|
75
75
|
### Kill / defer (not this phase)
|
|
76
76
|
| Initiative | Why not now | Who accepted |
|
|
77
77
|
|------------|-------------|--------------|
|
|
78
|
-
| ... | ... | <name, date> |
|
|
78
|
+
| ... | ... | <pending, or supplied name, date and source> |
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
Allocation: <proposed, or agreed with source>. Now contains only work feasible within the stated capacity and authority. Additions require a capacity and dependency check, and displacement when full.
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
**`reality.md`** - if triage revealed that the engagement scope is larger than the timeline supports, update the assessment.
|
|
84
84
|
|
|
85
85
|
## Checkpoint
|
|
86
86
|
|
|
87
|
-
Walk the FDE through: the
|
|
87
|
+
Walk the FDE through: the proposed or agreed Now items and available capacity, the Next items and what enables their promotion, and any real trade-off requiring a decision. Explain an empty Now lane when applicable; do not fill it to satisfy the title.
|
|
88
88
|
|
|
89
89
|
## Principles
|
|
90
90
|
|
|
91
|
-
-
|
|
92
|
-
- Every addition requires a
|
|
91
|
+
- Now has at most three items and must fit actual capacity and dependencies.
|
|
92
|
+
- Every addition requires a capacity check; displace work when full rather than silently overloading the team.
|
|
93
93
|
- Triage is recurring, not one-time. The list changes; the discipline doesn't.
|
|
94
94
|
- A logged override protects the FDE. An unlogged override blames them.
|
|
95
95
|
- The initiative everyone wants but nobody will trade for is the one to watch.
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
"SKILL.md": "ee9d9ccd8b1ccb982e390530bc193d446a6fdb3a1d630276d6dcd00cf9033948",
|
|
6
6
|
"agents/openai.yaml": "6c551dbdb5f0d27f908cc6de580a5f0a840dca1e01e1d3feaedd81bd349d8dc9",
|
|
7
7
|
"references/build.md": "4ebea9776605f79f902d9bf83a065e4cded191d7b5f8defcf58c054514fc34f5",
|
|
8
|
-
"references/debug.md": "
|
|
8
|
+
"references/debug.md": "bdc09abdd7a075574fc2daf91cecfd2858e67d75a964146a118bf782328192f6",
|
|
9
9
|
"references/eval-pack.md": "0590b85d3cae0903c6b1274540c92eaa2a4373047e8a0548d6942516ef0bb9e1",
|
|
10
10
|
"references/integrate.md": "1cb7a60d7545b0bf224fce678a04ce6ccdf368c47877d9c8e4dc4272bb0d5b0c",
|
|
11
11
|
"references/qa.md": "41de4d70827c83291efa217e97d777f62ec2849827687fbba7e4b1d17484b87e",
|
|
12
|
-
"references/review.md": "
|
|
12
|
+
"references/review.md": "8fa35eacdc04d5e818e046e6da8f61f126e08d9c6a1073b2eaa19f72d4bfea3a",
|
|
13
13
|
"references/ship.md": "95f51772b29de6f7d174f1f7678f15d46a3a5327dcb8facb94288e27907ae92c",
|
|
14
14
|
"references/task-context.md": "9f995c1fe4d8a27d313b4c008a943fbcdd150029358c70b450dbbfb303a2666e",
|
|
15
15
|
"references/verification.md": "8ee2502112a37eedfdacf929041e7b91e9e6fabb007408a1ee2e2992e3af6ff6"
|
|
@@ -10,7 +10,7 @@ Follow [task context](task-context.md); permitted supplied evidence is enough wi
|
|
|
10
10
|
|
|
11
11
|
Capture expected and observed behavior, the trigger or input, revision, environment, and last known working state. Keep useful errors and timestamps, without secrets or raw private data. Label unverified reports as reports.
|
|
12
12
|
|
|
13
|
-
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding.
|
|
13
|
+
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding. Ask for the smallest permitted observation that distinguishes the remaining causes; an operator-run check or approved excerpt may be enough without granting the agent additional access.
|
|
14
14
|
|
|
15
15
|
## Test the explanation
|
|
16
16
|
|
|
@@ -6,7 +6,7 @@ Use [task context](task-context.md). Obtain the intended outcome, acceptance che
|
|
|
6
6
|
|
|
7
7
|
## Establish what was reviewed
|
|
8
8
|
|
|
9
|
-
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations.
|
|
9
|
+
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations. For each limitation that affects the verdict, name the narrow excerpt or owner-run check needed to resolve it; continue reviewing the supplied scope without requesting whole-repository or production access by default.
|
|
10
10
|
|
|
11
11
|
State the review source: **self-check** when the author inspects their own work; **independent review** only when a separate person or agent actually examines it. A second pass by the same agent is still a self-check. Name the actual reviewer/source and reviewed revision when available. Do not fabricate a reviewer, dialogue, approval, or clean verdict. Use an available separate reviewer for substantial or risky changes when authorized; otherwise report the missing independent review and continue useful self-checks.
|
|
12
12
|
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
"SKILL.md": "5a03a3842983d32da658da2e36466f64ad2474af2b189f71e596c586e91bc502",
|
|
6
6
|
"agents/openai.yaml": "d928b571b9ebbb29ea8acd2e38769087288e2500f0ce9ab7f20f3f57a0e3d8d2",
|
|
7
7
|
"references/build.md": "4ebea9776605f79f902d9bf83a065e4cded191d7b5f8defcf58c054514fc34f5",
|
|
8
|
-
"references/debug.md": "
|
|
8
|
+
"references/debug.md": "bdc09abdd7a075574fc2daf91cecfd2858e67d75a964146a118bf782328192f6",
|
|
9
9
|
"references/eval-pack.md": "0590b85d3cae0903c6b1274540c92eaa2a4373047e8a0548d6942516ef0bb9e1",
|
|
10
10
|
"references/integrate.md": "1cb7a60d7545b0bf224fce678a04ce6ccdf368c47877d9c8e4dc4272bb0d5b0c",
|
|
11
11
|
"references/qa.md": "41de4d70827c83291efa217e97d777f62ec2849827687fbba7e4b1d17484b87e",
|
|
12
|
-
"references/review.md": "
|
|
12
|
+
"references/review.md": "8fa35eacdc04d5e818e046e6da8f61f126e08d9c6a1073b2eaa19f72d4bfea3a",
|
|
13
13
|
"references/ship.md": "95f51772b29de6f7d174f1f7678f15d46a3a5327dcb8facb94288e27907ae92c",
|
|
14
14
|
"references/task-context.md": "9f995c1fe4d8a27d313b4c008a943fbcdd150029358c70b450dbbfb303a2666e",
|
|
15
15
|
"references/verification.md": "8ee2502112a37eedfdacf929041e7b91e9e6fabb007408a1ee2e2992e3af6ff6"
|
|
@@ -10,7 +10,7 @@ Follow [task context](task-context.md); permitted supplied evidence is enough wi
|
|
|
10
10
|
|
|
11
11
|
Capture expected and observed behavior, the trigger or input, revision, environment, and last known working state. Keep useful errors and timestamps, without secrets or raw private data. Label unverified reports as reports.
|
|
12
12
|
|
|
13
|
-
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding.
|
|
13
|
+
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding. Ask for the smallest permitted observation that distinguishes the remaining causes; an operator-run check or approved excerpt may be enough without granting the agent additional access.
|
|
14
14
|
|
|
15
15
|
## Test the explanation
|
|
16
16
|
|
|
@@ -6,7 +6,7 @@ Use [task context](task-context.md). Obtain the intended outcome, acceptance che
|
|
|
6
6
|
|
|
7
7
|
## Establish what was reviewed
|
|
8
8
|
|
|
9
|
-
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations.
|
|
9
|
+
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations. For each limitation that affects the verdict, name the narrow excerpt or owner-run check needed to resolve it; continue reviewing the supplied scope without requesting whole-repository or production access by default.
|
|
10
10
|
|
|
11
11
|
State the review source: **self-check** when the author inspects their own work; **independent review** only when a separate person or agent actually examines it. A second pass by the same agent is still a self-check. Name the actual reviewer/source and reviewed revision when available. Do not fabricate a reviewer, dialogue, approval, or clean verdict. Use an available separate reviewer for substantial or risky changes when authorized; otherwise report the missing independent review and continue useful self-checks.
|
|
12
12
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"SKILL.md": "d3abc46b68361f6d808191b50183d41eec65eac31cba5d53ef1e22a2ccd7b32f",
|
|
6
6
|
"agents/openai.yaml": "8f4af12758edb1a4648bb7917ef4c52eb4eb209a3917ae3e04904cdd5fd4dec0",
|
|
7
7
|
"references/business-case.md": "32e000e8351cd59f9eaad8be40babb276df69948ea4f81e01a4672e47f48cb25",
|
|
8
|
-
"references/score-use-cases.md": "
|
|
8
|
+
"references/score-use-cases.md": "a8352b0886731a647fdb0305b22eaa83244f367d797e130ceb3271f112886801",
|
|
9
9
|
"references/task-context.md": "9f995c1fe4d8a27d313b4c008a943fbcdd150029358c70b450dbbfb303a2666e"
|
|
10
10
|
}
|
|
11
11
|
}
|
|
@@ -4,13 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
**Read first:** `reality.md`, `brief.md`, `terrain.md`, `context.md`. If `business-case.md` or `prototype-log.md` exist from poc, load those - they carry forward.
|
|
6
6
|
|
|
7
|
-
The most dangerous moment in a multi-use-case engagement is when the technically interesting problem wins over the high-value problem. Scoring
|
|
7
|
+
The most dangerous moment in a multi-use-case engagement is when the technically interesting problem wins over the high-value problem. Scoring makes assumptions and trade-offs visible; it does not replace evidence or judgment. These ordinal ratings are a discussion aid, not calibrated estimates of value or a reason to override a hard constraint.
|
|
8
8
|
|
|
9
9
|
## Method (you do this work)
|
|
10
10
|
|
|
11
11
|
**1. List every candidate.** From the brief, from discovery conversations, from the FDE's own observations. Include the ones the customer hasn't said aloud but the codebase implies - a high-churn module with no tests is a candidate even if nobody named it.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Before ranking work for the proposed step, identify hard feasibility, access, data-permission and policy constraints. Keep blocked or unverified candidates visible with the affected step, owner or authority gap, and evidence needed to reconsider. A high score cannot make dependent work eligible. An authorized design or evidence check may proceed while implementation is blocked; a sponsor's preference does not grant missing API or data permission.
|
|
14
|
+
|
|
15
|
+
**2. Score on five dimensions.** Each 1-5, with the scoring rubric below. Reuse discovery's evidence and rationale, rechecking whether the candidates are eligible for the same next step. Do not invent dimension scores from a thin brief - write `unknown`, return a conditional recommendation and ask only what changes the decision.
|
|
14
16
|
|
|
15
17
|
| Dimension | 1 | 3 | 5 |
|
|
16
18
|
|-----------|---|---|---|
|
|
@@ -27,11 +29,11 @@ Score = (Business value × Urgency × Stakeholder alignment) / (6 - Feasibility)
|
|
|
27
29
|
```
|
|
28
30
|
|
|
29
31
|
Why this formula:
|
|
30
|
-
- **Multiplied numerator** -
|
|
32
|
+
- **Multiplied numerator** - a lower rating reduces the score relative to otherwise identical ratings. Because every scale starts at 1, the formula does not establish that urgency, sponsorship or permission is present; eligibility must be checked separately.
|
|
31
33
|
- **Feasibility inverted** - harder problems get a higher denominator, pulling the score down. A feasibility of 5 (easy) gives denominator 1; feasibility of 1 (hard) gives denominator 5.
|
|
32
34
|
- **Data readiness as multiplier** - for data-dependent use cases (ML, analytics). For pure engineering work, set to 3 (neutral) unless data quality is genuinely a factor.
|
|
33
35
|
|
|
34
|
-
**4. Rank and present.**
|
|
36
|
+
**4. Rank and present.** Compare eligible candidates; show up to three useful options and list blocked work separately. If an uncertain input could reverse the order, show the plausible alternative rankings and the smallest permitted check that distinguishes them, with its owner or an explicit ownership gap. Do not hide uncertainty in a precise-looking score or delay independent authorized work while waiting. The following scores illustrate a recommendation, not a commitment:
|
|
35
37
|
|
|
36
38
|
```markdown
|
|
37
39
|
| Rank | Use case | Value | Urgency | Feasibility | Data | Alignment | Score | Recommend |
|
|
@@ -49,7 +51,7 @@ Why this formula:
|
|
|
49
51
|
**6. Handle the CEO's pet project.** Sometimes the highest-scoring use case isn't the one the most powerful stakeholder wants. That's information, not a problem:
|
|
50
52
|
|
|
51
53
|
- Present the scores honestly - the stakeholder sees you're being rigorous, not political.
|
|
52
|
-
- If
|
|
54
|
+
- If the responsible decision-maker overrides the ranking, preserve the choice, source and trade-off under the existing record-confirmation rules. Check capacity and required permissions before dependent work; an override changes preference, not hard constraints or acceptance authority. An unconfirmed choice remains proposed.
|
|
53
55
|
|
|
54
56
|
## Artifact
|
|
55
57
|
|
|
@@ -59,12 +61,12 @@ Why this formula:
|
|
|
59
61
|
|
|
60
62
|
## Checkpoint
|
|
61
63
|
|
|
62
|
-
Walk the FDE through the
|
|
64
|
+
Walk the FDE through the eligible options, relevant blockers and any uncertainty that could reverse the recommendation. Keep the proposed allocation pending the appropriate decision authority; silence is not approval. Reuse existing authorization when it covers the next step. If evidence is insufficient, recommend a bounded distinguishing check rather than automatically proceeding with the highest score.
|
|
63
65
|
|
|
64
66
|
## Principles
|
|
65
67
|
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
+
- Scores expose assumptions; evidence and eligible scope govern the recommendation.
|
|
69
|
+
- A numerical advantage cannot override a hard constraint or unknown permission.
|
|
68
70
|
- The technically interesting problem that scores low gets deferred, not pursued.
|
|
69
71
|
- Present the model; let the human decide. If overridden, log the trade-off.
|
|
70
72
|
- A use case with no active sponsor is a research project, not an engagement deliverable.
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
"SKILL.md": "545fa51462ad174899b9a2007daf61f1a56c65d0d514292a1951569d1657912a",
|
|
6
6
|
"agents/openai.yaml": "f114bfdaf8ae71139fe5903965187dca326edb015c709a8e9d74ddd771ac8a6f",
|
|
7
7
|
"references/build.md": "4ebea9776605f79f902d9bf83a065e4cded191d7b5f8defcf58c054514fc34f5",
|
|
8
|
-
"references/debug.md": "
|
|
8
|
+
"references/debug.md": "bdc09abdd7a075574fc2daf91cecfd2858e67d75a964146a118bf782328192f6",
|
|
9
9
|
"references/eval-pack.md": "0590b85d3cae0903c6b1274540c92eaa2a4373047e8a0548d6942516ef0bb9e1",
|
|
10
10
|
"references/integrate.md": "1cb7a60d7545b0bf224fce678a04ce6ccdf368c47877d9c8e4dc4272bb0d5b0c",
|
|
11
11
|
"references/qa.md": "41de4d70827c83291efa217e97d777f62ec2849827687fbba7e4b1d17484b87e",
|
|
12
|
-
"references/review.md": "
|
|
12
|
+
"references/review.md": "8fa35eacdc04d5e818e046e6da8f61f126e08d9c6a1073b2eaa19f72d4bfea3a",
|
|
13
13
|
"references/ship.md": "95f51772b29de6f7d174f1f7678f15d46a3a5327dcb8facb94288e27907ae92c",
|
|
14
14
|
"references/task-context.md": "9f995c1fe4d8a27d313b4c008a943fbcdd150029358c70b450dbbfb303a2666e",
|
|
15
15
|
"references/verification.md": "8ee2502112a37eedfdacf929041e7b91e9e6fabb007408a1ee2e2992e3af6ff6"
|
|
@@ -10,7 +10,7 @@ Follow [task context](task-context.md); permitted supplied evidence is enough wi
|
|
|
10
10
|
|
|
11
11
|
Capture expected and observed behavior, the trigger or input, revision, environment, and last known working state. Keep useful errors and timestamps, without secrets or raw private data. Label unverified reports as reports.
|
|
12
12
|
|
|
13
|
-
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding.
|
|
13
|
+
Inspect the affected path, callers, relevant changes, and existing tests. Reproduce with the smallest representative case in a permitted environment when practical. If reproduction is unavailable, state the gap and use traces or other safe observations to distinguish causes. Keep investigating without promoting a hypothesis to a finding. Ask for the smallest permitted observation that distinguishes the remaining causes; an operator-run check or approved excerpt may be enough without granting the agent additional access.
|
|
14
14
|
|
|
15
15
|
## Test the explanation
|
|
16
16
|
|
|
@@ -6,7 +6,7 @@ Use [task context](task-context.md). Obtain the intended outcome, acceptance che
|
|
|
6
6
|
|
|
7
7
|
## Establish what was reviewed
|
|
8
8
|
|
|
9
|
-
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations.
|
|
9
|
+
Identify the repository, base and head revision, staged/unstaged changes, and relevant untracked files. Read applicable instructions and the full in-scope diff, then inspect callers and tests where needed. A committed-range diff alone omits working-tree edits. Record missing files or unavailable context as limitations. For each limitation that affects the verdict, name the narrow excerpt or owner-run check needed to resolve it; continue reviewing the supplied scope without requesting whole-repository or production access by default.
|
|
10
10
|
|
|
11
11
|
State the review source: **self-check** when the author inspects their own work; **independent review** only when a separate person or agent actually examines it. A second pass by the same agent is still a self-check. Name the actual reviewer/source and reviewed revision when available. Do not fabricate a reviewer, dialogue, approval, or clean verdict. Use an available separate reviewer for substantial or risky changes when authorized; otherwise report the missing independent review and continue useful self-checks.
|
|
12
12
|
|