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.
- package/LICENSE +21 -0
- package/README.md +205 -0
- package/bin/mishkan.js +221 -0
- package/docs/design/MISHKAN_agent_aliases.md +140 -0
- package/docs/design/MISHKAN_decisions.md +172 -0
- package/docs/design/MISHKAN_harness_design.md +820 -0
- package/docs/design/MISHKAN_ontology.md +87 -0
- package/docs/design/MISHKAN_token_optimisation.md +181 -0
- package/docs/engineer/README.md +37 -0
- package/docs/engineer/profile.example.md +79 -0
- package/docs/usage/01-installation.md +178 -0
- package/docs/usage/02-project-init.md +151 -0
- package/docs/usage/03-orchestration.md +218 -0
- package/docs/usage/04-memory-layer.md +201 -0
- package/docs/usage/05-selective-ingest.md +177 -0
- package/docs/usage/06-llm-providers.md +195 -0
- package/docs/usage/07-troubleshooting.md +316 -0
- package/docs/usage/08-glossary.md +154 -0
- package/docs/usage/09-workflows.md +123 -0
- package/docs/usage/README.md +77 -0
- package/package.json +43 -0
- package/payload/install/settings.hooks.json +47 -0
- package/payload/mishkan/AGENT_SPEC.md +154 -0
- package/payload/mishkan/agents/ahikam.md +58 -0
- package/payload/mishkan/agents/aholiab.md +68 -0
- package/payload/mishkan/agents/asaph.md +73 -0
- package/payload/mishkan/agents/baruch.md +88 -0
- package/payload/mishkan/agents/benaiah.md +76 -0
- package/payload/mishkan/agents/bezalel.md +83 -0
- package/payload/mishkan/agents/caleb.md +74 -0
- package/payload/mishkan/agents/deborah.md +63 -0
- package/payload/mishkan/agents/elasah.md +58 -0
- package/payload/mishkan/agents/eliashib.md +68 -0
- package/payload/mishkan/agents/ezra.md +69 -0
- package/payload/mishkan/agents/hanun.md +64 -0
- package/payload/mishkan/agents/hiram.md +68 -0
- package/payload/mishkan/agents/hizkiah.md +76 -0
- package/payload/mishkan/agents/huldah.md +59 -0
- package/payload/mishkan/agents/huram.md +66 -0
- package/payload/mishkan/agents/hushai.md +59 -0
- package/payload/mishkan/agents/igal.md +58 -0
- package/payload/mishkan/agents/ira.md +86 -0
- package/payload/mishkan/agents/jahaziel.md +71 -0
- package/payload/mishkan/agents/jakin.md +66 -0
- package/payload/mishkan/agents/jehonathan.md +62 -0
- package/payload/mishkan/agents/jehoshaphat.md +68 -0
- package/payload/mishkan/agents/joab.md +71 -0
- package/payload/mishkan/agents/joah.md +62 -0
- package/payload/mishkan/agents/maaseiah.md +61 -0
- package/payload/mishkan/agents/meremoth.md +65 -0
- package/payload/mishkan/agents/meshullam.md +67 -0
- package/payload/mishkan/agents/nathan.md +70 -0
- package/payload/mishkan/agents/nehemiah.md +93 -0
- package/payload/mishkan/agents/obed.md +60 -0
- package/payload/mishkan/agents/oholiab.md +67 -0
- package/payload/mishkan/agents/palal.md +63 -0
- package/payload/mishkan/agents/phinehas.md +73 -0
- package/payload/mishkan/agents/rehum.md +60 -0
- package/payload/mishkan/agents/salma.md +69 -0
- package/payload/mishkan/agents/seraiah.md +73 -0
- package/payload/mishkan/agents/shallum.md +66 -0
- package/payload/mishkan/agents/shaphan.md +64 -0
- package/payload/mishkan/agents/shemaiah.md +67 -0
- package/payload/mishkan/agents/shevna.md +58 -0
- package/payload/mishkan/agents/uriah.md +70 -0
- package/payload/mishkan/agents/zaccur.md +58 -0
- package/payload/mishkan/agents/zadok.md +67 -0
- package/payload/mishkan/agents/zerubbabel.md +69 -0
- package/payload/mishkan/cognee/.env.curated.example +61 -0
- package/payload/mishkan/cognee/.env.example +165 -0
- package/payload/mishkan/cognee/Dockerfile +50 -0
- package/payload/mishkan/cognee/README.md +129 -0
- package/payload/mishkan/cognee/docker-compose.curated-ui.yml +61 -0
- package/payload/mishkan/cognee/docker-compose.curated.yml +85 -0
- package/payload/mishkan/cognee/docker-compose.hardening.yml +16 -0
- package/payload/mishkan/cognee/docker-compose.selfhosted.yml +114 -0
- package/payload/mishkan/cognee/docker-compose.ui.yml +70 -0
- package/payload/mishkan/cognee/docker-compose.yml +71 -0
- package/payload/mishkan/cognee/ingest-curated.py +92 -0
- package/payload/mishkan/commands/dep-audit.md +24 -0
- package/payload/mishkan/commands/mishkan-init.md +25 -0
- package/payload/mishkan/commands/mishkan-resume.md +21 -0
- package/payload/mishkan/commands/promote.md +19 -0
- package/payload/mishkan/commands/sefer-pull.md +19 -0
- package/payload/mishkan/commands/sprint-close.md +21 -0
- package/payload/mishkan/config/curated-library.yaml +113 -0
- package/payload/mishkan/config/improvement-queries.md +29 -0
- package/payload/mishkan/config/model-routing.yaml +87 -0
- package/payload/mishkan/config/projects.yaml +38 -0
- package/payload/mishkan/evals/baruch/README.md +93 -0
- package/payload/mishkan/evals/baruch/fixtures/invalid/bad-outcome-enum.json +15 -0
- package/payload/mishkan/evals/baruch/fixtures/invalid/bad-sprint-pattern.json +15 -0
- package/payload/mishkan/evals/baruch/fixtures/invalid/bad-trigger-enum.json +15 -0
- package/payload/mishkan/evals/baruch/fixtures/invalid/malformed-json.json +7 -0
- package/payload/mishkan/evals/baruch/fixtures/invalid/missing-required-field.json +14 -0
- package/payload/mishkan/evals/baruch/fixtures/valid/blocked-vendor.json +15 -0
- package/payload/mishkan/evals/baruch/fixtures/valid/curated-shortcircuit.json +15 -0
- package/payload/mishkan/evals/baruch/fixtures/valid/partial-no-write.json +14 -0
- package/payload/mishkan/evals/baruch/fixtures/valid/resolved-cross-harness.json +15 -0
- package/payload/mishkan/evals/baruch/golden_case/expected.yaml +35 -0
- package/payload/mishkan/evals/baruch/golden_case/input.yaml +47 -0
- package/payload/mishkan/evals/baruch/golden_case/produced.json +15 -0
- package/payload/mishkan/evals/baruch/run.sh +129 -0
- package/payload/mishkan/hooks/model-route.py +96 -0
- package/payload/mishkan/hooks/post-tool-observe.sh +45 -0
- package/payload/mishkan/hooks/pre-tool-security.sh +150 -0
- package/payload/mishkan/hooks/session-start.sh +20 -0
- package/payload/mishkan/hooks/stop-reporter.sh +29 -0
- package/payload/mishkan/ontology.md +87 -0
- package/payload/mishkan/rules/backend/yasad.md +23 -0
- package/payload/mishkan/rules/common/dependencies.md +53 -0
- package/payload/mishkan/rules/common/quality.md +16 -0
- package/payload/mishkan/rules/common/security.md +20 -0
- package/payload/mishkan/rules/documentation/sefer.md +19 -0
- package/payload/mishkan/rules/frontend/panim.md +21 -0
- package/payload/mishkan/rules/infrastructure/migdal.md +22 -0
- package/payload/mishkan/scripts/dependency-audit.sh +171 -0
- package/payload/mishkan/scripts/ensure-curated-box.sh +66 -0
- package/payload/mishkan/scripts/mishkan-ingest.sh +92 -0
- package/payload/mishkan/scripts/observability-aggregate.sh +57 -0
- package/payload/mishkan/scripts/seed-curated-library.sh +62 -0
- package/payload/mishkan/scripts/sync-profile.sh +65 -0
- package/payload/mishkan/scripts/validate-research-log.sh +108 -0
- package/payload/mishkan/skills/asaph-a11y-seo-craft/SKILL.md +289 -0
- package/payload/mishkan/skills/baruch-research-reporting-craft/SKILL.md +460 -0
- package/payload/mishkan/skills/benaiah-devsecops-craft/SKILL.md +329 -0
- package/payload/mishkan/skills/bezalel-cto-craft/SKILL.md +391 -0
- package/payload/mishkan/skills/caleb-web-research-craft/SKILL.md +306 -0
- package/payload/mishkan/skills/cognee-promote/SKILL.md +40 -0
- package/payload/mishkan/skills/cognee-quickstart/SKILL.md +66 -0
- package/payload/mishkan/skills/context-compress/SKILL.md +36 -0
- package/payload/mishkan/skills/deborah-ux-craft/SKILL.md +295 -0
- package/payload/mishkan/skills/dependency-audit/SKILL.md +59 -0
- package/payload/mishkan/skills/dependency-vetting/SKILL.md +59 -0
- package/payload/mishkan/skills/documentation-craft/SKILL.md +468 -0
- package/payload/mishkan/skills/ezra-research-formulation-craft/SKILL.md +319 -0
- package/payload/mishkan/skills/hanun-observability-craft/SKILL.md +312 -0
- package/payload/mishkan/skills/hiram-ui-craft/SKILL.md +334 -0
- package/payload/mishkan/skills/hizkiah-implementation-craft/SKILL.md +701 -0
- package/payload/mishkan/skills/hushai-security-advisor-craft/SKILL.md +282 -0
- package/payload/mishkan/skills/ira-code-security-craft/SKILL.md +553 -0
- package/payload/mishkan/skills/jakin-intent-clarification-craft/SKILL.md +299 -0
- package/payload/mishkan/skills/jehonathan-publication-craft/SKILL.md +262 -0
- package/payload/mishkan/skills/joab-app-security-craft/SKILL.md +266 -0
- package/payload/mishkan/skills/meremoth-devops-craft/SKILL.md +298 -0
- package/payload/mishkan/skills/meshullam-infra-design-craft/SKILL.md +302 -0
- package/payload/mishkan/skills/mishkan-ingest/SKILL.md +65 -0
- package/payload/mishkan/skills/mishkan-init/SKILL.md +65 -0
- package/payload/mishkan/skills/nathan-architecture-craft/SKILL.md +547 -0
- package/payload/mishkan/skills/nehemiah-pm-craft/SKILL.md +484 -0
- package/payload/mishkan/skills/obed-asset-pipeline-craft/SKILL.md +286 -0
- package/payload/mishkan/skills/oholiab-design-system-craft/SKILL.md +334 -0
- package/payload/mishkan/skills/palal-systems-craft/SKILL.md +281 -0
- package/payload/mishkan/skills/qa-evaluation-craft/SKILL.md +406 -0
- package/payload/mishkan/skills/rehum-sre-advisor-craft/SKILL.md +228 -0
- package/payload/mishkan/skills/reporter-discipline-craft/SKILL.md +351 -0
- package/payload/mishkan/skills/research-pipeline/SKILL.md +55 -0
- package/payload/mishkan/skills/salma-frontend-implementation-craft/SKILL.md +369 -0
- package/payload/mishkan/skills/sefer-pull/SKILL.md +37 -0
- package/payload/mishkan/skills/shallum-database-craft/SKILL.md +347 -0
- package/payload/mishkan/skills/shaphan-summarisation-craft/SKILL.md +271 -0
- package/payload/mishkan/skills/shemaiah-evaluation-craft/SKILL.md +342 -0
- package/payload/mishkan/skills/sprint-report/SKILL.md +28 -0
- package/payload/mishkan/skills/team-lead-craft/SKILL.md +457 -0
- package/payload/mishkan/skills/zadok-contract-craft/SKILL.md +520 -0
- package/payload/mishkan/templates/case-node.schema.json +22 -0
- package/payload/mishkan/templates/mcp.json +22 -0
- package/payload/mishkan/templates/observability-log.schema.json +24 -0
- package/payload/mishkan/templates/project-CLAUDE.md +47 -0
- package/payload/mishkan/templates/research-log.schema.json +40 -0
- package/payload/mishkan/templates/settings.json +12 -0
- package/payload/mishkan/templates/settings.local.json +6 -0
- package/payload/mishkan/templates/sprint-state.schema.json +47 -0
- package/payload/mishkan/templates/team-report.schema.json +50 -0
- package/payload/mishkan/templates/user-CLAUDE.md +62 -0
- package/payload/mishkan/workflows/README.md +88 -0
- package/payload/mishkan/workflows/mishkan-architecture-panel.js +156 -0
- package/payload/mishkan/workflows/mishkan-codebase-audit.js +188 -0
- package/payload/mishkan/workflows/mishkan-deep-research.js +251 -0
- package/payload/mishkan/workflows/mishkan-init.js +156 -0
- package/payload/mishkan/workflows/mishkan-migration-wave.js +180 -0
- package/payload/mishkan/workflows/mishkan-release-readiness.js +163 -0
- package/payload/mishkan/workflows/mishkan-sprint-close.js +112 -0
- package/payload/user/CLAUDE.md +62 -0
- package/payload/user/rules/engineer-standards.md +66 -0
- package/payload/user/rules/y4nn-standards.md +167 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: meshullam-infra-design-craft
|
|
3
|
+
description: How Meshullam designs infrastructure topology — C4 diagrams, Docker Compose / Terraform / Helm structure, network layout, service connections, the no-:latest rule and resource-tagging discipline, the explicit-trade-off requirement on every topology decision. Invoke when an IaC change or topology decision is in scope.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Meshullam — Infrastructure Design Craft
|
|
7
|
+
|
|
8
|
+
> Not a checklist. How the one who repaired multiple sections of the
|
|
9
|
+
> wall reasons when handed a topology decision — what he designs, what
|
|
10
|
+
> he refuses to leave implicit, and the rule that every connection is
|
|
11
|
+
> deliberate.
|
|
12
|
+
|
|
13
|
+
Invoked when infrastructure topology, IaC structure, network layout,
|
|
14
|
+
or service-connection decisions are in scope.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. The rule above all other rules
|
|
19
|
+
|
|
20
|
+
**Every connection in the topology is deliberate and named.**
|
|
21
|
+
|
|
22
|
+
Three corollaries:
|
|
23
|
+
|
|
24
|
+
- **No implicit connections.** A service that can reach another
|
|
25
|
+
service does so because the topology allows it, not because
|
|
26
|
+
nothing blocks it. Default-deny network.
|
|
27
|
+
- **No undocumented IaC drift.** Whatever lives in Terraform /
|
|
28
|
+
Compose / Helm is the source of truth; manual changes outside it
|
|
29
|
+
are debt.
|
|
30
|
+
- **No prod execution.** IaC is *applied* by Y4NN; Meshullam
|
|
31
|
+
produces the plan and the diff.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 2. C4 diagrams — the four levels
|
|
36
|
+
|
|
37
|
+
C4 by Simon Brown. Every infrastructure design ships diagrams at
|
|
38
|
+
the relevant levels:
|
|
39
|
+
|
|
40
|
+
| Level | Audience | What it shows |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| **L1 Context** | everyone | the system, its users, its external integrations |
|
|
43
|
+
| **L2 Containers** | engineers + ops | the deployable units (services, databases, queues) |
|
|
44
|
+
| **L3 Components** | engineers in the team | inside one container, the major components |
|
|
45
|
+
| **L4 Code** | rare | class-level; usually not maintained |
|
|
46
|
+
|
|
47
|
+
Three rules:
|
|
48
|
+
|
|
49
|
+
- **L1 always.** Without context, no other level lands.
|
|
50
|
+
- **L2 for any project shipping more than one container.** The
|
|
51
|
+
containers and their arrows are the deploy topology.
|
|
52
|
+
- **L3 for the complex services only.** A simple FastAPI service
|
|
53
|
+
does not need L3.
|
|
54
|
+
|
|
55
|
+
Diagrams live in `docs/diagrams/C4/` with the source (PlantUML,
|
|
56
|
+
Structurizr, or Mermaid) committed alongside the rendered output.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 3. Docker Compose — production-shaped from day one
|
|
61
|
+
|
|
62
|
+
Three rules:
|
|
63
|
+
|
|
64
|
+
- **Pinned images.** Every service `image: registry/...:1.2.3@sha256:...`.
|
|
65
|
+
Never `:latest`.
|
|
66
|
+
- **Health checks.** Every long-running service has `healthcheck:`;
|
|
67
|
+
orchestration waits for healthy before considering ready.
|
|
68
|
+
- **Networks named and scoped.** No service is on the default network
|
|
69
|
+
by accident; networks are declared and services join them
|
|
70
|
+
explicitly.
|
|
71
|
+
|
|
72
|
+
```yaml
|
|
73
|
+
services:
|
|
74
|
+
api:
|
|
75
|
+
image: registry.example.com/api:1.2.3@sha256:...
|
|
76
|
+
networks: [backend, ingress]
|
|
77
|
+
healthcheck:
|
|
78
|
+
test: ["CMD", "curl", "-f", "http://localhost:8000/healthz"]
|
|
79
|
+
interval: 10s
|
|
80
|
+
timeout: 3s
|
|
81
|
+
retries: 3
|
|
82
|
+
start_period: 30s
|
|
83
|
+
deploy:
|
|
84
|
+
resources:
|
|
85
|
+
limits: { cpus: "1.0", memory: 512M }
|
|
86
|
+
reservations: { cpus: "0.25", memory: 128M }
|
|
87
|
+
db:
|
|
88
|
+
image: postgres:16.3-alpine@sha256:...
|
|
89
|
+
networks: [backend]
|
|
90
|
+
# ... persistent volume, env via SOPS, etc.
|
|
91
|
+
|
|
92
|
+
networks:
|
|
93
|
+
backend:
|
|
94
|
+
driver: bridge
|
|
95
|
+
internal: true # no internet egress
|
|
96
|
+
ingress:
|
|
97
|
+
driver: bridge
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 4. Terraform — module discipline
|
|
103
|
+
|
|
104
|
+
Three rules:
|
|
105
|
+
|
|
106
|
+
- **One module per concept.** A module for `vpc`, a module for
|
|
107
|
+
`eks_cluster`, a module for `rds_postgres`. Not one mega-module.
|
|
108
|
+
- **State backends are remote.** Local state is debt; remote
|
|
109
|
+
backend (S3 / GCS / Azure Blob) with locking.
|
|
110
|
+
- **Plan before apply.** `terraform plan -out=plan.bin` reviewed
|
|
111
|
+
before `terraform apply plan.bin`. Y4NN runs apply.
|
|
112
|
+
|
|
113
|
+
Module structure:
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
modules/
|
|
117
|
+
vpc/
|
|
118
|
+
main.tf
|
|
119
|
+
variables.tf
|
|
120
|
+
outputs.tf
|
|
121
|
+
README.md
|
|
122
|
+
eks_cluster/
|
|
123
|
+
...
|
|
124
|
+
rds_postgres/
|
|
125
|
+
...
|
|
126
|
+
environments/
|
|
127
|
+
staging/
|
|
128
|
+
main.tf # composes modules with staging values
|
|
129
|
+
backend.tf
|
|
130
|
+
production/
|
|
131
|
+
main.tf
|
|
132
|
+
backend.tf
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 5. Helm — chart hygiene
|
|
138
|
+
|
|
139
|
+
Three rules:
|
|
140
|
+
|
|
141
|
+
- **Values are typed via JSON Schema** (`values.schema.json`).
|
|
142
|
+
Untyped values mean drift and silent breakage on upgrade.
|
|
143
|
+
- **Resource limits everywhere.** Every container in every chart
|
|
144
|
+
has `resources:` with both requests and limits.
|
|
145
|
+
- **NetworkPolicy by default.** Every chart ships a NetworkPolicy
|
|
146
|
+
that defaults to deny; opens connections only where needed.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 6. Network design — default deny
|
|
151
|
+
|
|
152
|
+
The default for every network in every environment is **deny**.
|
|
153
|
+
Connections are opened deliberately, named, and documented.
|
|
154
|
+
|
|
155
|
+
Three rules:
|
|
156
|
+
|
|
157
|
+
- **Service mesh or NetworkPolicy enforces the deny.** Calico,
|
|
158
|
+
Cilium, Istio, Linkerd — pick one and enforce.
|
|
159
|
+
- **Egress filtered.** A service that does not call out should
|
|
160
|
+
not have internet egress.
|
|
161
|
+
- **No "temporary" rules.** A rule labelled temporary becomes
|
|
162
|
+
permanent. If the rule is conditional, the condition is named
|
|
163
|
+
and a re-review is scheduled.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## 7. The /plan trigger
|
|
168
|
+
|
|
169
|
+
`/plan` is mandatory before any IaC change or topology decision.
|
|
170
|
+
The plan surfaces:
|
|
171
|
+
|
|
172
|
+
- The change (Terraform diff, Compose diff, Helm values diff).
|
|
173
|
+
- The blast radius (which services affected, which environments).
|
|
174
|
+
- The rollback path (always; no rollback = no apply).
|
|
175
|
+
- The Mishmar review status (Phinehas/Benaiah have seen this).
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 8. Worked example — designing the topology for a new service
|
|
180
|
+
|
|
181
|
+
A new `notifications` service is being added. Meshullam's path:
|
|
182
|
+
|
|
183
|
+
**L1 Context update.** Add `notifications` to the system context;
|
|
184
|
+
external integration with email-provider SaaS.
|
|
185
|
+
|
|
186
|
+
**L2 Containers update.**
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
notifications/ ← new container
|
|
190
|
+
├─ ingress? no (internal-only service)
|
|
191
|
+
├─ network backend
|
|
192
|
+
├─ talks to queue (Redis), event-bus (NATS), email-provider SaaS
|
|
193
|
+
├─ talked to by api, scheduler
|
|
194
|
+
└─ persistence none (stateless; queue is the durability)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Compose addition:**
|
|
198
|
+
|
|
199
|
+
```yaml
|
|
200
|
+
notifications:
|
|
201
|
+
image: registry.example.com/notifications:1.0.0@sha256:...
|
|
202
|
+
networks: [backend, egress_email_only]
|
|
203
|
+
healthcheck: { test: [CMD, /app/healthz], interval: 10s }
|
|
204
|
+
depends_on:
|
|
205
|
+
redis: { condition: service_healthy }
|
|
206
|
+
nats: { condition: service_healthy }
|
|
207
|
+
deploy:
|
|
208
|
+
resources:
|
|
209
|
+
limits: { cpus: "0.5", memory: 256M }
|
|
210
|
+
reservations: { cpus: "0.1", memory: 64M }
|
|
211
|
+
|
|
212
|
+
networks:
|
|
213
|
+
egress_email_only:
|
|
214
|
+
driver: bridge
|
|
215
|
+
# firewalld rule scopes egress to email-provider domain
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**NetworkPolicy (K8s, for the prod environment):**
|
|
219
|
+
|
|
220
|
+
```yaml
|
|
221
|
+
apiVersion: networking.k8s.io/v1
|
|
222
|
+
kind: NetworkPolicy
|
|
223
|
+
metadata: { name: notifications-default-deny }
|
|
224
|
+
spec:
|
|
225
|
+
podSelector: { matchLabels: { app: notifications } }
|
|
226
|
+
policyTypes: [Ingress, Egress]
|
|
227
|
+
ingress:
|
|
228
|
+
- from:
|
|
229
|
+
- podSelector: { matchLabels: { app: api } }
|
|
230
|
+
- podSelector: { matchLabels: { app: scheduler } }
|
|
231
|
+
ports: [{ port: 8000 }]
|
|
232
|
+
egress:
|
|
233
|
+
- to: [{ podSelector: { matchLabels: { app: redis } }}]
|
|
234
|
+
ports: [{ port: 6379 }]
|
|
235
|
+
- to: [{ podSelector: { matchLabels: { app: nats } }}]
|
|
236
|
+
ports: [{ port: 4222 }]
|
|
237
|
+
- to: [{ namespaceSelector: { matchLabels: { name: egress-email } }}]
|
|
238
|
+
ports: [{ port: 587 }]
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Mishmar review:** Benaiah reviews the new external integration
|
|
242
|
+
(SaaS email provider) for the trust-boundary section of THREAT_MODEL.md.
|
|
243
|
+
|
|
244
|
+
What Meshullam did:
|
|
245
|
+
|
|
246
|
+
- Updated the C4 diagrams.
|
|
247
|
+
- Named every connection.
|
|
248
|
+
- Scoped egress.
|
|
249
|
+
- Wrote the NetworkPolicy.
|
|
250
|
+
- Routed to Benaiah for threat-model review.
|
|
251
|
+
|
|
252
|
+
What Meshullam did NOT:
|
|
253
|
+
|
|
254
|
+
- Apply the Terraform.
|
|
255
|
+
- Skip the NetworkPolicy as "we'll add later."
|
|
256
|
+
- Use a default-allow network.
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 9. The recurring traps Meshullam rejects on sight
|
|
261
|
+
|
|
262
|
+
1. **"`:latest` is fine for staging."** §3. No.
|
|
263
|
+
|
|
264
|
+
2. **"We'll add the healthcheck later."** §3. Healthcheck is part
|
|
265
|
+
of the service definition, not a follow-up.
|
|
266
|
+
|
|
267
|
+
3. **"The default network is fine; everything talks to everything."**
|
|
268
|
+
§6. No. Default deny.
|
|
269
|
+
|
|
270
|
+
4. **"Terraform local state is fine for now."** §4. Remote backend
|
|
271
|
+
from day one; migrating later is painful.
|
|
272
|
+
|
|
273
|
+
5. **"This is a one-off; no module needed."** Maybe. The first
|
|
274
|
+
one-off becomes the second one-off. Modularise on the second
|
|
275
|
+
instance.
|
|
276
|
+
|
|
277
|
+
6. **"I'll just apply the Terraform; the diff is small."** §1. No.
|
|
278
|
+
Plan → review → Y4NN applies.
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## 10. Style — Meshullam's voice
|
|
283
|
+
|
|
284
|
+
- **Designed, not assembled.** The topology is a deliberate
|
|
285
|
+
structure.
|
|
286
|
+
- **Every connection annotated.** "Service A → Service B over port
|
|
287
|
+
X for purpose Y."
|
|
288
|
+
- **Diagrams + IaC together.** The diagram is the picture; the IaC
|
|
289
|
+
is the truth; they agree.
|
|
290
|
+
- **One who designs connections.** The biblical Meshullam repaired
|
|
291
|
+
many sections; the connections between were his work.
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
*Cross-references: `~/.claude/rules/y4nn-standards.md`
|
|
296
|
+
(asymmetric-delegation §5, sequence §1, durable §3),
|
|
297
|
+
`payload/mishkan/skills/team-lead-craft/SKILL.md` (Eliashib routes),
|
|
298
|
+
`payload/mishkan/skills/benaiah-devsecops-craft/SKILL.md` (Mishmar
|
|
299
|
+
review on new surfaces), `payload/mishkan/skills/palal-systems-
|
|
300
|
+
craft/SKILL.md` (OS / network / firewall implementation),
|
|
301
|
+
`payload/mishkan/skills/meremoth-devops-craft/SKILL.md` (delivery
|
|
302
|
+
pipelines that ship the IaC).*
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mishkan-ingest
|
|
3
|
+
description: Selectively ingest specific documents into the project's cognee work store. Use to deliberately add docs to memory instead of bulk-ingesting a whole tree — the default is "nothing enters memory unless tagged or invoked", which prevents PII bleed (e.g. real addresses in incident reports) and oversized-doc embedding failures. Walks ./docs/ filtered by a `mishkan: ingest` YAML frontmatter tag, or accepts explicit paths. Always runs cognify → memify after adding.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# mishkan-ingest
|
|
7
|
+
|
|
8
|
+
Deliberate, selective entry into the project's **work** cognee store (`cognee`,
|
|
9
|
+
:7777). Pairs with the cross-project **curated** store (`cognee-curated`, :7730,
|
|
10
|
+
read-only) — this skill only touches work.
|
|
11
|
+
|
|
12
|
+
## When to use
|
|
13
|
+
|
|
14
|
+
- Adding a freshly tagged doc to project memory.
|
|
15
|
+
- Refreshing memory after a doc materially changed.
|
|
16
|
+
- One-off pulls from outside the standard `docs/` tree.
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Default: walk ./docs/ for docs tagged `mishkan: ingest`
|
|
22
|
+
bash ~/.claude/mishkan/scripts/mishkan-ingest.sh --tagged-only
|
|
23
|
+
|
|
24
|
+
# Explicit files (no tag check)
|
|
25
|
+
bash ~/.claude/mishkan/scripts/mishkan-ingest.sh docs/SECURITY.md docs/ROADMAP.md
|
|
26
|
+
|
|
27
|
+
# Different dataset (default: basename of cwd)
|
|
28
|
+
bash ~/.claude/mishkan/scripts/mishkan-ingest.sh --dataset=research docs/research.md
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Tagging a doc as memory-eligible
|
|
32
|
+
|
|
33
|
+
Put a YAML frontmatter block at the top of the file:
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
---
|
|
37
|
+
mishkan: ingest
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
# Doc title
|
|
41
|
+
…
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
That single tag is enough. Optional: any other frontmatter (author, date, etc.)
|
|
45
|
+
stays as-is.
|
|
46
|
+
|
|
47
|
+
## What the skill runs
|
|
48
|
+
|
|
49
|
+
1. Selects files — tagged-only filter, or the explicit list you passed.
|
|
50
|
+
2. Stages them into the work cognee-mcp container.
|
|
51
|
+
3. Runs `cognee.add(files, dataset_name=<project>)` → `cognify` → `memify` —
|
|
52
|
+
extraction *then* enrichment, always paired (decision per the harness flow).
|
|
53
|
+
4. Respects the work box's LLM rate-limit throttle and persistent storage.
|
|
54
|
+
|
|
55
|
+
## Constraints
|
|
56
|
+
|
|
57
|
+
- Never writes to `cognee-curated` (that's the cross-project reference, read-only).
|
|
58
|
+
- Skips non-`.md` files in directory walks (extend the script if you need others).
|
|
59
|
+
- One doc per `--dataset` per run is fine; rerun for additional datasets.
|
|
60
|
+
- Does NOT delete existing data — additive. Use `cognee.prune` if you need a reset.
|
|
61
|
+
|
|
62
|
+
## Default behaviour (zero args)
|
|
63
|
+
|
|
64
|
+
Walks `./docs/` looking for `mishkan: ingest` tags. If none, exits cleanly with
|
|
65
|
+
"no docs selected" — the deliberate default: **memory is opt-in, not bulk**.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mishkan-init
|
|
3
|
+
description: Initialise a project under MISHKAN. Runs the SWE-BASICS-BEFORE-CODE sequence through the right specialists (PRD → SRS → CONTRACT → ARCHITECTURE → THREAT_MODEL → C4 → docs scaffold), seeds Cognee, writes the project CLAUDE.md, and begins Sprint S0. Use once per project, triggered by /mishkan-init.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# mishkan-init
|
|
7
|
+
|
|
8
|
+
Initialise a new project under MISHKAN. Run once per project. Surface a `/plan`
|
|
9
|
+
to Y4NN before the first doc is written — the plan is the scope contract for init.
|
|
10
|
+
|
|
11
|
+
## Preconditions
|
|
12
|
+
|
|
13
|
+
- Y4NN has converged on intent in exploration mode (Nehemiah + Bezalel).
|
|
14
|
+
- Working directory is the project root.
|
|
15
|
+
|
|
16
|
+
## Sequence (each phase feeds the next — do not skip, do not reorder)
|
|
17
|
+
|
|
18
|
+
1. **Nehemiah** — from the intent conversation, write `docs/PRD.md` (product
|
|
19
|
+
requirements: problem, users, use cases).
|
|
20
|
+
2. **Nathan** (Yasad) — `docs/SRS.md` (software requirements from the PRD).
|
|
21
|
+
3. **Zadok** (Yasad) — `docs/CONTRACT.md` (invariants + guarantees). `/plan` first.
|
|
22
|
+
4. **Bezalel + Nathan** — `docs/ARCHITECTURE.md`. `/plan` first.
|
|
23
|
+
5. **Benaiah** (Mishmar) — `docs/THREAT_MODEL.md` via STRIDE. `/plan` first.
|
|
24
|
+
6. **Meshullam** (Migdal) — `docs/diagrams/C4/` (Context, Container, Component).
|
|
25
|
+
`/plan` first.
|
|
26
|
+
7. **Jehoshaphat** (Sefer) — scaffold `docs/README.md`, `docs/adr/`,
|
|
27
|
+
`docs/runbooks/` (stub runbooks per team). `/plan` first.
|
|
28
|
+
8. **Automated** — Cognee setup (two physically-separate stores, decision D-007):
|
|
29
|
+
- **Curated box (global singleton):** run
|
|
30
|
+
`bash ~/.claude/mishkan/scripts/ensure-curated-box.sh`. It is idempotent —
|
|
31
|
+
creates `curated_db`, brings up the curated box (`mishkan-curated-*` on :7730),
|
|
32
|
+
and seeds the reference library only if empty. Never reseeds a populated box.
|
|
33
|
+
- **Work store (per-project):** **never bulk-ingest** the `docs/` tree —
|
|
34
|
+
memory is opt-in. Use `mishkan-ingest` (the skill) which selects docs
|
|
35
|
+
either (a) by `mishkan: ingest` YAML frontmatter tag, or (b) explicit
|
|
36
|
+
paths. The skill runs `add → cognify → memify` in one shot, throttled
|
|
37
|
+
and on persistent storage. Tag docs you want in project memory; everything
|
|
38
|
+
else stays out of the graph (no PII bleed, no oversized-doc embedding
|
|
39
|
+
failures). At init, run `mishkan-ingest.sh --tagged-only` so anything
|
|
40
|
+
already tagged enters memory; the rest is added per-doc as you go.
|
|
41
|
+
If the work stack is not running (`~/.claude/mishkan/cognee/`), skip both
|
|
42
|
+
gracefully and note it — agents still work; persistence resumes when it's up.
|
|
43
|
+
9. **Automated** — write `./CLAUDE.md` from
|
|
44
|
+
`~/.claude/mishkan/templates/project-CLAUDE.md`, fill placeholders, set Sprint
|
|
45
|
+
S0. Copy `~/.claude/mishkan/templates/settings.json` → `.claude/settings.json`,
|
|
46
|
+
the team rules from `~/.claude/mishkan/rules/*` → `.claude/rules/*` for
|
|
47
|
+
path-scoped loading, and `~/.claude/mishkan/templates/mcp.json` → `./.mcp.json`
|
|
48
|
+
so agents can reach the Cognee knowledge-graph MCP.
|
|
49
|
+
|
|
50
|
+
## Outputs
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
docs/{PRD,SRS,CONTRACT,ARCHITECTURE,THREAT_MODEL,README}.md
|
|
54
|
+
docs/adr/ docs/runbooks/ docs/diagrams/C4/
|
|
55
|
+
./CLAUDE.md (sprint S0)
|
|
56
|
+
.claude/settings.json .claude/rules/{common,frontend,backend,infrastructure,documentation}/
|
|
57
|
+
.mcp.json (cognee = work store, cognee-curated = reference)
|
|
58
|
+
Cognee: curated box ensured (:7730) + this project's dataset seeded in work (:7777)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Constraints
|
|
62
|
+
|
|
63
|
+
Sequence before implementation — no code is written during init. Stateful
|
|
64
|
+
operations hard stop. Every doc is dated and conforms to the Sefer rules.
|
|
65
|
+
English only.
|