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,172 @@
|
|
|
1
|
+
# MISHKAN — Build Decisions
|
|
2
|
+
|
|
3
|
+
Decisions made at Phase 0 that govern the entire build. Each is locked unless
|
|
4
|
+
explicitly revisited with a dated entry below.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## D-001 — Cognee deployment: Local Docker
|
|
9
|
+
|
|
10
|
+
**Decision:** Cognee runs as a containerised service under
|
|
11
|
+
`~/.claude/mishkan/cognee/`, managed by Docker Compose.
|
|
12
|
+
|
|
13
|
+
**Rationale:** Aligns with the existing infrastructure discipline — everything
|
|
14
|
+
else runs through Docker Compose with multi-environment overlays, SOPS-managed
|
|
15
|
+
secrets, and hardening overlays. The knowledge graph stays local; no external
|
|
16
|
+
account or billing surface. Fastest install.
|
|
17
|
+
|
|
18
|
+
**Implications:**
|
|
19
|
+
- `.mcp.json` points the Cognee MCP at the local containerised endpoint.
|
|
20
|
+
- Secrets (DB password, API keys if any) managed via SOPS, never plaintext.
|
|
21
|
+
- A hardening overlay is applied on every container recreate.
|
|
22
|
+
- Backups are local; no cloud egress.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## D-002 — Model backend: Claude Code models only
|
|
27
|
+
|
|
28
|
+
**Decision:** Every agent runs on a Claude model tier. There is no local model
|
|
29
|
+
runtime and no local-model MCP wrapper.
|
|
30
|
+
|
|
31
|
+
**Rationale:** The target is Claude Code's native models. Introducing a local
|
|
32
|
+
runtime (Ollama / LM Studio / Docker Model Runner / llama.cpp) would add a whole
|
|
33
|
+
subsystem — an MCP wrapper, runtime health-checks, fallback logic, per-agent
|
|
34
|
+
runtime selection — for no benefit given the target. Removing it simplifies the
|
|
35
|
+
build materially.
|
|
36
|
+
|
|
37
|
+
**Implications:**
|
|
38
|
+
- Three tiers only: Opus, Sonnet, Haiku.
|
|
39
|
+
- **Opus (9):** Nehemiah, Bezalel, all Team Leads, Jehonathan.
|
|
40
|
+
- **Sonnet (22):** every agent that **writes code/config into the codebase**
|
|
41
|
+
(precision matters on Y4NN's code) + senior specialists + research
|
|
42
|
+
clarify/formulate/research. Includes all implementation specialists —
|
|
43
|
+
Hizkiah, Salma, Hiram, Obed, Asaph, Palal, Meremoth, Hanun — plus Nathan,
|
|
44
|
+
Zadok, Shallum, Ira, Benaiah, Joab, Hushai, Oholiab, Meshullam, Seraiah,
|
|
45
|
+
Joah, Jakin, Ezra, Caleb.
|
|
46
|
+
- **Haiku (14):** agents that do **not** write code — QA (Uriah, Jahaziel),
|
|
47
|
+
all Team Reporters, pure advisors (Deborah, Rehum), Sefer team-layer docs
|
|
48
|
+
(Shevna), research summarise/evaluate/report (Shaphan, Shemaiah, Baruch).
|
|
49
|
+
|
|
50
|
+
**Amendment 2026-05-27:** original split put implementation specialists on
|
|
51
|
+
Haiku for cost. Revised on Y4NN's preference — Sonnet writes his code more
|
|
52
|
+
precisely. Haiku retained only where no code is written (evaluate/collect/advise).
|
|
53
|
+
- Tier declared per-agent in frontmatter `model:` field.
|
|
54
|
+
- Overridable centrally via `~/.claude/mishkan/config/model-routing.yaml`.
|
|
55
|
+
- Cost discipline lives entirely in tier assignment + prompt caching +
|
|
56
|
+
Cognee offloading. The observability loop surfaces expensive agents.
|
|
57
|
+
|
|
58
|
+
**Supersedes:** the original design §16 model assignment matrix, which assumed
|
|
59
|
+
local models for the fast tier. Local tiers are replaced by Haiku.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## D-003 — Install scope: User + Project hierarchy
|
|
64
|
+
|
|
65
|
+
**Decision:** `~/.claude/` carries permanent standards, agents, hooks, and rules
|
|
66
|
+
common across all work. A per-project `.claude/` carries project-specific state,
|
|
67
|
+
seeded by `/mishkan-init`.
|
|
68
|
+
|
|
69
|
+
**Rationale:** Matches the design doc's CLAUDE.md hierarchy. The user-level layer
|
|
70
|
+
is always warm and travels every project; the project layer holds sprint state,
|
|
71
|
+
the project CLAUDE.md, and project-scoped settings.
|
|
72
|
+
|
|
73
|
+
**Implications:**
|
|
74
|
+
- All MISHKAN artifacts live under `~/.claude/mishkan/` to avoid clobbering the
|
|
75
|
+
existing user-level surface (5 agents, 8 commands, 152 skills, settings,
|
|
76
|
+
command-validator script).
|
|
77
|
+
- `~/.claude/CLAUDE.md` and `~/.claude/rules/y4nn-standards.md` are introduced
|
|
78
|
+
by MISHKAN (neither existed before).
|
|
79
|
+
- Commands are symlinked into `~/.claude/commands/` only after confirming no
|
|
80
|
+
name collision.
|
|
81
|
+
- `/mishkan-init` seeds the project layer: `./CLAUDE.md`, `docs/`, project
|
|
82
|
+
`.claude/settings.json`, Cognee project namespace.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## D-004 — Existing user-level surface is preserved, never overwritten
|
|
87
|
+
|
|
88
|
+
**Decision:** MISHKAN extends `~/.claude/`; it does not replace anything.
|
|
89
|
+
|
|
90
|
+
**Preserved as-is:** any pre-existing user-level `~/.claude/agents/*.md`,
|
|
91
|
+
`~/.claude/commands/*.md`, `~/.claude/skills/*`, `~/.claude/settings.local.json`,
|
|
92
|
+
and any existing helper scripts (e.g. a command-validator). The installer never
|
|
93
|
+
overwrites or removes files it did not place.
|
|
94
|
+
|
|
95
|
+
**Extended:** `~/.claude/settings.json` gains the MISHKAN hook registrations.
|
|
96
|
+
If a pre-existing `Bash` PreToolUse validator is present, the new security hook
|
|
97
|
+
chains alongside it rather than replacing it.
|
|
98
|
+
|
|
99
|
+
**Leveraged:** if the project provides its own ops specialist agent, the Migdal
|
|
100
|
+
and Mishmar teams reference it for environment-specific operational knowledge.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## D-005 — MISHKAN is a distributable npm package (added 2026-05-27)
|
|
105
|
+
|
|
106
|
+
**Decision:** MISHKAN ships as an npm package (`mishkan-harness`) installed via a
|
|
107
|
+
**dependency-free `npx` one-shot installer** (`npx mishkan-harness install`). The
|
|
108
|
+
installer **copies** the payload into `~/.claude/mishkan` (not symlinked to
|
|
109
|
+
node_modules), creates relative symlinks for agent/skill/command discovery, and
|
|
110
|
+
merges hooks into `~/.claude/settings.json` with paths resolved from
|
|
111
|
+
`os.homedir()` at install time.
|
|
112
|
+
|
|
113
|
+
**Rationale:** the harness must be portable and shareable, not bound to one
|
|
114
|
+
machine. The earlier hand-placed build hardcoded absolute paths (`/home/ogu/...`)
|
|
115
|
+
in settings.json and `projects.yaml`. The installer removes all machine-binding.
|
|
116
|
+
|
|
117
|
+
**Implications:**
|
|
118
|
+
- **Zero npm dependencies** in the installer — a security-first harness must not
|
|
119
|
+
carry supply-chain risk, and Mishmar's own rules flag postinstall scripts, so a
|
|
120
|
+
no-deps `npx` installer is the only consistent choice.
|
|
121
|
+
- Package layout: `bin/mishkan.js` (installer), `payload/mishkan/` (→ `~/.claude/mishkan`),
|
|
122
|
+
`payload/user/` (→ user-level `CLAUDE.md` + `rules/`, placed only if absent),
|
|
123
|
+
`payload/install/settings.hooks.json` (hook fragment with a `{{MISHKAN}}`
|
|
124
|
+
placeholder resolved at install), `docs/engineer/` (canonical profile).
|
|
125
|
+
- Install is **idempotent** and **non-clobbering**: never overwrites a user's
|
|
126
|
+
`CLAUDE.md`, `rules/y4nn-standards.md`, or any real (non-symlink) agent/command.
|
|
127
|
+
- `uninstall` removes the harness, its symlinks, and its hooks while preserving
|
|
128
|
+
user-level files (`--purge` to also remove the user rule).
|
|
129
|
+
- `projects.yaml` is **discovery-based** (env / workspace-root / git-repo scan),
|
|
130
|
+
carrying no hardcoded paths.
|
|
131
|
+
- Verified: full install→status→uninstall cycle in a throwaway `$HOME` with zero
|
|
132
|
+
source-machine path leakage.
|
|
133
|
+
|
|
134
|
+
## D-006 — Engineer profile is canonical, replaceable, and propagated (added 2026-05-27)
|
|
135
|
+
|
|
136
|
+
**Decision:** the engineer the harness serves is described in
|
|
137
|
+
`docs/engineer/profile.md` — a single, replaceable source of truth. The runtime
|
|
138
|
+
load path is the generic `~/.claude/mishkan/profile.md` (not a person-specific
|
|
139
|
+
filename), so any engineer can adopt the harness by replacing one file.
|
|
140
|
+
|
|
141
|
+
**Propagation is two-layer:** `scripts/sync-profile.sh` does the mechanical
|
|
142
|
+
copy + reference/drift audit; **Seraiah** (Sefer org-layer agent) owns the
|
|
143
|
+
semantic re-derivation of digests drawn from the profile (the user-level
|
|
144
|
+
`CLAUDE.md` non-negotiables, engineering-identity docs) when it materially changes.
|
|
145
|
+
|
|
146
|
+
## D-007 — Curated library is a separate cognee store from project knowledge (added 2026-05-28)
|
|
147
|
+
|
|
148
|
+
**Decision:** the cross-project **curated library** lives in its own isolated
|
|
149
|
+
cognee store (`mishkan-curated-*`, MCP alias `cognee-curated`, port 7730),
|
|
150
|
+
physically separate from the **work** store that holds per-project knowledge
|
|
151
|
+
(`mishkan-cognee-*`, MCP alias `cognee`, port 7777). A project's `.mcp.json`
|
|
152
|
+
declares both: `cognee` (read+write its own graph) and `cognee-curated`
|
|
153
|
+
(read-only reference). The per-client memory dataset (`<client>_memory`, e.g.
|
|
154
|
+
`claude_code_memory`) is a legitimate part of the work store — never pruned.
|
|
155
|
+
|
|
156
|
+
**Why physical, not logical:** project ingestion pulls in code and data that can
|
|
157
|
+
include PII (the aiobi-mail test ingested real Gmail addresses), and with
|
|
158
|
+
`ENABLE_BACKEND_ACCESS_CONTROL=false` all datasets share one Neo4j graph — so
|
|
159
|
+
logical dataset tags alone leave them commingled in one store and one UI. Neo4j
|
|
160
|
+
Community allows only one database per instance, so true graph isolation requires
|
|
161
|
+
a separate Neo4j container. The curated box reuses the shared Ollama and the
|
|
162
|
+
shared Postgres *server* (own database `curated_db`) to keep the cost to one
|
|
163
|
+
small extra Neo4j. The curated library is small and regenerable
|
|
164
|
+
(`seed-curated-library.sh` → the curated box), so the split is cheap to maintain.
|
|
165
|
+
|
|
166
|
+
**Embeddings caveat (inherited):** the curated box embeds via **local Ollama** —
|
|
167
|
+
bulk seeding bursts embedding calls and cloud free-tier embeddings 429
|
|
168
|
+
(RESOURCE_EXHAUSTED).
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
*Decisions locked May 2026. Revisit only with a dated amendment below.*
|