id-95 Feedback
Last response received, before the session closed out (no handoff available)
Section titled “Last response received, before the session closed out (no handoff available)”“Done. Full report below.
- Branch review — what moves to canonical
Branch is strict superset of canonical-pipeline-setup (zero divergence — canonical is ancestor). Recommend: fast-forward canonical to this branch tip (5a2b11e75, now pushed). Contents all belong there:
- 96d4e5305 e2e fix (ID-105 — workspaces smoke red on main, T2 fixture alignment) — needed everywhere
- 8 ledger commits (ID-105 close, {95.2} journals, bl-287/288) — OoO session needs this ledger state
- Nothing to cherry-pick selectively; nothing to leave behind. Working tree clean.
Docs-site: all ID-95 artefacts tracked + pushed. PRODUCT revision committed b7fce720, pushed.
- PRODUCT.md updated (ready for TECH)
Approach taken: 4 parallel read-only research agents, then main-session synthesis + edits. Applied:
- PI-10/11/12 rewritten — tenant_config pivot. Your suggestion won the evaluation outright: branding = tenant_config row + private Storage bucket in client’s own Supabase, hydrated by generic prebuild fetch using env creds already in each Vercel project (SUPABASE_SERVICE_ROLE_KEY mandatory per lib/env-server.ts:49). Existing codegen/loader/contrast-gate unchanged — script just writes the files the glob expects before generate:branding. Latency concern moot: fetch is build-time, zero runtime cost; branding change = redeploy (same as repo-overlay design — branding is build-inlined either way). Fail-closed: client build with no row FAILS (S196 analogue); default/no-creds no-ops → AC-E3 control build stays green. Second instance of the signup_policy config-as-data template. Per-client provisioning repo scored worse (re-creates credential fork per client, heavyweight for 1 JSON + 5 images); Coolify/VPC can’t serve Tier 1 at all (Phew has no Coolify server).
- Open decision 1 DISSOLVED — no private-repo read anywhere in deploy path; neither GH-Actions nor Vercel-token arm survives. oq-618a70db51ab78c3 closes “neither”.
- Decision 2 resolved: knowledge-hub-platform, APP_URL=https://kh.aisolutionhub.co.uk; Phew-first sequencing pinned in PI-3.
- Decision 3 resolved: demo-bootstrap-spec archives now (PI-17).
- PI-13/14: MCP plugin seven-kappa refs carved out to ID-71; rename gate = runtime+CI sweep + deploy-gate check-name only. Your MCP-settings precedent located: components/settings/mcp-url.ts:11-17 (getMcpUrl() derives from NEXT_PUBLIC_APP_URL) — cited in PI-13 as the pattern.
- PI-20 generalised: per-instance re-seed manifest (signup_policy + tenant_config + bucket) post-recut.
- New open decisions: 0 (ratify pivot final form), 5 (tenant_config scope — branding-only vs general config doc; phew.json already carries classificationDisambiguation), 6 (durable master copy of brand assets — recut-to-new-project wipes Storage).
- Answers to your questions
OQ-1 — unaddressed seeds/domains/compose/secrets? Mostly no. Compose: deploy/coolify/** is platform-generic (aisolutionhub.co.uk hosts, placeholder env). Secrets: none real in either repo. Seeds: all synthetic. Two genuine gaps:
- main_session_output.md — tracked at KH repo root (committed S329), client-name mentions, outside every guard perimeter and PENDING_DEID exclusion — fails identity-guard simulation today.
- Migration 20260609093000 carries hook_restrict_signup_to_phew_domain literal — purge map covers it only if the contested R8 bare-stem rule is ratified IN (ID-68 OQ-H), and it’s missing from the guard exclusion list either way.
Plus guard-list drift: ID-95.md, s328–s332 continuation prompts, cmux-brief-s267 not in PENDING_DEID though categorically inside PI-23’s perimeter.
OQ-4 — docs-site root content. Important correction: not historic accident — ratified Option S-B ({68.12}: “private docs-site + internal harness”). Your “docs only” position overturns S-B; that ratification is the root decision. Per-item: scripts/, e2e/, tests/, vercel.json = legitimately docs-site-specific, stay. harness/ = two things glued: docubot/skills drivers (stay — they ARE docs automation) + relocated KH eval lane (misplaced; its live-mode imports are already broken — harness/scripts/eval-classification.ts:383 imports ../lib/ai/classify etc. which don’t exist under harness/lib/). eval-fixtures/ = client bid prose, moves with eval lane (or → DB rows). ops/classification-prompt.md = strongest signup_policy-style candidate — taxonomy section already DB-codegen’d. ops/identity-denylist.json = stays private (or future ops repo). Note: ID-68 Inv-14 plans ledgers INTO docs-site — conflicts with “docs only”; ledgers-as-DB-table would dissolve that too.
Taxonomy-sync. Verdict: redesign required; automation shell removable now. It’s a DB→repo codegen loop (prod taxonomy → snapshot/prompt/plugin-vocab commits to public main). Already broken since 08/06 ({68.23} prompt relocation: workflow never sets KH_PRIVATE_DOCS_DIR → fail-loud; can’t commit the now-private prompt anyway; last run 28/04 — de facto manual for 6 weeks). Not deletable outright: taxonomy_snapshot.json is load-bearing for cocoindex re-ingest validation (extraction.py:79-176). Ontology doesn’t subsume the client-extension leg (it owns baseline/seed only; client_extensible: true, admin-UI-authored). End-state: baseline via ontology + PI-18 fan-out; per-tenant artefacts generated point-of-use from target client DB. PI-15 now pins this incl. “snapshot embeds client-provenance rows in public repo” as a transitional must-not-grow.
-
Recommended next steps
-
You: ratify the revised PRODUCT (decision 0) + new decisions 5–6; ratify/overturn Option S-B (gates all docs-site root moves).
-
OoO session: FF canonical to this branch; curate findings → backlog (main_session_output.md de-ID/untrack, R8+guard-drift, harness eval imports, taxonomy-sync shell retirement, docs-site root vitest unwired in its CI).
-
{95.3} TECH in fresh session (Q-PLANNER-2 fresh-planner rule): tenant_config schema/RLS, prebuild fetch script, re-seed manifest, taxonomy point-of-use mechanics. PRODUCT is ready as input now.”
User Feedback
Section titled “User Feedback”-
Clarification - the current coolify setup is for Phew, so I think these are incorrect “Phew has no Coolify server” and “deploy/coolify/** is platform-generic (aisolutionhub.co.uk hosts, placeholder env)” - the setup was built for Phew, the only reason
aisolutionhub.co.ukwas used here was to enable us to complete DSN setup - the domain will be changed to Phew, when we handover. Similar to Vercel, and Supabase, we’ll need our own Platform-version of the coolify setup - unless there’s something I’m misunderstanding here. -
OQ-1 -
main_session_output.mdis an easy fix - we just need to update the script that generates it, which is under the global Claude setup in the tools/ directory, and then update the script so that when an output is generated, the default location is to a new folder within the docs-site repo - something like.session-transcript- the files don’t need to be tracked and are transient. So the only reason it’s used is I run the script if we get to a state where a session is no longer cached and handoff hasn’t been completed, so the script generates an output that I can then share with you in the next session. So this isn’t load-bearing and I imagine it’s something that a sub-agent could resolve quite easily. -
OQ-4 - Noted and agreed. By “historic design”, what I actually meant here was that we previously architected something in a way that wasn’t designed at the time for a platform which could have multiple clients and wasn’t environment driven. Ledgers INTO docs-site approved as the ledgers are development workflow specific not client specific, for clarity the doc site isn’t a public facing site it’s the mechanism by which you and I are able to share platform related content like the specs ledgers and any documentation that is used as part of the platform understanding.
-
None of the following items are backlog: “curate findings → backlog (main_session_output.md de-ID/untrack, R8+guard-drift, harness eval imports, taxonomy-sync shell retirement, docs-site root vitest unwired in its CI).” - they need to move to the correct task id as new sub-tasks.
PRODUCT.md OQ Responses
Section titled “PRODUCT.md OQ Responses”-
- Ratified, but note the coolify server clarification, above.
-
- Covered by ID-68.
-
- TECH to propose.
-
- TECH to propose.