mishkan-harness 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +205 -0
  3. package/bin/mishkan.js +221 -0
  4. package/docs/design/MISHKAN_agent_aliases.md +140 -0
  5. package/docs/design/MISHKAN_decisions.md +172 -0
  6. package/docs/design/MISHKAN_harness_design.md +820 -0
  7. package/docs/design/MISHKAN_ontology.md +87 -0
  8. package/docs/design/MISHKAN_token_optimisation.md +181 -0
  9. package/docs/engineer/README.md +37 -0
  10. package/docs/engineer/profile.example.md +79 -0
  11. package/docs/usage/01-installation.md +178 -0
  12. package/docs/usage/02-project-init.md +151 -0
  13. package/docs/usage/03-orchestration.md +218 -0
  14. package/docs/usage/04-memory-layer.md +201 -0
  15. package/docs/usage/05-selective-ingest.md +177 -0
  16. package/docs/usage/06-llm-providers.md +195 -0
  17. package/docs/usage/07-troubleshooting.md +316 -0
  18. package/docs/usage/08-glossary.md +154 -0
  19. package/docs/usage/09-workflows.md +123 -0
  20. package/docs/usage/README.md +77 -0
  21. package/package.json +43 -0
  22. package/payload/install/settings.hooks.json +47 -0
  23. package/payload/mishkan/AGENT_SPEC.md +154 -0
  24. package/payload/mishkan/agents/ahikam.md +58 -0
  25. package/payload/mishkan/agents/aholiab.md +68 -0
  26. package/payload/mishkan/agents/asaph.md +73 -0
  27. package/payload/mishkan/agents/baruch.md +88 -0
  28. package/payload/mishkan/agents/benaiah.md +76 -0
  29. package/payload/mishkan/agents/bezalel.md +83 -0
  30. package/payload/mishkan/agents/caleb.md +74 -0
  31. package/payload/mishkan/agents/deborah.md +63 -0
  32. package/payload/mishkan/agents/elasah.md +58 -0
  33. package/payload/mishkan/agents/eliashib.md +68 -0
  34. package/payload/mishkan/agents/ezra.md +69 -0
  35. package/payload/mishkan/agents/hanun.md +64 -0
  36. package/payload/mishkan/agents/hiram.md +68 -0
  37. package/payload/mishkan/agents/hizkiah.md +76 -0
  38. package/payload/mishkan/agents/huldah.md +59 -0
  39. package/payload/mishkan/agents/huram.md +66 -0
  40. package/payload/mishkan/agents/hushai.md +59 -0
  41. package/payload/mishkan/agents/igal.md +58 -0
  42. package/payload/mishkan/agents/ira.md +86 -0
  43. package/payload/mishkan/agents/jahaziel.md +71 -0
  44. package/payload/mishkan/agents/jakin.md +66 -0
  45. package/payload/mishkan/agents/jehonathan.md +62 -0
  46. package/payload/mishkan/agents/jehoshaphat.md +68 -0
  47. package/payload/mishkan/agents/joab.md +71 -0
  48. package/payload/mishkan/agents/joah.md +62 -0
  49. package/payload/mishkan/agents/maaseiah.md +61 -0
  50. package/payload/mishkan/agents/meremoth.md +65 -0
  51. package/payload/mishkan/agents/meshullam.md +67 -0
  52. package/payload/mishkan/agents/nathan.md +70 -0
  53. package/payload/mishkan/agents/nehemiah.md +93 -0
  54. package/payload/mishkan/agents/obed.md +60 -0
  55. package/payload/mishkan/agents/oholiab.md +67 -0
  56. package/payload/mishkan/agents/palal.md +63 -0
  57. package/payload/mishkan/agents/phinehas.md +73 -0
  58. package/payload/mishkan/agents/rehum.md +60 -0
  59. package/payload/mishkan/agents/salma.md +69 -0
  60. package/payload/mishkan/agents/seraiah.md +73 -0
  61. package/payload/mishkan/agents/shallum.md +66 -0
  62. package/payload/mishkan/agents/shaphan.md +64 -0
  63. package/payload/mishkan/agents/shemaiah.md +67 -0
  64. package/payload/mishkan/agents/shevna.md +58 -0
  65. package/payload/mishkan/agents/uriah.md +70 -0
  66. package/payload/mishkan/agents/zaccur.md +58 -0
  67. package/payload/mishkan/agents/zadok.md +67 -0
  68. package/payload/mishkan/agents/zerubbabel.md +69 -0
  69. package/payload/mishkan/cognee/.env.curated.example +61 -0
  70. package/payload/mishkan/cognee/.env.example +165 -0
  71. package/payload/mishkan/cognee/Dockerfile +50 -0
  72. package/payload/mishkan/cognee/README.md +129 -0
  73. package/payload/mishkan/cognee/docker-compose.curated-ui.yml +61 -0
  74. package/payload/mishkan/cognee/docker-compose.curated.yml +85 -0
  75. package/payload/mishkan/cognee/docker-compose.hardening.yml +16 -0
  76. package/payload/mishkan/cognee/docker-compose.selfhosted.yml +114 -0
  77. package/payload/mishkan/cognee/docker-compose.ui.yml +70 -0
  78. package/payload/mishkan/cognee/docker-compose.yml +71 -0
  79. package/payload/mishkan/cognee/ingest-curated.py +92 -0
  80. package/payload/mishkan/commands/dep-audit.md +24 -0
  81. package/payload/mishkan/commands/mishkan-init.md +25 -0
  82. package/payload/mishkan/commands/mishkan-resume.md +21 -0
  83. package/payload/mishkan/commands/promote.md +19 -0
  84. package/payload/mishkan/commands/sefer-pull.md +19 -0
  85. package/payload/mishkan/commands/sprint-close.md +21 -0
  86. package/payload/mishkan/config/curated-library.yaml +113 -0
  87. package/payload/mishkan/config/improvement-queries.md +29 -0
  88. package/payload/mishkan/config/model-routing.yaml +87 -0
  89. package/payload/mishkan/config/projects.yaml +38 -0
  90. package/payload/mishkan/evals/baruch/README.md +93 -0
  91. package/payload/mishkan/evals/baruch/fixtures/invalid/bad-outcome-enum.json +15 -0
  92. package/payload/mishkan/evals/baruch/fixtures/invalid/bad-sprint-pattern.json +15 -0
  93. package/payload/mishkan/evals/baruch/fixtures/invalid/bad-trigger-enum.json +15 -0
  94. package/payload/mishkan/evals/baruch/fixtures/invalid/malformed-json.json +7 -0
  95. package/payload/mishkan/evals/baruch/fixtures/invalid/missing-required-field.json +14 -0
  96. package/payload/mishkan/evals/baruch/fixtures/valid/blocked-vendor.json +15 -0
  97. package/payload/mishkan/evals/baruch/fixtures/valid/curated-shortcircuit.json +15 -0
  98. package/payload/mishkan/evals/baruch/fixtures/valid/partial-no-write.json +14 -0
  99. package/payload/mishkan/evals/baruch/fixtures/valid/resolved-cross-harness.json +15 -0
  100. package/payload/mishkan/evals/baruch/golden_case/expected.yaml +35 -0
  101. package/payload/mishkan/evals/baruch/golden_case/input.yaml +47 -0
  102. package/payload/mishkan/evals/baruch/golden_case/produced.json +15 -0
  103. package/payload/mishkan/evals/baruch/run.sh +129 -0
  104. package/payload/mishkan/hooks/model-route.py +96 -0
  105. package/payload/mishkan/hooks/post-tool-observe.sh +45 -0
  106. package/payload/mishkan/hooks/pre-tool-security.sh +150 -0
  107. package/payload/mishkan/hooks/session-start.sh +20 -0
  108. package/payload/mishkan/hooks/stop-reporter.sh +29 -0
  109. package/payload/mishkan/ontology.md +87 -0
  110. package/payload/mishkan/rules/backend/yasad.md +23 -0
  111. package/payload/mishkan/rules/common/dependencies.md +53 -0
  112. package/payload/mishkan/rules/common/quality.md +16 -0
  113. package/payload/mishkan/rules/common/security.md +20 -0
  114. package/payload/mishkan/rules/documentation/sefer.md +19 -0
  115. package/payload/mishkan/rules/frontend/panim.md +21 -0
  116. package/payload/mishkan/rules/infrastructure/migdal.md +22 -0
  117. package/payload/mishkan/scripts/dependency-audit.sh +171 -0
  118. package/payload/mishkan/scripts/ensure-curated-box.sh +66 -0
  119. package/payload/mishkan/scripts/mishkan-ingest.sh +92 -0
  120. package/payload/mishkan/scripts/observability-aggregate.sh +57 -0
  121. package/payload/mishkan/scripts/seed-curated-library.sh +62 -0
  122. package/payload/mishkan/scripts/sync-profile.sh +65 -0
  123. package/payload/mishkan/scripts/validate-research-log.sh +108 -0
  124. package/payload/mishkan/skills/asaph-a11y-seo-craft/SKILL.md +289 -0
  125. package/payload/mishkan/skills/baruch-research-reporting-craft/SKILL.md +460 -0
  126. package/payload/mishkan/skills/benaiah-devsecops-craft/SKILL.md +329 -0
  127. package/payload/mishkan/skills/bezalel-cto-craft/SKILL.md +391 -0
  128. package/payload/mishkan/skills/caleb-web-research-craft/SKILL.md +306 -0
  129. package/payload/mishkan/skills/cognee-promote/SKILL.md +40 -0
  130. package/payload/mishkan/skills/cognee-quickstart/SKILL.md +66 -0
  131. package/payload/mishkan/skills/context-compress/SKILL.md +36 -0
  132. package/payload/mishkan/skills/deborah-ux-craft/SKILL.md +295 -0
  133. package/payload/mishkan/skills/dependency-audit/SKILL.md +59 -0
  134. package/payload/mishkan/skills/dependency-vetting/SKILL.md +59 -0
  135. package/payload/mishkan/skills/documentation-craft/SKILL.md +468 -0
  136. package/payload/mishkan/skills/ezra-research-formulation-craft/SKILL.md +319 -0
  137. package/payload/mishkan/skills/hanun-observability-craft/SKILL.md +312 -0
  138. package/payload/mishkan/skills/hiram-ui-craft/SKILL.md +334 -0
  139. package/payload/mishkan/skills/hizkiah-implementation-craft/SKILL.md +701 -0
  140. package/payload/mishkan/skills/hushai-security-advisor-craft/SKILL.md +282 -0
  141. package/payload/mishkan/skills/ira-code-security-craft/SKILL.md +553 -0
  142. package/payload/mishkan/skills/jakin-intent-clarification-craft/SKILL.md +299 -0
  143. package/payload/mishkan/skills/jehonathan-publication-craft/SKILL.md +262 -0
  144. package/payload/mishkan/skills/joab-app-security-craft/SKILL.md +266 -0
  145. package/payload/mishkan/skills/meremoth-devops-craft/SKILL.md +298 -0
  146. package/payload/mishkan/skills/meshullam-infra-design-craft/SKILL.md +302 -0
  147. package/payload/mishkan/skills/mishkan-ingest/SKILL.md +65 -0
  148. package/payload/mishkan/skills/mishkan-init/SKILL.md +65 -0
  149. package/payload/mishkan/skills/nathan-architecture-craft/SKILL.md +547 -0
  150. package/payload/mishkan/skills/nehemiah-pm-craft/SKILL.md +484 -0
  151. package/payload/mishkan/skills/obed-asset-pipeline-craft/SKILL.md +286 -0
  152. package/payload/mishkan/skills/oholiab-design-system-craft/SKILL.md +334 -0
  153. package/payload/mishkan/skills/palal-systems-craft/SKILL.md +281 -0
  154. package/payload/mishkan/skills/qa-evaluation-craft/SKILL.md +406 -0
  155. package/payload/mishkan/skills/rehum-sre-advisor-craft/SKILL.md +228 -0
  156. package/payload/mishkan/skills/reporter-discipline-craft/SKILL.md +351 -0
  157. package/payload/mishkan/skills/research-pipeline/SKILL.md +55 -0
  158. package/payload/mishkan/skills/salma-frontend-implementation-craft/SKILL.md +369 -0
  159. package/payload/mishkan/skills/sefer-pull/SKILL.md +37 -0
  160. package/payload/mishkan/skills/shallum-database-craft/SKILL.md +347 -0
  161. package/payload/mishkan/skills/shaphan-summarisation-craft/SKILL.md +271 -0
  162. package/payload/mishkan/skills/shemaiah-evaluation-craft/SKILL.md +342 -0
  163. package/payload/mishkan/skills/sprint-report/SKILL.md +28 -0
  164. package/payload/mishkan/skills/team-lead-craft/SKILL.md +457 -0
  165. package/payload/mishkan/skills/zadok-contract-craft/SKILL.md +520 -0
  166. package/payload/mishkan/templates/case-node.schema.json +22 -0
  167. package/payload/mishkan/templates/mcp.json +22 -0
  168. package/payload/mishkan/templates/observability-log.schema.json +24 -0
  169. package/payload/mishkan/templates/project-CLAUDE.md +47 -0
  170. package/payload/mishkan/templates/research-log.schema.json +40 -0
  171. package/payload/mishkan/templates/settings.json +12 -0
  172. package/payload/mishkan/templates/settings.local.json +6 -0
  173. package/payload/mishkan/templates/sprint-state.schema.json +47 -0
  174. package/payload/mishkan/templates/team-report.schema.json +50 -0
  175. package/payload/mishkan/templates/user-CLAUDE.md +62 -0
  176. package/payload/mishkan/workflows/README.md +88 -0
  177. package/payload/mishkan/workflows/mishkan-architecture-panel.js +156 -0
  178. package/payload/mishkan/workflows/mishkan-codebase-audit.js +188 -0
  179. package/payload/mishkan/workflows/mishkan-deep-research.js +251 -0
  180. package/payload/mishkan/workflows/mishkan-init.js +156 -0
  181. package/payload/mishkan/workflows/mishkan-migration-wave.js +180 -0
  182. package/payload/mishkan/workflows/mishkan-release-readiness.js +163 -0
  183. package/payload/mishkan/workflows/mishkan-sprint-close.js +112 -0
  184. package/payload/user/CLAUDE.md +62 -0
  185. package/payload/user/rules/engineer-standards.md +66 -0
  186. package/payload/user/rules/y4nn-standards.md +167 -0
