@cleocode/skills 2026.4.161 → 2026.5.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/package.json +1 -1
- package/skills/ct-council/SKILL.md +377 -0
- package/skills/ct-council/optimization/HARDENING-PLAYBOOK.md +107 -0
- package/skills/ct-council/optimization/README.md +74 -0
- package/skills/ct-council/optimization/scenarios.yaml +121 -0
- package/skills/ct-council/optimization/scripts/campaign.py +543 -0
- package/skills/ct-council/optimization/scripts/test_campaign.py +143 -0
- package/skills/ct-council/references/chairman.md +119 -0
- package/skills/ct-council/references/contrarian.md +70 -0
- package/skills/ct-council/references/evidence-pack.md +145 -0
- package/skills/ct-council/references/examples.md +235 -0
- package/skills/ct-council/references/executor.md +83 -0
- package/skills/ct-council/references/expansionist.md +68 -0
- package/skills/ct-council/references/first-principles.md +73 -0
- package/skills/ct-council/references/outsider.md +73 -0
- package/skills/ct-council/references/peer-review.md +125 -0
- package/skills/ct-council/scripts/analyze_runs.py +293 -0
- package/skills/ct-council/scripts/fixtures/executor_multi.md +198 -0
- package/skills/ct-council/scripts/fixtures/missing_advisor.md +117 -0
- package/skills/ct-council/scripts/fixtures/missing_convergence.md +190 -0
- package/skills/ct-council/scripts/fixtures/thin_evidence.md +193 -0
- package/skills/ct-council/scripts/fixtures/valid.md +226 -0
- package/skills/ct-council/scripts/fixtures/valid_with_llmtxt.md +226 -0
- package/skills/ct-council/scripts/llmtxt_ref.py +223 -0
- package/skills/ct-council/scripts/run_council.py +578 -0
- package/skills/ct-council/scripts/telemetry.py +624 -0
- package/skills/ct-council/scripts/test_telemetry.py +509 -0
- package/skills/ct-council/scripts/test_validate.py +452 -0
- package/skills/ct-council/scripts/validate.py +396 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# The Council — Should we add a retry-on-timeout wrapper to outbound HTTP calls?
|
|
2
|
+
|
|
3
|
+
## Evidence pack
|
|
4
|
+
|
|
5
|
+
1. `packages/core/src/http.ts:L12-L58` — current httpGet/httpPost; no retry logic.
|
|
6
|
+
2. `packages/core/src/circuit-breaker.ts` — exists with zero callers.
|
|
7
|
+
3. commit `a1b2c3d "drop retries from http client"` — retries removed 18 months ago.
|
|
8
|
+
|
|
9
|
+
## Phase 1 — Advisor analyses
|
|
10
|
+
|
|
11
|
+
### Advisor: Contrarian
|
|
12
|
+
|
|
13
|
+
**Frame:** Assume the plan is wrong.
|
|
14
|
+
|
|
15
|
+
**Evidence anchored:**
|
|
16
|
+
- commit `a1b2c3d` — retries were pulled for a documented reason.
|
|
17
|
+
- `packages/core/src/http.ts` — zero per-caller rate limits.
|
|
18
|
+
|
|
19
|
+
**Findings:**
|
|
20
|
+
1. Retry storm risk.
|
|
21
|
+
|
|
22
|
+
**Verdict from this lens:** Plan re-introduces known incident class.
|
|
23
|
+
|
|
24
|
+
**Single sharpest point:** Retry wrapper without breaker reproduces old bug.
|
|
25
|
+
|
|
26
|
+
### Advisor: First Principles
|
|
27
|
+
|
|
28
|
+
**Frame:** Ignore everything that was said.
|
|
29
|
+
|
|
30
|
+
**Evidence anchored:**
|
|
31
|
+
- RFC 7231 — HTTP POST semantics.
|
|
32
|
+
- `packages/core/src/http.ts:L12-L58`.
|
|
33
|
+
|
|
34
|
+
**Verdict from this lens:** Plan is incomplete.
|
|
35
|
+
|
|
36
|
+
**Single sharpest point:** Non-idempotent requests cannot be blindly retried.
|
|
37
|
+
|
|
38
|
+
### Advisor: Expansionist
|
|
39
|
+
|
|
40
|
+
**Frame:** Forget the constraints.
|
|
41
|
+
|
|
42
|
+
**Evidence anchored:**
|
|
43
|
+
- `packages/core/src/circuit-breaker.ts`.
|
|
44
|
+
- `MEMORY.md`.
|
|
45
|
+
|
|
46
|
+
**Verdict from this lens:** Owner thinking too small.
|
|
47
|
+
|
|
48
|
+
**Single sharpest point:** Wire the circuit breaker for asymmetric upside.
|
|
49
|
+
|
|
50
|
+
### Advisor: Executor
|
|
51
|
+
|
|
52
|
+
**Frame:** Don't analyze.
|
|
53
|
+
|
|
54
|
+
**Evidence anchored:**
|
|
55
|
+
- `packages/core/test/http.test.ts`.
|
|
56
|
+
- `packages/core/src/circuit-breaker.ts`.
|
|
57
|
+
|
|
58
|
+
**The action (one):**
|
|
59
|
+
Write a failing test.
|
|
60
|
+
|
|
61
|
+
**Expected outcome (60 minutes from now):**
|
|
62
|
+
New test file.
|
|
63
|
+
|
|
64
|
+
**What this unblocks:**
|
|
65
|
+
Test-first implementation.
|
|
66
|
+
|
|
67
|
+
**Verdict from this lens:** Pin design before prose.
|
|
68
|
+
|
|
69
|
+
**Single sharpest point:** Write the test.
|
|
70
|
+
|
|
71
|
+
## Phase 2 — Shuffled peer reviews
|
|
72
|
+
|
|
73
|
+
### Contrarian reviewing First Principles
|
|
74
|
+
|
|
75
|
+
**Gate results:**
|
|
76
|
+
- G1 Rigor: PASS — finding is specific.
|
|
77
|
+
- G2 Evidence grounding: PASS — cites sources.
|
|
78
|
+
- G3 Frame integrity: PASS — stayed in lane.
|
|
79
|
+
- G4 Actionability: PASS — decidable.
|
|
80
|
+
|
|
81
|
+
**Strongest finding (from reviewee):** Idempotency atom.
|
|
82
|
+
|
|
83
|
+
**Gap from Contrarian's frame:** No incident class named.
|
|
84
|
+
|
|
85
|
+
**What I would add:** Data-integrity hazard.
|
|
86
|
+
|
|
87
|
+
**Disposition:** Accept — holds up.
|
|
88
|
+
|
|
89
|
+
## Phase 2.5 — Convergence check
|
|
90
|
+
|
|
91
|
+
No convergence.
|
|
92
|
+
|
|
93
|
+
## Phase 3 — Chairman's verdict
|
|
94
|
+
|
|
95
|
+
### Gate summary
|
|
96
|
+
|
|
97
|
+
| Advisor | G1 | G2 | G3 | G4 | Weight |
|
|
98
|
+
|---|---|---|---|---|---|
|
|
99
|
+
| Contrarian | PASS | PASS | PASS | PASS | full |
|
|
100
|
+
|
|
101
|
+
### Recommendation
|
|
102
|
+
Do not ship.
|
|
103
|
+
|
|
104
|
+
### Why this, not the alternatives
|
|
105
|
+
Incomplete run.
|
|
106
|
+
|
|
107
|
+
### What each advisor got right
|
|
108
|
+
Incomplete.
|
|
109
|
+
|
|
110
|
+
### Conditions on the recommendation
|
|
111
|
+
Unconditional.
|
|
112
|
+
|
|
113
|
+
### Next 60-minute action
|
|
114
|
+
Rerun the council with the Outsider included.
|
|
115
|
+
|
|
116
|
+
### Confidence
|
|
117
|
+
Low — incomplete advisor coverage.
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# The Council — Should we add a retry-on-timeout wrapper to outbound HTTP calls?
|
|
2
|
+
|
|
3
|
+
## Evidence pack
|
|
4
|
+
|
|
5
|
+
1. `packages/core/src/http.ts:L12-L58` — current httpGet/httpPost.
|
|
6
|
+
2. `packages/core/src/circuit-breaker.ts` — exists with zero callers.
|
|
7
|
+
3. commit `a1b2c3d` — retries removed 18 months ago.
|
|
8
|
+
|
|
9
|
+
## Phase 1 — Advisor analyses
|
|
10
|
+
|
|
11
|
+
### Advisor: Contrarian
|
|
12
|
+
|
|
13
|
+
**Frame:** Assume the plan is wrong.
|
|
14
|
+
|
|
15
|
+
**Evidence anchored:**
|
|
16
|
+
- commit `a1b2c3d`.
|
|
17
|
+
- `packages/core/src/http.ts`.
|
|
18
|
+
|
|
19
|
+
**Verdict from this lens:** Risk.
|
|
20
|
+
|
|
21
|
+
**Single sharpest point:** Retry wrapper reproduces old bug.
|
|
22
|
+
|
|
23
|
+
### Advisor: First Principles
|
|
24
|
+
|
|
25
|
+
**Frame:** Atoms.
|
|
26
|
+
|
|
27
|
+
**Evidence anchored:**
|
|
28
|
+
- RFC 7231.
|
|
29
|
+
- `http.ts`.
|
|
30
|
+
|
|
31
|
+
**Verdict from this lens:** Incomplete.
|
|
32
|
+
|
|
33
|
+
**Single sharpest point:** Idempotency required.
|
|
34
|
+
|
|
35
|
+
### Advisor: Expansionist
|
|
36
|
+
|
|
37
|
+
**Frame:** Upside.
|
|
38
|
+
|
|
39
|
+
**Evidence anchored:**
|
|
40
|
+
- `circuit-breaker.ts`.
|
|
41
|
+
- `MEMORY.md`.
|
|
42
|
+
|
|
43
|
+
**Verdict from this lens:** Upside missed.
|
|
44
|
+
|
|
45
|
+
**Single sharpest point:** Wire the breaker.
|
|
46
|
+
|
|
47
|
+
### Advisor: Outsider
|
|
48
|
+
|
|
49
|
+
**Frame:** Stranger.
|
|
50
|
+
|
|
51
|
+
**Evidence anchored:**
|
|
52
|
+
- `circuit-breaker.ts`.
|
|
53
|
+
- `ADR-021`.
|
|
54
|
+
|
|
55
|
+
**Verdict from this lens:** Preparation unfinished.
|
|
56
|
+
|
|
57
|
+
**Single sharpest point:** ADR precondition met.
|
|
58
|
+
|
|
59
|
+
### Advisor: Executor
|
|
60
|
+
|
|
61
|
+
**Frame:** Action.
|
|
62
|
+
|
|
63
|
+
**Evidence anchored:**
|
|
64
|
+
- `http.test.ts`.
|
|
65
|
+
- `circuit-breaker.ts`.
|
|
66
|
+
|
|
67
|
+
**The action (one):**
|
|
68
|
+
Write failing test.
|
|
69
|
+
|
|
70
|
+
**Expected outcome (60 minutes from now):**
|
|
71
|
+
Test exists.
|
|
72
|
+
|
|
73
|
+
**What this unblocks:**
|
|
74
|
+
Implementation.
|
|
75
|
+
|
|
76
|
+
**Verdict from this lens:** Pin first.
|
|
77
|
+
|
|
78
|
+
**Single sharpest point:** Write the test.
|
|
79
|
+
|
|
80
|
+
## Phase 2 — Shuffled peer reviews
|
|
81
|
+
|
|
82
|
+
### Contrarian reviewing First Principles
|
|
83
|
+
|
|
84
|
+
**Gate results:**
|
|
85
|
+
- G1 Rigor: PASS — specific.
|
|
86
|
+
- G2 Evidence grounding: PASS — cited.
|
|
87
|
+
- G3 Frame integrity: PASS — in lane.
|
|
88
|
+
- G4 Actionability: PASS — decidable.
|
|
89
|
+
|
|
90
|
+
**Strongest finding (from reviewee):** Idempotency.
|
|
91
|
+
|
|
92
|
+
**Gap from Contrarian's frame:** None.
|
|
93
|
+
|
|
94
|
+
**What I would add:** Nothing.
|
|
95
|
+
|
|
96
|
+
**Disposition:** Accept — holds.
|
|
97
|
+
|
|
98
|
+
### First Principles reviewing Expansionist
|
|
99
|
+
|
|
100
|
+
**Gate results:**
|
|
101
|
+
- G1 Rigor: PASS — specific.
|
|
102
|
+
- G2 Evidence grounding: PASS — cited.
|
|
103
|
+
- G3 Frame integrity: PASS — in lane.
|
|
104
|
+
- G4 Actionability: PASS — decidable.
|
|
105
|
+
|
|
106
|
+
**Strongest finding (from reviewee):** Asset.
|
|
107
|
+
|
|
108
|
+
**Gap from First Principles' frame:** None.
|
|
109
|
+
|
|
110
|
+
**What I would add:** Nothing.
|
|
111
|
+
|
|
112
|
+
**Disposition:** Accept — holds.
|
|
113
|
+
|
|
114
|
+
### Expansionist reviewing Outsider
|
|
115
|
+
|
|
116
|
+
**Gate results:**
|
|
117
|
+
- G1 Rigor: PASS — specific.
|
|
118
|
+
- G2 Evidence grounding: PASS — cited.
|
|
119
|
+
- G3 Frame integrity: PASS — in lane.
|
|
120
|
+
- G4 Actionability: PASS — decidable.
|
|
121
|
+
|
|
122
|
+
**Strongest finding (from reviewee):** ADR gap.
|
|
123
|
+
|
|
124
|
+
**Gap from Expansionist's frame:** None.
|
|
125
|
+
|
|
126
|
+
**What I would add:** Nothing.
|
|
127
|
+
|
|
128
|
+
**Disposition:** Accept — holds.
|
|
129
|
+
|
|
130
|
+
### Outsider reviewing Executor
|
|
131
|
+
|
|
132
|
+
**Gate results:**
|
|
133
|
+
- G1 Rigor: PASS — specific.
|
|
134
|
+
- G2 Evidence grounding: PASS — cited.
|
|
135
|
+
- G3 Frame integrity: PASS — in lane.
|
|
136
|
+
- G4 Actionability: PASS — decidable.
|
|
137
|
+
|
|
138
|
+
**Strongest finding (from reviewee):** Test.
|
|
139
|
+
|
|
140
|
+
**Gap from Outsider's frame:** None.
|
|
141
|
+
|
|
142
|
+
**What I would add:** Nothing.
|
|
143
|
+
|
|
144
|
+
**Disposition:** Accept — holds.
|
|
145
|
+
|
|
146
|
+
### Executor reviewing Contrarian
|
|
147
|
+
|
|
148
|
+
**Gate results:**
|
|
149
|
+
- G1 Rigor: PASS — specific.
|
|
150
|
+
- G2 Evidence grounding: PASS — cited.
|
|
151
|
+
- G3 Frame integrity: PASS — in lane.
|
|
152
|
+
- G4 Actionability: PASS — decidable.
|
|
153
|
+
|
|
154
|
+
**Strongest finding (from reviewee):** Retry storm.
|
|
155
|
+
|
|
156
|
+
**Gap from Executor's frame:** No mitigation.
|
|
157
|
+
|
|
158
|
+
**What I would add:** Wire breaker first.
|
|
159
|
+
|
|
160
|
+
**Disposition:** Accept — real.
|
|
161
|
+
|
|
162
|
+
## Phase 3 — Chairman's verdict
|
|
163
|
+
|
|
164
|
+
### Gate summary
|
|
165
|
+
|
|
166
|
+
| Advisor | G1 | G2 | G3 | G4 | Weight |
|
|
167
|
+
|---|---|---|---|---|---|
|
|
168
|
+
| Contrarian | PASS | PASS | PASS | PASS | full |
|
|
169
|
+
| First Principles | PASS | PASS | PASS | PASS | full |
|
|
170
|
+
| Expansionist | PASS | PASS | PASS | PASS | full |
|
|
171
|
+
| Outsider | PASS | PASS | PASS | PASS | full |
|
|
172
|
+
| Executor | PASS | PASS | PASS | PASS | full |
|
|
173
|
+
|
|
174
|
+
### Recommendation
|
|
175
|
+
Ship conditionally.
|
|
176
|
+
|
|
177
|
+
### Why this, not the alternatives
|
|
178
|
+
Convergence check was skipped.
|
|
179
|
+
|
|
180
|
+
### What each advisor got right
|
|
181
|
+
Various.
|
|
182
|
+
|
|
183
|
+
### Conditions on the recommendation
|
|
184
|
+
Run convergence detector before accepting verdict.
|
|
185
|
+
|
|
186
|
+
### Next 60-minute action
|
|
187
|
+
Add Phase 2.5 section with convergence analysis.
|
|
188
|
+
|
|
189
|
+
### Confidence
|
|
190
|
+
Low — convergence check missing.
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# The Council — Should we add a retry-on-timeout wrapper to outbound HTTP calls?
|
|
2
|
+
|
|
3
|
+
## Evidence pack
|
|
4
|
+
|
|
5
|
+
1. `packages/core/src/http.ts:L12-L58` — current httpGet/httpPost.
|
|
6
|
+
2. `packages/core/src/circuit-breaker.ts` — exists with zero callers.
|
|
7
|
+
|
|
8
|
+
## Phase 1 — Advisor analyses
|
|
9
|
+
|
|
10
|
+
### Advisor: Contrarian
|
|
11
|
+
|
|
12
|
+
**Frame:** Assume the plan is wrong.
|
|
13
|
+
|
|
14
|
+
**Evidence anchored:**
|
|
15
|
+
- commit `a1b2c3d`.
|
|
16
|
+
- `packages/core/src/http.ts`.
|
|
17
|
+
|
|
18
|
+
**Verdict from this lens:** Risk.
|
|
19
|
+
|
|
20
|
+
**Single sharpest point:** Retry wrapper reproduces old bug.
|
|
21
|
+
|
|
22
|
+
### Advisor: First Principles
|
|
23
|
+
|
|
24
|
+
**Frame:** Atoms.
|
|
25
|
+
|
|
26
|
+
**Evidence anchored:**
|
|
27
|
+
- RFC 7231.
|
|
28
|
+
- `http.ts`.
|
|
29
|
+
|
|
30
|
+
**Verdict from this lens:** Incomplete.
|
|
31
|
+
|
|
32
|
+
**Single sharpest point:** Idempotency required.
|
|
33
|
+
|
|
34
|
+
### Advisor: Expansionist
|
|
35
|
+
|
|
36
|
+
**Frame:** Upside.
|
|
37
|
+
|
|
38
|
+
**Evidence anchored:**
|
|
39
|
+
- `circuit-breaker.ts`.
|
|
40
|
+
- `MEMORY.md`.
|
|
41
|
+
|
|
42
|
+
**Verdict from this lens:** Upside missed.
|
|
43
|
+
|
|
44
|
+
**Single sharpest point:** Wire the breaker.
|
|
45
|
+
|
|
46
|
+
### Advisor: Outsider
|
|
47
|
+
|
|
48
|
+
**Frame:** Stranger.
|
|
49
|
+
|
|
50
|
+
**Evidence anchored:**
|
|
51
|
+
- `circuit-breaker.ts`.
|
|
52
|
+
- `ADR-021`.
|
|
53
|
+
|
|
54
|
+
**Verdict from this lens:** Preparation unfinished.
|
|
55
|
+
|
|
56
|
+
**Single sharpest point:** ADR precondition already met.
|
|
57
|
+
|
|
58
|
+
### Advisor: Executor
|
|
59
|
+
|
|
60
|
+
**Frame:** Action.
|
|
61
|
+
|
|
62
|
+
**Evidence anchored:**
|
|
63
|
+
- `http.test.ts`.
|
|
64
|
+
- `circuit-breaker.ts`.
|
|
65
|
+
|
|
66
|
+
**The action (one):**
|
|
67
|
+
Write failing test.
|
|
68
|
+
|
|
69
|
+
**Expected outcome (60 minutes from now):**
|
|
70
|
+
Test exists.
|
|
71
|
+
|
|
72
|
+
**What this unblocks:**
|
|
73
|
+
Implementation.
|
|
74
|
+
|
|
75
|
+
**Verdict from this lens:** Pin first.
|
|
76
|
+
|
|
77
|
+
**Single sharpest point:** Write the test.
|
|
78
|
+
|
|
79
|
+
## Phase 2 — Shuffled peer reviews
|
|
80
|
+
|
|
81
|
+
### Contrarian reviewing First Principles
|
|
82
|
+
|
|
83
|
+
**Gate results:**
|
|
84
|
+
- G1 Rigor: PASS — specific.
|
|
85
|
+
- G2 Evidence grounding: PASS — cited.
|
|
86
|
+
- G3 Frame integrity: PASS — in lane.
|
|
87
|
+
- G4 Actionability: PASS — decidable.
|
|
88
|
+
|
|
89
|
+
**Strongest finding (from reviewee):** Idempotency.
|
|
90
|
+
|
|
91
|
+
**Gap from Contrarian's frame:** None.
|
|
92
|
+
|
|
93
|
+
**What I would add:** Nothing.
|
|
94
|
+
|
|
95
|
+
**Disposition:** Accept — holds.
|
|
96
|
+
|
|
97
|
+
### First Principles reviewing Expansionist
|
|
98
|
+
|
|
99
|
+
**Gate results:**
|
|
100
|
+
- G1 Rigor: PASS — specific.
|
|
101
|
+
- G2 Evidence grounding: PASS — cited.
|
|
102
|
+
- G3 Frame integrity: PASS — in lane.
|
|
103
|
+
- G4 Actionability: PASS — decidable.
|
|
104
|
+
|
|
105
|
+
**Strongest finding (from reviewee):** Asset.
|
|
106
|
+
|
|
107
|
+
**Gap from First Principles' frame:** None.
|
|
108
|
+
|
|
109
|
+
**What I would add:** Nothing.
|
|
110
|
+
|
|
111
|
+
**Disposition:** Accept — holds.
|
|
112
|
+
|
|
113
|
+
### Expansionist reviewing Outsider
|
|
114
|
+
|
|
115
|
+
**Gate results:**
|
|
116
|
+
- G1 Rigor: PASS — specific.
|
|
117
|
+
- G2 Evidence grounding: PASS — cited.
|
|
118
|
+
- G3 Frame integrity: PASS — in lane.
|
|
119
|
+
- G4 Actionability: PASS — decidable.
|
|
120
|
+
|
|
121
|
+
**Strongest finding (from reviewee):** ADR gap.
|
|
122
|
+
|
|
123
|
+
**Gap from Expansionist's frame:** None.
|
|
124
|
+
|
|
125
|
+
**What I would add:** Nothing.
|
|
126
|
+
|
|
127
|
+
**Disposition:** Accept — holds.
|
|
128
|
+
|
|
129
|
+
### Outsider reviewing Executor
|
|
130
|
+
|
|
131
|
+
**Gate results:**
|
|
132
|
+
- G1 Rigor: PASS — specific.
|
|
133
|
+
- G2 Evidence grounding: PASS — cited.
|
|
134
|
+
- G3 Frame integrity: PASS — in lane.
|
|
135
|
+
- G4 Actionability: PASS — decidable.
|
|
136
|
+
|
|
137
|
+
**Strongest finding (from reviewee):** Test.
|
|
138
|
+
|
|
139
|
+
**Gap from Outsider's frame:** None.
|
|
140
|
+
|
|
141
|
+
**What I would add:** Nothing.
|
|
142
|
+
|
|
143
|
+
**Disposition:** Accept — holds.
|
|
144
|
+
|
|
145
|
+
### Executor reviewing Contrarian
|
|
146
|
+
|
|
147
|
+
**Gate results:**
|
|
148
|
+
- G1 Rigor: PASS — specific.
|
|
149
|
+
- G2 Evidence grounding: PASS — cited.
|
|
150
|
+
- G3 Frame integrity: PASS — in lane.
|
|
151
|
+
- G4 Actionability: PASS — decidable.
|
|
152
|
+
|
|
153
|
+
**Strongest finding (from reviewee):** Retry storm.
|
|
154
|
+
|
|
155
|
+
**Gap from Executor's frame:** No mitigation.
|
|
156
|
+
|
|
157
|
+
**What I would add:** Wire breaker first.
|
|
158
|
+
|
|
159
|
+
**Disposition:** Accept — real.
|
|
160
|
+
|
|
161
|
+
## Phase 2.5 — Convergence check
|
|
162
|
+
|
|
163
|
+
No convergence.
|
|
164
|
+
|
|
165
|
+
## Phase 3 — Chairman's verdict
|
|
166
|
+
|
|
167
|
+
### Gate summary
|
|
168
|
+
|
|
169
|
+
| Advisor | G1 | G2 | G3 | G4 | Weight |
|
|
170
|
+
|---|---|---|---|---|---|
|
|
171
|
+
| Contrarian | PASS | PASS | PASS | PASS | full |
|
|
172
|
+
| First Principles | PASS | PASS | PASS | PASS | full |
|
|
173
|
+
| Expansionist | PASS | PASS | PASS | PASS | full |
|
|
174
|
+
| Outsider | PASS | PASS | PASS | PASS | full |
|
|
175
|
+
| Executor | PASS | PASS | PASS | PASS | full |
|
|
176
|
+
|
|
177
|
+
### Recommendation
|
|
178
|
+
Ship with conditions.
|
|
179
|
+
|
|
180
|
+
### Why this, not the alternatives
|
|
181
|
+
Thin evidence pack limits confidence.
|
|
182
|
+
|
|
183
|
+
### What each advisor got right
|
|
184
|
+
Various.
|
|
185
|
+
|
|
186
|
+
### Conditions on the recommendation
|
|
187
|
+
Expand the evidence pack.
|
|
188
|
+
|
|
189
|
+
### Next 60-minute action
|
|
190
|
+
Run git log -20 in packages/core/ to expand the evidence pack before re-running.
|
|
191
|
+
|
|
192
|
+
### Confidence
|
|
193
|
+
Low — evidence pack underspecified.
|