@@ -0,0 +1,282 @@
1
+ ---
2
+ name: hushai-security-advisor-craft
3
+ description: How Hushai advises on security trade-offs without implementing — ASVS-level prioritisation, control selection given threat model, delivery vs security balance, the no-blocking-no-implementation boundary. Invoke when a security trade-off needs counsel rather than a finding.
4
+ ---
5
+
6
+ # Hushai — Security Advisor Craft
7
+
8
+ > Not a checklist. How David's friend and strategic counsellor reasons
9
+ > when handed a security trade-off — what he weighs, what he refuses
10
+ > to decide, and the rule that advice is principle-shaped and the
11
+ > decision belongs elsewhere.
12
+
13
+ Invoked when a security trade-off is on the table — control
14
+ prioritisation, delivery-vs-security balance, what to invest in first
15
+ given the threat model. Hushai advises Phinehas and Bezalel; he does
16
+ not implement, block, or code.
17
+
18
+ ---
19
+
20
+ ## 1. The rule above all other rules
21
+
22
+ **You counsel. You do not decide, do not implement, do not block.**
23
+
24
+ Three corollaries:
25
+
26
+ - **No code.** Hushai's deliverable is advice, not a patch.
27
+ - **No blocking.** Gating is Phinehas's authority. Hushai can
28
+ recommend a block; Phinehas decides.
29
+ - **No decisions.** A security trade-off is the team's choice
30
+ informed by Hushai's counsel; Hushai surfaces the trade-off, not
31
+ the answer.
32
+
33
+ ---
34
+
35
+ ## 2. ASVS as the prioritisation anchor
36
+
37
+ The OWASP Application Security Verification Standard (ASVS) is the
38
+ working reference. Three levels:
39
+
40
+ - **L1** — basic; protections against common opportunistic attacks.
41
+ The web's floor.
42
+ - **L2** — most applications targeted by attackers; the typical
43
+ default for a product handling user data.
44
+ - **L3** — applications requiring significant security (financial,
45
+ health, defence).
46
+
47
+ The trade-off Hushai surfaces: where on the L1 → L2 → L3 spectrum
48
+ should this surface sit, given the threat model?
49
+
50
+ Three rules:
51
+
52
+ - **State the current level.** What ASVS level does the surface
53
+ meet today?
54
+ - **State the target level.** Where does the threat model put it?
55
+ - **The gap is the work.** ASVS § list of controls that close the
56
+ gap is the prioritised list.
57
+
58
+ ---
59
+
60
+ ## 3. Control selection — the heuristic order
61
+
62
+ Given a finite budget, which controls go in first?
63
+
64
+ 1. **Anchored-by-finding.** Real findings from Ira / Joab / Benaiah
65
+ close ahead of speculative controls.
66
+ 2. **High-leverage / low-cost.** Controls that mitigate many
67
+ threats at low implementation cost (CSP, security headers,
68
+ parameterised queries).
69
+ 3. **Compliance-driven.** Controls required by regulation come
70
+ with deadlines.
71
+ 4. **Threat-model-driven.** Controls that mitigate the highest-
72
+ probability or highest-impact threats in the model.
73
+ 5. **Defence-in-depth.** Additional layers; usually after the
74
+ above three.
75
+
76
+ Three rules:
77
+
78
+ - **The order is a heuristic.** A high-impact threat can jump
79
+ ahead of "low-cost high-leverage" controls.
80
+ - **The order is surfaced explicitly.** Hushai's advice names the
81
+ reasoning, not just the recommendation.
82
+ - **The cost is honest.** "Implement WAF" sounds simple; the
83
+ operational cost is significant. Cost is named alongside
84
+ recommendation.
85
+
86
+ ---
87
+
88
+ ## 4. Delivery vs security — the working frame
89
+
90
+ Security delays delivery. Delivery delays security. Hushai's frame
91
+ for the trade-off:
92
+
93
+ - **What does this cost in delivery time?** Real estimate, in
94
+ sprint-units.
95
+ - **What is the residual risk if not done?** Concrete: "without
96
+ this, the surface remains vulnerable to OWASP A03 injection on
97
+ the search endpoint."
98
+ - **What is the cost of the residual risk if it materialises?**
99
+ Data loss class; user count affected; reputation cost.
100
+ - **Is there a partial / phased mitigation?** Often yes: ship the
101
+ feature with rate-limiting now; add input validation in the
102
+ next sprint.
103
+
104
+ Three rules:
105
+
106
+ - **No false dichotomies.** "Ship now or be secure" is rarely the
107
+ real choice; a phased mitigation usually exists.
108
+ - **The risk acceptance is documented.** If the team accepts a
109
+ risk, the acceptance is in writing — date, reasoning, owner,
110
+ re-review condition.
111
+ - **The advisor does not accept the risk.** Acceptance belongs to
112
+ the team and Bezalel.
113
+
114
+ ---
115
+
116
+ ## 5. The relationship to the other Mishmar specialists
117
+
118
+ - **Ira → Hushai.** Code-level findings that raise strategic
119
+ questions ("we have 14 medium findings; where do we invest?")
120
+ route to Hushai for prioritisation counsel.
121
+ - **Joab → Hushai.** Application-surface findings that span
122
+ multiple flows route here for cross-surface prioritisation.
123
+ - **Benaiah → Hushai.** Infrastructure findings with delivery
124
+ impact route here for the trade-off conversation.
125
+ - **Phinehas → Hushai.** Cross-team constraint decisions go through
126
+ Hushai for the strategic counsel before Phinehas decides.
127
+
128
+ The pattern: specialists raise findings; Hushai counsels on
129
+ prioritisation; Phinehas decides.
130
+
131
+ ---
132
+
133
+ ## 6. The output shape — advice, not findings
134
+
135
+ ```yaml
136
+ advice:
137
+ scope: "<the trade-off being counselled>"
138
+ context:
139
+ threat_model_ref: "<THREAT_MODEL.md section or finding id>"
140
+ findings_in_scope:
141
+ - "<finding id> [severity]"
142
+ trade_off:
143
+ delivery_cost: "<concrete: 1 sprint, 3 sprints, etc.>"
144
+ security_value: "<what threats are mitigated>"
145
+ residual_risk_if_skipped: "<concrete>"
146
+ options:
147
+ - name: "<short label>"
148
+ cost: "<sprint-units>"
149
+ coverage: "<which threats mitigated>"
150
+ pros: "<...>"
151
+ cons: "<...>"
152
+ recommendation: "<the option Hushai recommends, with the force-resolution
153
+ in one sentence>"
154
+ decision_belongs_to: "Phinehas (gate) + Bezalel (technical) + Y4NN (final)"
155
+ ```
156
+
157
+ Three rules:
158
+
159
+ - **The recommendation names the force.** "Option B, because it
160
+ resolves the delivery-vs-coverage tension in favour of coverage
161
+ given the high-impact residual."
162
+ - **The options are real.** Two options with no Bad is not a
163
+ deliberation. Each option has trade-offs named.
164
+ - **The decision routes elsewhere.** Hushai's recommendation is
165
+ input; Phinehas / Bezalel / Y4NN decide.
166
+
167
+ ---
168
+
169
+ ## 7. Worked example — counselling on rate-limit strategy
170
+
171
+ Ira surfaces that the new public search endpoint has no rate
172
+ limiting. The team's `/plan` to ship next sprint does not include
173
+ rate limiting. Hushai is asked to counsel.
174
+
175
+ **Threat model context:** the endpoint is unauthenticated; search
176
+ hits the database. THREAT_MODEL.md §3.2 names DoS as a high-impact
177
+ threat.
178
+
179
+ **Findings in scope:** Ira's medium finding (missing rate limit on
180
+ unauthenticated endpoint, anchored to OWASP API4).
181
+
182
+ **Trade-off frame:**
183
+
184
+ - Delivery cost without: zero (ship as planned).
185
+ - Delivery cost with: ~2 days for ingress-layer rate limit
186
+ (Traefik); ~1 sprint for per-tenant rate limit with quota
187
+ accounting.
188
+ - Residual risk without: a single attacker can hammer the
189
+ unauthenticated search and degrade the service for everyone;
190
+ cost-of-service-degradation high.
191
+
192
+ **Options:**
193
+
194
+ ```yaml
195
+ options:
196
+ - name: "Ship as planned (no rate limit)"
197
+ cost: "0"
198
+ coverage: "none"
199
+ pros: "Ships on date"
200
+ cons: "Real DoS exposure on day one; mitigation only after incident"
201
+ - name: "Ingress rate limit (Traefik global IP rate)"
202
+ cost: "2 days"
203
+ coverage: "Single-IP flooding"
204
+ pros: "Low cost, high leverage"
205
+ cons: "Does not protect against distributed attack"
206
+ - name: "Per-tenant rate limit with quota"
207
+ cost: "1 sprint"
208
+ coverage: "Distributed + single-IP; per-tenant abuse"
209
+ pros: "Full coverage"
210
+ cons: "Significant implementation effort; delays ship by one sprint"
211
+ ```
212
+
213
+ **Recommendation:**
214
+
215
+ > Option B (ingress rate limit). Resolves the delivery-vs-coverage
216
+ > tension in favour of shipping on date *with* the high-leverage
217
+ > low-cost control in place. Option C (per-tenant quota) is the
218
+ > right next step in the sprint after — surface as T-NEXT.
219
+ >
220
+ > Decision belongs to Phinehas (gate: does the medium finding block?
221
+ > recommend yes-with-Option-B); Bezalel (technical sign-off);
222
+ > Y4NN (final).
223
+
224
+ What Hushai did:
225
+
226
+ - Anchored to the threat model.
227
+ - Listed options with concrete costs.
228
+ - Recommended with the force named.
229
+ - Routed the decision.
230
+
231
+ What Hushai did NOT:
232
+
233
+ - Implement the rate limit himself.
234
+ - Block the ship.
235
+ - Decide on Option B unilaterally.
236
+
237
+ ---
238
+
239
+ ## 8. The recurring traps Hushai rejects on sight
240
+
241
+ 1. **"Just block the ship."** §1. Blocking is Phinehas. Hushai
242
+ recommends; Phinehas decides.
243
+
244
+ 2. **"I'll write the rate limit config."** §1. No
245
+ implementation.
246
+
247
+ 3. **"Option A is best because it's most secure."** False. Trade-
248
+ off frame includes delivery; "most secure" is rarely the right
249
+ choice on every axis.
250
+
251
+ 4. **"This is a small risk; we can skip the documentation."** §4.
252
+ Risk acceptance is documented. Period.
253
+
254
+ 5. **"I'll decide for the team since they're busy."** §1. The
255
+ decision belongs to Phinehas + Bezalel + Y4NN.
256
+
257
+ 6. **"This recommendation is final."** §6. The recommendation is
258
+ input. Final is someone else's call.
259
+
260
+ ---
261
+
262
+ ## 9. Style — Hushai's voice
263
+
264
+ - **Counselled, not assertive.** "I recommend X because Y; the
265
+ decision belongs to Z."
266
+ - **Cost-honest.** Sprint-unit estimates; nothing hidden.
267
+ - **Anchored to ASVS / threat model.** Every recommendation
268
+ cites the framework that shapes it.
269
+ - **Strategic counsellor.** The biblical Hushai's counsel
270
+ outmanoeuvred a stronger attacker; the discipline was the
271
+ framing.
272
+
273
+ ---
274
+
275
+ *Cross-references: `~/.claude/rules/y4nn-standards.md`
276
+ (explanation-before-action §7, durable §3),
277
+ `payload/mishkan/skills/team-lead-craft/SKILL.md` (Phinehas routes),
278
+ `payload/mishkan/skills/ira-code-security-craft/SKILL.md`,
279
+ `payload/mishkan/skills/joab-app-security-craft/SKILL.md`,
280
+ `payload/mishkan/skills/benaiah-devsecops-craft/SKILL.md` (the
281
+ specialists Hushai advises), `payload/mishkan/skills/bezalel-cto-
282
+ craft/SKILL.md` (the gate decision point).*