2026-06-23 targeted addendum: the Veritas retraction-cascade customer-view deepening ran green against the real Playwright dev stack:
pnpm --dir apps/oshun/web exec playwright test e2e/veritas-retraction-cascade.spec.ts e2e/library-provenance-grounding.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list→ 10 passed. Supporting checks:vitestforLibraryDashboard.test.tsxandlibrarySync.test.ts→ 28 passed;pnpm --dir apps/oshun/web typecheck;pnpm --dir apps/oshun/web lint(0 errors, existing warnings only). A Next production build was not run for this addendum because this host has 15 GiB RAM and the workspace memory gate forbids Next production builds on <32 GiB hosts without explicit approval.2026-06-24 targeted assistant addendum: the
assistant-handoff-context-carryBFF boundary deepening ran green against the real Playwright dev stack:pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/assistant-session-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list→ 10 passed. Supporting checks:pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/assistant.ts apps/oshun/web/e2e/assistant-session-bff.spec.ts,pnpm --dir apps/oshun/bff typecheck, andpnpm --dir apps/oshun/web typecheck. This addendum covers route-level handoff sanitization: valid customer Veritas context is merged into session continuity, while a mismatched admin artifact is dropped before continuity merge.
297. 2026-07-04 Studio Aja Human Mesh Recovery real-BFF coverage#
Closed the /studio/aja/human-mesh-recovery walkthrough gap where the page had
runtime-sweep evidence but no focused real-dev-infra coverage for the PCK
catalog, exact partial and perfect recovered-pose scoring, breadcrumbs, route
map, quick actions, pending submit behavior, or fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-human-mesh-recovery.spec.ts suite opens
the real Next Studio shell, seeds Aja-admin or non-admin browser sessions, sends
/v1/admin/aja/human-mesh-recovery catalog requests and
/v1/admin/aja/human-mesh-recovery/assess POSTs to the real local BFF with
browser bearer auth, and captures request headers and bodies rather than mocking
the keypoint-accuracy contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact pck
threshold/default-normalization catalog rendering, bearer propagation,
breadcrumb, route-map and quick-action affordances, shipped partially-correct
hand pose with AUC 0.5 and per-threshold PCK
{0.05: 0, 0.1: 0, 0.15: 1, 0.2: 1}, edited perfect pose with AUC 1 and all
thresholds correct, client-only prediction JSON / ground-truth JSON /
normalization validation with no POST, BFF validation-detail surfacing,
malformed success-payload fail-closed behavior, assess transport failure,
catalog loading / 503 / malformed states, non-admin fail-closed behavior,
pending submit disablement, mobile 44px / no-overflow controls, scoped axe
scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the expected pck metric, default thresholds,
and default normalization; rejects malformed assessment results before
rendering; exposes stable catalog / result / per-threshold / per-joint /
route-map attributes; marks loading / result / error states with live-region or
alert roles; and locks the pose and normalization controls while a real BFF
assessment request is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaHumanMeshRecoveryWorkspace.tsx apps/oshun/web/src/app/studio/aja/human-mesh-recovery/page.tsx apps/oshun/web/src/components/__tests__/StudioAjaHumanMeshRecoveryWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaHumanMeshRecoveryWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaHumanMeshRecoveryPage.test.tsx apps/oshun/web/e2e/studio-aja-human-mesh-recovery.spec.ts WALKTHROUGH/studio/domain-bridges/aja/studio-aja-human-mesh-recovery.md V1/TODOS.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaHumanMeshRecoveryWorkspace.tsx apps/oshun/web/src/app/studio/aja/human-mesh-recovery/page.tsx apps/oshun/web/e2e/studio-aja-human-mesh-recovery.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaHumanMeshRecoveryWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaHumanMeshRecoveryWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaHumanMeshRecoveryPage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaHumanMeshRecoveryWorkspace.test.tsx src/components/__tests__/StudioAjaHumanMeshRecoveryWorkspace.integration.test.tsx src/components/__tests__/StudioAjaHumanMeshRecoveryPage.test.tsx src/components/__tests__/StudioAjaHumanMeshRecoveryRouteMap.test.ts— 4 files, 13 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-human-mesh-recovery-route.test.ts— 1 file, 7 tests passed.- Resource gate before typecheck/Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 9 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-human-mesh-recovery.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.pnpm docs:center— passed; rendered 2991 files.pnpm docs:center:check— passed.pnpm docs:center:verify— passed.- Resource gate before
pnpm docs:center:test: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised docs browser run, available memory stayed at or above 12 GiB with 29 GiB free swap. pnpm docs:center:test— 95 passed, 11 skipped.pnpm docs:center:pytest— 15 passed.
296. 2026-07-04 Studio Aja MoCap Input Formats real-BFF coverage#
Closed the /studio/aja/mocap-input-formats walkthrough gap where the page had
runtime-sweep evidence but no focused real-dev-infra coverage for the
Alembic-JSON validator catalog, exact valid-document readback, malformed
document diagnostics, route map, quick actions, pending submit behavior, or
fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-mocap-input-formats.spec.ts suite opens
the real Next Studio shell, seeds Aja-admin or non-admin browser sessions, sends
/v1/admin/aja/mocap-input-formats catalog requests and
/v1/admin/aja/mocap-input-formats/validate POSTs to the real local BFF with
browser bearer auth, and captures request headers and bodies rather than mocking
the Alembic-JSON contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact
alembic-json error/warning catalog rendering, bearer propagation, route-map
and quick-action affordances, shipped valid Alembic document with backend
Ogawa, 120 samples, 25 fps, and 2 joints, edited malformed document with 3
blocking errors and 1 warning, client-only blank-input validation with no POST,
BFF validation-detail surfacing, malformed success-payload fail-closed behavior,
validate transport failure, catalog loading / 503 / malformed states, non-admin
fail-closed behavior, pending submit disablement, mobile 44px / no-overflow
controls, scoped axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the expected alembic-json validator and
required error/warning checks; rejects malformed validation results before
rendering; exposes stable catalog / result / route-map attributes; marks loading
/ result / error states with live-region or alert roles; and locks the document
textarea while a real BFF validate request is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaMocapInputFormatsWorkspace.tsx apps/oshun/web/src/app/studio/aja/mocap-input-formats/page.tsx apps/oshun/web/src/components/__tests__/StudioAjaMocapInputFormatsWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMocapInputFormatsWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMocapInputFormatsPage.test.tsx apps/oshun/web/e2e/studio-aja-mocap-input-formats.spec.ts WALKTHROUGH/studio/domain-bridges/aja/studio-aja-mocap-input-formats.md V1/TODOS.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaMocapInputFormatsWorkspace.tsx apps/oshun/web/src/app/studio/aja/mocap-input-formats/page.tsx apps/oshun/web/e2e/studio-aja-mocap-input-formats.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaMocapInputFormatsWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMocapInputFormatsWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMocapInputFormatsPage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaMocapInputFormatsWorkspace.test.tsx src/components/__tests__/StudioAjaMocapInputFormatsWorkspace.integration.test.tsx src/components/__tests__/StudioAjaMocapInputFormatsPage.test.tsx src/components/__tests__/StudioAjaMocapInputFormatsRouteMap.test.ts— 4 files, 13 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-mocap-input-formats-route.test.ts— 1 file, 7 tests passed.- Resource gate before typecheck/Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 9 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-mocap-input-formats.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.pnpm docs:center— passed; rendered 2991 files.pnpm docs:center:check— passed.pnpm docs:center:verify— passed.- Resource gate before
pnpm docs:center:test: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised docs browser run, available memory stayed at or above 12 GiB with 29 GiB free swap. pnpm docs:center:test— 95 passed, 11 skipped.pnpm docs:center:pytest— 15 passed.
295. 2026-07-04 Studio Aja MoCap Data Processing real-BFF coverage#
Closed the /studio/aja/mocap-data-processing walkthrough gap where the page
had runtime-sweep evidence but no focused real-dev-infra coverage for the
footskate detector catalog, planted-foot slide detection, clean and
ground-penetration outputs, route map, quick actions, pending submit behavior,
or fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-mocap-data-processing.spec.ts suite
opens the real Next Studio shell, seeds Aja-admin or non-admin browser sessions,
sends /v1/admin/aja/mocap-data-processing catalog requests and
/v1/admin/aja/mocap-data-processing/detect POSTs to the real local BFF with
browser bearer auth, and captures request headers and bodies rather than mocking
the footskate contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact footskate
read/threshold catalog rendering, bearer propagation, route-map and quick-action
affordances, shipped sliding planted-foot clip with score 0 and one left-foot
slide period, edited clean clip with score 1 and no artifacts, edited
ground-penetrating clip with two penetration events, client-only
joint/JSON/frame/threshold validation with no POST, BFF validation-detail
surfacing, malformed success-payload fail-closed behavior, detect transport
failure, catalog loading / 503 / malformed states, non-admin fail-closed
behavior, pending submit disablement, mobile 44px / no-overflow controls, scoped
axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the expected footskate check, left/right ankle
reads, and finite positive thresholds; rejects malformed footskate results
before rendering; exposes stable catalog / result / route-map attributes; marks
loading / result / error states with live-region or alert roles; and locks the
joint, frame, and threshold controls while a real BFF detect request is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaMocapDataProcessingWorkspace.tsx apps/oshun/web/src/app/studio/aja/mocap-data-processing/page.tsx apps/oshun/web/src/components/__tests__/StudioAjaMocapDataProcessingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMocapDataProcessingWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMocapDataProcessingPage.test.tsx apps/oshun/web/e2e/studio-aja-mocap-data-processing.spec.ts WALKTHROUGH/studio/domain-bridges/aja/studio-aja-mocap-data-processing.md V1/TODOS.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaMocapDataProcessingWorkspace.tsx apps/oshun/web/src/app/studio/aja/mocap-data-processing/page.tsx apps/oshun/web/e2e/studio-aja-mocap-data-processing.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaMocapDataProcessingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMocapDataProcessingWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMocapDataProcessingPage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaMocapDataProcessingWorkspace.test.tsx src/components/__tests__/StudioAjaMocapDataProcessingWorkspace.integration.test.tsx src/components/__tests__/StudioAjaMocapDataProcessingPage.test.tsx src/components/__tests__/StudioAjaMocapDataProcessingRouteMap.test.ts— 4 files, 10 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-mocap-data-processing-route.test.ts— 1 file, 8 tests passed.- Resource gate before typecheck/Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 9.8 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-mocap-data-processing.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.pnpm docs:center— passed; rendered 2991 files.pnpm docs:center:check— passed.pnpm docs:center:verify— passed.- Resource gate before
pnpm docs:center:test: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised docs browser run, available memory stayed at or above 12 GiB with 29 GiB free swap. pnpm docs:center:test— 95 passed, 11 skipped.pnpm docs:center:pytest— 15 passed.
294. 2026-07-04 Studio Aja Film/VFX Pipeline real-BFF coverage#
Closed the /studio/aja/film-vfx-pipeline walkthrough gap where the page had
runtime-sweep evidence but no focused real-dev-infra coverage for the
visual-quality catalog, film/VFX motion validation, exact seeded balanced and
asymmetric outputs, route map, quick actions, pending submit behavior, or
fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-film-vfx-pipeline.spec.ts suite opens
the real Next Studio shell, seeds Aja-admin or non-admin browser sessions, sends
/v1/admin/aja/film-vfx-pipeline catalog requests and
/v1/admin/aja/film-vfx-pipeline/analyze POSTs to the real local BFF with
browser bearer auth, and captures request headers and bodies rather than mocking
the visual-quality contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact
visual-quality sub-score and impression catalog rendering, bearer propagation,
route-map and quick-action affordances, shipped balanced film/VFX pose with
score 0.85 / professional, edited asymmetric low-hand pose with score 0.45 /
poor, client-only joint/JSON/frame validation with no POST, BFF
validation-detail surfacing, malformed success-payload fail-closed behavior,
analyze transport failure, catalog loading / 503 / malformed states, non-admin
fail-closed behavior, pending submit disablement, mobile 44px / no-overflow
controls, scoped axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the expected visual-quality analyzer, all
three sub-score keys, and all four impression labels; rejects malformed
visual-quality results before rendering; exposes stable catalog / result /
route-map attributes; marks loading / result / error states with live-region or
alert roles; and locks the joint and frame controls while a real BFF analysis
request is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaFilmVfxPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/film-vfx-pipeline/page.tsx apps/oshun/web/src/components/__tests__/StudioAjaFilmVfxPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaFilmVfxPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaFilmVfxPipelinePage.test.tsx apps/oshun/web/e2e/studio-aja-film-vfx-pipeline.spec.ts WALKTHROUGH/studio/domain-bridges/aja/studio-aja-film-vfx-pipeline.md V1/TODOS.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaFilmVfxPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/film-vfx-pipeline/page.tsx apps/oshun/web/e2e/studio-aja-film-vfx-pipeline.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaFilmVfxPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaFilmVfxPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaFilmVfxPipelinePage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaFilmVfxPipelineWorkspace.test.tsx src/components/__tests__/StudioAjaFilmVfxPipelineWorkspace.integration.test.tsx src/components/__tests__/StudioAjaFilmVfxPipelinePage.test.tsx src/components/__tests__/StudioAjaFilmVfxPipelineRouteMap.test.ts— 4 files, 10 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-film-vfx-pipeline-route.test.ts— 1 file, 7 tests passed.- Resource gate before typecheck/Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 9 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-film-vfx-pipeline.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
293. 2026-07-04 Studio Aja Gaming Pipeline real-BFF coverage#
Closed the /studio/aja/gaming-pipeline walkthrough gap where the page had
runtime-sweep evidence but no focused real-dev-infra coverage for the
perceptual-quality catalog, game-animation validation, exact seeded balanced and
degraded outputs, route map, quick actions, pending submit behavior, or
fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-gaming-pipeline.spec.ts suite opens the
real Next Studio shell, seeds Aja-admin or non-admin browser sessions, sends
/v1/admin/aja/gaming-pipeline catalog requests and
/v1/admin/aja/gaming-pipeline/analyze POSTs to the real local BFF with browser
bearer auth, and captures request headers and bodies rather than mocking the
perceptual-quality contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact
perceptual-quality sub-score and rating catalog rendering, bearer propagation,
route-map and quick-action affordances, shipped balanced game-animation clip
with overall score 0.9058 / excellent, edited degraded clip with overall score
0.7146 / acceptable, client-only joint/JSON/frame validation with no POST, BFF
validation-detail surfacing, malformed success-payload fail-closed behavior,
analyze transport failure, catalog loading / 503 / malformed states, non-admin
fail-closed behavior, pending submit disablement, mobile 44px / no-overflow
controls, scoped axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the expected perceptual-quality suite, all
four sub-score keys, and all five ratings; rejects malformed perceptual-quality
results before rendering; exposes stable catalog / result / route-map
attributes; marks loading / result / error states with live-region or alert
roles; and locks the joint and frame controls while a real BFF analysis request
is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaGamingPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/gaming-pipeline/page.tsx apps/oshun/web/src/components/__tests__/StudioAjaGamingPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaGamingPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaGamingPipelinePage.test.tsx apps/oshun/web/e2e/studio-aja-gaming-pipeline.spec.ts WALKTHROUGH/studio/domain-bridges/aja/studio-aja-gaming-pipeline.md V1/TODOS.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaGamingPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/gaming-pipeline/page.tsx apps/oshun/web/e2e/studio-aja-gaming-pipeline.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaGamingPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaGamingPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaGamingPipelinePage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaGamingPipelineWorkspace.test.tsx src/components/__tests__/StudioAjaGamingPipelineWorkspace.integration.test.tsx src/components/__tests__/StudioAjaGamingPipelinePage.test.tsx src/components/__tests__/StudioAjaGamingPipelineRouteMap.test.ts— 4 files, 10 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-gaming-pipeline-route.test.ts— 1 file, 7 tests passed.- Resource gate before typecheck/Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 9 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-gaming-pipeline.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
292. 2026-07-04 Studio Aja Martial Arts Pipeline real-BFF coverage#
Closed the /studio/aja/martial-arts-pipeline walkthrough gap where the page
had runtime-sweep evidence but no focused real-dev-infra coverage for the
style-consistency catalog, martial-arts motion validation, exact seeded
pose-shift output, Metis bridge links, route map, quick actions, pending submit
behavior, or fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-martial-arts-pipeline.spec.ts suite
opens the real Next Studio shell, seeds Aja-admin or non-admin browser sessions,
sends /v1/admin/aja/martial-arts-pipeline catalog requests and
/v1/admin/aja/martial-arts-pipeline/analyze POSTs to the real local BFF with
browser bearer auth, and captures request headers and bodies rather than mocking
the style-consistency contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact
style-consistency sub-score catalog rendering, bearer propagation, Metis
bridge hrefs, route-map and quick-action affordances, seeded RightHand
pose-shift with score 0.6333 and exact velocity / pose style breaks at frame 3,
edited steady form with catalog window size 30 returning score 1 and no breaks,
client-only joint/JSON/frame/window validation with no POST, BFF
validation-detail surfacing, malformed success-payload fail-closed behavior,
analyze transport failure, catalog loading / 503 / malformed states, non-admin
fail-closed behavior, pending submit disablement, mobile 44px / no-overflow
controls, scoped axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the expected style-consistency analyzer and
all three sub-score keys; rejects malformed style-consistency results before
rendering; exposes stable catalog / result / style-break-row / route-map
attributes; marks loading / result / error states with live-region or alert
roles; and locks the joint, frame, and window-size controls while a real BFF
analysis request is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaMartialArtsPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/martial-arts-pipeline/page.tsx apps/oshun/web/src/components/__tests__/StudioAjaMartialArtsPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMartialArtsPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMartialArtsPipelinePage.test.tsx apps/oshun/web/e2e/studio-aja-martial-arts-pipeline.spec.ts WALKTHROUGH/studio/domain-bridges/aja/studio-aja-martial-arts-pipeline.md V1/TODOS.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaMartialArtsPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/martial-arts-pipeline/page.tsx apps/oshun/web/e2e/studio-aja-martial-arts-pipeline.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaMartialArtsPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMartialArtsPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMartialArtsPipelinePage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaMartialArtsPipelineWorkspace.test.tsx src/components/__tests__/StudioAjaMartialArtsPipelineWorkspace.integration.test.tsx src/components/__tests__/StudioAjaMartialArtsPipelinePage.test.tsx src/components/__tests__/StudioAjaMartialArtsPipelineRouteMap.test.ts— 4 files, 10 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-martial-arts-pipeline-route.test.ts— 1 file, 7 tests passed.- Resource gate before typecheck/Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 10 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-martial-arts-pipeline.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
291. 2026-07-04 Studio Aja Sports Pipeline real-BFF coverage#
Closed the /studio/aja/sports-pipeline walkthrough gap where the page had
runtime-sweep evidence but no focused real-dev-infra coverage for the
physical-plausibility catalog, sports motion validation, exact seeded hip
teleport output, Metis bridge links, route map, quick actions, pending submit
behavior, or fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-sports-pipeline.spec.ts suite opens the
real Next Studio shell, seeds Aja-admin or non-admin browser sessions, sends
/v1/admin/aja/sports-pipeline catalog requests and
/v1/admin/aja/sports-pipeline/analyze POSTs to the real local BFF with browser
bearer auth, and captures request headers and bodies rather than mocking the
physical-plausibility contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact
physical-plausibility sub-score catalog rendering, bearer propagation, Metis
bridge hrefs, route-map and quick-action affordances, seeded hip teleport with
score 0.3, implausible frames [1, 2], and exact velocity / acceleration / COM
violations, edited static grounded pose with score 1 and no violations,
client-only joint/JSON/frame validation with no POST, BFF validation-detail
surfacing, malformed success-payload fail-closed behavior, analyze transport
failure, catalog loading / 503 / malformed states, non-admin fail-closed
behavior, pending submit disablement, mobile 44px / no-overflow controls, scoped
axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the expected physical-plausibility analyzer
and all four sub-score keys; rejects malformed plausibility results before
rendering; exposes stable catalog / result / violation-row / route-map
attributes; marks loading / result / error states with live-region or alert
roles; and locks the joint and frame controls while a real BFF analysis request
is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaSportsPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/sports-pipeline/page.tsx apps/oshun/web/src/components/__tests__/StudioAjaSportsPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaSportsPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaSportsPipelinePage.test.tsx apps/oshun/web/e2e/studio-aja-sports-pipeline.spec.ts WALKTHROUGH/studio/domain-bridges/aja/studio-aja-sports-pipeline.md V1/TODOS.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaSportsPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/sports-pipeline/page.tsx apps/oshun/web/e2e/studio-aja-sports-pipeline.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaSportsPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaSportsPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaSportsPipelinePage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaSportsPipelineWorkspace.test.tsx src/components/__tests__/StudioAjaSportsPipelineWorkspace.integration.test.tsx src/components/__tests__/StudioAjaSportsPipelinePage.test.tsx src/components/__tests__/StudioAjaSportsPipelineRouteMap.test.ts— 4 files, 10 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-sports-pipeline-route.test.ts— 1 file, 7 tests passed.- Resource gate before typecheck/Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 10 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-sports-pipeline.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
290. 2026-07-04 Studio Aja Yoga Pipeline real-BFF coverage#
Closed the /studio/aja/yoga-pipeline walkthrough gap where the page had
runtime-sweep evidence but no focused real-dev-infra coverage for the
naturalness catalog, yoga flow form validation, exact synchronized-limb pattern
outputs, Metis bridge links, route map, quick actions, pending submit behavior,
or fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-yoga-pipeline.spec.ts suite opens the
real Next Studio shell, seeds Aja-admin or non-admin browser sessions, sends
/v1/admin/aja/yoga-pipeline catalog requests and
/v1/admin/aja/yoga-pipeline/analyze POSTs to the real local BFF with browser
bearer auth, and captures request headers and bodies rather than mocking the
naturalness contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact
naturalness sub-score catalog rendering, bearer propagation, Metis bridge
hrefs, route-map and quick-action affordances, seeded synchronized
LeftHand/RightHand/LeftFoot/RightFoot motion with score 0.9738 and two
coordination patterns, edited still balanced pose with score 1 and no patterns,
client-only joint/JSON/frame validation with no POST, BFF validation-detail
surfacing, malformed success-payload fail-closed behavior, analyze transport
failure, catalog loading / 503 / malformed states, non-admin fail-closed
behavior, pending submit disablement, mobile 44px / no-overflow controls, scoped
axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the expected naturalness analyzer and all four
sub-score keys; rejects malformed naturalness results before rendering; exposes
stable catalog / result / pattern-row / route-map attributes; marks loading /
result / error states with live-region or alert roles; and locks the joint and
frame controls while a real BFF analysis request is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaYogaPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/yoga-pipeline/page.tsx apps/oshun/web/src/components/__tests__/StudioAjaYogaPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaYogaPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaYogaPipelinePage.test.tsx apps/oshun/web/e2e/studio-aja-yoga-pipeline.spec.ts WALKTHROUGH/studio/domain-bridges/aja/studio-aja-yoga-pipeline.md V1/TODOS.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaYogaPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/yoga-pipeline/page.tsx apps/oshun/web/e2e/studio-aja-yoga-pipeline.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaYogaPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaYogaPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaYogaPipelinePage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaYogaPipelineWorkspace.test.tsx src/components/__tests__/StudioAjaYogaPipelineWorkspace.integration.test.tsx src/components/__tests__/StudioAjaYogaPipelinePage.test.tsx src/components/__tests__/StudioAjaYogaPipelineRouteMap.test.ts— 4 files, 10 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-yoga-pipeline-route.test.ts— 1 file, 7 tests passed.- Resource gate before typecheck/Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 9.6 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-yoga-pipeline.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
289. 2026-07-04 Studio Aja Fitness Pipeline real-BFF coverage#
Closed the /studio/aja/fitness-pipeline walkthrough gap where the page had
runtime-sweep evidence but no focused real-dev-infra coverage for the smoothness
catalog, exercise motion form validation, exact jerk/discontinuity outputs,
Metis bridge links, route map, quick actions, pending submit behavior, or
fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-fitness-pipeline.spec.ts suite opens the
real Next Studio shell, seeds Aja-admin or non-admin browser sessions, sends
/v1/admin/aja/fitness-pipeline catalog requests and
/v1/admin/aja/fitness-pipeline/analyze POSTs to the real local BFF with
browser bearer auth, and captures request headers and bodies rather than mocking
the smoothness contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact
smoothness report catalog rendering, bearer propagation, Metis bridge hrefs,
route-map and quick-action affordances, seeded jerky j motion with average /
peak jerk 10800 and discontinuity frames [4, 5, 6], edited clean
constant-velocity output, client-only joint/JSON/frame/threshold validation with
no POST, BFF validation-detail surfacing, malformed success-payload fail-closed
behavior, analyze transport failure, catalog loading / 503 / malformed states,
non-admin fail-closed behavior, pending submit disablement, mobile 44px /
no-overflow controls, scoped axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the expected smoothness analyzer and all five
report keys; rejects malformed smoothness results before rendering; exposes
stable catalog / result / per-joint-row / route-map attributes; marks loading /
result / error states with live-region or alert roles; and locks the joint,
frame, and jerk-threshold controls while a real BFF analysis request is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaFitnessPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/fitness-pipeline/page.tsx apps/oshun/web/src/components/__tests__/StudioAjaFitnessPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaFitnessPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaFitnessPipelinePage.test.tsx apps/oshun/web/e2e/studio-aja-fitness-pipeline.spec.ts WALKTHROUGH/studio/domain-bridges/aja/studio-aja-fitness-pipeline.md V1/TODOS.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaFitnessPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/fitness-pipeline/page.tsx apps/oshun/web/e2e/studio-aja-fitness-pipeline.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaFitnessPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaFitnessPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaFitnessPipelinePage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaFitnessPipelineWorkspace.test.tsx src/components/__tests__/StudioAjaFitnessPipelineWorkspace.integration.test.tsx src/components/__tests__/StudioAjaFitnessPipelinePage.test.tsx src/components/__tests__/StudioAjaFitnessPipelineRouteMap.test.ts— 4 files, 9 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-fitness-pipeline-route.test.ts— 1 file, 7 tests passed.- Resource gate before typecheck/Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 9 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-fitness-pipeline.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
288. 2026-07-04 Studio Aja Dance Pipeline real-BFF coverage#
Closed the /studio/aja/dance-pipeline walkthrough gap where the page had
runtime-sweep evidence but no focused real-dev-infra coverage for the
temporal-coherence catalog, dance motion form validation, exact teleport/stutter
outputs, Metis bridge links, route map, quick actions, pending submit behavior,
or fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-dance-pipeline.spec.ts suite opens the
real Next Studio shell, seeds Aja-admin or non-admin browser sessions, sends
/v1/admin/aja/dance-pipeline catalog requests and
/v1/admin/aja/dance-pipeline/analyze POSTs to the real local BFF with browser
bearer auth, and captures request headers and bodies rather than mocking the
temporal-coherence contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact
temporal-coherence sub-score catalog rendering, bearer propagation, Metis
bridge hrefs, route-map and quick-action affordances, seeded RightHand
teleport/stutter output, edited clean-flow output, client-only joint/JSON/frame
validation with no POST, BFF validation-detail surfacing, malformed
success-payload fail-closed behavior, analyze transport failure, catalog loading
/ 503 / malformed states, non-admin fail-closed behavior, pending submit
disablement, mobile 44px / no-overflow controls, scoped axe scans, and direct
BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the expected temporal-coherence analyzer and
all three sub-score keys; rejects malformed coherence results before rendering;
exposes stable catalog / result / discontinuity-row / route-map attributes;
marks loading/result/error states with live-region or alert roles; and locks the
joint and frame controls while a real BFF analysis request is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaDancePipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/dance-pipeline/page.tsx apps/oshun/web/e2e/studio-aja-dance-pipeline.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaDancePipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaDancePipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaDancePipelinePage.test.tsx WALKTHROUGH/studio/domain-bridges/aja/studio-aja-dance-pipeline.md V1/TODOS.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaDancePipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/dance-pipeline/page.tsx apps/oshun/web/e2e/studio-aja-dance-pipeline.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaDancePipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaDancePipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaDancePipelinePage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaDancePipelineWorkspace.test.tsx src/components/__tests__/StudioAjaDancePipelineWorkspace.integration.test.tsx src/components/__tests__/StudioAjaDancePipelinePage.test.tsx src/components/__tests__/StudioAjaDancePipelineRouteMap.test.ts— 4 files, 9 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-dance-pipeline-route.test.ts— 1 file, 7 tests passed.- Resource gate before typecheck/Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 9.7 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-dance-pipeline.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
287. 2026-07-04 Studio Aja Desktop Live Capture real-BFF coverage#
Closed the /studio/aja/desktop-live-capture walkthrough gap where the page had
runtime-sweep evidence but no focused real-dev-infra coverage for the capture
frame-budget catalog, JSON payload validation, exact over-budget/dropped-frame
outputs, route map, quick actions, pending submit behavior, or fail-closed error
paths.
The new apps/oshun/web/e2e/studio-aja-desktop-live-capture.spec.ts suite opens
the real Next Studio shell, seeds Aja-admin or non-admin browser sessions, sends
/v1/admin/aja/desktop-live-capture catalog requests and
/v1/admin/aja/desktop-live-capture/analyze POSTs to the real local BFF with
browser bearer auth, and captures request headers and bodies rather than mocking
the frame-budget contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact
frame_budget catalog rendering, bearer propagation, route-map and quick-action
affordances, seeded 60fps four-frame capture output with 47.06 achieved fps / 2
over-budget frames / 1 dropped frame, edited clean 100fps result, client-only
malformed-JSON and array-payload rejection with no POST, BFF duplicate-frame
detail surfacing, malformed success-payload fail-closed behavior, analyze
transport failure, catalog loading / 503 / malformed states, non-admin
fail-closed behavior, pending submit disablement, mobile 44px / no-overflow
controls, scoped axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the expected frame_budget analysis, rejects
malformed capture-budget results before rendering, rejects non-object JSON
payloads before POST, exposes stable catalog / result / frame-row / route-map
attributes, marks loading/result/error states with live-region or alert roles,
and locks the payload editor while a real BFF analysis request is pending.
Verification, all green:
pnpm --dir apps/oshun/web exec prettier --write src/components/studio/StudioAjaDesktopLiveCaptureWorkspace.tsx src/app/studio/aja/desktop-live-capture/page.tsx e2e/studio-aja-desktop-live-capture.spec.ts— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaDesktopLiveCaptureWorkspace.tsx apps/oshun/web/src/app/studio/aja/desktop-live-capture/page.tsx apps/oshun/web/e2e/studio-aja-desktop-live-capture.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaDesktopLiveCaptureWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaDesktopLiveCaptureWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaDesktopLiveCaptureWorkspace.live.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaDesktopLiveCapturePage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaDesktopLiveCaptureWorkspace.test.tsx src/components/__tests__/StudioAjaDesktopLiveCaptureWorkspace.integration.test.tsx src/components/__tests__/StudioAjaDesktopLiveCaptureWorkspace.live.test.tsx src/components/__tests__/StudioAjaDesktopLiveCapturePage.test.tsx src/components/__tests__/StudioAjaDesktopLiveCaptureRouteMap.test.ts— 5 files, 8 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-desktop-live-capture-route.test.ts— 1 file, 5 tests passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 9.5 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-desktop-live-capture.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
286. 2026-07-04 Studio Aja Performance Optimization real-BFF coverage#
Closed the /studio/aja/performance-optimization walkthrough gap where the page
had runtime-sweep evidence but no focused real-dev-infra coverage for the
quantization catalog, form validation, exact symmetric/asymmetric outputs, route
map, quick actions, pending submit behavior, or fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-performance-optimization.spec.ts suite
opens the real Next Studio shell, seeds Aja-admin or non-admin browser sessions,
sends /v1/admin/aja/performance-optimization catalog requests and
/v1/admin/aja/performance-optimization/quantize POSTs to the real local BFF
with browser bearer auth, and captures request headers and bodies rather than
mocking the quantization contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact
quantization mode/report catalog rendering, bearer propagation, route-map and
quick-action affordances, seeded 8-bit symmetric quantization output, edited
8-bit asymmetric output, client-only value-list and bit-width rejection with no
POST, BFF validation-detail surfacing, malformed success-payload fail-closed
behavior, quantize transport failure, catalog loading / 503 / malformed states,
non-admin fail-closed behavior, pending submit disablement, mobile 44px /
no-overflow controls, scoped axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the expected quantization technique, both
modes, and all seven report keys; rejects malformed quantization results before
rendering; exposes stable catalog / result / route-map attributes; marks
loading/result/error states with live-region or alert roles; and locks the
values/bit-width/symmetric controls while a real BFF quantization request is
pending.
Verification, all green:
pnpm --dir apps/oshun/web exec prettier --write src/components/studio/StudioAjaPerformanceOptimizationWorkspace.tsx src/app/studio/aja/performance-optimization/page.tsx src/components/__tests__/StudioAjaModelOptimizationWorkspace.integration.test.tsx e2e/studio-aja-performance-optimization.spec.ts— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaPerformanceOptimizationWorkspace.tsx apps/oshun/web/src/app/studio/aja/performance-optimization/page.tsx apps/oshun/web/e2e/studio-aja-performance-optimization.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaPerformanceOptimizationWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaPerformanceOptimizationWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaPerformanceOptimizationPage.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaModelOptimizationWorkspace.integration.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaPerformanceOptimizationWorkspace.test.tsx src/components/__tests__/StudioAjaPerformanceOptimizationWorkspace.integration.test.tsx src/components/__tests__/StudioAjaPerformanceOptimizationPage.test.tsx src/components/__tests__/StudioAjaModelOptimizationWorkspace.integration.test.tsx— 4 files, 9 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-performance-optimization-route.test.ts— 1 file, 7 tests passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 9.8 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-performance-optimization.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
285. 2026-07-04 Studio Aja Medical/Rehabilitation Pipeline real-BFF coverage#
Closed the /studio/aja/medical-rehabilitation-pipeline walkthrough gap where
the page had runtime-sweep evidence but no focused real-dev-infra coverage for
the range-of-motion catalog, rehab motion form validation, exact joint-angle
outputs, embodied-instruction panel presence, route map, quick actions, pending
submit behavior, or fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-medical-rehabilitation-pipeline.spec.ts
suite opens the real Next Studio shell, seeds Aja-admin or non-admin browser
sessions, sends /v1/admin/aja/medical-rehabilitation-pipeline catalog requests
and /v1/admin/aja/medical-rehabilitation-pipeline/analyze POSTs to the real
local BFF with browser bearer auth, and captures request headers and bodies
rather than mocking the range-of-motion contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact
joint-angle-range-of-motion report catalog rendering, bearer propagation,
embodied-instruction panel presence, route-map and quick-action affordances,
seeded LeftLeg -90-degree out-of-range result with score 0.9762, edited
clean identity-motion result with score 1, client-only empty-joint /
malformed-JSON / empty-frame rejection with no POST, BFF missing-joint detail
surfacing, malformed success-payload fail-closed behavior, analyze transport
failure, catalog loading / 503 / malformed states, non-admin fail-closed
behavior, pending submit disablement, mobile 44px/no-overflow controls, scoped
axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards strict: the client now requires the expected check ID and all six report keys, rejects malformed analysis results before rendering, exposes stable catalog / result / violation / route-map attributes, marks loading/result/error states with live-region or alert roles, and locks the joint/frames controls while a real BFF analysis request is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaMedicalRehabilitationPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/medical-rehabilitation-pipeline/page.tsx apps/oshun/web/src/components/__tests__/StudioAjaMedicalRehabilitationPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMedicalRehabilitationPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMedicalRehabilitationPipelinePage.test.tsx apps/oshun/web/e2e/studio-aja-medical-rehabilitation-pipeline.spec.ts— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaMedicalRehabilitationPipelineWorkspace.tsx apps/oshun/web/src/app/studio/aja/medical-rehabilitation-pipeline/page.tsx apps/oshun/web/e2e/studio-aja-medical-rehabilitation-pipeline.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaMedicalRehabilitationPipelineWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMedicalRehabilitationPipelineWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMedicalRehabilitationPipelinePage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaMedicalRehabilitationPipelineWorkspace.test.tsx src/components/__tests__/StudioAjaMedicalRehabilitationPipelineWorkspace.integration.test.tsx src/components/__tests__/StudioAjaMedicalRehabilitationPipelinePage.test.tsx src/components/__tests__/StudioAjaMedicalRehabilitationPipelineRouteMap.test.ts— 4 files, 13 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-medical-rehabilitation-pipeline-route.test.ts— 1 file, 7 tests passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 9.6 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-medical-rehabilitation-pipeline.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
284. 2026-07-04 Studio Aja Input Video Support real-BFF coverage#
Closed the /studio/aja/input-video-support walkthrough gap where the page had
runtime-sweep evidence but no focused real-dev-infra coverage for the
video-chunking catalog, form validation, exact chunk-plan outputs, route map,
quick actions, pending submit behavior, or fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-input-video-support.spec.ts suite opens
the real Next Studio shell, seeds Aja-admin or non-admin browser sessions, sends
/v1/admin/aja/input-video-support catalog requests and
/v1/admin/aja/input-video-support/plan POSTs to the real local BFF with
browser bearer auth, and captures request headers and bodies rather than mocking
the video-chunking contract.
The suite verifies anonymous redirect, Aja-admin catalog load, exact 5 chunking-strategy / 6 blending-strategy catalog rendering, bearer propagation, route-map and quick-action affordances, seeded 900-frame 30fps / 10s / 1s planning into 3 chunks, edited 1500-frame 30fps / 20s / 2s planning with deterministic overlapping ranges, client-only decimal frame and zero-overlap rejection with no POST, malformed success-payload fail-closed behavior, plan transport failure, catalog loading / 503 / malformed states, non-admin fail-closed behavior, pending submit disablement, mobile 44px/no-overflow controls, scoped axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards strict: the client now requires every expected chunking and blending strategy, rejects malformed plan results before rendering, exposes stable catalog/result and route-map attributes, marks loading/result/error states with live-region or alert roles, disables native browser form validation so the in-page fail-closed messages always render, and locks every input while a real BFF plan request is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaInputVideoSupportWorkspace.tsx apps/oshun/web/src/app/studio/aja/input-video-support/page.tsx apps/oshun/web/src/components/__tests__/StudioAjaInputVideoSupportWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaInputVideoSupportWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaInputVideoSupportPage.test.tsx apps/oshun/web/e2e/studio-aja-input-video-support.spec.ts— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaInputVideoSupportWorkspace.tsx apps/oshun/web/src/app/studio/aja/input-video-support/page.tsx apps/oshun/web/e2e/studio-aja-input-video-support.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaInputVideoSupportWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaInputVideoSupportWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaInputVideoSupportPage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaInputVideoSupportWorkspace.test.tsx src/components/__tests__/StudioAjaInputVideoSupportWorkspace.integration.test.tsx src/components/__tests__/StudioAjaInputVideoSupportPage.test.tsx— 3 files, 9 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-input-video-support-route.test.ts— 1 file, 5 tests passed.- Resource gates before Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright rerun, available memory stayed at or above 8.5 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-input-video-support.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
283. 2026-07-04 Studio Aja Mobile Live Capture real-BFF coverage#
Closed the /studio/aja/mobile-live-capture walkthrough gap where the page had
runtime-sweep evidence but no focused real-dev-infra coverage for the
adaptive-bitrate JSON editor, selector result table, route map, quick actions,
pending submit behavior, or fail-closed error paths.
The new apps/oshun/web/e2e/studio-aja-mobile-live-capture.spec.ts suite opens
the real Next Studio shell, seeds Aja-admin or non-admin browser sessions, sends
/v1/admin/aja/mobile-live-capture catalog requests and
/v1/admin/aja/mobile-live-capture/select POSTs to the real local BFF with
browser bearer auth, and captures request headers and bodies rather than mocking
the ABR contract.
The suite verifies anonymous redirect, Aja-admin catalog load, bearer
propagation, route-map and quick-action affordances, seeded default ladder
selection r720 at 3200 usable kbps, low-bandwidth floor selection lo,
per-rung selected / sustainable table state through the real BFF,
client-only malformed JSON and non-object rejection with no POST, BFF
duplicate-rung detail surfacing, malformed success-payload fail-closed behavior,
select transport failure, catalog loading / 503 / malformed states, non-admin
fail-closed behavior, pending submit disablement, mobile 44px/no-overflow
controls, scoped axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and result guards
strict: the client now requires the catalog selector adaptive_bitrate, rejects
array/non-object payload JSON before POST, marks loading/result/error states
with live-region or alert roles, exposes stable result and route-map attributes,
adds table header semantics, and locks the editor while a real BFF selection is
pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAjaMobileLiveCaptureWorkspace.tsx apps/oshun/web/src/app/studio/aja/mobile-live-capture/page.tsx apps/oshun/web/src/components/__tests__/StudioAjaMobileLiveCaptureWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMobileLiveCaptureWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMobileLiveCapturePage.test.tsx apps/oshun/web/e2e/studio-aja-mobile-live-capture.spec.ts— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAjaMobileLiveCaptureWorkspace.tsx apps/oshun/web/src/app/studio/aja/mobile-live-capture/page.tsx apps/oshun/web/e2e/studio-aja-mobile-live-capture.spec.ts apps/oshun/web/src/components/__tests__/StudioAjaMobileLiveCaptureWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMobileLiveCaptureWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioAjaMobileLiveCapturePage.test.tsx --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAjaMobileLiveCaptureWorkspace.test.tsx src/components/__tests__/StudioAjaMobileLiveCaptureWorkspace.integration.test.tsx src/components/__tests__/StudioAjaMobileLiveCapturePage.test.tsx— 3 files, 9 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-aja-mobile-live-capture-route.test.ts— 1 file, 5 tests passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 8.4 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web exec tsc --noEmit— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-aja-mobile-live-capture.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
282. 2026-07-04 Studio Hathor Culture Evolution Simulation real-BFF coverage#
Closed the /studio/hathor/culture-evolution-simulation walkthrough gap where
the page had runtime-sweep evidence but no focused real-dev-infra coverage for
the two-culture JSON editors, reference catalog disclosure, compatibility result
metrics, route map, quick actions, pending submit behavior, or fail-closed error
paths.
The new apps/oshun/web/e2e/studio-hathor-culture-evolution-simulation.spec.ts
suite opens the real Next Studio shell, seeds Hathor-admin or non-admin browser
sessions, sends /v1/admin/hathor/culture-evolution-simulation catalog requests
and /v1/admin/hathor/culture-evolution-simulation/assess POSTs to the real
local BFF with browser bearer auth, and captures request headers and bodies
rather than mocking the workspace contract.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact social
structure / attitude catalog rendering inside the reference disclosure, bearer
propagation, route-map and quick-action affordances, seeded default pair
compatibility: 70, edited hostile / hierarchical pair compatibility: -20,
dominant-value / social-mobility / inequality metrics through the real BFF,
client-only malformed JSON and non-object rejection with no POST, BFF
unknown-social-structure detail surfacing, malformed success-payload fail-closed
behavior, assess transport failure, catalog loading / 503 / malformed states,
non-admin fail-closed behavior, pending submit disablement for both editors,
mobile 44px/no-overflow controls, scoped axe scans, and direct BFF auth/schema
gates.
Implementation hardening in the workspace made the catalog and assessment guards strict: the client now requires every expected social structure and attitude enum, rejects array/non-object culture JSON before POST, marks loading/result/error states with live-region or alert roles, exposes stable catalog/result metric attributes, uses a mobile-safe editor grid, and locks both editors while a real BFF assessment is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorCultureEvolutionSimulationWorkspace.tsx apps/oshun/web/src/app/studio/hathor/culture-evolution-simulation/page.tsx apps/oshun/web/src/components/__tests__/StudioHathorCultureEvolutionSimulationWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorCultureEvolutionSimulationWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorCultureEvolutionSimulationPage.test.tsx apps/oshun/web/e2e/studio-hathor-culture-evolution-simulation.spec.ts— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorCultureEvolutionSimulationWorkspace.tsx apps/oshun/web/src/app/studio/hathor/culture-evolution-simulation/page.tsx apps/oshun/web/e2e/studio-hathor-culture-evolution-simulation.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorCultureEvolutionSimulationWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorCultureEvolutionSimulationWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorCultureEvolutionSimulationPage.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorCultureEvolutionSimulationRouteMap.test.ts --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorCultureEvolutionSimulationWorkspace.test.tsx src/components/__tests__/StudioHathorCultureEvolutionSimulationWorkspace.integration.test.tsx src/components/__tests__/StudioHathorCultureEvolutionSimulationPage.test.tsx src/components/__tests__/StudioHathorCultureEvolutionSimulationRouteMap.test.ts— 4 files, 12 tests passed.pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-culture-evolution-simulation-route.test.ts— 1 file, 6 tests passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 7.9 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web run typecheck— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-culture-evolution-simulation.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
281. 2026-07-04 Studio Hathor Scenario Generation real-BFF coverage#
Closed the /studio/hathor/scenario-generation walkthrough gap where the page
had runtime-sweep evidence but no focused real-dev-infra coverage for the Hathor
scenario-dependency catalog, packet textarea, validation result states, route
map, quick actions, pending submit behavior, or fail-closed error paths.
The new apps/oshun/web/e2e/studio-hathor-scenario-generation.spec.ts suite
opens the real Next Studio shell, seeds Hathor-admin or non-admin browser
sessions, sends /v1/admin/hathor/scenario-generation catalog requests and
/v1/admin/hathor/scenario-generation/validate POSTs to the real local BFF with
browser bearer auth, and captures request headers and bodies rather than mocking
the workspace contract.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact
issue-type / severity catalog rendering, bearer propagation, route-map and
quick-action affordances, seeded missing-scene-dependency, edited clean,
missing-objective, warning-only missing-capture-requirement, and
missing-cgi-export validations through the real BFF, client-only malformed
JSON and non-object rejection with no POST, BFF malformed-scene detail
surfacing, malformed success-payload fail-closed behavior, validate transport
failure, catalog loading / 503 / malformed states, non-admin fail-closed
behavior, pending submit disablement, mobile 44px/no-overflow controls, scoped
axe scans, and direct BFF auth/schema gates.
Implementation hardening in the workspace made the catalog and validation guards strict: the client now requires all expected issue types and severities, rejects array packets as non-object JSON before POST, marks loading/result/error states with live-region or alert roles, exposes stable catalog/result attributes, and locks the form while a real BFF validation is pending.
Verification, all green:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorScenarioGenerationWorkspace.tsx apps/oshun/web/src/app/studio/hathor/scenario-generation/page.tsx apps/oshun/web/src/components/__tests__/StudioHathorScenarioGenerationWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorScenarioGenerationWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorScenarioGenerationPage.test.tsx apps/oshun/web/e2e/studio-hathor-scenario-generation.spec.ts— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorScenarioGenerationWorkspace.tsx apps/oshun/web/src/app/studio/hathor/scenario-generation/page.tsx apps/oshun/web/e2e/studio-hathor-scenario-generation.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorScenarioGenerationWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorScenarioGenerationWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorScenarioGenerationPage.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorScenarioGenerationRouteMap.test.ts --max-warnings=0— passed with the existing Next pages-directory notice.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorScenarioGenerationWorkspace.test.tsx src/components/__tests__/StudioHathorScenarioGenerationWorkspace.integration.test.tsx src/components/__tests__/StudioHathorScenarioGenerationPage.test.tsx src/components/__tests__/StudioHathorScenarioGenerationRouteMap.test.ts— 4 files, 12 tests passed.pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-scenario-generation-route.test.ts— 1 file, 7 tests passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 29 GiB free swap, 48 GiB free disk, and no competing broad verification process; during the supervised Playwright run, available memory stayed at or above 8.2 GiB with 29 GiB free swap.
pnpm --dir apps/oshun/web run typecheck— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-scenario-generation.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 11 passed.
Executing the apps/oshun/web/e2e suite against a live stack (docker dev
infra → BFF on :4010 → next start prod web on :3010), not source-reading,
surfaced one systemic, suite-wide defect and a residual flaky tail. Both are
recorded honestly here — the suite is not uniformly green at full
workers=2 concurrency, and this document says so rather than claiming
otherwise.
1. Systemic defect found + fixed — auth abuse-protection 429 cascade#
Symptom. Under a parallel suite run, a large cluster of specs (every
home-*, shell-*, continuity, keyboard-a11y spec that authenticates with the
bare seedCustomerSession helper) failed with the signed-out marketing home
("Welcome to OSHUN") instead of the authenticated HomeWorkspace dashboard —
e.g. [data-kpi-tile] not found.
Root cause. The BFF auth abuse-protection limiter
(apps/oshun/bff/src/middleware/abuse-protection.ts) defaults to 60 requests
/ 60s with a 5-minute sticky block, keyed by
request.authContext?.userId ?? request.ip. All Playwright traffic shares one
host IP (127.0.0.1), so the suite's /api/auth/session → /v1/auth/refresh
calls (one per page load on every bare-seeded spec) trip the limit almost
immediately. /api/auth/session then returns 429, the shell renders
signed-out, and every dependent assertion fails. The 5-minute block turns a
transient into a multi-minute cascade (a single rate-limited run took 26+ min on
timeouts alone). Specs that use primeAuthenticatedShellPage (which mocks
/api/auth/session) were immune — which is why the failure looked selective.
Fix (shipped).
apps/oshun/bff/src/server.tsnow readsOSHUN_BFF_AUTH_RATELIMIT_MAX/_WINDOW_MS/_BLOCK_MSand passes anauthAbuseProtectionPolicytocreateApp. Unset ⇒ production behaviour is unchanged (the 60/min default still applies); only a trusted high-concurrency caller raises the ceiling.apps/oshun/web/playwright.config.tssets those env vars on the BFFwebServerso the canonical suite (and CI) boots the BFF with a test-only ceiling, exercising the real/v1/auth/*endpoints (no auth mocking).
Impact (measured). Before: dozens of bare-seeded specs failed on the
signed-out home. After: in a re-run of the formerly-broken home-* + shell set,
0 anonymous-home failures; the auth cascade is gone. This is the change that
makes "e2e against real dev infra at concurrency" possible at all.
2. New page-DOM specs (this pass) — verified green#
Four routes that had no page-DOM spec now have deep specs, each run green
against the live stack (19/19 at workers=2, and stable on a warm-state
re-run):
| Spec | Route | Notes |
|---|---|---|
operator-personas-console.spec.ts |
/operator/personas |
roster auto-select / empty / real browser submit-for-review success + audit repaint / approve-for-release reveal / 409 inline error. Drives the real BFF persona lifecycle; idempotent-resume survives warm state. |
operator-lms.spec.ts |
/operator/lms |
seeded real-BFF roster + invalid panel / wrong-scope empty state / malformed-JSON client reject (no POST) / BFF-backed 400, invalid, and valid descriptor results / 503 failure copy. |
personas-picker.spec.ts |
/personas |
BFF-401 in-app sign-in gate / family+blockers browse / select-sets-active / clear. |
notifications-route.spec.ts |
/notifications |
control strip / lane filter+reset / 500 outage disclosure / support→/profile / optimistic-404 swallowed. |
Root-cause patterns these specs had to solve (reusable for the tail below)#
- SSR↔client shell double-mount. A fresh context's first navigation briefly
renders two copies of the route (one detaching), so route-scoped locators
resolve to 2 (strict-mode) or 0 (pre-hydration). Fix: settle to one
[data-shell-root](openAuthenticatedShellPath/waitForShellSettled) — or, for non-shell RSC pages,toHaveCount(1)on the page's root component — before asserting. - Service worker bypasses
page.route. The PWA SW intercepts clientfetches, which Playwrightpage.routedoes not intercept by default, so boundary feed mocks were silently bypassed (panel fell to itsunavailablebranch, flaky on whether the SW had activated). Fix:test.use({ serviceWorkers: 'block' })on suites that mock app data fetches. - Process-durable BFF state + session-refresh cookie overwrite. The
in-memory BFF persona store persists across a run; and a reload's session
refresh can overwrite a scoped
oshun-accesscookie. Fix: idempotent-resume drive chains + re-seed the scoped cookie before a post-mutation reload.
3. Residual flaky tail (pre-existing, NOT introduced here)#
After the rate-limit fix, a full workers=2 run still has a substantial flaky
tail — the same double-mount / SW / a11y-gate-timing classes above, spread
across the older specs that predate these patterns. Honest numbers from this
session:
- Formerly-auth-broken
home-*/shell sample (53 tests): 43 passed · 4 flaky (pass onretries:1) · 6 failed — the 6 aretoBeVisible/double-mount timing, not auth. - Full-suite artifact characterization (unique tests producing a first-attempt artifact): a11y/axe-gate ≈ 49, 60s-timeout ≈ 47, element-not-found/visible ≈ 256, anonymous-home ≈ 4 (down from dozens). Many are flaky (pass on retry); the artifact count over-counts true post-retry failures.
Scope note. Fixing this tail means applying patterns (1)–(3) across ~200
older specs (and triaging the a11y-gate failures, which are deterministic, not
flake). That is a real, worthwhile quality effort but is separate from V1
walkthrough/route-coverage completeness and was not attempted wholesale here —
documenting it (vs. silently green-washing) is the correct move. Recommended
order: (a) land patterns (1)–(3) in the shared e2e/support helpers and migrate
the bare-seedCustomerSession home/shell specs; (b) triage the ~49 a11y-gate
failures against the prod build; (c) raise per-test timeout only where a real
slow path is proven.
4. Service worker — a real source fix (not a test band-aid)#
The full-suite discovery (254 first-attempt failures at retries=0, after the
rate-limit fix) split into: ~50 visual-regression (macOS baselines on a Linux
runner — platform-gated, not flake), and the rest dominated by two classes —
service-worker mock-shadowing and shell double-mount.
The tempting test-side fix (a global serviceWorkers: 'block') was rejected
as a band-aid: it masks a real user-facing behaviour and drops real-infra
fidelity. The correct fix was in public/sw.js (commit dc8c8f3): the SW did
stale-while-revalidate on all authenticated /v1/* + /api/* GETs, which
(a) cached authenticated API by URL — a cross-session member-data-leak surface
(the OSHUN_CLEAR_MEMBER_DATA purge existed only to paper over it), and (b)
shadowed the page's own network with an internal fetch() (≤30s-stale live
reads; any page-level request observation silently bypassed). Now general
BFF/API reads are network-only pass-through; the deliberate Nisaba offline
allowlist (24h) + auth-network-only + same-origin asset/shell/media caching are
kept. Validated against the real SW: notifications-route 5/5 green with
serviceWorkers:'block' removed; PWA/offline 38/39 (the 1 is a pre-existing
double-mount flake); the pwa-service-worker-policy unit test rewritten to the
new contract + made version-agnostic, 9/9.
5. Shell double-mount — inherent to a correct pattern (test-side settle is right)#
The other dominant class is the brief SSR↔client double [data-shell-root].
Root cause: ShellLayout.tsx deliberately renders a minimal shell-root
during SSR/first-paint (!mounted branch, line ~1721) and swaps to the full
shell after setMounted(true) in a mount effect (line ~1846). This two-pass
render is the standard, correct way to avoid a hydration mismatch for a
client-only layout (viewport/mobile/assistant-dock are genuinely client-only) —
the comment at line 1719 says as much. So this is not an app bug to fix; the
transient resolves to one root in <1s.
The correct handling in tests is to settle before asserting —
openAuthenticatedShellPath / waitForShellSettled (which the 74 well-written
specs already call). This is correct test hygiene (assert on steady state), not
masking. The fix for the ~126 bare-seedCustomerSession + page.goto specs is to
adopt that settle; it is a mechanical per-spec migration (no shared chokepoint,
because navigation happens inside each test).
6. What is solid (verified green this session)#
- Two structural fixes, both verified against the live stack and committed: the BFF auth rate-limit (§1) and the service-worker pass-through (§4).
- The 4 new specs (§2) — 19/19;
first-tara-sit-deepeningstale-theme fix. - The 8 newly-documented routes + the journey-grade de-fabrication (see
v1-completeness-audit-2026-06-22.md).
7. Honest remaining tail (per-spec, not structural)#
After the two structural fixes, the residual is per-spec work, no longer one
root cause: (a) the ~126 bare-seed specs' settle migration (§5); (b) ~58
axe/a11y gate failures to triage real-violation vs settle-timing (real ones are
the gate doing its job — fix the component, never skipAxe them away); (c) ~50
visual-regression specs needing Linux baselines committed by a human-reviewed
run (generating them unreviewed would be fabrication). These are scoped, not
blocked — but they are genuinely ~150 individual diagnoses, not a single switch.
8. 2026-06-23 Nyx observation-log persistence addendum#
Closed the nyx-tonight-observation Step 9 product gap without over-claiming a
server contract: event detail now links to
/domains/nyx/observation-log?eventId=...; New Entry writes a normalized
observation to useNyxStore / localStorage["oshun.nyx"]; History renders the
saved row with data-nyx-observation-event-id.
Verification, all green:
pnpm --dir apps/oshun/web exec vitest run src/components/domains/nyx/NyxObservationLog.test.tsx src/components/domains/nyx/__tests__/NyxEventDetailWorkspace.test.tsx— 6 passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/web lint— 0 errors, existing warnings only.pnpm --dir apps/oshun/web exec playwright test e2e/nyx-tonight-observation.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 6 passed.pnpm --dir apps/oshun/web exec playwright test e2e/nyx-event-pages.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 13 passed.python3 V5/tools/validate-v5-docs.py— passed.
9. 2026-06-23 Arete habit-wizard persistence addendum#
Closed the arete-create-habit wizard no-op gap without over-claiming server
sync: /domains/arete/habits?wizard=loop now opens the HabitLoopWizard,
Cue→Routine→Reward creates a HabitData row, writes it to useAreteStore /
localStorage["oshun.arete"], and returns to the dashboard with the new habit
visible. At the time of this addendum, browser wizard→BFF sync, polished
/arete read-back, and first-check-in/streak/home-rail continuity remained
open; later 2026-06-23 addenda supersede those gaps.
Verification, all green:
pnpm --dir apps/oshun/web exec prettier --check src/components/domains/arete/AreteHabitSystem.tsx src/app/domains/arete/habits/page.tsx e2e/arete-create-habit.spec.ts ../../../WALKTHROUGH/journeys/arete-create-habit.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/web lint— 0 errors, existing warnings only.pnpm --dir apps/oshun/web exec playwright test e2e/arete-create-habit.spec.ts e2e/arete-habits-bff.spec.ts e2e/arete-full-journey.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 12 passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.
10. 2026-06-23 Themis teacher-override addendum#
Closed the themis-assessment-appeal teacher-override HTTP gap without
over-claiming the operator UI: POST /v1/metis/integrity now accepts the
canonical teacherOverride block, repeat adjudication with a changed teacher
verdict marks the verdict overturned, and the real-BFF Playwright request
coverage asserts the downgrade to inconclusive, decision.decidedBy,
recommendedAction, audit rationale read-back, appeal resolution, and
blank-rationale fail-closed behavior. Customer submit→detection→adjudication,
/operator/metis review UI, gradebook read-back, and /messages notification
remain open.
Verification:
pnpm exec vitest run libs/metis/integrations/src/themis-canonical-wiring.test.ts— 9 passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/metis-integrity-route.test.ts— 6 passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/bff exec eslint src/routes/metis-integrity.ts src/__tests__/metis-integrity-route.test.ts— 0 errors; existing route non-null warnings + ignored test-file warning.pnpm exec eslint libs/metis/integrations/src/themis-canonical-wiring.ts libs/metis/integrations/src/themis-canonical-wiring.test.ts— 0 errors; ignored test-file warning.pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/web lint— passed with existing warnings.pnpm --dir apps/oshun/web exec playwright test e2e/integrity-appeal.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 8 passed.python3 V5/tools/validate-v5-docs.py— passed.pnpm --dir apps/oshun/web exec prettier --check ../../../apps/oshun/bff/src/routes/metis-integrity.ts ../../../apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts ../../../libs/metis/integrations/src/themis-canonical-wiring.ts ../../../libs/metis/integrations/src/themis-canonical-wiring.test.ts e2e/integrity-appeal.spec.ts ../../../WALKTHROUGH/journeys/themis-assessment-appeal.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md ../../../WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.git diff --check— passed.
Broader checks currently blocked by pre-existing unrelated repo issues:
pnpm --dir apps/oshun/bff lintfails outside this slice with existing broad module-boundary / duplicate-import / unused-assignment errors across Aja, Yemaya, admin, takedown, Sophia, and Themis moderation files (255 errors, 178 warnings in this run).pnpm exec tsc -p libs/metis/integrations/tsconfig.lib.json --noEmitandpnpm exec tsc -p libs/metis/integrations/tsconfig.spec.json --noEmitboth fail in existing upstream Isis provenance files:libs/isis/ai-providers/src/provenance/bundle.ts:305:28andlibs/isis/ai-providers/src/provenance/generation-job.ts:267:7.
11. 2026-06-23 Message quiet-hours dispatch addendum#
Closed the messages-quiet-hours-and-channel-binding dispatcher-ignore gap for
the shipped message-center producer path without over-claiming external-provider
delivery: POST /v1/admin/customer-messages/dispatch now reads the recipient's
quiet-hours preferences, returns 202 dispatch.delayed.quiet_hours for
non-essential sends inside the window without writing an inbox row, returns
201 dispatch.bypassed.safety_critical for critical/support/incident sends that
must bypass quiet hours, and /v1/admin/customer-messages/replay-due delivers
queued rows after the quiet window closes with queued → sent → delivered
receipts. Real Telegram/WhatsApp/email/SMS provider handoff remains open beyond
that message-center receipt seam.
Verification, all green:
- Resource gate before Playwright: 15 GiB RAM, 12 GiB available, 31 GiB swap, 48 GiB free disk; no competing broad verification process.
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/customer-message-center-route.test.ts— 13 passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/web exec playwright test e2e/messages-center-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 12 passed.python3 V5/tools/validate-v5-docs.py— passed.pnpm exec prettier --check apps/oshun/bff/src/routes/customer-message-center.ts apps/oshun/bff/src/__tests__/customer-message-center-route.test.ts apps/oshun/web/e2e/messages-center-bff.spec.ts WALKTHROUGH/journeys/messages-quiet-hours-and-channel-binding.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.git diff --check— passed.
12. 2026-06-23 Mailpit email-verification addendum#
Closed the first-time-anonymous-visitor real email-delivery gap for the
shipped dev stack: the Playwright-managed BFF now boots with Mailpit SMTP env,
and email-verify-mailpit.spec.ts signs up through /welcome, asserts the
browser receives HttpOnly oshun-session and oshun-access cookies, polls the
Mailpit API on :8025 for the actual recipient email, opens the delivered
/auth/verify-email?token=... link, confirms the real public BFF token, and
refreshes /api/auth/session to prove verified: true. The existing
email-verify-roundtrip.spec.ts was made transport-aware so it remains valid
whether signup returns a non-prod preview token or SMTP delivery hides the token
inside Mailpit. At the time of this addendum, verify-link ?next= preservation
and automatic post-verify redirect into onboarding remained open; see §14 for
the later same-browser closure.
Verification, all green:
- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; no competing broad verification process. The stale workspace BFF watch process was stopped so Playwright could boot the BFF with SMTP env.
pnpm --dir apps/oshun/web exec playwright test e2e/email-verify-mailpit.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 1 passed.pnpm --dir apps/oshun/web exec playwright test e2e/email-verify-roundtrip.spec.ts e2e/email-verify-mailpit.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 3 passed.pnpm --dir apps/oshun/web exec playwright test e2e/email-verify-roundtrip.spec.ts e2e/email-verify-mailpit.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 3 passed after formatting.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.pnpm exec prettier --check apps/oshun/web/playwright.config.ts apps/oshun/web/e2e/email-verify-mailpit.spec.ts apps/oshun/web/e2e/email-verify-roundtrip.spec.ts WALKTHROUGH/journeys/first-time-anonymous-visitor.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.git diff --check— passed.
13. 2026-06-23 Account-deletion Redis fan-out receipt addendum#
Closed the account-deletion-and-dsar signed-receipt-from-real-data gap for the
BFF-owned voice_profile erasure path. The Playwright-managed BFF now boots
with the local Redis deletion-fan-out env, data-rights-dsar-bff.spec.ts
creates an immediate voice category deletion over real HTTP, and the BFF
completes it through the voice_profile consumer with a persisted dev-key
Ed25519 tombstone attestation. profile-customer-data-deletion.spec.ts then
drives the browser UI through the same immediate voice deletion flow and
asserts the live BFF response renders the signed receipt row instead of a
page.route fixture.
The remaining deletion gaps are still real: full Tara/Arete/Veritas/Nyx/Nisaba/
Metis six-service fan-out with service-specific @oshun/audit-platform
attestations, local generated_artifact/Isis completion, and the deletion
identity-verification email-link round-trip. The generated_artifact path was
tried during discovery and failed closed in the local dev stack, so this
addendum does not claim that service as covered.
Verification, all green:
- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; Redis and Mailpit containers up; no stale BFF/web server.
pnpm --dir apps/oshun/web exec playwright test e2e/data-rights-dsar-bff.spec.ts e2e/profile-customer-data-deletion.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list --grep "voice-profile deletion"— 2 passed.pnpm --dir apps/oshun/web exec playwright test e2e/data-rights-dsar-bff.spec.ts e2e/profile-customer-data-deletion.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 18 passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.pnpm exec prettier --check apps/oshun/web/playwright.config.ts apps/oshun/web/e2e/data-rights-dsar-bff.spec.ts apps/oshun/web/e2e/profile-customer-data-deletion.spec.ts WALKTHROUGH/journeys/account-deletion-and-dsar.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.git diff --check— passed.
14. 2026-06-23 Email verification next-path handoff addendum#
Closed the same-browser first-time-anonymous-visitor verify-link handoff gap:
WelcomeAuthPanel now sends the sanitized signup redirect as
verificationNextPath, the BFF email sender preserves it as
/auth/verify-email?token=...&next=/tara only when it is an app-relative safe
path, and the verify-email landing auto-hands a successfully verified,
already-signed-in browser into /onboarding?redirect=/tara without requiring
the manual Continue link. The Mailpit E2E asserts the delivered email link from
real SMTP contains next=/tara, opens that actual link, and proves the browser
lands in onboarding with the redirect preserved.
At the time of this addendum, this did not claim the different-device branch was done: the public confirm endpoint still verified the token without minting a fresh browser session from the email link alone. That limitation was later closed in §35.
Verification, all green:
pnpm --dir apps/oshun/bff exec vitest run src/auth/verification-email-sender.test.ts src/auth/customer-auth-email-verify.test.ts— 26 passed.pnpm --dir apps/oshun/web exec vitest run src/components/auth/VerifyEmailConfirm.test.tsx src/components/welcome/__tests__/WelcomeAuthPanel.test.tsx— 18 passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; Redis and Mailpit containers up; no stale BFF/web server.
pnpm --dir apps/oshun/web exec playwright test e2e/email-verify-mailpit.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 1 passed.pnpm --dir apps/oshun/web exec playwright test e2e/email-verify-roundtrip.spec.ts e2e/email-verify-mailpit.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 3 passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.pnpm exec prettier --check apps/oshun/bff/src/auth/verification-email-sender.ts apps/oshun/bff/src/auth/verification-email-sender.test.ts apps/oshun/bff/src/auth/customer-auth-store.ts apps/oshun/bff/src/auth/customer-auth-email-verify.test.ts apps/oshun/bff/src/routes/auth.ts apps/oshun/web/src/lib/auth-context.tsx apps/oshun/web/src/components/welcome/WelcomeAuthPanel.tsx apps/oshun/web/src/components/welcome/__tests__/WelcomeAuthPanel.test.tsx apps/oshun/web/src/app/auth/verify-email/page.tsx apps/oshun/web/src/components/auth/VerifyEmailConfirm.tsx apps/oshun/web/src/components/auth/VerifyEmailConfirm.test.tsx apps/oshun/web/e2e/email-verify-mailpit.spec.ts WALKTHROUGH/journeys/first-time-anonymous-visitor.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.git diff --check— passed.
15. 2026-06-23 Notifications route write-persistence addendum#
Closed the /notifications write-contract mismatch for the full-page
notifications route. The BFF now accepts the browser-facing
PATCH /v1/notifications-write and /notifications-write actions for
mark_read, mark_unread, dismiss, and mark_all_read, while keeping the
legacy POST mark-read aliases. The notification read-state store now records
explicit read/unread/dismissed states, the feed projection hides dismissed
notifications, and default-read highlights can be made unread. The web panel now
sends concrete notificationIds for mark-all-read, and the shared Playwright
auth helper exposes the real seeded BFF access token through the mocked session
so client-side BFF reads/writes exercise real auth.
notifications-route.spec.ts now covers the full-page route directly with the
existing boundary-rendering cases plus a live BFF toggle persistence case: it
marks a real default-read notification unread, reopens /notifications and
asserts the unread state is returned by a fresh BFF read, then marks the same
card read and verifies the second reload.
Verification:
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/notification-read-state-store.test.ts src/__tests__/notifications-write-route.test.ts— 14 passed.pnpm --dir apps/oshun/bff run typecheck— passed.pnpm --dir apps/oshun/web run typecheck— passed.pnpm --dir apps/oshun/web exec playwright test e2e/notifications-route.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 6 passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; Redis/Mailpit containers up; no stale BFF/web server.
pnpm --dir apps/oshun/web run lint— passed with existing warnings.pnpm --dir apps/oshun/bff exec eslint src/notifications/read-state-store.ts src/routes/notifications-write.ts src/routes/notifications.ts— passed. The changed BFF test files are ignored by the current ESLint config.
Known unrelated verification caveat:
pnpm --dir apps/oshun/bff run lintwas attempted and still fails on pre-existing module-boundary, duplicate-import, unused-assignment, and related errors across untouched BFF files such assrc/accessibility/*,src/aja/*,src/routes/admin-*, andsrc/yemaya/*.
16. 2026-06-23 Neith inverse-modeling fit-quality addendum#
Closed the Neith inverse-modeling walkthrough drift for the current JSON-payload
Goodness-of-Fit lane. The workspace now waits for AuthProvider hydration before
loading its catalog, so direct navigation does not race the admin bearer token.
studio-neith-inverse-modeling.spec.ts covers the page-DOM contract against the
live BFF: admin direct navigation, real catalog load, default-payload evaluate
success (RMSE/MAE/R², worst sample, residual table), non-admin fail-closed,
malformed JSON with zero evaluate POSTs, live BFF invalid-payload detail,
route-map entries, and Isis quick links.
Verification:
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioNeithInverseModelingWorkspace.test.tsx src/components/__tests__/StudioNeithInverseModelingWorkspace.integration.test.tsx src/components/__tests__/StudioNeithInverseModelingPage.test.tsx— 7 passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-studio-fit-quality-route.test.ts— 6 passed.pnpm --dir apps/oshun/web run typecheck— passed after replacing a corrupted generated.next/dev/types/routes.d.tscache file with the valid generated.next/types/routes.d.tscopy; no tracked source change was needed.- Targeted ESLint on the changed component passed; the changed test/E2E files are ignored by the current ESLint config and reported warnings only.
- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; no active broad build/test servers. During the run, available memory stayed above 8 GiB.
pnpm --dir apps/oshun/web exec playwright test e2e/studio-neith-inverse-modeling.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 4 passed.python3 V5/tools/validate-v5-docs.py— passed.pnpm exec prettier --check apps/oshun/web/src/components/studio/StudioNeithInverseModelingWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingPage.test.tsx apps/oshun/web/e2e/studio-neith-inverse-modeling.spec.ts WALKTHROUGH/studio/domain-bridges/neith/studio-neith-inverse-modeling.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.git diff --check— passed.
17. 2026-06-23 Arete wired-action reconciliation addendum#
Closed stale Arete walkthrough/spec-header drift that still described shipped
action islands as unwired. The living-offering create walkthrough now documents
AreteOfferingActions POSTing /v1/arete/offerings/keep for both draft and
send actions, including the draft-kept and delivered UI states and the
GET /v1/arete/offerings/sent read-back already covered by Playwright. The
weekly-review walkthrough now documents AreteReviewClose POSTing
/v1/arete/review/close for private-save and close actions, including
kept-private, week-closed, and /v1/arete/review/closed persistence.
The residual gaps are now narrower and explicit: living-offering draft gallery
read-back and policy/expiry semantics remain open, while weekly-review
continuity-card read-back on /arete, per-act completion, crisis supersedence,
and Sunday push remain unasserted. The render spec headers now point to the
separate live-action specs instead of saying the footer buttons have no click
handlers.
Verification:
- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; Redis/Mailpit/MinIO/Postgres containers up; no active broad build/test servers. During the focused run, available memory stayed above 9 GiB.
pnpm --dir apps/oshun/web exec eslint e2e/arete-living-offering-create.spec.ts e2e/arete-weekly-review.spec.ts --no-warn-ignored— passed.pnpm --dir apps/oshun/web exec playwright test e2e/arete-living-offering-create.spec.ts e2e/arete-offering-actions.spec.ts e2e/arete-weekly-review.spec.ts e2e/arete-review-close.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 22 passed.python3 V5/tools/validate-v5-docs.py— passed.pnpm exec prettier --check WALKTHROUGH/journeys/arete-living-offering-create.md WALKTHROUGH/journeys/weekly-review-arete.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md apps/oshun/web/e2e/arete-living-offering-create.spec.ts apps/oshun/web/e2e/arete-weekly-review.spec.ts— passed.git diff --check— passed.
18. 2026-06-23 Personas picker live-BFF page-DOM addendum#
Closed the /personas page-DOM gap that was still relying on a route-stubbed UI
spec for blocker visibility. PersonaPicker now renders the BFF's real
top-level blocked[] cards by family, instead of only rendering
browse.byFamily[] eligible cards. This makes the pre-consent voice/avatar gate
visible in the browser when the live BFF returns an honest blocked roster.
personas-picker.spec.ts now includes a live browser→BFF test: a fresh customer
loads /personas before consent and sees real blocked cards, the test grants
real voice consent through /v1/consent/voice/grant, reloads the page, selects
a real default-surface persona through browser POST /v1/personas/select,
asserts /v1/personas/active read-back and reload persistence, clears through
browser DELETE /v1/personas/active, then verifies the BFF active read-back is
null. The existing deterministic route-stubbed tests remain for hard-to-induce
UI branches (BFF 401 and select 500), and persona-session-picker.spec.ts
continues to guard the pure BFF round-trip.
Verification:
pnpm --dir apps/oshun/web exec vitest run src/components/personas/PersonaPicker.test.tsx src/personas/personasClient.test.ts— 11 passed.pnpm --dir apps/oshun/web exec eslint src/components/personas/PersonaPicker.tsx src/components/personas/PersonaPicker.test.tsx e2e/personas-picker.spec.ts --no-warn-ignored— passed.pnpm --dir apps/oshun/web run typecheck— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; Redis/Mailpit/MinIO/Postgres containers up; no active broad build/test servers. During the focused run, available memory stayed above 9 GiB.
pnpm --dir apps/oshun/web exec playwright test e2e/personas-picker.spec.ts e2e/persona-session-picker.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 8 passed.python3 V5/tools/validate-v5-docs.py— passed.pnpm exec prettier --check apps/oshun/web/src/components/personas/PersonaPicker.tsx apps/oshun/web/src/components/personas/PersonaPicker.test.tsx apps/oshun/web/e2e/personas-picker.spec.ts WALKTHROUGH/customer/10-lilith/personas.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.git diff --check— passed.
19. 2026-06-23 Operator personas live transition addendum#
Closed the remaining /operator/personas page-DOM audit drift and deepened the
operator console from render/error coverage to a real browser write. The
walkthrough now documents operator-personas-console.spec.ts as the page-DOM
guard instead of saying no browser E2E exists.
operator-personas-console.spec.ts now hydrates the browser AuthProvider with a
persona-admin dev token, while keeping the server-component roster read and
client transition writes on the live BFF. The new success leg rewinds
persona-sufi-guide to a draft state, reloads the browser console, submits
submit-for-review through the actual form, waits for browser
POST /v1/admin/personas/:id/lifecycle, asserts the returned in-review status
and audit entry, verifies the page repaints from the BFF response, and confirms
the BFF read-back is also in-review. The existing 409 branch remains
deterministic so the inline error/no-optimistic-mutation failure mode stays
pinned.
Verification:
pnpm --dir apps/oshun/web exec eslint e2e/operator-personas-console.spec.ts --no-warn-ignored— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; Redis/Mailpit/MinIO/Postgres containers up; no active broad build/test servers. During the focused run, available memory stayed above 8 GiB.
pnpm --dir apps/oshun/web exec playwright test e2e/operator-personas-console.spec.ts e2e/persona-lifecycle-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 8 passed.python3 V5/tools/validate-v5-docs.py— passed.pnpm exec prettier --check apps/oshun/web/e2e/operator-personas-console.spec.ts WALKTHROUGH/operator/operator-personas.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.git diff --check— passed.
20. 2026-06-23 Triage-unblock verification addendum#
Reconciled the dated v1-triage-2026-06-23.md app-bug/product-gap findings
against the current checkout and turned the remaining onboarding flake into a
deterministic real-infra assertion. The app-side fixes for workspace export
keyboardability, shared shell PWA-toast dismissal, bounded hydration waits, home
continuation impressions, assistant dock contrast, dynamic test harness routes,
and the live /explore V2 tile are all present in source.
onboarding-lifecycle.spec.ts now waits for whichever wizard step is mounted
before advancing edit-mode onboarding, instead of probing isVisible() before
hydration and potentially skipping the goals step. That keeps the
patchProfilePreferences 5xx branch focused on the real product invariant:
local onboarding choices stay visible, the remote-sync error surfaces inline,
and the user is not navigated away. pwa-service-worker.ts also now exits
cleanly when Playwright's service-worker block causes registration to resolve
without a registration object; successful registration and waiting-worker
notification behavior are unchanged.
Verification:
pnpm --dir apps/oshun/web exec eslint e2e/onboarding-lifecycle.spec.ts src/lib/pwa-service-worker.ts --no-warn-ignored— passed.pnpm --dir apps/oshun/web exec vitest run src/lib/pwa-service-worker.test.ts src/components/__tests__/PwaBootstrap.test.tsx src/components/PwaUpdatePrompt.test.tsx— 16 passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; Redis/Mailpit/MinIO/Postgres containers up; no active broad build/test servers. During the focused run, available memory stayed above 8 GiB.
pnpm --dir apps/oshun/web exec playwright test e2e/workspace-multi-panel.spec.ts e2e/shared-shell-entry-routes.spec.ts e2e/onboarding-lifecycle.spec.ts e2e/home-continuation-analytics.spec.ts e2e/assistant-continuity-journey.spec.ts e2e/v2-shell-tile.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 20 passed.pnpm --dir apps/oshun/web run typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.pnpm exec prettier --check apps/oshun/web/e2e/onboarding-lifecycle.spec.ts apps/oshun/web/src/lib/pwa-service-worker.ts WALKTHROUGH/results/v1-triage-2026-06-23.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.git diff --check— passed.
21. 2026-06-23 Env-gated triage verification addendum#
Closed the remaining v1-triage-2026-06-23.md env-gated bucket against the
current real dev infrastructure. The Playwright config now supplies the required
test-server env defaults directly to the BFF and Next web server processes:
OSHUN_TELEGRAM_WEBHOOK_SECRET=e2e-webhook-secret,
OSHUN_LIVING_SCENES_HEADER_POLICY_OVERRIDES=1, and
OSHUN_ENABLE_TEST_HARNESSES=true.
The focused run verified the Telegram webhook, public living-scene viewer, living-scene keep/share card, and assistant grounding-state harness together. This retires the stale "set env var + restart server" action from the dated triage sheet for the standard local Playwright path.
Verification:
- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; Redis/Mailpit/MinIO/Postgres containers up; no active broad build/test servers. During the focused run, available memory stayed above 8 GiB.
pnpm --dir apps/oshun/web exec playwright test e2e/telegram-webhook-delivery.spec.ts e2e/scene-viewer-deepening.spec.ts e2e/living-scene-card.spec.ts e2e/assistant-grounding-state.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 29 passed.
22. 2026-06-23 Veritas evidence-trail skip removal addendum#
Closed the dated veritas-evidence-trail step-9 skip hazard for the standard
local Playwright stack. The BFF default adapter wiring now allows
OSHUN_VERITAS_ADAPTER=mock, and the Playwright config sets that value for the
test BFF only. That gives /v1/veritas/briefing/home a deterministic grounded
lead without replacing every domain adapter or changing normal development and
production defaults.
veritas-evidence-trail.spec.ts now asserts Save→/library every run instead
of test.skip-ing when the action row is absent. veritas-full-journey.spec.ts
also asserts the seeded hub action row, Save toggle, and Report dialog
unconditionally. veritas-route.test.ts guards both the env-selected mock
adapter happy path and the existing fail-closed Veritas outage path. Remaining
journey gaps stayed honest at this point: browser-level unavailable rendering,
static claim underline interactivity, and static source-row drill kept the
journey partial. Later addenda close the shared browser no-lead fallback render
and the polished /veritas/claim underline/source drill while keeping the
browser-induced downstream-503 leg explicit.
Verification:
pnpm exec eslint apps/oshun/bff/src/app.ts apps/oshun/bff/src/__tests__/veritas-route.test.ts apps/oshun/web/playwright.config.ts apps/oshun/web/e2e/veritas-evidence-trail.spec.ts apps/oshun/web/e2e/veritas-full-journey.spec.ts --no-warn-ignored— passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/veritas-route.test.ts— 8 passed.pnpm --dir apps/oshun/bff run typecheck— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; Redis/Mailpit/MinIO/Postgres containers up; no active broad build/test servers. During the focused run, available memory stayed above 8 GiB.
pnpm --dir apps/oshun/web exec playwright test e2e/veritas-evidence-trail.spec.ts e2e/veritas-full-journey.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 17 passed, 0 skipped.
23. 2026-06-23 Citation-drift seeded-ledger addendum#
Closed the dated citation-drift-resolution seeded-ledger skip hazard for the
standard local Playwright stack. The Next server now has a harness-only
OSHUN_ISIS_PROVENANCE_LEDGER_FIXTURE=clean path, active only when
OSHUN_ENABLE_TEST_HARNESSES=true, that builds a deterministic Isis provenance
ledger through the same canonical in-memory bundle/ledger helpers the durable
Postgres store replays.
citation-drift-resolution.spec.ts now asserts the clean hash-chain verdict,
bundle index, 16-field selected-bundle detail, no-bundle detail-empty state,
empty-tenant state, unavailable-ledger alert, and broken-ledger verdict without
test.skip. The journey remains partial because recheck, re-render, retract,
and audit-log chain write paths are not wired on the current page.
Verification:
pnpm exec eslint apps/oshun/web/src/lib/server/isis-provenance-loader.ts apps/oshun/web/src/lib/server/isis-provenance-loader.test.ts apps/oshun/web/playwright.config.ts apps/oshun/web/e2e/citation-drift-resolution.spec.ts libs/isis/ai-providers/src/provenance/bundle.ts libs/isis/ai-providers/src/provenance/generation-job.ts --no-warn-ignored— passed.pnpm --dir apps/oshun/web exec vitest run src/lib/server/isis-provenance-loader.test.ts— 5 passed.pnpm --filter @isis/ai-providers exec vitest run src/provenance— 21 passed.pnpm --dir apps/oshun/web run typecheck— passed.pnpm --filter @isis/ai-providers exec tsc -p tsconfig.lib.json --noEmit— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; Redis/Mailpit/MinIO/Postgres containers up; no active broad build/test servers. During the focused run, available memory stayed above 8 GiB.
pnpm --dir apps/oshun/web exec playwright test e2e/citation-drift-resolution.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 8 passed, 0 skipped.
24. 2026-06-23 Sophia grounded-answer addendum#
Closed the dated sophia-grounded-answer grounded-WITH-citations BFF gap for
the real /v1/sophia/answer branch. sophia-answer-bff.spec.ts now drives the
live BFF through the default in-process Nisaba public-domain corpus and asserts
groundingState: "grounded", stable search-nisaba-passage-* citation IDs,
retrieved claim labels, and claim-to-citation map integrity. The existing
no-sources abstention branch remains covered in the same real-BFF spec.
sophia-grounded-answer-page.spec.ts adds the browser leg: the shipped
/sophia form submits to the live BFF, then renders the explicit grounding
state, corpus witnesses, and retrieved claim rows. The journey remains partial
because contradiction loop UI, pin-to-library, synthetic/retracted/cross-tenant
failure modes, real /v1/search UI queries, labels beyond the extractive
retrieved path, and citation handoff into Nisaba are still open.
Verification:
pnpm exec eslint apps/oshun/web/src/app/sophia/SophiaAskForm.tsx apps/oshun/web/e2e/sophia-answer-bff.spec.ts apps/oshun/web/e2e/sophia-grounded-answer-page.spec.ts --no-warn-ignored— passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/sophia-grounded-route.test.ts src/routes/sophia-answer-route.test.ts— 8 passed.pnpm --dir apps/oshun/bff run typecheck— passed.pnpm --dir apps/oshun/web run typecheck— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; no active broad build/test servers. During the focused run, available memory stayed above 8 GiB.
pnpm --dir apps/oshun/web exec playwright test e2e/sophia-answer-bff.spec.ts e2e/sophia-grounded-answer-page.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 5 passed.
25. 2026-06-23 Veritas no-lead browser addendum#
Partially closed the remaining veritas-evidence-trail browser unavailable
rendering gap and fixed the API guard that made the gap visible. The
/v1/veritas/briefing/home handler now uses the same Veritas domain-scope guard
as the rest of the Veritas API instead of serving home briefings to any
authenticated token. veritas-route.test.ts now asserts a wrong-scope
domain:tara token gets 403 domain_scope_missing before any Veritas adapter
read runs.
veritas-full-journey.spec.ts adds the browser leg: it first proves the live
BFF returns that 403 for a signed-in token without domain:veritas, then loads
/veritas with the same restricted access cookie and asserts the honest no-lead
UI, Evidence · 0 claims, method note, and absence of Save/Report actions. The
source-row drill and polished claim-underline interaction called out here were
closed in later addenda; the browser-induced downstream-503 leg is closed in
addendum 29 below.
Verification:
pnpm exec eslint apps/oshun/bff/src/routes/veritas.ts apps/oshun/bff/src/__tests__/veritas-route.test.ts apps/oshun/web/e2e/veritas-full-journey.spec.ts --no-warn-ignored— passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/veritas-route.test.ts— 9 passed.pnpm --dir apps/oshun/bff run typecheck— passed.pnpm --dir apps/oshun/web run typecheck— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; no active broad build/test servers. During the focused run, available memory stayed above 8 GiB.
pnpm --dir apps/oshun/web exec playwright test e2e/veritas-full-journey.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 5 passed.
26. 2026-06-23 Veritas claim-rail and source-drill addendum#
Closed the polished /veritas/claim interaction gap from
veritas-evidence-trail. The static claim-mode board now delegates to the
client VeritasClaimInteractive component: underlined claims are focusable
buttons, hover/focus/click updates data-veritas-selected-claim, the all-claims
table updates the same rail, and selected source rows are anchors with
data-veritas-selected-source-row / data-veritas-source-name /
data-veritas-source-band hooks.
veritas-evidence-trail.spec.ts adds the browser leg: it opens
/veritas/claim, asserts the initial peak-claim rail, clicks the low-confidence
rolling-cuts underline and verifies the rail changes to sup=5, clicks the
claims table back to sup=1, then follows the selected Statnett source row to
/veritas/source and asserts the source profile. The next source-id addendum
deepens this leg to /veritas/source/[sourceId]; addendum 29 below closes the
browser-induced downstream-503 render.
Verification:
pnpm exec eslint apps/oshun/web/src/components/lilith/veritas.tsx apps/oshun/web/src/components/lilith/VeritasClaimInteractive.tsx apps/oshun/web/src/lib/lilith-data/types.ts apps/oshun/web/src/lib/lilith-data/veritas-depth.ts apps/oshun/web/e2e/veritas-evidence-trail.spec.ts --no-warn-ignored— passed.pnpm --dir apps/oshun/web run typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk; no active broad build/test servers. During the focused run, available memory stayed above 7.7 GiB.
pnpm --dir apps/oshun/web exec playwright test e2e/veritas-evidence-trail.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 14 passed.
27. 2026-06-23 Arete first-check-in real-BFF addendum#
Closed the same-browser first-check-in continuity gap for arete-create-habit.
Wizard-created habits now keep the returned habit-proposed-* BFF id in
useAreteStore, and the dashboard check-in toggle for those persisted habits
POSTs /v1/arete/habits/:habitId/check-in with a real CSRF/authenticated BFF
request. The client applies the BFF streak result back into the dashboard, the
local continuity store, polished /arete Done-today / 1-day streak / 1 / 7
KPI read-back, and the Home Arete rail 1d streak • done today read-back.
The Playwright BFF dev server now receives OSHUN_STUBS_DATABASE_URL defaulting
to the local dev Postgres container. The Postgres stub adapter also bootstraps
the canonical V1 tables it dual-writes so a fresh oshun_dev database can run
the BFF-backed create/check-in flow without a separate Prisma migration round
trip. Remaining Arete gaps are cross-device check-in sync and the non-live Home
KpiGrid habit metric called out in the home walkthrough.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/domain-stubs-postgres.ts apps/oshun/bff/src/routes/domain-stubs-postgres.test.ts apps/oshun/web/playwright.config.ts apps/oshun/web/src/components/domains/arete/AreteHabitSystem.tsx apps/oshun/web/src/components/domains/arete/__tests__/AreteHabitSystem.test.tsx apps/oshun/web/e2e/arete-create-habit.spec.ts WALKTHROUGH/journeys/arete-create-habit.md WALKTHROUGH/customer/04-arete/domains-arete-habits.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm --dir apps/oshun/bff exec eslint --no-warn-ignored src/routes/domain-stubs-postgres.ts src/routes/domain-stubs-postgres.test.ts— passed.pnpm --dir apps/oshun/web exec eslint --no-warn-ignored playwright.config.ts src/components/domains/arete/AreteHabitSystem.tsx src/components/domains/arete/__tests__/AreteHabitSystem.test.tsx e2e/arete-create-habit.spec.ts— passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/web exec vitest run src/components/domains/arete/__tests__/AreteHabitSystem.test.tsx— 3 passed.OSHUN_TEST_POSTGRES_URL=postgresql://oshun:oshun_dev@127.0.0.1:5432/oshun_dev pnpm --dir apps/oshun/bff exec vitest run src/routes/domain-stubs-postgres.test.ts— 24 passed.python3 V5/tools/validate-v5-docs.py— passed.- Resource gates before the Playwright runs: 15 GiB RAM, 12-13 GiB available, 31 GiB swap, 48 GiB free disk, and no active broad build/test servers. During the focused Arete run, available memory stayed above 7.9 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/arete-create-habit.spec.ts --workers=1— 7 passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/arete-habits-bff.spec.ts --workers=1— 3 passed.
28. 2026-06-23 Veritas source-id profile addendum#
Closed the ID-specific source-profile leg for veritas-evidence-trail. Selected
/veritas/claim source rows now carry source ids and link to
/veritas/source/[sourceId]; /veritas/source remains the default Statnett
fallback. The source-id route renders VeritasSource with the selected profile
data and a stable data-veritas-source-profile hook, so the evidence trail no
longer lands every source drill on the same fixture card.
veritas-evidence-trail.spec.ts now clicks the Statnett selected-source row to
/veritas/source/statnett-operator-data, asserts the matching profile hook and
A-band Statnett profile, then directly opens
/veritas/source/nve-regulator-note and asserts the NVE-specific B-band profile
and rationale. The journey remains partial only because the browser-induced
downstream-503 render is still represented by shared RSC non-2xx fallback
coverage rather than a separate browser-induced 503 path.
Verification:
pnpm exec prettier --write apps/oshun/web/src/lib/lilith-data/types.ts apps/oshun/web/src/lib/lilith-data/veritas-depth.ts apps/oshun/web/src/components/lilith/veritas.tsx apps/oshun/web/src/app/veritas/source/[sourceId]/page.tsx apps/oshun/web/e2e/veritas-evidence-trail.spec.ts WALKTHROUGH/journeys/veritas-evidence-trail.md WALKTHROUGH/customer/05-veritas/veritas-source.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/lib/lilith-data/types.ts src/lib/lilith-data/veritas-depth.ts src/components/lilith/veritas.tsx src/app/veritas/source/[sourceId]/page.tsx e2e/veritas-evidence-trail.spec.ts— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/web exec vitest run src/app/veritas/__tests__/page.test.tsx— 3 passed.python3 V5/tools/validate-v5-docs.py— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no active broad build/test servers. During the focused run, available memory stayed above 7.8 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/veritas-evidence-trail.spec.ts --workers=1— 15 passed.
29. 2026-06-23 Veritas downstream-503 browser addendum#
Closed the browser-induced downstream-503 leg for veritas-evidence-trail. The
BFF now supports a test-only OSHUN_VERITAS_ADAPTER=outage mode that keeps the
real route stack alive but makes the Veritas home-briefing dependencies throw,
so /v1/veritas/briefing/home exercises the existing fail-closed
503 veritas_home_briefing_unavailable path. The default Playwright config
excludes the outage-tagged spec; the dedicated
playwright.veritas-outage.config.ts boots a separate real BFF/web stack on
ports 4011/3011 with that outage adapter and runs only
veritas-home-outage.spec.ts.
The browser spec first proves the live BFF returns 503 for a signed-in
domain:veritas token, then loads /veritas through the real Next dev server
pointed at that outage BFF. It asserts the honest no-lead UI,
Evidence · 0 claims, method note, and the absence of the Save/Report action
row. Remaining Veritas evidence-trail gaps after this addendum were story
trajectory SVG derivation, topic interaction depth, and the server-side
retraction trigger; the trajectory derivation gap was closed in addendum 240.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/app.ts apps/oshun/bff/src/__tests__/veritas-route.test.ts apps/oshun/web/playwright.config.ts apps/oshun/web/playwright.veritas-outage.config.ts apps/oshun/web/e2e/veritas-home-outage.spec.ts WALKTHROUGH/journeys/veritas-evidence-trail.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md WALKTHROUGH/results/veritas-evidence-trail.md— passed.pnpm --dir apps/oshun/bff exec eslint --no-warn-ignored src/app.ts src/__tests__/veritas-route.test.ts— passed.pnpm --dir apps/oshun/web exec eslint --no-warn-ignored playwright.config.ts playwright.veritas-outage.config.ts e2e/veritas-home-outage.spec.ts— passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/veritas-route.test.ts— 10 passed.python3 V5/tools/validate-v5-docs.py— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no active broad build/test servers. The focused outage run completed before a 30-second memory poll was due; post-run available memory was 13 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.veritas-outage.config.ts --workers=1— 1 passed.
30. 2026-06-24 Arete Home footing practice-streak addendum#
Closed the stale Home KpiGrid blocker for arete-create-habit against the
shipped Home surface. Legacy KpiGrid remains preview-only per the Home
walkthrough; the live Home KPI surface is HomeFootingSummaryStrip
([data-kpi-grid]). The footing strip now reads the local Arete continuity
store and adds one pending same-day completed local habit to the profile
practice streak while profile sync is still pending. It still preserves the
strongest active local Arete streak when that is higher than the profile value,
and archived habits do not inflate the metric.
arete-create-habit.spec.ts now creates a habit through the real BFF-backed
wizard, checks it in, returns Home with the Arete Home BFF endpoint unavailable,
and asserts both the Home Arete rail (1d streak • done today) and the live
Home footing practice-streak metric (profile streak + 1) in the same browser
session.
Verification:
psql --version—PostgreSQL 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1).pnpm --dir apps/oshun/web exec prettier --check src/components/home/HomeFootingSummaryStrip.tsx src/components/home/__tests__/HomeFootingSummaryStrip.test.tsx e2e/arete-create-habit.spec.ts ../../../WALKTHROUGH/journeys/arete-create-habit.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/home/HomeFootingSummaryStrip.tsx src/components/home/__tests__/HomeFootingSummaryStrip.test.tsx e2e/arete-create-habit.spec.ts— passed.pnpm --dir apps/oshun/web exec vitest run src/components/home/__tests__/HomeFootingSummaryStrip.test.tsx— 7 passed.pnpm --dir apps/oshun/web run typecheck— passed.git diff --check— passed.- Resource gates before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no active broad build/test servers. During the focused run, available memory stayed above 7.4 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/arete-create-habit.spec.ts --workers=1— 9 passed.
31. 2026-06-24 Arete live streak-rollup addendum#
Closed the /arete/streak fixture-vs-live blocker for arete-create-habit.
getAreteStreak() now reads /v1/arete/streak through the server-side BFF
fetch helper and maps the real Postgres-backed rollup into the phone-shell data
contract. The adapter preserves the existing fixture as an outage/malformed-data
fallback, pads the BFF's 28-day heatmap into the existing 42-cell six-week
visual, maps started to an engaged day, and keeps exactly one today marker.
/arete/streak now renders an honest live 0 days for a fresh member and
1 day after the real wizard-created habit check-in. The specimen frame caption
also reads the live day number instead of the old hardcoded Day 47, and the
large streak count/phone-frame caption no longer use negative letter spacing.
arete-create-habit.spec.ts now proves the live streak rollup in the same
real-dev-infra flow that creates the habit and POSTs the first check-in.
arete-streak-recovery.spec.ts keeps the humane/a11y streak-surface assertions
but no longer relies on fixture-only heatmap dates.
Verification:
psql --version—PostgreSQL 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1).pnpm --dir apps/oshun/web exec prettier --write src/lib/lilith-data/arete-depth.ts src/lib/lilith-data/arete-depth.test.ts src/components/lilith/arete.tsx src/components/lilith/mobile.tsx src/app/arete/streak/page.tsx e2e/arete-create-habit.spec.ts e2e/arete-streak-recovery.spec.ts ../../../WALKTHROUGH/journeys/arete-create-habit.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/lib/lilith-data/arete-depth.ts src/lib/lilith-data/arete-depth.test.ts src/components/lilith/arete.tsx src/components/lilith/mobile.tsx src/app/arete/streak/page.tsx e2e/arete-create-habit.spec.ts e2e/arete-streak-recovery.spec.ts— passed.pnpm --dir apps/oshun/web exec vitest run src/lib/lilith-data/arete-depth.test.ts— 2 passed.pnpm --dir apps/oshun/web run typecheck— passed.- Resource gates before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no active broad build/test servers. During the focused run, available memory stayed above 7.2 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/arete-create-habit.spec.ts e2e/arete-streak-recovery.spec.ts --workers=1— 15 passed.
32. 2026-06-24 PWA real service-worker cache-purge addendum#
Closed the pwa-update-flow stale-cache purge evidence gap that was previously
unit-only. pwa-lifecycle-deepening.spec.ts now drives the browser
ServiceWorker + Cache Storage path: it seeds the current oshun-* caches, stale
versioned OSHUN caches, and a foreign cache, registers a cache-busted real
sw.js, waits for activation, and asserts only the stale OSHUN caches are
purged. The journey remains partial because multi-tab controllerchange,
cold-start update, in-flight-write preservation, and reading-mode mid-passage
restore are still undriven.
Verification:
psql --version—PostgreSQL 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1).pnpm --dir apps/oshun/web exec prettier --write e2e/pwa-lifecycle-deepening.spec.ts ../../../WALKTHROUGH/journeys/pwa-update-flow.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/pwa-lifecycle-deepening.spec.ts— passed.pnpm --dir apps/oshun/web exec vitest run src/__tests__/pwa-service-worker-policy.test.ts— 9 passed.pnpm --dir apps/oshun/web run typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the focused run, available memory stayed above 7.2 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/pwa-lifecycle-deepening.spec.ts --workers=1— 4 passed.
33. 2026-06-24 Tenant SSO evidence reconciliation addendum#
Closed stale tenant-sso-config-saml-oidc-claim-mapping evidence drift. The
journey/audit now distinguish the covered real-BFF contracts from the remaining
tenant-admin UI gaps: /operator/sso renders the live ssoConnectionStore
after real admin SSO seeds, tenant-sso-crud-bff covers CRUD, validation,
successful/fail-closed test-connection, SAML XML import, and OIDC discovery
import, and tenant-sso-oidc-login-bff covers signed OIDC callback claim
transforms plus fail-closed callback verdicts. The old static SSO_FIXTURE
wording in tenant-sso-config.spec.ts and the audit is retired. The journey
remains partial because tenant-admin import UI, full transform-matrix UI,
per-tenant auth-policy panel, sandbox-probe UI verdicts, and draft→enabled state
machine remain uncovered.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/tenant-sso-config.spec.ts ../../../WALKTHROUGH/journeys/tenant-sso-config-saml-oidc-claim-mapping.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md ../../../WALKTHROUGH/results/README.md— passed.pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/tenant-sso-config.spec.ts e2e/tenant-sso-crud-bff.spec.ts e2e/tenant-sso-oidc-login-bff.spec.ts— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the focused SSO run, available memory stayed above 7.3 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-sso-config.spec.ts e2e/tenant-sso-crud-bff.spec.ts e2e/tenant-sso-oidc-login-bff.spec.ts --workers=1— 17 passed.
34. 2026-06-24 Message quiet-hours replay evidence reconciliation#
Reconciled stale audit wording for messages-quiet-hours-and-channel-binding.
The focused real-BFF spec now proves the after-window replay seam that was
previously called open: a delayed non-essential message stays out of the inbox
inside quiet hours, /v1/admin/customer-messages/replay-due does not deliver it
one second early, and the boundary replay writes the inbox row with
queued → sent → delivered receipts. The journey remains partial because real
external provider handoff beyond the message-center receipt seam, the
per-channel×domain matrix, Lilith tone-band persona-policy, and real
OTP/magic-link ownership flows remain uncovered. 2026-06-26 follow-up: active
crisis-frame suppression is now covered for the local message-center dispatch
seam; external provider handoff remains outside this local-dev seam.
Verification:
pnpm --dir apps/oshun/web exec prettier --write ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md ../../../WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md ../../../WALKTHROUGH/results/README.md— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the focused run, available memory stayed above 8.0 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/messages-center-bff.spec.ts --workers=1— 13 passed.
35. 2026-06-24 Email verification fresh-device session addendum#
Closed the remaining first-time-anonymous-visitor Step 7 different-device
verify-link gap. The public BFF confirm route now consumes a valid
email-verification token, flips emailVerified, and returns a freshly minted
AuthSession using the caller's browser surface/device metadata. The web
verify-email page now confirms through the same-origin
/api/auth/verify-email/confirm proxy, which sets the session and access tokens
as HttpOnly cookies before the page auto-hands off to onboarding.
The real Mailpit Playwright spec now proves the branch end-to-end: after signup
delivers the actual /auth/verify-email?token=...&next=/tara email, a fresh
browser context with no oshun-session cookie opens that link, lands in
/onboarding?redirect=/tara, receives HttpOnly oshun-session and
oshun-access cookies, and reads back /api/auth/session with the signed-up
email and verified: true. The journey remains deep rather than complete
because OG/Twitter image handlers, ?reauth=1, and onboarding-abandon resume
remain uncovered.
Verification:
pnpm --dir apps/oshun/web exec prettier --write src/components/auth/VerifyEmailConfirm.tsx src/components/auth/VerifyEmailConfirm.test.tsx src/lib/server/auth-server.ts src/lib/server/auth-server.test.ts src/app/api/auth/verify-email/confirm/route.ts e2e/email-verify-mailpit.spec.ts e2e/email-verify-roundtrip.spec.ts ../../../apps/oshun/bff/src/auth/customer-auth-store.ts ../../../apps/oshun/bff/src/routes/auth.ts ../../../apps/oshun/bff/src/auth/customer-auth-email-verify.test.ts— passed.pnpm --dir apps/oshun/bff exec vitest run src/auth/customer-auth-email-verify.test.ts— 16 passed.pnpm --dir apps/oshun/web exec vitest run src/components/auth/VerifyEmailConfirm.test.tsx src/lib/server/auth-server.test.ts— 10 passed.pnpm --dir apps/oshun/bff exec eslint --no-warn-ignored src/auth/customer-auth-store.ts src/routes/auth.ts src/auth/customer-auth-email-verify.test.ts— passed.pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/auth/VerifyEmailConfirm.tsx src/components/auth/VerifyEmailConfirm.test.tsx src/lib/server/auth-server.ts src/lib/server/auth-server.test.ts src/app/api/auth/verify-email/confirm/route.ts e2e/email-verify-mailpit.spec.ts e2e/email-verify-roundtrip.spec.ts— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the focused run, available memory stayed above 7.5 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/email-verify-roundtrip.spec.ts e2e/email-verify-mailpit.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 6 passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.
36. 2026-06-24 User flag moderation read-back addendum#
Closed the stale user-flag-to-review intake evidence gap. The focused browser
journey already drove the customer-side TrustSafetyFlagButton dialog on a
Nisaba passage and submitted through the server action to
POST /v1/user-reports; it now also uses an admin-scoped real BFF request to
read GET /v1/admin/workspaces/moderation and prove the submitted live report
is present in userReports.
The assertion is keyed by a unique rationale marker per run and checks the live
queue record shape: cust-ur-* report id, origin: 'live', category
misinformation, status open, priority medium, outcome none,
targetKind: 'content', reporter metadata, target id, and target label. The
same spec still covers the under-length rationale failure mode. The journey
remains deep rather than complete because actor suspension, second-reviewer
signoff, browser /profile/safety receipt rendering, notification / appeal, and
origin surfaces outside Veritas / Nisaba / Tara stay open. Operator decision and
reporter receipt API read-back are superseded by §163.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/user-flag-to-review.spec.ts ../../../WALKTHROUGH/journeys/user-flag-to-review.md ../../../WALKTHROUGH/customer/05-veritas/domains-veritas-claims-claimId.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/journeys/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md ../../../WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md ../../../WALKTHROUGH/results/README.md— passed.pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/user-flag-to-review.spec.ts— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During startup the focused run's available memory stayed above 7.8 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/user-flag-to-review.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 2 passed.
37. 2026-06-24 Telegram webhook rate-limit and STT evidence addendum#
Closed the stale telegram-bot-assistant-delivery voice-STT audit note and
moved the route-level rate-limit trigger out of the uncovered list. The journey
doc already reflected the current BFF wiring: webhook.ts uses
resolveSttVoiceProvider, which performs real Telegram file download plus
OpenAI-compatible transcription when credentials exist, and fails closed without
OSHUN_TELEGRAM_BOT_TOKEN / OSHUN_STT_API_KEY by returning the honest "could
not transcribe" reply rather than grounding a fabricated transcript.
The focused real-BFF spec now also proves the stateful limiter at the route
level. It sends 12 allowed /menu updates through the same
userId:chatId:message bucket and asserts the 13th update returns the retry
copy ("This chat is moving quickly...") with transactional audit metadata,
rather than the normal command response. The journey remains deep rather than
complete because outbound Telegram delivery / TTS-back, live STT credentials,
audit-sink persistence, crisis scanning on voice transcripts, and grounder
500-paths remain uncovered.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/telegram-webhook-delivery.spec.ts ../../../WALKTHROUGH/journeys/telegram-bot-assistant-delivery.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/telegram-webhook-delivery.spec.ts— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the focused run, available memory stayed above 8.1 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/telegram-webhook-delivery.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 18 passed.
38. 2026-06-24 Telegram voice-transcript crisis interrupt addendum#
Closed the telegram-bot-assistant-delivery voice-transcript crisis-scan gap.
The shared Telegram bot now checks successful voice transcripts with the same
detectCrisisTrigger phrase list used for typed text before any Sophia
grounding. This keeps STT-unavailable voice notes fail-closed while preventing a
successfully transcribed crisis phrase from being routed to the grounded-answer
composer.
To prove that control flow against the real local BFF without external STT
credentials, the STT resolver now accepts OSHUN_TELEGRAM_STT_TEST_TRANSCRIPTS
only outside production. The Playwright BFF sets a single deterministic
voice_file_e2e_crisis transcript and asserts the webhook returns the exact
plain-operator crisis response, hotline buttons, intentClass: 'crisis', and
persona: 'plain-operator', with no Sophia disclosure footer. Production
ignores that transcript map and still requires real Telegram + STT credentials.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/telegram-webhook-delivery.spec.ts playwright.config.ts ../../../libs/oshun/messaging-channels/src/telegram/bot.ts ../../../libs/oshun/messaging-channels/src/telegram/stt-provider.ts ../../../libs/oshun/messaging-channels/src/telegram/stt-provider.test.ts ../../../libs/oshun/messaging-channels/src/telegram-messaging.test.ts ../../../WALKTHROUGH/journeys/telegram-bot-assistant-delivery.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md ../../../WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm --dir libs/oshun/messaging-channels exec vitest run src/telegram-messaging.test.ts src/telegram/stt-provider.test.ts— 33 passed.pnpm exec eslint --no-warn-ignored libs/oshun/messaging-channels/src/telegram/bot.ts libs/oshun/messaging-channels/src/telegram/stt-provider.ts libs/oshun/messaging-channels/src/telegram/stt-provider.test.ts libs/oshun/messaging-channels/src/telegram-messaging.test.ts apps/oshun/web/e2e/telegram-webhook-delivery.spec.ts apps/oshun/web/playwright.config.ts— passed.pnpm nx run @oshun/messaging-channels:typecheck— passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the focused run, available memory stayed above 8.1 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/telegram-webhook-delivery.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 19 passed.
39. 2026-06-24 Telegram audit-sink persistence addendum#
Closed the Telegram audit-sink persistence gap. POST /telegram/webhook now
records each returned channel audit envelope into the BFF admin audit-events
sink after the webhook decision succeeds. Real local/dev server wiring injects
the durable Postgres-backed store, so the envelope is written to
admin_audit_event; route-level unit tests still prove the same behavior with
the in-memory store when no durable sink is injected.
Normal responses are recorded as telegram.send, crisis interrupts as
telegram.crisis-suppression. The stored payload includes the tenant id,
Telegram update id, response method, and the full Telegram channel audit
envelope, but not the response body text.
The focused real-BFF Playwright spec now sends /today with a unique tenant
header, then polls Postgres directly for the resulting admin_audit_event row
and asserts the persisted telegram.send row carries the expected audit
envelope.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/telegram-webhook-delivery.spec.ts ../../../apps/oshun/bff/src/routes/telegram.ts ../../../apps/oshun/bff/src/app.ts ../../../apps/oshun/bff/src/__tests__/telegram-route.test.ts ../../../WALKTHROUGH/journeys/telegram-bot-assistant-delivery.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md ../../../WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/telegram-route.test.ts— 10 passed.pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/telegram.ts apps/oshun/bff/src/app.ts apps/oshun/bff/src/__tests__/telegram-route.test.ts apps/oshun/web/e2e/telegram-webhook-delivery.spec.ts— passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the focused run, available memory stayed above 8.2 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/telegram-webhook-delivery.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 20 passed.
40. 2026-06-24 Public-scene takedown cascade addendum#
Partially closed the public-scene-abuse-report artifact-side takedown cascade
gap through the shipped tenant-operator BFF route. The new real-infra Playwright
leg seeds one kept Living Offering, creates two public share links, mints a
download grant for one link, and calls
POST /v1/living-scenes/admin/artifacts/:artifactId/takedown as a tenant
operator with kind:'originating-user-account-deletion'.
The spec asserts the route cascades to both share ids, both public viewers
return tombstones with the takedown banner state, both embed endpoints deny as
revoked, the pre-existing download grant media returns
410 download_grant_inactive_share, and tenant audit includes
takedown_cascaded. This proves the cascade and observability behavior against
real local dev infra; the remaining public-report gap is the operator-detail UI
that would launch this cascade directly from an abuse-report incident.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/scene-password-and-grants.spec.ts ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/journeys/public-scene-abuse-report.md ../../../WALKTHROUGH/journeys/scene-keep-and-share.md ../../../WALKTHROUGH/results/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md ../../../WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/scene-password-and-grants.spec.ts— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the focused full-spec run, available memory stayed above 7.3 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/scene-password-and-grants.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "originating-user deletion tombstones every public share"— 1 passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/scene-password-and-grants.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 17 passed.
41. 2026-06-24 Nyx event-action contract addendum#
Closed the remaining local BFF-contract gap in
nyx-event-calendar-sync-reminder for reminder-state persistence. The focused
real-infra Playwright leg still proves the authenticated
PUT /v1/nyx/event-actions/:eventId → GET /v1/nyx/event-actions mirror and
delivery-route reconstruction from cadence+channels, and now also proves the
fail-closed write contract:
- non-object JSON bodies return
400 invalid_event_action_state; - body
eventIdmust match the route event id and mismatches return400 event_id_mismatch; - enabled reminders without a valid
reminderTimereturn400 invalid_reminder_time; - rejected writes leave the user's snapshot unmutated (
revision: 0, no persisted event state).
The walkthrough now marks the reminder body-shape contract, event-id observation back-reference, ICS UID namespace, and reminder-channel delivery target mapping as documented/covered. Remaining gaps stay external or product surface gaps: two-way provider sync, actual reminder dispatch and notification cold-start delivery, quiet-hours dispatch deferral, richer event-metadata prefill, and an explicit observation-to-event back-link control.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/nyx-event-actions-bff.spec.ts ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/journeys/nyx-event-calendar-sync-reminder.md ../../../WALKTHROUGH/results/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md ../../../WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/nyx-event-actions-bff.spec.ts— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the focused run, available memory stayed above 7.8 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nyx-event-actions-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 4 passed.
42. 2026-06-24 Tenant SSO claim-transform matrix addendum#
Closed the remaining /operator/sso browser-editor claim-mapping matrix gap in
tenant-sso-config-saml-oidc-claim-mapping. The new real-infra Playwright leg
opens an existing SAML connection in the shipped operator SSO form, adds one row
for each internal claim slot (email, displayName, familyName, givenName,
groups, tenant-role, preferred-locale), drives all four transform options
(identity, lowercase, csv-split, first-only), toggles required/optional
state, saves through the live admin SSO BFF, and polls the BFF read-back until
the persisted matrix matches the browser form.
The journey remains partial for the tenant-admin import UI, per-tenant auth-policy panel, sandbox-probe verdict UI, and draft→enabled state machine, but the claim-slot/transform editor matrix is now covered by a real browser flow instead of only BFF callback/contract evidence.
Verification:
pnpm --dir apps/oshun/web typecheck— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/tenant-sso-config.spec.ts— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the focused browser runs, available memory stayed at or above 13 GiB after startup and shutdown polling.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-sso-config.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list --grep "browser form persists every claim slot"— 1 passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-sso-config.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list --grep "claim-mapping form mutates|browser form persists|removing a connection"— 3 passed.
43. 2026-06-24 PWA multi-tab controllerchange addendum#
Closed the Step 8 multi-tab reload gap in pwa-update-flow. The shipped
PwaBootstrap now reloads any tab that already has a pending staged update when
controllerchange fires, not only the tab where the user clicked "Refresh now";
first-install/unknown controller changes still keep the existing ready-prompt
branch. The Playwright SW-update harness now coordinates a single activation
across sibling pages in one browser context.
The new real-infra Chromium leg opens /explore and /library in two tabs,
stages the same update in both, applies it from /explore, broadcasts the
activation to /library, and proves both tabs reload exactly once, preserve
their own URLs, re-render their surfaces, clear the update prompt, and emit no
stale chunk/module console errors. The journey remains partial for the
backgrounded-PWA silent cold-start update and in-flight-write preservation
paths.
Verification:
pnpm --dir apps/oshun/web typecheck— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/pwa-lifecycle-deepening.spec.ts apps/oshun/web/e2e/support/pwa.ts apps/oshun/web/src/components/PwaBootstrap.tsx— passed.pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/PwaBootstrap.test.tsx --config vitest.config.ts— 1 file / 7 tests passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the full targeted lifecycle run, available memory stayed above 6.9 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/pwa-lifecycle-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list --grep "reloads every open tab"— 1 passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/pwa-lifecycle-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 5 passed.
44. 2026-06-24 PWA cold-start silent update addendum#
Closed the Step 9 browser-level cold-start silent-update gap in
pwa-update-flow. The new Chromium leg launches as a standalone PWA with a
saved /activity relaunch target, activates the real sw.js, reloads as a
subsequent controlled cold start, and asserts /activity remains active, the
activity dashboard rerenders, no data-pwa-update-prompt mounts, and
navigator.serviceWorker.ready reports active=true, controller=true, and
waiting=false.
The journey remains partial for the cold-start telemetry variant and Step 10 in-flight write preservation.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/pwa-lifecycle-deepening.spec.ts ../../../WALKTHROUGH/journeys/pwa-update-flow.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md ../../../WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/pwa-lifecycle-deepening.spec.ts— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the full targeted lifecycle run, available memory stayed above 7.1 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/pwa-lifecycle-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list --grep "standalone cold start restores"— 1 passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/pwa-lifecycle-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 6 passed.
45. 2026-06-24 PWA in-flight write refresh addendum#
Closed the Step 10 browser-level in-flight write/read-back leg in
pwa-update-flow. The new Chromium leg creates a persisted Arete habit through
the real browser wizard, starts the authenticated check-in mutation, lets the
live BFF write complete while the browser still shows the optimistic "Recording
check-in..." state, then applies the staged PWA update. After the refresh-now
reload, the test verifies the route is preserved, the update prompt is cleared,
and /arete refetches the durable success state as Done today,
1-day streak, and 1 / 7.
The journey remains partial for the service-worker background-sync queue/replay leg and the cold-start telemetry variant.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/pwa-lifecycle-deepening.spec.ts ../../../WALKTHROUGH/journeys/pwa-update-flow.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md ../../../WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/pwa-lifecycle-deepening.spec.ts— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the full targeted lifecycle run, available memory stayed above 7.0 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/pwa-lifecycle-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list --grep "refresh-now reload preserves"— 1 passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/pwa-lifecycle-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 7 passed.
46. 2026-06-24 Offline background-sync replay addendum#
Closed the raw service-worker queue/replay substrate gap shared by
offline-first-time-use and the queued-write branch of pwa-update-flow. The
new Chromium spec registers the real sw.js, creates a live Arete habit, queues
an authenticated same-origin /v1/arete/habits/:habitId/check-in mutation via
OSHUN_QUEUE_ACTION, proves the row is persisted in the service worker's
oshun-sync-queue IndexedDB store, reloads while offline, proves the queued row
survives, then uses Chromium's service-worker CDP hook to dispatch the
oshun-background-sync event. The replay writes through the live BFF,
/v1/arete/habits reads back todayKept=true / streakDays=1, and the queue
drains.
The journeys remain partial for user-facing offline Save/Reflection queue hints, natural browser-delivered sync scheduling, PWA staged-update queued-write UI copy/telemetry, user-facing network-only denial copy, cold-start telemetry, and long-lived Nisaba offline pins.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/offline-background-sync.spec.ts ../../../WALKTHROUGH/journeys/offline-first-time-use.md ../../../WALKTHROUGH/journeys/pwa-update-flow.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md ../../../WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/offline-background-sync.spec.ts— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the focused run, available memory stayed above 8.7 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/offline-background-sync.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 1 passed.
47. 2026-06-24 Search result deep-read destination addendum#
Closed the URL-only part of the search-explore-deep-read-library-save
deep-read gap for the Nisaba passage branch. search-saved-and-recent now
clicks the real /v1/search seed nisaba-passage-speech from /search,
verifies the browser lands on
/domains/nisaba?origin=explore&path=/library/passage/nisaba-passage-speech,
and asserts the destination renders as a passage workspace instead of falling
back to the Nisaba hub root: data-nisaba-surface-mode="passage",
data-nisaba-workspace-mode="passage", the Passage desk focus copy, the
reading frame, the reading body, and at least one rendered passage paragraph.
The journey remains partial for exact arbitrary-passage-id body mapping, Veritas timeline destination content, saved-item-resume destination content after the Library hop, scroll restoration, silent fetch-failure UX, non-Nisaba wrong-destination cases, and duplicate save-producer edges.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/search-saved-and-recent.spec.ts ../../../WALKTHROUGH/journeys/search-explore-deep-read-library-save.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/search-saved-and-recent.spec.ts— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the final focused run, available memory stayed above 9.2 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 5 passed.
48. 2026-06-24 Search saved-item resume destination addendum#
Tightened the Library-hop half of search-explore-deep-read-library-save.
search-saved-and-recent now reuses the Nisaba passage-workspace assertion
after clicking the cache-free /library saved item’s Resume passage button:
the real /v1/search item is saved through the browser, the real
/v1/library/saved-items row is polled for resumePath, the local library
cache is cleared, /library hydrates the item from the BFF, and the resumed
/domains/nisaba?origin=library&path=/library/passage/nisaba-passage-speech
destination must render data-nisaba-surface-mode="passage",
data-nisaba-workspace-mode="passage", Passage desk focus copy, the reading
frame, the reading body, and at least one passage paragraph.
The journey remains partial for exact arbitrary-passage-id body mapping, Veritas timeline destination content, scroll restoration, silent fetch-failure UX, non-Nisaba wrong-destination cases, and duplicate save-producer edges.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/search-saved-and-recent.spec.ts ../../../WALKTHROUGH/journeys/search-explore-deep-read-library-save.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/search-saved-and-recent.spec.ts— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the final focused run, available memory stayed above 9.2 GiB; after shutdown it returned to 12 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 5 passed.
49. 2026-06-24 Search Veritas claim destination addendum#
Closed the first non-Nisaba destination-content branch in
search-explore-deep-read-library-save. The BFF universal search seeds now
include canonical Veritas claim result claim-renewables-capacity, and
search-saved-and-recent opens the real
/v1/search?q=renewables%20capacity&domain=veritas result from /search. After
clicking the result's open action, the browser must land on
/domains/veritas?origin=explore&path=/claims/claim-renewables-capacity and
render the claim-detail evidence workspace instead of the Veritas hub root:
data-veritas-claim-detail-workspace, the
Renewables now exceed fossil capacity title, canonical claim text containing
installed global power capacity, the source-iea source row, the side-by-side
counterclaim lane, and the Sophia bundle card for claim-renewables-capacity.
The journey remains partial for Veritas story and timeline destination content, arbitrary Nisaba passage-id body mapping, scroll restoration, fetch-failure UX, remaining non-Nisaba destination templates, duplicate save-producer edges, and broader in-domain save producer sync.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/search-saved-and-recent.spec.ts ../../../apps/oshun/bff/src/routes/universal-search-seeds.ts ../../../apps/oshun/bff/src/__tests__/search-route.test.ts ../../../WALKTHROUGH/journeys/search-explore-deep-read-library-save.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/search-saved-and-recent.spec.ts apps/oshun/bff/src/routes/universal-search-seeds.ts apps/oshun/bff/src/__tests__/search-route.test.ts— passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/search-route.test.ts— 11 passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the final focused run, available memory stayed above 9 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 6 passed.
50. 2026-06-24 Search Veritas story destination addendum#
Closed the Veritas story/timeline destination-content branch in
search-explore-deep-read-library-save. The BFF universal search seeds now
include canonical Veritas story result story-renewables-capacity, BFF ranking
treats story as a first-class kind, and the search UI renders a dedicated
story template with timeline/provenance/evidence cues instead of a generic
fallback card. search-saved-and-recent opens the real
/v1/search?q=renewables%20story%20timeline&domain=veritas result from
/search; after clicking the result's open action, the browser must land on
/domains/veritas?origin=explore&path=/story/story-renewables-capacity and
render the story timeline workspace instead of the Veritas hub root:
data-veritas-story-workspace with story id story-renewables-capacity, the
canonical story headline, the claim-detail lane, the source-iea source row,
correction notes, topic timeline, timeline-2, and the Sophia bundle card for
claim-renewables-capacity.
The journey remains partial for arbitrary Nisaba passage-id body mapping, scroll restoration, fetch-failure UX, remaining non-Nisaba destination templates, duplicate save-producer edges, and broader in-domain save producer sync.
Verification:
pnpm --dir apps/oshun/web exec prettier --write e2e/search-saved-and-recent.spec.ts src/components/search/SearchResultsView.tsx src/components/search/search-config.ts src/components/search/__tests__/SearchResultsView.test.tsx src/components/search/search-config.test.ts ../../../apps/oshun/bff/src/routes/universal-search-seeds.ts ../../../apps/oshun/bff/src/search/ranking.ts ../../../apps/oshun/bff/src/__tests__/search-route.test.ts ../../../WALKTHROUGH/journeys/search-explore-deep-read-library-save.md ../../../WALKTHROUGH/journeys/coverage.md ../../../WALKTHROUGH/results/README.md ../../../WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm --dir apps/oshun/web exec vitest run src/components/search/search-config.test.ts src/components/search/__tests__/SearchResultsView.test.tsx— 2 files passed, 91 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/search-route.test.ts— 11 passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/search-saved-and-recent.spec.ts apps/oshun/web/src/components/search/SearchResultsView.tsx apps/oshun/web/src/components/search/search-config.ts apps/oshun/web/src/components/search/__tests__/SearchResultsView.test.tsx apps/oshun/web/src/components/search/search-config.test.ts apps/oshun/bff/src/routes/universal-search-seeds.ts apps/oshun/bff/src/search/ranking.ts apps/oshun/bff/src/__tests__/search-route.test.ts— passed with the repo's existing Next pages-directory warning.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gates before typecheck/lint and Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the focused Playwright run, available memory stayed above 10 GiB; after shutdown it returned to 13 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 7 passed.
51. 2026-06-24 Search Nisaba exact passage detail addendum#
Closed the exact Nisaba passage identity/body branch for the
search-explore-deep-read-library-save journey. The universal search fixture
now uses the real non-daily public-domain corpus passage nisaba-passage-speech
(On Guarded Speech) instead of the deleted synthetic passage seed. The web BFF
hooks now expose GET /v1/nisaba/passages/:passageId, and NisabaSurface
hydrates /library/passage/<id> through that detail route before selecting the
active reading object.
search-saved-and-recent now opens
/v1/search?q=guarded%20speech&domain=nisaba, clicks the real
nisaba-passage-speech result, and verifies the destination
/domains/nisaba?origin=explore&path=/library/passage/nisaba-passage-speech
renders data-nisaba-reading-passage-id="nisaba-passage-speech", exact
Enchiridion XXXIII reference, exact Epictetus/Carter source attribution,
On Guarded Speech title, the public-domain body excerpt, compare deck,
workflow map, and support rail. The saved-result path then polls the real
/v1/library/saved-items row, clears local library cache, hydrates /library
from the BFF, resumes the item, and verifies the same exact passage workspace.
The duplicate daily Nisaba universal-search seed was removed because the live
Nisaba adapter already contributes the daily public-domain passage; the final
browser run no longer emits the duplicate React key warning for
nisaba-passage-attention.
The journey remains partial for scroll restoration, silent fetch-failure UX, remaining non-Nisaba destination templates, duplicate save-producer edges, and broader in-domain save producer sync.
Verification:
pnpm exec prettier --write apps/oshun/web/src/lib/hooks/use-bff.ts apps/oshun/web/src/lib/hooks/__tests__/use-bff.test.ts apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/domains/__tests__/NisabaSurface.test.tsx apps/oshun/web/e2e/search-saved-and-recent.spec.ts apps/oshun/bff/src/routes/universal-search-seeds.ts apps/oshun/bff/src/__tests__/search-route.test.ts WALKTHROUGH/journeys/search-explore-deep-read-library-save.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md V1/features/search-discovery-recommendations.md V1/architecture/search-discovery-knowledge-graph.md— passed.pnpm --dir apps/oshun/web exec vitest run src/components/domains/__tests__/NisabaSurface.test.tsx src/lib/hooks/__tests__/use-bff.test.ts— 2 files passed, 63 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/search-route.test.ts src/__tests__/nisaba-route.test.ts— 2 files passed, 22 tests passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/domains/__tests__/NisabaSurface.test.tsx apps/oshun/web/src/lib/hooks/use-bff.ts apps/oshun/web/src/lib/hooks/__tests__/use-bff.test.ts apps/oshun/web/e2e/search-saved-and-recent.spec.ts— passed with the repo's existing Next pages-directory warning.pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/universal-search-seeds.ts apps/oshun/bff/src/__tests__/search-route.test.ts— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gates before typecheck/lint and Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed above 9.8 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 7 passed.
52. 2026-06-24 Search live-BFF fetch-failure UX addendum#
Closed the basic visible fetch-failure branch for
search-explore-deep-read-library-save. search-saved-and-recent now primes a
real authenticated shell session whose client /api/auth/session access token
is valid but intentionally lacks shell domain scopes. After the page hydrates
that client token, the browser submits guarded speech through the shipped
SearchResultsView controls. The live BFF /v1/search request returns
403 domain_scope_missing; the browser must render [data-search-error] with
the explicit "Search unavailable" state, clear loading/summary/result rows, and
retain the submitted query in the recent-search panel.
This supersedes the dated walkthrough claim that non-OK search responses silently leave prior results. The journey remains partial for a dedicated Retry control, scroll restoration after back-navigation from a deep-read, destination content for the remaining non-Nisaba result templates, duplicate save-producer edges, and broader in-domain save producer sync.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/search-saved-and-recent.spec.ts WALKTHROUGH/journeys/search-explore-deep-read-library-save.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/search-saved-and-recent.spec.ts— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed at or above 10 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 8 passed.
53. 2026-06-24 Search deep-read back-scroll restoration addendum#
Closed the Browser Back scroll-restoration branch for
search-explore-deep-read-library-save. SearchResultsView now stores a
session-scoped restore envelope before launching a result: submitted-workspace
signature, result key, scrollY, and timestamp. When the same search state
rehydrates with rendered results, it restores the saved offset and clears the
marker. Stale, mismatched, or missing-result restore entries are cleared without
affecting the visible search state.
search-saved-and-recent now opens the long live-BFF /search?q=a result set,
scrolls to the deterministic nisaba-passage-speech row, asserts the list is
actually scrolled, opens the exact Nisaba deep-read workspace, goes back, waits
for search results to rehydrate, and verifies the restored scroll offset is
within tolerance, the same row is in the viewport, and the sessionStorage marker
has been cleared.
The next addendum closes the failure-state action branch. The current journey remains partial for destination content for the remaining non-Nisaba result templates, duplicate save-producer edges, and broader in-domain save producer sync.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/search/SearchResultsView.tsx apps/oshun/web/e2e/search-saved-and-recent.spec.ts WALKTHROUGH/journeys/search-explore-deep-read-library-save.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm --dir apps/oshun/web exec vitest run src/components/search/__tests__/SearchResultsView.test.tsx src/components/search/__tests__/SearchResultsViewTelemetry.test.tsx— 2 test files passed, 62 tests passed.pnpm --dir apps/oshun/web typecheck— passed (tsc --noEmit).pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/search/SearchResultsView.tsx apps/oshun/web/e2e/search-saved-and-recent.spec.ts— passed; ESLint emitted the repo's existingpagesdirectory notice.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
54. 2026-06-24 Search fetch-failure Retry addendum#
Closed the dedicated Retry-control branch for
search-explore-deep-read-library-save. SearchResultsView now renders
[data-search-retry] inside the fetch-failure empty state and backs it with a
retry nonce, so the same submitted query and domain filter refetch even when the
visible input text has not changed. The retry path clears stale rows through the
same fetch lifecycle as a new search and keeps the saved/recent workspace state
unchanged.
search-saved-and-recent now extends the live-BFF 403 domain_scope_missing
browser branch: after the first failed /search?q=guarded+speech request shows
[data-search-error], the test clicks [data-search-retry], waits for the
second real /v1/search request, asserts the BFF still returns
domain_scope_missing while the token remains unauthorized, and verifies that
loading, summary, and result rows stay absent. The component unit coverage also
proves a failed submitted search can recover to rendered results when the retry
request succeeds.
The journey remains partial for destination content for the remaining non-Nisaba result templates, duplicate save-producer edges, and broader in-domain save producer sync.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/search/SearchResultsView.tsx apps/oshun/web/src/components/search/__tests__/SearchResultsView.test.tsx apps/oshun/web/e2e/search-saved-and-recent.spec.ts WALKTHROUGH/journeys/search-explore-deep-read-library-save.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm --dir apps/oshun/web exec vitest run src/components/search/__tests__/SearchResultsView.test.tsx src/components/search/__tests__/SearchResultsViewTelemetry.test.tsx— 2 test files passed, 63 tests passed.pnpm --dir apps/oshun/web typecheck— passed (tsc --noEmit).pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/search/SearchResultsView.tsx apps/oshun/web/src/components/search/__tests__/SearchResultsView.test.tsx apps/oshun/web/e2e/search-saved-and-recent.spec.ts— passed; ESLint emitted the repo's existingpagesdirectory notice.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed at or above 10 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
55. 2026-06-24 Search/in-domain saved-item de-dupe addendum#
Closed the Nisaba search-result save versus in-domain save-producer edge for
search-explore-deep-read-library-save. The main Nisaba passage workspace now
has a real [data-library-save-toggle="<passageId>"] action in the reading
action row. It uses the shared web library store and saves the same
nisaba:<passageId> identity and /library/passage/<passageId> resume path as
the search result row. The older Lilith NisabaPassageActions save affordance
also now writes the canonical /library/passage/<id> resume path, with the
Lilith button primitive forwarding the save-state data hooks.
search-saved-and-recent now saves the real BFF nisaba-passage-speech search
row, waits for the saved-items POST, polls the real /v1/library/saved-items
store for exactly one row, opens the same Nisaba passage workspace, verifies the
in-domain toggle is already saved, then drives in-domain unsave and resave
through real DELETE/POST responses. The test requires the server count to move
1 → 0 → 1 for the same nisaba:nisaba-passage-speech key before clearing
local cache, hydrating /library, and resuming the exact passage.
The browser run exposed a real BFF edge: direct save → unsave → resave inside one Unix-second route clock left the tombstone winning the tie, despite the resave route returning 201. The saved-items store now makes direct route writes monotonic per user/item while keeping tombstone-wins behavior for true same-timestamp device sync conflicts.
The journey remains partial for destination content for the remaining non-Nisaba result templates and broader non-Nisaba save producer sync.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/domains/__tests__/NisabaSurface.test.tsx apps/oshun/web/src/components/lilith/NisabaPassageActions.tsx apps/oshun/web/src/components/lilith/NisabaPassageActions.test.tsx apps/oshun/web/e2e/search-saved-and-recent.spec.ts WALKTHROUGH/journeys/search-explore-deep-read-library-save.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm exec prettier --write apps/oshun/bff/src/library/saved-items-store.ts apps/oshun/bff/src/library/saved-items-store.test.ts apps/oshun/bff/src/routes/library-saved-items.test.ts apps/oshun/web/e2e/search-saved-and-recent.spec.ts— passed.pnpm --dir apps/oshun/web exec vitest run src/components/domains/__tests__/NisabaSurface.test.tsx src/components/lilith/NisabaPassageActions.test.tsx— 2 test files passed, 54 tests passed.pnpm --dir apps/oshun/bff exec vitest run src/library/saved-items-store.test.ts src/routes/library-saved-items.test.ts— 2 test files passed, 20 tests passed.pnpm --dir apps/oshun/web typecheck— passed (tsc --noEmit).pnpm --dir apps/oshun/bff typecheck— passed.pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/library/saved-items-store.ts apps/oshun/bff/src/library/saved-items-store.test.ts apps/oshun/bff/src/routes/library-saved-items.test.ts apps/oshun/web/src/design-system/lilith/primitives.tsx apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/domains/__tests__/NisabaSurface.test.tsx apps/oshun/web/src/components/lilith/NisabaPassageActions.tsx apps/oshun/web/src/components/lilith/NisabaPassageActions.test.tsx apps/oshun/web/e2e/search-saved-and-recent.spec.ts— passed; ESLint emitted the repo's existingpagesdirectory notice.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gates before focused Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed at or above 10 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "saving a real BFF search result hydrates"— 1 passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 9 passed.
56. 2026-06-24 Search non-Nisaba destination templates addendum#
Closed the remaining real-BFF search destination-content gap for the currently
walkable non-Nisaba templates in search-explore-deep-read-library-save.
search-saved-and-recent now clicks live /v1/search rows for Tara practice,
Nyx sky-event, and Metis course results and asserts the destination surface
hydrates past the hub root:
tara-practice-box-breathingopens/domains/tara?origin=explore&path=/meditate/session/tara-practice-box-breathingand renders the immersive Tara session player with active controls.nyx-quadrantids-2026opens the canonical Nyx event detail route/events/quadrantid-meteor-shower-peakand renders the event-detail id, title, observation plan, and Tara recommendation lane. The live BFF seed target was corrected from the stale/events/nyx-quadrantids-2026slug to the event model's real slug, with a BFF route test locking the contract.crs-002opens/domains/metis?origin=explore&path=/courses/crs-002and renders the Metis study destination preview with the study card inactivestate.
The journey remains partial for broader non-Nisaba save-producer sync and remaining object-template save/resume permutations beyond clicked destination surfaces.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/universal-search-seeds.ts apps/oshun/web/e2e/search-saved-and-recent.spec.ts WALKTHROUGH/journeys/search-explore-deep-read-library-save.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm exec prettier --write apps/oshun/bff/src/__tests__/search-route.test.ts apps/oshun/web/e2e/search-saved-and-recent.spec.ts WALKTHROUGH/journeys/search-explore-deep-read-library-save.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/search-route.test.ts— 1 test file passed, 12 tests passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/universal-search-seeds.ts apps/oshun/bff/src/__tests__/search-route.test.ts apps/oshun/web/e2e/search-saved-and-recent.spec.ts— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gates before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed at or above 9.8 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "Tara practice|Nyx sky-event|Metis course"— 3 passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 12 passed.
57. 2026-06-24 Themis upheld-appeal addendum#
Closed the themis-assessment-appeal upheld-branch HTTP gap without
over-claiming the still-unbuilt /operator/metis review UI. The real-BFF
Playwright integrity-appeal suite now seeds a violation verdict, opens an
appeal, performs a repeat operator adjudication with a matching
teacherOverride.verdictClass, asserts status: "upheld",
verdictClass: "violation", decision.decidedBy: "teacher-op",
recommendedAction: "score_hold", audit rationale read-back, and appeal
resolution-note persistence. The BFF route test locks the same canonical bridge
behavior through Fastify injection. Customer assessment-submit adjudication,
upheld-without-teacherOverride, the operator review UI, gradebook read-back,
and /messages notification remain open.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/integrity-appeal.spec.ts apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts WALKTHROUGH/journeys/themis-assessment-appeal.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/metis-integrity-route.test.ts— 7 passed.- Resource gate before Playwright/typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed at or above 8.9 GiB.
pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts apps/oshun/web/e2e/integrity-appeal.spec.ts— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.pnpm --dir apps/oshun/web exec playwright test e2e/integrity-appeal.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 11 passed.
57.1. 2026-06-25 Themis appeal-disabled addendum#
Closed the themis-assessment-appeal cleared-verdict appeal-policy gap without
over-claiming the still-unbuilt /operator/metis review UI. The canonical
bridge now fails closed when decision.appealPath.appealAllowed === false, the
BFF maps that direct learner appeal attempt to
409 academic_integrity_appeal_not_allowed, and the customer
/integrity/<verdictId>/appeal route renders the Appeal closed state instead
of mounting a form. The real-BFF Playwright integrity-appeal suite now seeds a
teacher-cleared verdict, asserts the false appeal path, proves the direct POST
rejection, and verifies the blocked browser render. Customer assessment-submit
adjudication, upheld-without-teacherOverride, the operator review UI,
gradebook read-back, and /messages notification remain open.
Verification:
pnpm exec vitest run libs/metis/integrations/src/themis-canonical-wiring.test.ts— 9 passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/metis-integrity-route.test.ts— 8 passed.- Resource gate before typecheck/Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed at or above 8.5 GiB.
pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/integrity-appeal.spec.ts --project=chromium— 12 passed.
58. 2026-06-24 Tenant SSO operator probe UI addendum#
Closed the /operator/sso test-connection verdict UI gap in
tenant-sso-config-saml-oidc-claim-mapping without over-claiming the separate
tenant-admin sandbox sign-in app. The new real-infra Playwright leg starts a
local OIDC discovery/JWKS server, creates two real SSO connections through
POST /v1/admin/sso, opens the shipped operator SSO editor, clicks each row's
Test action, and asserts the UI renders both the reachable verdict
(Reachable, oidc-discovery: ok, oidc-jwks: ok) and the fail-closed JWKS
verdict (Failed, oidc-discovery: ok, oidc-jwks: fail) returned by the real
POST /v1/admin/sso/:id/test BFF route.
The journey remains partial for the tenant-admin metadata import UI, per-tenant auth-policy panel, tenant-admin sandbox account sign-in per-verdict UI, draft→enabled state machine, and external IdP sign-in.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/tenant-sso-config.spec.ts— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/tenant-sso-config.spec.ts— passed.pnpm --dir apps/oshun/web typecheck— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During the full file run, available memory stayed at or above 9.7 GiB and returned to 13 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-sso-config.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list --grep "sandbox probe UI"— 1 passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-sso-config.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 10 passed.
59. 2026-06-24 Sophia cautious/partial grounding addendum#
Closed the sophia-grounded-answer limited-support branch gap for the real
/v1/sophia/answer pipeline. sophia-answer-bff.spec.ts now drives the live
BFF with the in-process Nisaba corpus query spokes, which returns the single
Tao Te Ching passage search-nisaba-passage-emptiness, and asserts
confidence: "cautious", groundingState: "partial", abstained: false, a
retrieved claim, and a claim-to-citation map that references only the returned
citation. sophia-grounded-answer-page.spec.ts submits the same query through
the shipped /sophia form and verifies the visible partial state, one witness,
and one retrieved claim row.
The journey remains partial for contradiction loop UI, pin-to-library,
synthetic/retracted/cross-tenant failure modes, real /v1/search UI query,
Nisaba citation handoff, and labels beyond the current extractive retrieved
path.
Verification:
psqlavailability check —/usr/bin/psql, PostgreSQL16.14.pnpm exec prettier --write apps/oshun/web/e2e/sophia-answer-bff.spec.ts apps/oshun/web/e2e/sophia-grounded-answer-page.spec.ts WALKTHROUGH/journeys/sophia-grounded-answer.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/sophia-answer-bff.spec.ts apps/oshun/web/e2e/sophia-grounded-answer-page.spec.ts— passed.python3 V5/tools/validate-v5-docs.py— passed.- Resource gate before typecheck/Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed around 10 GiB.
pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/sophia-answer-bff.spec.ts e2e/sophia-grounded-answer-page.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 7 passed.
60. 2026-06-24 Tenant SCIM Groups addendum#
Closed the tenant-bulk-member-invite-scim SCIM Groups gap for the local
real-infra BFF path. The BFF now exposes /v1/scim/v2/Groups behind the same
SCIM bearer and explicit tenant guards as /Users, persists group rows in
Postgres (goal3_stub_scim_group), and synchronizes group membership into each
affected persisted SCIM user's groups array.
tenant-member-invite-scim.spec.ts now creates two real SCIM users, creates a
SCIM group with the first member, verifies that /Users/:id reflects the group
assignment, patches the group to move membership to the second user, verifies
the first user loses the group and the second gains it, lists the group, deletes
it, verifies the group 404, verifies the second user loses the group, and reads
the Postgres group tombstone row.
The journey remains partial for CSV bulk import, SCIM Bulk, IdP callback, outbound invite email/first-login, operator-table refresh from IdP-created rows, and audit reconciliation.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/domain-stubs-postgres.test.ts apps/oshun/bff/src/__tests__/domain-stubs-route.test.ts apps/oshun/bff/src/routes/domain-stubs.ts apps/oshun/bff/src/routes/domain-stubs-postgres.ts apps/oshun/web/e2e/tenant-member-invite-scim.spec.ts— passed.pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/domain-stubs.ts apps/oshun/bff/src/routes/domain-stubs-postgres.ts apps/oshun/bff/src/routes/domain-stubs-postgres.test.ts apps/oshun/bff/src/__tests__/domain-stubs-route.test.ts apps/oshun/web/e2e/tenant-member-invite-scim.spec.ts— passed with existing non-null assertion warnings indomain-stubs.ts.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/domain-stubs-route.test.ts— 90 passed.OSHUN_TEST_POSTGRES_URL=postgresql://oshun:oshun_dev@127.0.0.1:5432/oshun_dev pnpm --dir apps/oshun/bff exec vitest run src/routes/domain-stubs-postgres.test.ts— 25 passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed around 10 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-member-invite-scim.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 7 passed.
61. 2026-06-24 Tenant SCIM Bulk addendum#
Closed the tenant-bulk-member-invite-scim SCIM Bulk gap for the local
real-infra BFF path. The BFF now exposes /v1/scim/v2/Bulk behind the same SCIM
bearer and explicit tenant guards as /Users and /Groups, validates the
BulkRequest schema marker when supplied, dispatches ordered Users/Groups
POST/PATCH/DELETE operations through the existing Postgres-backed SCIM helpers,
honors failOnErrors, and returns a SCIM BulkResponse operation list with
per-operation statuses.
tenant-member-invite-scim.spec.ts now creates two real SCIM users and one real
SCIM group through one BulkRequest, patches the first user in the same ordered
batch, reads users/groups back to prove membership fan-out and suspension state,
then deletes the group and first user through a second BulkRequest. The spec
verifies group tombstone behavior, live list omission after user tombstone, the
remaining user's group cleanup, and the canonical v1_identity_scim_identity
change log for the tombstoned user.
The journey remains partial for CSV bulk import, external IdP callback, outbound invite email/first-login, operator-table refresh from IdP-created rows, and audit reconciliation.
Verification:
psqlavailability check —/usr/bin/psql, PostgreSQL16.14.pnpm exec prettier --write apps/oshun/bff/src/routes/domain-stubs.ts apps/oshun/bff/src/__tests__/domain-stubs-route.test.ts apps/oshun/web/e2e/tenant-member-invite-scim.spec.ts WALKTHROUGH/journeys/tenant-bulk-member-invite-scim.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/domain-stubs.ts apps/oshun/bff/src/routes/domain-stubs-postgres.ts apps/oshun/bff/src/routes/domain-stubs-postgres.test.ts apps/oshun/bff/src/__tests__/domain-stubs-route.test.ts apps/oshun/web/e2e/tenant-member-invite-scim.spec.ts— passed with existing non-null assertion warnings indomain-stubs.ts.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/domain-stubs-route.test.ts— 91 passed.OSHUN_TEST_POSTGRES_URL=postgresql://oshun:oshun_dev@127.0.0.1:5432/oshun_dev pnpm --dir apps/oshun/bff exec vitest run src/routes/domain-stubs-postgres.test.ts— 25 passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed at or above 9 GiB and returned to 13 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-member-invite-scim.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 8 passed.
62. 2026-06-25 Tenant SCIM audit-feed addendum#
Closed the local SCIM audit-event slice of tenant-bulk-member-invite-scim.
Successful /v1/scim/v2/Users, /v1/scim/v2/Groups, and /v1/scim/v2/Bulk
mutations now emit tenant.scim_provision.* events into the existing admin
audit-event store with tenant id, SCIM external id, operation, status, resource
type, and group membership payloads. The event feed is read through the real
admin-scoped /v1/admin/audit-log/events route, not by inspecting the store
directly.
tenant-member-invite-scim.spec.ts now verifies that the user lifecycle writes
admin audit events for create, suspend, deactivate, and reactivate. The Bulk leg
also reads back user and group audit events for ordered user create/suspend/
deactivate, group create/deactivate, and group-membership sync.
The journey remains partial for CSV bulk import, external IdP callback, outbound invite email/first-login, operator-table refresh from IdP-created rows, and the downstream role-assignment → IdP-callback → first-login audit-chain reconciliation.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/domain-stubs.ts apps/oshun/web/e2e/tenant-member-invite-scim.spec.ts WALKTHROUGH/journeys/tenant-bulk-member-invite-scim.md WALKTHROUGH/journeys/tenant-onboard.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/domain-stubs.ts apps/oshun/web/e2e/tenant-member-invite-scim.spec.ts— passed with existing non-null assertion warnings indomain-stubs.ts.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/domain-stubs-route.test.ts— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed within the safe range.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-member-invite-scim.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 8 passed.
63. 2026-06-25 Nyx calendar connector runtime addendum#
Closed the local admin-connector runtime slice of
nyx-event-calendar-sync-reminder step 3. The Playwright BFF now boots with
seeded OSHUN_CALENDAR_CONNECTORS: one valid Google connector and one Apple
descriptor that is valid at the shared connector-contract layer but rejected by
the BFF runtime as unsupported_provider because only the Google transport is
implemented. The new real-HTTP Playwright leg proves the admin roster is
secret-free, admin-gated, and includes both the live Google connector and the
retained Apple skip reason.
The same spec drives the real admin import/export routes. Import reaches the
Google transport path and returns a failed import run with a concrete
no-refresh-token issue, not fabricated events. Export now returns structured
502 calendar_export_failed when provider credential resolution fails, while
malformed export bodies still fail at 400 invalid_body.
The journey remains partial for true external Google/Apple/Outlook OAuth, provider webhook reconciliation, actual reminder dispatch/delivery, notification cold-start, quiet-hours dispatch deferral, richer event-metadata prefill, and an explicit observation-to-event back-link control.
Verification:
pnpm exec prettier --write apps/oshun/web/playwright.config.ts apps/oshun/web/e2e/calendar-connectors-bff.spec.ts apps/oshun/bff/src/routes/calendar-sync.ts apps/oshun/bff/src/routes/calendar-sync-route.test.ts WALKTHROUGH/journeys/nyx-event-calendar-sync-reminder.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md V1/AUDIT_2026-06-24.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/web/playwright.config.ts apps/oshun/web/e2e/calendar-connectors-bff.spec.ts apps/oshun/bff/src/routes/calendar-sync.ts apps/oshun/bff/src/routes/calendar-sync-route.test.ts— passed.pnpm --dir apps/oshun/bff exec vitest run src/routes/calendar-sync-route.test.ts— 12 passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 12 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed around 13 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/calendar-connectors-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 2 passed.
64. 2026-06-25 Tenant OneRoster provisioning addendum#
Added a dedicated tenant-oneroster-roster-sync journey for the OneRoster leg
in V1's tenant spine. The dry-run route now requires tenant-console admin scope
instead of accepting anonymous requests, and the apply/commit route now rejects
generic studio admins so roster imports stay scoped to admin:* or
admin:workspace:tenant-console.
tenant-oneroster-provisioning-bff.spec.ts walks the local real-BFF API spine:
dry-run 401/403/400, clean report, username-conflict and unknown-user conflict
reporting, apply 401/403/201, commit list/read-back, duplicate commit 409,
conflict apply 422 with no roster mutation, and malformed apply 400.
The journey remains partial for periodic SIS pulls, tenant-admin/operator diff
UI, and Metis roster-card refresh. The current spec also covers
tenant.oneroster.commit.applied audit-log read-back and duplicate/conflict
no-phantom-audit guards.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/tenant-console/oneroster-route.ts apps/oshun/bff/src/routes/admin-oneroster-apply.ts apps/oshun/bff/src/tenant-console/oneroster-route.test.ts apps/oshun/bff/src/__tests__/admin-oneroster-apply-route.test.ts apps/oshun/web/e2e/tenant-oneroster-provisioning-bff.spec.ts WALKTHROUGH/journeys/tenant-oneroster-roster-sync.md WALKTHROUGH/journeys/README.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md— passed.pnpm exec prettier --write WALKTHROUGH/results/tenant-oneroster-roster-sync.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/tenant-console/oneroster-route.ts apps/oshun/bff/src/routes/admin-oneroster-apply.ts apps/oshun/bff/src/tenant-console/oneroster-route.test.ts apps/oshun/bff/src/__tests__/admin-oneroster-apply-route.test.ts apps/oshun/web/e2e/tenant-oneroster-provisioning-bff.spec.ts— passed.pnpm --dir apps/oshun/bff exec vitest run src/tenant-console/oneroster-route.test.ts src/__tests__/admin-oneroster-apply-route.test.ts src/tenant-console/oneroster-apply-store.test.ts— 12 passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed around 13 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-oneroster-provisioning-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 2 passed.
65. 2026-06-25 Tenant integrations API keys/webhooks addendum#
Added a dedicated tenant-integrations-api-keys-webhooks journey for the V1
section 20.6 tenant/operator integration-management leg. The local real-BFF spec
now drives the integrations registry directly: platform-admin scope gates,
snapshot read-back, API key create/rotate/revoke, raw-token non-leakage,
duplicate revoke 409, malformed create 400, webhook create, signing-secret
non-leakage, signed sandbox simulator delivery, inactive simulator failure
without a signed request, non-sandbox simulator 409, connector upgrade, and
audit-search read-back.
The first real-dev-infra run caught an implementation regression: admin search
accepted an injected durable audit-events store at app registration but the
route still searched the singleton in-memory store. admin-search now threads
the injected store into universal search, and the route test suite includes a
regression case where the event exists only in the injected store.
At the time of this 2026-06-25 pass, the journey remained partial for tenant-admin UI controls, API-key-authenticated downstream API calls, live outbound delivery retry/dead-letter workers, real connector health probes, and partner endpoint receipt. The downstream API-key-authenticated request gap was closed in the later 2026-06-26 addendum.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/tenant-integrations-api-keys-webhooks-bff.spec.ts WALKTHROUGH/journeys/tenant-integrations-api-keys-webhooks.md WALKTHROUGH/journeys/README.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/tenant-integrations-api-keys-webhooks.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md— passed.pnpm exec prettier --write apps/oshun/bff/src/routes/admin-search.ts apps/oshun/bff/src/__tests__/admin-search-route.test.ts— passed.pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/admin-search.ts apps/oshun/bff/src/__tests__/admin-search-route.test.ts apps/oshun/web/e2e/tenant-integrations-api-keys-webhooks-bff.spec.ts— passed.pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-search-route.test.ts src/__tests__/admin-integrations-registry-route.test.ts src/admin/admin-integrations-registry-store.test.ts— 38 passed.pnpm --dir apps/oshun/bff typecheck— passed.pnpm --dir apps/oshun/web typecheck— passed.python3 V5/tools/validate-v5-docs.py— passed.git diff --check— passed.- Resource gate before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed within the safe range.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-integrations-api-keys-webhooks-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list— 2 passed.
66. 2026-06-25 Tenant bulk operations/export addendum#
Added a dedicated tenant-bulk-operations-export journey for the V1 admin
bulk-operations/export leg in V1/features/admin-products.md. The local
real-BFF spec drives the platform API directly: operation/export 401/403 gates,
users bulk operation draft, validation, dry-run plan, staged commit through the
real users commit executor, row-level commit outcomes, duplicate commit 409,
validation-error dry-run blocking, per-operator isolation, content JSON export
manifest creation/read/verify, unsupported export matrix 400, mismatched record
kind 422, and audit-search read-back.
The journey remains partial for tenant/operator upload-preview UI, CSV parsing/resumable upload, real per-row residency metadata checks, export download/retention/approval handoff, and commit executors for rosters, content, taxonomy, and persona assignments.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/tenant-bulk-operations-export-bff.spec.ts WALKTHROUGH/journeys/tenant-bulk-operations-export.md WALKTHROUGH/journeys/README.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/tenant-bulk-operations-export.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed.
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/tenant-bulk-operations-export-bff.spec.ts- passed.
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-bulk-operations-route.test.ts src/__tests__/admin-bulk-exports-route.test.ts src/admin/admin-bulk-operations-store.test.ts src/admin/admin-bulk-exports-store.test.ts- 40 passed.
pnpm --dir apps/oshun/bff typecheck- passed.pnpm --dir apps/oshun/web typecheck- passed.python3 V5/tools/validate-v5-docs.py- passed.git diff --check- passed.- Resource gate before Playwright: 15 GiB RAM, 12 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers. During focused Playwright, available memory stayed within the safe range.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-bulk-operations-export-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 2 passed.
67. 2026-06-25 Profile notifications index handoff addendum#
Closed a walkthrough/test gap in the messages quiet-hours journey: the read-only
/profile/notifications summary now exposes a clear handoff into the mutable
delivery editor at /profile?path=notifications. The focused browser coverage
loads the summary against the real /v1/profile/notifications BFF route,
asserts channel/category rows from that response, follows "Change delivery
settings", and reveals the quiet-hours time inputs in the shipped Profile
settings editor.
The journey remains partial for deploy/external-provider legs: WhatsApp Business opt-in, real SMS OTP delivery, email magic-link delivery, richer consent panels, Lilith tone-band persona-policy sends, provider-native crisis handling beyond the local message-center dispatch seam, and full revocation cascades.
Verification:
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/profile/notifications/page.tsx apps/oshun/web/e2e/profile-notifications-index.spec.ts- passed
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
141. 2026-06-26 Themis appeal audit detail for learners#
Closed the remaining learner-facing evidence/rationale gap on
/integrity/<verdictId>/appeal. The appeal workspace now renders the
learner-safe Themis audit record before the filing form, including decision
rationale, signal and evidence counts, policy binding, human-review state,
generated-text signal metadata, learner-visible evidence excerpts, and
classifier provenance. Operator-only evidence remains filtered out of the
customer view. The Metis assessment-submit journey now follows a suspicious
submission into the same appeal workspace and verifies the audit detail through
the real BFF-created verdict.
Verification:
which psql && psql --version- passed:
/usr/bin/psql,psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/integrity/IntegrityAppealWorkspace.tsx apps/oshun/web/e2e/integrity-appeal.spec.ts apps/oshun/web/e2e/metis-assessment-submit.spec.ts- passed; emitted the existing Next pages-directory warning
- Resource gate before focused typecheck / Playwright
- before browser verification: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 9.7 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/integrity-appeal.spec.ts e2e/metis-assessment-submit.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 17 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/integrity/IntegrityAppealWorkspace.tsx apps/oshun/web/e2e/integrity-appeal.spec.ts apps/oshun/web/e2e/metis-assessment-submit.spec.ts WALKTHROUGH/customer/08-metis/integrity-verdictId-appeal.md WALKTHROUGH/journeys/themis-assessment-appeal.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
257. 2026-07-03 Studio Audit Compliance Surfaces real-BFF coverage#
Closed the /studio/audit-compliance-surfaces walkthrough gap where the old
runtime sweep proved only render/data health and the audit-chain lane states,
quick actions, BFF gates, pending behavior, compromised-chain outcomes, and
mobile containment remained unchecked. The new Playwright spec opens the real
Next Studio shell, forwards browser /v1/admin/studio/audit-chain catalog and
verify calls to the real local BFF with explicit studio-admin or non-admin dev
bearer scopes, and captures browser request bodies and auth headers while the
live verifier recomputes FNV-backed content hashes and re-links the chain.
The suite verifies anonymous redirect, studio-admin catalog load, all eight quick-action targets, 44 px controls, intact-chain verification, tamper detection, broken-link and sequence-gap detection, client-only malformed JSON with zero POSTs, live BFF 400 details, verify-network failure, malformed verify success, pending-submit lockout, catalog loading, 503 catalog failure, malformed catalog failure, catalog-network failure, non-admin fail-closed auth, direct BFF auth/schema gates, and mobile containment without horizontal overflow. The result table scroller is focusable and named so horizontally scrollable audit rows remain keyboard-accessible.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAuditComplianceSurfacesWorkspace.tsx apps/oshun/web/src/app/studio/audit-compliance-surfaces/page.tsx apps/oshun/web/e2e/studio-audit-compliance-surfaces.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAuditComplianceSurfacesWorkspace.tsx apps/oshun/web/src/app/studio/audit-compliance-surfaces/page.tsx apps/oshun/web/e2e/studio-audit-compliance-surfaces.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm exec prettier --write WALKTHROUGH/studio/governance/studio-audit-compliance-surfaces.md- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAuditComplianceSurfacesWorkspace.test.tsx src/components/__tests__/StudioAuditComplianceSurfacesWorkspace.integration.test.tsx- passed: 2 files, 6 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-studio-audit-chain-route.test.ts- passed: 1 file, 6 tests
pnpm --dir apps/oshun/web run typecheck- passed
280. 2026-07-04 Studio Hathor Narrative Structure Analysis real-BFF coverage#
Closed the /studio/hathor/narrative-structure-analysis walkthrough gap where
the old runtime sweep proved only route render/data health and the live
Ink/Yarn/JSON export-format catalog, admin-scope gates, seeded and edited
dialogue validation journeys, route map, quick actions, touch targets, failure
states, pending lockout, mobile containment, malformed payload handling, and BFF
auth/schema gates remained unchecked. The new Playwright spec opens the real
Next Studio shell, forwards browser
/v1/admin/hathor/narrative-structure-analysis catalog requests and
/v1/admin/hathor/narrative-structure-analysis/validate POSTs to the real local
BFF with Hathor-admin or non-admin browser bearers, and captures auth headers
and request bodies while the live @hathor/narrative validators compute
per-format Ink / Yarn / JSON readiness warnings.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact
Ink/Yarn/JSON format exposure, default form state, 44 px textarea/submit and
quick actions, full route-map ordering, exact real-BFF output for the seeded
dialogue (ink EMPTY_CHOICE, yarn ready, json ready), exact edited
complete-dialogue all-ready output, missing-entry NO_ENTRY_NODE output for Ink
and Yarn only, self-cycle CYCLE_DETECTED output for Yarn, browser bearer
propagation, client-only malformed JSON and non-object rejection with zero
POSTs, BFF each node needs id, type, and optional choices:[{targetNodeId}]
detail surfacing, malformed 200 result fail-closed behavior, validation
transport failure messaging, loading state, 503 catalog failure, malformed
catalog failure, non-admin fail-closed auth, pending-submit lockout, mobile
no-overflow containment, scoped axe scanning for the workspace/route
map/actions, and direct BFF auth/schema gates. The page now exposes stable
route-map and quick-action selectors, pending form/submit selectors, touch-sized
controls, catalog format selectors, per-format warning-count/code selectors, and
fail-closed client parsing for malformed catalog or validate-success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorNarrativeStructureAnalysisWorkspace.tsx apps/oshun/web/src/app/studio/hathor/narrative-structure-analysis/page.tsx apps/oshun/web/src/components/__tests__/StudioHathorNarrativeStructureAnalysisWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorNarrativeStructureAnalysisWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorNarrativeStructureAnalysisPage.test.tsx apps/oshun/web/e2e/studio-hathor-narrative-structure-analysis.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorNarrativeStructureAnalysisWorkspace.tsx apps/oshun/web/src/app/studio/hathor/narrative-structure-analysis/page.tsx apps/oshun/web/e2e/studio-hathor-narrative-structure-analysis.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorNarrativeStructureAnalysisWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorNarrativeStructureAnalysisWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorNarrativeStructureAnalysisPage.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorNarrativeStructureAnalysisRouteMap.test.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorNarrativeStructureAnalysisWorkspace.test.tsx src/components/__tests__/StudioHathorNarrativeStructureAnalysisWorkspace.integration.test.tsx src/components/__tests__/StudioHathorNarrativeStructureAnalysisPage.test.tsx src/components/__tests__/StudioHathorNarrativeStructureAnalysisRouteMap.test.ts- passed: 4 files, 12 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-narrative-structure-analysis-route.test.ts- passed: 1 file, 7 tests
- Resource gate before web typecheck and focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 8.1 GiB available and recovered to 13 GiB available afterward.
pnpm --dir apps/oshun/web run typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-narrative-structure-analysis.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
279. 2026-07-03 Studio Hathor Narrative Export real-BFF coverage#
Closed the /studio/hathor/narrative-export walkthrough gap where the old
runtime sweep proved only route render/data health and the live segment-type
catalog, admin-scope gates, seeded and edited narrative export estimate
journeys, route map, quick actions, touch targets, failure states, pending
lockout, mobile containment, malformed payload handling, and BFF auth/schema
gates remained unchecked. The new Playwright spec opens the real Next Studio
shell, forwards browser /v1/admin/hathor/narrative-export catalog requests and
/v1/admin/hathor/narrative-export/estimate POSTs to the real local BFF with
Hathor-admin or non-admin browser bearers, and captures auth headers and request
bodies while the live estimator computes spoken runtime, page count, and
per-type word/segment breakdown.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact segment
type exposure, default form state, 44 px textarea/submit and quick actions, full
route-map ordering, exact real-BFF output for the seeded payload (500 words,
200s, 2 pages, dialogue/narration/choice breakdown), exact edited
stage-direction output (300 words, 150s, 2 pages, narration/choice/
stage_direction breakdown), browser bearer propagation, client-only malformed
JSON and non-object rejection with zero POSTs, BFF duplicate segmentId 'x'
detail surfacing, malformed 200 result fail-closed behavior, estimate transport
failure messaging, loading state, 503 catalog failure, malformed catalog
failure, non-admin fail-closed auth, pending-submit lockout, mobile no-overflow
containment, scoped axe scanning for the workspace/route map/actions, and direct
BFF auth/schema gates. The page now exposes stable route-map and quick-action
selectors, pending form/submit selectors, touch-sized controls, and fail-closed
client parsing for malformed catalog or estimate-success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorNarrativeExportWorkspace.tsx apps/oshun/web/src/app/studio/hathor/narrative-export/page.tsx apps/oshun/web/src/components/__tests__/StudioHathorNarrativeExportWorkspace.live.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorNarrativeExportPage.test.tsx apps/oshun/web/e2e/studio-hathor-narrative-export.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorNarrativeExportWorkspace.tsx apps/oshun/web/src/app/studio/hathor/narrative-export/page.tsx apps/oshun/web/e2e/studio-hathor-narrative-export.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorNarrativeExportWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorNarrativeExportWorkspace.live.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorNarrativeExportIntegration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorNarrativeExportPage.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorNarrativeExportRouteMap.test.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorNarrativeExportWorkspace.test.tsx src/components/__tests__/StudioHathorNarrativeExportWorkspace.live.test.tsx src/components/__tests__/StudioHathorNarrativeExportIntegration.test.tsx src/components/__tests__/StudioHathorNarrativeExportPage.test.tsx src/components/__tests__/StudioHathorNarrativeExportRouteMap.test.ts- passed: 5 files, 26 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-narrative-export-route.test.ts- passed: 1 file, 5 tests
- Resource gate before web typecheck and focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 9.0 GiB available and recovered to 13 GiB available after the first assertion-correction run.
pnpm --dir apps/oshun/web run typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-narrative-export.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
278. 2026-07-03 Studio Hathor Journal and Codex real-BFF coverage#
Closed the /studio/hathor/journal-and-codex walkthrough gap where the old
runtime sweep proved only route render/data health and the live codex resolver
catalog, admin-scope gates, default and edited resolve journeys, route map,
quick actions, touch targets, failure states, pending lockout, mobile
containment, malformed payload handling, and BFF auth/schema gates remained
unchecked. The new Playwright spec opens the real Next Studio shell, forwards
browser /v1/admin/hathor/journal-and-codex catalog requests and
/v1/admin/hathor/journal-and-codex/resolve POSTs to the real local BFF with
Hathor-admin or non-admin browser bearers, and captures auth headers and request
bodies while the live codex unlock resolver computes entry unlock state,
completion, missing flags, and next unlockable entries.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact
unlock_state/completion/next_unlockable analysis exposure, default form state,
44 px textarea/submit and quick actions, full route-map ordering, exact real-BFF
output for the seeded payload (3/4 unlocked, 75%, next
e4 (secret_ending)), exact empty-discovery output (1/4 unlocked, next e2
and e4, e3 missing two flags), duplicate required/discovered flag
de-duplication and sorted result rows, browser bearer propagation, client-only
malformed JSON and non-object rejection with zero POSTs, BFF
duplicate entryId 'e' detail surfacing, malformed 200 result fail-closed
behavior, resolve transport failure messaging, loading state, 503 catalog
failure, malformed catalog failure, non-admin fail-closed auth, pending-submit
lockout, mobile no-overflow containment, scoped axe scanning for the
workspace/route map/actions, and direct BFF auth/schema gates. The page now
exposes stable route-map and quick-action selectors, pending form/submit
selectors, touch-sized controls, and fail-closed client parsing for malformed
catalog or resolve-success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorJournalAndCodexWorkspace.tsx apps/oshun/web/src/app/studio/hathor/journal-and-codex/page.tsx apps/oshun/web/src/components/__tests__/StudioHathorJournalAndCodexWorkspace.live.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorJournalAndCodexPage.test.tsx apps/oshun/web/e2e/studio-hathor-journal-and-codex.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorJournalAndCodexWorkspace.tsx apps/oshun/web/src/app/studio/hathor/journal-and-codex/page.tsx apps/oshun/web/e2e/studio-hathor-journal-and-codex.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorJournalAndCodexWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorJournalAndCodexWorkspace.live.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorJournalAndCodexIntegration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorJournalAndCodexPage.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorJournalAndCodexRouteMap.test.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorJournalAndCodexWorkspace.test.tsx src/components/__tests__/StudioHathorJournalAndCodexWorkspace.live.test.tsx src/components/__tests__/StudioHathorJournalAndCodexIntegration.test.tsx src/components/__tests__/StudioHathorJournalAndCodexPage.test.tsx src/components/__tests__/StudioHathorJournalAndCodexRouteMap.test.ts- passed: 5 files, 24 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-journal-and-codex-route.test.ts- passed: 1 file, 6 tests
- Resource gate before web typecheck and focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 8.9 GiB available and recovered to 13 GiB available afterward.
pnpm --dir apps/oshun/web run typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-journal-and-codex.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 12 passed
277. 2026-07-03 Studio Hathor Lore Compilation for Engines real-BFF coverage#
Closed the /studio/hathor/lore-compilation-for-engines walkthrough gap where
the old runtime sweep proved only route render/data health and the live
engine-format catalog, admin-scope gates, JSON/YAML/SQLite compile journeys,
route map, quick actions, touch targets, failure states, pending lockout, mobile
containment, malformed payload handling, and BFF auth/schema gates remained
unchecked. The new Playwright spec opens the real Next Studio shell, forwards
browser /v1/admin/hathor/lore-compilation-for-engines catalog requests and
/v1/admin/hathor/lore-compilation-for-engines/compile POSTs to the real local
BFF with Hathor-admin or non-admin browser bearers, and captures auth headers
and request bodies while the live @hathor/lore-compiler QuestCompiler exports
quest batches.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact
json/yaml/xml/binary/sqlite format exposure, default form state, 44 px
textarea/select/submit and quick actions, full route-map ordering, exact
real-BFF output for the seeded JSON quest (QUEST_q1, one objective, one NPC),
exact YAML output for an edited three-quest batch, exact SQLite output including
the hathor_quests table and escaped Cartographer''s Seal, browser bearer
propagation, client-only malformed JSON and empty-array rejection with zero
POSTs, BFF invalid_quest reason surfacing, malformed 200 result fail-closed
behavior, compile transport failure messaging, loading state, 503 catalog
failure, malformed catalog failure, non-admin fail-closed auth, pending-submit
lockout, mobile no-overflow containment, scoped axe scanning for the
workspace/route map/actions, and direct BFF auth/schema gates. The page now
exposes stable route-map and quick-action selectors, pending form/submit
selectors, touch-sized controls, and fail-closed client parsing for malformed
catalog or compile-success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorLoreCompilationForEnginesWorkspace.tsx apps/oshun/web/src/app/studio/hathor/lore-compilation-for-engines/page.tsx apps/oshun/web/e2e/studio-hathor-lore-compilation-for-engines.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorLoreCompilationForEnginesWorkspace.tsx apps/oshun/web/src/app/studio/hathor/lore-compilation-for-engines/page.tsx apps/oshun/web/e2e/studio-hathor-lore-compilation-for-engines.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorLoreCompilationForEnginesWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorLoreCompilationForEnginesWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorLoreCompilationForEnginesPage.test.tsx --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorLoreCompilationForEnginesWorkspace.test.tsx src/components/__tests__/StudioHathorLoreCompilationForEnginesWorkspace.integration.test.tsx src/components/__tests__/StudioHathorLoreCompilationForEnginesPage.test.tsx src/components/__tests__/StudioHathorLoreCompilationForEnginesRouteMap.test.ts- passed: 4 files, 8 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-lore-compilation-for-engines-route.test.ts- passed: 1 file, 6 tests
- Resource gate before web typecheck and focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 8.4 GiB available.
pnpm --dir apps/oshun/web run typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-lore-compilation-for-engines.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 12 passed
276. 2026-07-03 Studio Hathor Visual Storyboarding real-BFF coverage#
Closed the /studio/hathor/visual-storyboarding walkthrough gap where the old
runtime sweep proved only route render/data health and the live storyboard
catalog, admin-scope gates, default and edited linting journeys, route map,
quick actions, touch targets, failure states, pending lockout, mobile
containment, malformed payload handling, and BFF auth/schema gates remained
unchecked. The new Playwright spec opens the real Next Studio shell, forwards
browser /v1/admin/hathor/visual-storyboarding catalog requests and
/v1/admin/hathor/visual-storyboarding/validate POSTs to the real local BFF
with Hathor-admin or non-admin browser bearers, and captures auth headers and
request bodies while the live @hathor/pre-production storyboard linter
evaluates empty sequences, missing frame descriptions/actions, and missing frame
locations.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact
check/severity taxonomy exposure, default form state, 44 px textarea/submit and
quick actions, full route-map ordering, exact real-BFF output for the seeded
storyboard (2 warnings, 1 info), exact clean output for an edited complete
storyboard, exact location-info output for an edited board with a single frame
missing location, browser bearer propagation, client-only malformed JSON
rejection with zero POSTs, BFF storyboard.frames must be an array detail
surfacing, malformed 200 result fail-closed behavior, validate transport failure
messaging, loading state, 503 catalog failure, malformed catalog failure,
non-admin fail-closed auth, pending-submit lockout, mobile no-overflow
containment, scoped axe scanning for the workspace/route map/actions, and direct
BFF auth/schema gates. The page now exposes stable route-map and quick-action
selectors, pending form/submit selectors, touch-sized controls, and fail-closed
client parsing for malformed catalog or validation-success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorVisualStoryboardingWorkspace.tsx apps/oshun/web/src/app/studio/hathor/visual-storyboarding/page.tsx apps/oshun/web/e2e/studio-hathor-visual-storyboarding.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorVisualStoryboardingWorkspace.tsx apps/oshun/web/src/app/studio/hathor/visual-storyboarding/page.tsx apps/oshun/web/e2e/studio-hathor-visual-storyboarding.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorVisualStoryboardingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorVisualStoryboardingWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorVisualStoryboardingPage.test.tsx --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorVisualStoryboardingWorkspace.test.tsx src/components/__tests__/StudioHathorVisualStoryboardingWorkspace.integration.test.tsx src/components/__tests__/StudioHathorVisualStoryboardingPage.test.tsx src/components/__tests__/StudioHathorVisualStoryboardingRouteMap.test.ts- passed: 4 files, 8 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-visual-storyboarding-route.test.ts- passed: 1 file, 7 tests
- Resource gate before web typecheck and focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 7.8 GiB available even after another checkout started a separate Nx typecheck.
pnpm --dir apps/oshun/web run typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-visual-storyboarding.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 12 passed
275. 2026-07-03 Studio Hathor Pre-Production Project Management real-BFF coverage#
Closed the /studio/hathor/pre-production-project-management walkthrough gap
where the old runtime sweep proved only route render/data health and the live
project-health category catalog, admin-scope gates, default and edited scoring
journeys, route map, quick actions, touch targets, failure states, pending
lockout, mobile containment, malformed payload handling, and BFF auth/schema
gates remained unchecked. The new Playwright spec opens the real Next Studio
shell, forwards browser /v1/admin/hathor/pre-production-project-management
catalog requests and /v1/admin/hathor/pre-production-project-management/assess
POSTs to the real local BFF with Hathor-admin or non-admin browser bearers, and
captures auth headers and request bodies while the live @hathor/pre-production
project-health scorer evaluates blocked-task and category-imbalance deductions.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact
17-category taxonomy exposure, default form state, 44 px textarea/submit and
quick actions, full route-map ordering, exact real-BFF output for the seeded
5-task board with one blocked task (96 / 100), exact full-health output for an
edited 3-task unblocked board (100 / 100), exact imbalance output for an
edited 13-task lopsided board (90 / 100), browser bearer propagation,
client-only malformed task-line rejection with zero POSTs, BFF
each task needs taskId, a known category, and a status detail surfacing,
malformed 200 result fail-closed behavior, assess transport failure messaging,
loading state, 503 catalog failure, malformed catalog failure, non-admin
fail-closed auth, pending-submit lockout, mobile no-overflow containment, scoped
axe scanning for the workspace/route map/actions, and direct BFF auth/schema
gates. The page now exposes stable route-map and quick-action selectors, visible
catalog readiness, pending form/submit selectors, touch-sized controls, and
fail-closed client parsing for malformed catalog or scoring-success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorPreProductionProjectManagementWorkspace.tsx apps/oshun/web/src/app/studio/hathor/pre-production-project-management/page.tsx apps/oshun/web/e2e/studio-hathor-pre-production-project-management.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorPreProductionProjectManagementWorkspace.tsx apps/oshun/web/src/app/studio/hathor/pre-production-project-management/page.tsx apps/oshun/web/e2e/studio-hathor-pre-production-project-management.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorPreProductionProjectManagementWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorPreProductionProjectManagementWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorPreProductionProjectManagementPage.test.tsx --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorPreProductionProjectManagementWorkspace.test.tsx src/components/__tests__/StudioHathorPreProductionProjectManagementWorkspace.integration.test.tsx src/components/__tests__/StudioHathorPreProductionProjectManagementPage.test.tsx src/components/__tests__/StudioHathorPreProductionProjectManagementRouteMap.test.ts- passed: 4 files, 8 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-pre-production-project-management-route.test.ts- passed: 1 file, 7 tests
- Resource gate before web typecheck and focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 9.2 GiB available.
pnpm --dir apps/oshun/web run typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-pre-production-project-management.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 12 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 13 GiB available, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process.
pnpm docs:center:test- passed
git diff --check- passed
274. 2026-07-03 Studio Hathor Economy Modeling real-BFF coverage#
Closed the /studio/hathor/economy-modeling walkthrough gap where the old
runtime sweep proved only route render/data health and the live economy catalog,
admin-scope gates, default and edited pricing journeys, route map, quick
actions, touch targets, failure states, pending lockout, mobile containment,
malformed payload handling, and BFF auth/schema gates remained unchecked. The
new Playwright spec opens the real Next Studio shell, forwards browser
/v1/admin/hathor/economy-simulation catalog requests and
/v1/admin/hathor/economy-simulation/price POSTs to the real local BFF with
Hathor-admin or non-admin browser bearers, and captures auth headers and request
bodies while the live @hathor/domain-models resource pricing model evaluates
prices and sensitivity curves.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact catalog
summary 11 resource categories · 6 rarities, default form state, 44 px
textarea/submit and quick actions, full route-map ordering, exact real-BFF
output for the seeded luxury / rare resource with quality multiplier 1.25, exact
real-BFF output for an edited scarce magical / legendary resource, browser
bearer propagation, client-only malformed JSON with zero POSTs, BFF
rarity must be a known rarity detail surfacing, malformed 200 result
fail-closed behavior, price transport failure messaging, loading state, 503
catalog failure, malformed catalog failure, non-admin fail-closed auth,
pending-submit lockout, mobile no-overflow containment, scoped axe scanning for
the workspace/route map/actions, and direct BFF auth/schema gates. The page now
exposes stable route-map and quick-action selectors, visible catalog readiness,
pending form/submit selectors, touch-sized controls, and fail-closed client
parsing for malformed catalog or pricing-success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorEconomyModelingWorkspace.tsx apps/oshun/web/src/app/studio/hathor/economy-modeling/page.tsx apps/oshun/web/e2e/studio-hathor-economy-modeling.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorEconomyModelingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorEconomyModelingWorkspace.integration.test.tsx- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorEconomyModelingWorkspace.tsx apps/oshun/web/src/app/studio/hathor/economy-modeling/page.tsx apps/oshun/web/e2e/studio-hathor-economy-modeling.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorEconomyModelingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorEconomyModelingWorkspace.integration.test.tsx --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorEconomyModelingWorkspace.test.tsx src/components/__tests__/StudioHathorEconomyModelingWorkspace.integration.test.tsx- passed: 2 files, 6 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-economy-simulation-route.test.ts- passed: 1 file, 7 tests
- Resource gate before web typecheck and focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 9.3 GiB available.
pnpm --dir apps/oshun/web run typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-economy-modeling.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 13 GiB available, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process.
pnpm docs:center:test- passed
git diff --check- passed
273. 2026-07-03 Studio Hathor Culture Modeling real-BFF coverage#
Closed the /studio/hathor/culture-modeling walkthrough gap where the old
runtime sweep proved only route render/data health and the live culture catalog,
admin-scope gates, default and edited compatibility journeys, route map, quick
actions, touch targets, failure states, pending lockout, mobile containment,
malformed payload handling, and BFF auth/schema gates remained unchecked. The
new Playwright spec opens the real Next Studio shell, forwards browser
/v1/admin/hathor/culture-evolution-simulation catalog requests and
/v1/admin/hathor/culture-evolution-simulation/assess POSTs to the real local
BFF with Hathor-admin or non-admin browser bearers, and captures auth headers
and request bodies while the live @hathor/domain-models compatibility and
social-analysis functions evaluate culture pairs.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact catalog
summary 13 social structures · 5 attitudes, default form state, 44 px
textarea/submit and quick actions, full route-map ordering, exact real-BFF
output for the seeded Highland Clans ↔ Coastal League pair, exact real-BFF
output for the edited Aurelians ↔ Borealis egalitarian pair, browser bearer
propagation, client-only malformed JSON with zero POSTs, BFF
culture.socialStructure must be a known social structure detail surfacing,
malformed 200 result fail-closed behavior, assess transport failure messaging,
loading state, 503 catalog failure, malformed catalog failure, non-admin
fail-closed auth, pending-submit lockout, mobile no-overflow containment, scoped
axe scanning for the workspace/route map/actions, and direct BFF auth/schema
gates. The page now exposes stable route-map and quick-action selectors, visible
catalog readiness, pending form/submit selectors, touch-sized controls, and
fail-closed client parsing for malformed catalog or assessment-success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorCultureModelingWorkspace.tsx apps/oshun/web/src/app/studio/hathor/culture-modeling/page.tsx apps/oshun/web/src/components/__tests__/StudioHathorCultureModelingWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-hathor-culture-modeling.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorCultureModelingWorkspace.tsx apps/oshun/web/src/app/studio/hathor/culture-modeling/page.tsx apps/oshun/web/e2e/studio-hathor-culture-modeling.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorCultureModelingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorCultureModelingWorkspace.integration.test.tsx --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorCultureModelingWorkspace.test.tsx src/components/__tests__/StudioHathorCultureModelingWorkspace.integration.test.tsx- passed: 2 files, 5 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-culture-evolution-simulation-route.test.ts- passed: 1 file, 6 tests
- Resource gate before web typecheck and focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 9.2 GiB available.
pnpm --dir apps/oshun/web run typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-culture-modeling.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 9 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 13 GiB available, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process.
pnpm docs:center:test- passed
git diff --check- passed
272. 2026-07-03 Studio Hathor Character Modeling real-BFF coverage#
Closed the /studio/hathor/character-modeling walkthrough gap where the old
runtime sweep proved only route render/data health and the live CGI packet
catalog, admin-scope gates, complete/incomplete validation journeys, route map,
quick actions, touch targets, failure states, pending lockout, mobile
containment, malformed payload handling, and BFF auth/schema gates remained
unchecked. The new Playwright spec opens the real Next Studio shell, forwards
browser /v1/admin/hathor/workbench-characters catalog requests and
/v1/admin/hathor/workbench-characters/validate POSTs to the real local BFF
with Hathor-admin or non-admin browser bearers, and captures auth headers and
request bodies while the live @hathor/characters validator evaluates CGI
character export packets.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact catalog
summary 5 issue types tracked, default form state, 44 px textarea/submit and
quick actions, full route-map ordering, exact real-BFF output for the seeded
complete packet, exact blocking/warning issue rows for a missing costume,
missing visual reference, and missing CGI export target, browser bearer
propagation, client-only malformed JSON with zero POSTs, BFF
packet.packetId is required detail surfacing, malformed 200 result fail-closed
behavior, validate transport failure messaging, loading state, 503 catalog
failure, malformed catalog failure, non-admin fail-closed auth, pending-submit
lockout, mobile no-overflow containment, scoped axe scanning for the
workspace/route map/actions, and direct BFF auth/schema gates. The page now
exposes stable route-map and quick-action selectors, visible catalog readiness,
pending form/submit selectors, touch-sized controls, and fail-closed client
parsing for malformed catalog or validation-success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorCharacterModelingWorkspace.tsx apps/oshun/web/src/app/studio/hathor/character-modeling/page.tsx apps/oshun/web/e2e/studio-hathor-character-modeling.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorCharacterModelingWorkspace.tsx apps/oshun/web/src/app/studio/hathor/character-modeling/page.tsx apps/oshun/web/e2e/studio-hathor-character-modeling.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorCharacterModelingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorCharacterModelingWorkspace.integration.test.tsx --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorCharacterModelingWorkspace.test.tsx src/components/__tests__/StudioHathorCharacterModelingWorkspace.integration.test.tsx- passed: 2 files, 6 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-workbench-characters-route.test.ts- passed: 1 file, 7 tests
- Resource gate before web typecheck and focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 9.4 GiB available.
pnpm --dir apps/oshun/web run typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-character-modeling.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 9 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 13 GiB available, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process.
pnpm docs:center:test- passed
271. 2026-07-03 Studio Hathor Game Design Theory MDA real-BFF coverage#
Closed the /studio/hathor/game-design-theory-mda walkthrough gap where the old
runtime sweep proved only route render/data health and the MDA catalog,
admin-scope gates, lookup states, route map, quick actions, touch targets,
failure states, pending lockout, mobile containment, and BFF auth/schema gates
remained unchecked. The new Playwright spec opens the real Next Studio shell,
forwards browser /v1/admin/hathor/game-design-theory-mda catalog requests and
/v1/admin/hathor/game-design-theory-mda/lookup POSTs to the real local BFF
with explicit Hathor-admin or non-admin dev bearer scopes, and captures browser
auth headers and request bodies while the live @hathor/theory MDA reference
store resolves Hunicke aesthetics and mechanic templates.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact catalog
summary 8 aesthetics · 10 mechanic templates · 14 categories, default form
state, 44 px controls and quick actions, full route-map ordering, exact real-BFF
output for Challenge plus Resource Collection, aesthetic-only and mechanic-only
request bodies, browser bearer propagation, client-only empty-selection
validation with zero POSTs, BFF invalid_mechanic_template detail surfacing,
transport failure messaging, loading state, 503 catalog failure, malformed
catalog failure, non-admin fail-closed auth, pending-submit lockout, mobile
no-overflow containment, scoped axe scanning for the workspace/route
map/actions, and direct BFF auth/schema gates. The page now exposes stable
route-map and quick-action selectors, visible catalog readiness, pending
form/submit state selectors, touch-sized controls, and fail-closed client
parsing for malformed catalog or lookup success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorGameDesignTheoryMdaWorkspace.tsx apps/oshun/web/src/app/studio/hathor/game-design-theory-mda/page.tsx apps/oshun/web/e2e/studio-hathor-game-design-theory-mda.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorGameDesignTheoryMdaWorkspace.tsx apps/oshun/web/src/app/studio/hathor/game-design-theory-mda/page.tsx apps/oshun/web/e2e/studio-hathor-game-design-theory-mda.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorGameDesignTheoryMdaWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorGameDesignTheoryMdaWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorGameDesignTheoryMdaPage.test.tsx --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorGameDesignTheoryMdaWorkspace.test.tsx src/components/__tests__/StudioHathorGameDesignTheoryMdaWorkspace.integration.test.tsx src/components/__tests__/StudioHathorGameDesignTheoryMdaPage.test.tsx src/components/__tests__/StudioHathorGameDesignTheoryMdaRouteMap.test.ts- passed: 4 files, 8 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-game-design-theory-mda-route.test.ts- passed: 1 file, 6 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 9.3 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-game-design-theory-mda.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 9 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 13 GiB available, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process.
pnpm docs:center:test- passed
270. 2026-07-03 Studio Hathor Cinematography Planning real-BFF coverage#
Closed the /studio/hathor/cinematography-planning walkthrough gap where the
old route sweep proved only page reachability and the admin reference-planning
catalog, plan submission journey, Hathor theory output, route-map contract,
representative panel cluster, quick actions, touch targets, failure states,
pending lockout, mobile containment, and BFF auth/schema gates remained
unchecked. The new Playwright spec opens the real Next Studio shell, forwards
browser /v1/admin/hathor/cinematography-planning catalog requests and
/v1/admin/hathor/cinematography-planning/plan POSTs to the real local BFF with
explicit Hathor-admin or non-admin dev bearer scopes, and captures browser auth
headers and request bodies while the live @hathor/theory planner computes
shot, angle, lighting, camera-angle, and color-scheme guidance.
The suite verifies anonymous redirect, Hathor-admin catalog load, exact catalog
summary 11 camera angles · 10 color schemes, default form state, 44 px planner
controls and quick actions, representative full-mode panels, the full route-map
ordering, exact real-BFF output for low_angle plus warm, browser bearer
propagation, client-only validation with zero POSTs, BFF 400 detail surfacing,
transport failure messaging, loading state, 503 catalog failure, malformed
catalog failure, non-admin fail-closed auth, pending-submit lockout, mobile
no-overflow containment, scoped axe scanning for the planner/route map actions,
and direct BFF auth/schema gates including neutral fallback output. The page now
exposes stable route-map and quick-action selectors, visible catalog readiness,
pending form/submit state selectors, touch-sized controls, and fail-closed
client parsing for malformed catalog or plan success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorCinematographyReferencePlanner.tsx apps/oshun/web/src/app/studio/hathor/cinematography-planning/page.tsx apps/oshun/web/e2e/studio-hathor-cinematography-planning.spec.ts- passed
pnpm exec prettier --write apps/oshun/web/src/components/__tests__/StudioHathorCinematographyPlanningWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorCinematographyPlanningPage.test.tsx- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorCinematographyReferencePlanner.tsx apps/oshun/web/src/app/studio/hathor/cinematography-planning/page.tsx apps/oshun/web/e2e/studio-hathor-cinematography-planning.spec.ts apps/oshun/web/src/components/__tests__/StudioHathorCinematographyPlanningWorkspace.integration.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorCinematographyPlanningPage.test.tsx --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorCinematographyReferencePlanner.test.tsx src/components/__tests__/StudioHathorCinematographyReferencePlanner.integration.test.tsx src/components/__tests__/StudioHathorCinematographyPlanningWorkspace.integration.test.tsx src/components/__tests__/StudioHathorCinematographyPlanningPage.test.tsx- passed: 4 files, 8 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-cinematography-planning-route.test.ts- passed: 1 file, 6 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gates before focused Playwright
- First run: 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During the failed run, memory stayed above 5.8 GiB available.
- Final rerun: 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-cinematography-planning.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run exposed the shared whole-document axe
afterEachtiming out on the huge authenticated Hathor page; the suite now uses explicit scoped axe coverage for the planner, route map, and quick actions while keeping direct request-only checks out of page-level a11y scanning - final rerun passed: 8 passed
- first run exposed the shared whole-document axe
pnpm docs:center- passed; rendered 2991 files
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process.
pnpm docs:center:test- passed: 95 passed, 11 skipped
269. 2026-07-03 Studio Hathor Chronicle Parser real-BFF coverage#
Closed the /studio/hathor/chronicle-parser walkthrough gap where the old
runtime sweep proved only route render/data health and left the live Chronicle
parser catalog, browser-admin bearer propagation, parser write path, direct BFF
auth/schema gates, loading/error/unauthorized states, pending behavior, route
map, quick actions, touch targets, mobile containment, and accessibility scans
unchecked. The page now exposes a visible catalog summary, stable route-map and
quick-action selectors, touch-sized controls, alert/status semantics, and
pending form/submit state selectors.
The new Playwright spec opens the real Next Studio shell, plants Hathor-admin or
non-admin browser sessions, forwards browser /v1/admin/hathor/chronicle-parser
catalog and /v1/admin/hathor/chronicle-parser/parse calls to the real local
BFF with the page's own bearer token, and captures browser auth headers and
parse bodies. It verifies anonymous redirect, live catalog load, exact two-age
parseChronicle output from @hathor/pre-production, title-page / era / event
/ speaker / location / word-count / histogram rendering, client-only
empty-source rejection with zero POSTs, BFF detail surfacing, parse transport
failure, catalog loading, 503 catalog failure, malformed catalog failure,
non-admin fail-closed auth, pending-submit lockout, route-map entries,
quick-action hrefs, mobile no-overflow, 44 px controls, shared axe scans on UI
paths, and direct BFF 401/403/400/200 gates including document-reference
parsing.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorChronicleParserWorkspace.tsx apps/oshun/web/src/app/studio/hathor/chronicle-parser/page.tsx apps/oshun/web/e2e/studio-hathor-chronicle-parser.spec.ts WALKTHROUGH/studio/domain-bridges/hathor/studio-hathor-chronicle-parser.md V1/TODOS.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioHathorChronicleParserWorkspace.tsx apps/oshun/web/src/app/studio/hathor/chronicle-parser/page.tsx apps/oshun/web/e2e/studio-hathor-chronicle-parser.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorChronicleParserWorkspace.test.tsx src/components/__tests__/StudioHathorChronicleParserWorkspace.integration.test.tsx src/components/__tests__/StudioHathorChronicleParserPage.test.tsx src/components/__tests__/StudioHathorChronicleParserRouteMap.test.ts- passed: 4 files, 8 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-chronicle-parser-route.test.ts- passed: 1 file, 5 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gates before focused Playwright
- 15 GiB RAM, 6.0 GiB available immediately before launch, swap effectively full, 48 GiB disk free, and no other local test/build command active in this checkout. During real-dev-infra setup, available memory dipped to 3.7 GiB but stayed above the 2 GiB stop threshold.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-chronicle-parser.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 8 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
git diff --check- passed
264. 2026-07-03 Studio Yemaya budget/Godot real-BFF coverage#
Closed the /studio/yemaya/budget-management and
/studio/yemaya/godot-integration walkthrough gaps where the old runtime sweep
proved only route render/data health and left the live Yemaya catalog reads,
optimizer/NodePath writes, admin and non-admin browser states, loading/error
branches, pending behavior, route maps, quick actions, touch targets, mobile
containment, and direct BFF gates unchecked. The two route pages now expose
stable route-map and quick-action selectors, while both lane components expose
busy/disabled submit states, alert/status semantics, strict touch-sized
controls, and deterministic form-state attributes for the browser tests.
The new Playwright spec opens the real Next Studio shell, plants Yemaya-admin or
non-admin browser sessions, forwards browser
/v1/admin/yemaya/budget-management and /v1/admin/yemaya/godot-integration
GET/POST calls to the real local BFF with the page's own bearer token, and
captures browser auth headers and request bodies. It verifies anonymous
redirect, live optimizer catalog load, exact balanced optimizer
score/impacts/weights/recommendations, live NodePath relative and %UniqueName
resolution, local zero-post validation failures, live BFF validation/details,
controlled loading/503/malformed/transport failure branches, non-admin
fail-closed authorization, pending-submit lockout, route-map entries,
quick-action hrefs, mobile no-overflow, 44 px controls, shared axe scans on
rendered UI paths, and direct BFF 401/403/400/422/200 contract gates.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioYemayaBudgetManagementWorkspace.tsx apps/oshun/web/src/components/studio/StudioYemayaGodotIntegrationWorkspace.tsx apps/oshun/web/src/app/studio/yemaya/budget-management/page.tsx apps/oshun/web/src/app/studio/yemaya/godot-integration/page.tsx apps/oshun/web/e2e/studio-yemaya-budget-godot.spec.ts WALKTHROUGH/studio/domain-bridges/yemaya/studio-yemaya-budget-management.md WALKTHROUGH/studio/domain-bridges/yemaya/studio-yemaya-godot-integration.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioYemayaBudgetManagementWorkspace.tsx apps/oshun/web/src/components/studio/StudioYemayaGodotIntegrationWorkspace.tsx apps/oshun/web/src/app/studio/yemaya/budget-management/page.tsx apps/oshun/web/src/app/studio/yemaya/godot-integration/page.tsx apps/oshun/web/e2e/studio-yemaya-budget-godot.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-yemaya-budget-management-route.test.ts src/__tests__/admin-yemaya-godot-integration-route.test.ts- passed: 2 files, 15 tests
pnpm --dir apps/oshun/web run typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioYemayaBudgetManagementWorkspace.test.tsx src/components/__tests__/StudioYemayaBudgetManagementWorkspace.integration.test.tsx src/components/__tests__/StudioYemayaBudgetManagementPage.test.tsx src/components/__tests__/StudioYemayaBudgetManagementRouteMap.test.ts src/components/__tests__/StudioYemayaGodotIntegrationWorkspace.test.tsx src/components/__tests__/StudioYemayaGodotIntegrationWorkspace.integration.test.tsx src/components/__tests__/StudioYemayaGodotIntegrationPage.test.tsx src/components/__tests__/StudioYemayaGodotIntegrationRouteMap.test.ts- passed: 8 files, 14 tests
- Resource gates before focused Playwright
- Before typecheck/Playwright: 15 GiB RAM, 7.1 GiB available, 951 MiB swap free, 49 GiB disk free, with unrelated CPU/memory-heavy Python and Claude processes from another checkout active.
- Immediately before Playwright: 15 GiB RAM, 7.0 GiB available, 952 MiB swap free, 49 GiB disk free. The run stayed narrow at one Chromium worker.
- During Playwright, available memory dropped to 3.5 GiB and swap became effectively full, but it stayed above the 2 GiB stop threshold; after the run, available memory recovered to 7.7 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-yemaya-budget-godot.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 8 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
git diff --check- passed
263. 2026-07-03 Studio overview IA root real-BFF coverage#
Closed the /studio overview walkthrough gap where the old runtime sweep only
proved route render/data health and left the IA validator, admin/non-admin
states, failure branches, pending behavior, quick-action catalog, touch targets,
and direct BFF gates unchecked. The root page now exposes stable V3 and catalog
quick-action selectors, labels the root catalog section, raises shared
quickAction touch targets to 44 px, and hardens
StudioInformationArchitectureWorkspace with strict success-response parsing,
busy/disabled submit state, malformed-success fail-closed copy, alert/status
semantics, and an IA catalog retry control.
The new Playwright spec opens the real Next shell and live local BFF, plants an admin-scoped browser session for live IA calls, captures browser auth headers and request bodies, and uses deterministic route fulfillment only for explicit fail-closed branches. It verifies anonymous redirect, admin-shell IA catalog load, signed-in non-admin IA authorization, default seeded violation analysis, edited clean-tree analysis, client-only malformed JSON, real BFF invalid-payload detail, pending-submit lockout, catalog loading/503/retry, malformed analyze success, analyze transport failure, V3 quick-action hrefs, every root catalog anchor shape, sentinel catalog hrefs, keyboard focusability, mobile containment, shared axe scans, and direct BFF auth/schema gates. The first focused browser run exposed two stale assumptions in the test/documentation: admin-scoped sessions render the Admin shell rather than a customer shell, and the catalog loading test had to hold all initial hydration-time catalog GETs because the client component can remount. Both assertions were corrected, and the final rerun passed.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/globals.css apps/oshun/web/src/app/studio/page.tsx apps/oshun/web/src/components/studio/StudioInformationArchitectureWorkspace.tsx apps/oshun/web/e2e/studio-overview.spec.ts WALKTHROUGH/studio/studio-overview.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/studio/page.tsx apps/oshun/web/src/components/studio/StudioInformationArchitectureWorkspace.tsx apps/oshun/web/e2e/studio-overview.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-studio-ia-tree-route.test.ts- passed: 1 file, 5 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gates before focused Playwright
- Initial run: 15 GiB RAM, 9.6 GiB available before launch, 1.5 GiB swap free, 48 GiB disk free. Another checkout had CPU-heavy Python/Claude work active, so this run stayed narrow at one Chromium worker; during the run, available memory stayed above 5.5 GiB.
- Final rerun: 15 GiB RAM, 9.5 GiB available before launch, 1.7 GiB swap free, 49 GiB disk free, with the same unrelated work still active; memory stayed above 5.6 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-overview.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run exposed the stale admin-shell/loading assumptions described above
- final rerun passed: 10 passed
pnpm docs:center- passed; rendered 2991 files
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 9.4 GiB available before launch, 1.2 GiB swap free, 49 GiB disk free. Another checkout still had CPU-heavy Python/Claude work active, so no other verification was run concurrently.
pnpm docs:center:test- passed: 95 passed, 11 skipped
263. 2026-07-03 Studio Launch Readiness Governance real-BFF coverage#
Closed the /studio/launch-readiness-governance walkthrough gap where the old
runtime sweep proved only route render/data health and the launch-readiness
catalog, admin-scope gates, scoring states, quick actions, touch targets,
malformed/offline failure paths, and mobile containment remained unchecked. The
new Playwright spec opens the real Next Studio shell, forwards browser
/v1/admin/studio/launch-readiness catalog and
/v1/admin/studio/launch-readiness/evaluate POSTs to the real local BFF with
explicit studio-admin or non-admin dev bearer scopes, and captures browser auth
headers and request bodies while the live evaluator computes the go/no-go
decision, blockers, missing sign-offs, and readiness score.
The suite verifies anonymous redirect, studio-admin catalog load, exact
status/decision catalog values, quick-action targets, 44 px controls,
pending-submit lockout, seeded no-go score 60%, blocker filtering (g2 only
while non-blocking g4 does not veto), missing sign-off rendering, go decisions
with a waived blocking gate and pending advisory gate, pending blocking vetoes,
client-only malformed JSON with zero POSTs, live BFF invalid-payload details,
loading, 503 catalog failure, malformed catalog failure, malformed 200 evaluate
responses, evaluate-network failure, non-admin fail-closed auth, direct BFF
auth/schema gates, shared axe scans on rendered UI paths, and mobile containment
without horizontal overflow. The page now exposes stable quick-action selectors,
pending form/submit state selectors, touch-sized controls, and fail-closed
client parsing for malformed catalog or evaluate success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioLaunchReadinessGovernanceDashboard.tsx apps/oshun/web/src/app/studio/launch-readiness-governance/page.tsx apps/oshun/web/e2e/studio-launch-readiness-governance.spec.ts WALKTHROUGH/studio/governance/studio-launch-readiness-governance.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioLaunchReadinessGovernanceDashboard.tsx apps/oshun/web/src/app/studio/launch-readiness-governance/page.tsx apps/oshun/web/e2e/studio-launch-readiness-governance.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioLaunchReadinessGovernanceWorkspace.test.tsx src/components/__tests__/StudioLaunchReadinessGovernanceWorkspace.validation.test.tsx- passed: 2 files, 5 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-studio-launch-readiness-route.test.ts- passed: 1 file, 6 tests
- Resource gate before focused Playwright
- 15 GiB RAM, 7.8 GiB available before launch, 25 GiB swap free, 48 GiB disk free. Another checkout had CPU-heavy Python/Claude work active, so this run stayed narrow at one Chromium worker; during Playwright, memory stayed above 4.1 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-launch-readiness-governance.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
pnpm --dir apps/oshun/web run typecheck- passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed: 95 passed, 11 skipped
git diff --check- passed
pnpm docs:center- passed; rendered 2991 files
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 6.8 GiB available before launch, 28 GiB swap free, 48 GiB disk free. Another checkout had CPU-heavy Python/Claude work and a TypeScript probe active, so the docs browser gate was supervised while it ran with the repo's docs-center Playwright worker defaults.
pnpm docs:center:test- passed: 95 passed, 11 skipped
pnpm docs:center- passed; rendered 2991 files
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 9.0 GiB available before launch, 29 GiB swap free, 48 GiB disk free. Another agent still had CPU-heavy Python scans active, so the docs browser gate was run serialized.
pnpm docs:center:test- passed: 95 passed, 11 skipped
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During the run, memory stayed above 10 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-audit-compliance-surfaces.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
git diff --check- passed
264. 2026-07-03 Studio Accessibility Governance real-BFF coverage#
Closed the /studio/accessibility-governance walkthrough gap where the old
runtime sweep proved only route render/data health and the WCAG contrast
catalog, admin-scope gates, audit states, quick actions, touch targets,
malformed/offline failure paths, and mobile containment remained unchecked. The
new Playwright spec opens the real Next Studio shell, forwards browser
/v1/admin/studio/wcag-contrast catalog and
/v1/admin/studio/wcag-contrast/audit POSTs to the real local BFF with explicit
studio-admin or non-admin dev bearer scopes, and captures browser auth headers
and request bodies while the live auditor computes sRGB relative-luminance
ratios plus AA/AAA thresholds.
The suite verifies anonymous redirect, studio-admin catalog load, exact
conformance levels, quick-action targets, 44 px controls, pending-submit
lockout, seeded ratios 21, 4.54, 2.85, and 8.59, AA/AAA summary counts,
relaxed large-text thresholds, low-contrast failures, client-only malformed JSON
with zero POSTs, live BFF invalid-payload details, loading, 503 catalog failure,
malformed catalog failure, malformed 200 audit responses, audit-network failure,
non-admin fail-closed auth, direct BFF auth/schema gates, shared axe scans on
rendered UI paths, and mobile containment without horizontal overflow. The page
now exposes stable quick-action selectors, pending form/submit state selectors,
touch-sized controls, exact result-threshold selectors, and fail-closed client
parsing for malformed catalog or audit success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioAccessibilityGovernanceWorkspace.tsx apps/oshun/web/src/app/studio/accessibility-governance/page.tsx apps/oshun/web/e2e/studio-accessibility-governance.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioAccessibilityGovernanceWorkspace.tsx apps/oshun/web/src/app/studio/accessibility-governance/page.tsx apps/oshun/web/e2e/studio-accessibility-governance.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioAccessibilityGovernanceWorkspace.test.tsx src/components/__tests__/StudioAccessibilityGovernanceWorkspace.validation.test.tsx- passed: 2 files, 5 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-studio-wcag-contrast-route.test.ts- passed: 1 file, 5 tests
- Resource gate before focused Playwright
- 15 GiB RAM, 6.9 GiB available before launch, 23 GiB swap free, 48 GiB disk free. Another checkout had Python/Claude/TypeScript work active, so this run stayed narrow at one Chromium worker; during Playwright, memory stayed above 4.2 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-accessibility-governance.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
pnpm --dir apps/oshun/web run typecheck- passed
pnpm docs:center- passed; rendered 2991 files
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gates before
pnpm docs:center:test- First run: 15 GiB RAM, 8.1 GiB available before launch, 21 GiB swap free, 48 GiB disk free. Another checkout still had Python/Claude work active, so the docs browser gate was kept serialized; during the run memory stayed above 7.4 GiB available.
- Final rerun: 15 GiB RAM, 7.2 GiB available before launch, 21 GiB swap free, 48 GiB disk free. Another checkout had active TypeScript work, so no other verification ran in this checkout; memory stayed above 7.3 GiB available.
pnpm docs:center:test- final rerun passed: 95 passed, 11 skipped
265. 2026-07-03 Studio Isis Suspicious Activity Detection real-BFF coverage#
Closed the /studio/isis/suspicious-activity-detection walkthrough gap where
the old runtime sweep proved only route render/data health and left the direct
Studio Isis boundary, localhost lane bypass, seeded chargeback screens, route
map, quick actions, admin-scope gates, pending behavior, malformed/offline
fail-closed paths, exact predictor outputs, duplicate handling, touch targets,
and mobile containment unchecked. The new Playwright spec opens the real Next
Studio shell through the localhost-only Isis lane E2E bypass, proves the direct
route is still hard-blocked by the Studio Isis boundary, forwards browser
/v1/admin/isis/suspicious-activity GET and POST requests to the real local BFF
with explicit studio-admin or non-admin dev bearer scopes, and captures browser
auth headers and request bodies while the live chargeback predictor scores the
transactions.
The suite verifies anonymous redirect, seeded txn-high and txn-low rows,
exact probabilities (0.485 medium and 0.100 low), feature factors including
high amount, high-risk payment method, new device, new location, and new
account, route-map articles, quick-action targets, 44 px controls,
pending-submit lockout, duplicate transaction rejection, client-side invalid
amount blocking, list loading, 503 list failure, malformed list failure,
list-network failure, malformed 200 screen responses, screen-network failure,
non-admin fail-closed auth, direct BFF missing-bearer/forbidden/schema gates,
and mobile containment without horizontal overflow. The workspace now exposes
stable route-map and quick-action selectors, pending form/submit state
selectors, touch-sized controls, and fail-closed client parsing for malformed
list or screen success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisSuspiciousActivityDetectionWorkspace.tsx apps/oshun/web/src/app/studio/isis/suspicious-activity-detection/page.tsx apps/oshun/web/src/components/__tests__/StudioIsisSuspiciousActivityDetectionWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-isis-suspicious-activity-detection.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioIsisSuspiciousActivityDetectionWorkspace.tsx apps/oshun/web/src/app/studio/isis/suspicious-activity-detection/page.tsx apps/oshun/web/src/components/__tests__/StudioIsisSuspiciousActivityDetectionWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-isis-suspicious-activity-detection.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisSuspiciousActivityDetectionWorkspace.test.tsx src/components/__tests__/StudioIsisSuspiciousActivityDetectionWorkspace.integration.test.tsx src/components/__tests__/StudioIsisSuspiciousActivityDetectionPage.test.tsx src/components/__tests__/StudioIsisSuspiciousActivityDetectionRouteMap.test.ts- passed: 4 files, 8 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-isis-suspicious-activity-route.test.ts- passed: 1 file, 6 tests
- Resource gate before focused Playwright
- 15 GiB RAM, 7.6 GiB available before launch, 19 GiB swap free, 48 GiB disk free. Another checkout had CPU-heavy Python/Claude/TypeScript work active, so this run stayed narrow at one Chromium worker; during Playwright, memory stayed above 5.2 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-isis-suspicious-activity-detection.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 10 passed
pnpm --dir apps/oshun/web run typecheck- passed
pnpm exec prettier --write WALKTHROUGH/studio/domain-bridges/isis/studio-isis-suspicious-activity-detection.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 10 GiB available before launch, 16 GiB swap free, 48 GiB disk free. Another checkout still had CPU-heavy Python/Claude work active, so the docs browser gate was run serialized.
pnpm docs:center:test- passed
git diff --check- passed
266. 2026-07-03 Studio Backup Disaster Recovery UX real-BFF coverage#
Closed the /studio/backup-disaster-recovery-ux walkthrough gap where the old
runtime sweep proved route render/data health but left the live recovery
evaluator flow, admin-scope behavior, malformed/offline paths, pending submit
state, quick actions, mobile containment, and direct BFF contract unchecked. The
new Playwright spec opens the real Next Studio shell, forwards browser
/v1/admin/studio/backup-dr catalog/evaluate requests to the real local BFF
with explicit studio-admin or non-admin dev bearer scopes, captures browser auth
headers and request bodies, and verifies the deterministic RPO/RTO evaluator
outputs through the same BFF route used by the workspace.
The suite verifies admin direct navigation, anonymous redirect before the
surface renders, non-admin fail-closed auth, real catalog loading, seeded
default payload recommendation (b1 with RPO/RTO compliance), edited RTO-breach
payload with no eligible restore point, client-only invalid JSON blocking, live
BFF 400 details for invalid throughput, malformed 200 fail-closed parsing,
evaluate-network failure, catalog loading/failure/malformed/network states,
pending-submit lockout, all five quick-action targets, direct BFF
missing-bearer/forbidden/schema gates, 44 px controls, axe, and mobile
containment. The workspace now exposes stable quick-action selectors, pending
form/submit state selectors, strict catalog/result guards, touch-sized controls,
and a focusable named scroll region around the result table for keyboard access.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioBackupDisasterRecoveryUxWorkspace.tsx apps/oshun/web/src/app/studio/backup-disaster-recovery-ux/page.tsx apps/oshun/web/src/components/__tests__/StudioBackupDisasterRecoveryUxWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioBackupDisasterRecoveryUxWorkspace.validation.test.tsx apps/oshun/web/src/components/__tests__/StudioBackupDisasterRecoveryUxPage.test.tsx apps/oshun/web/e2e/studio-backup-disaster-recovery-ux.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioBackupDisasterRecoveryUxWorkspace.tsx apps/oshun/web/src/app/studio/backup-disaster-recovery-ux/page.tsx apps/oshun/web/src/components/__tests__/StudioBackupDisasterRecoveryUxWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioBackupDisasterRecoveryUxWorkspace.validation.test.tsx apps/oshun/web/src/components/__tests__/StudioBackupDisasterRecoveryUxPage.test.tsx apps/oshun/web/e2e/studio-backup-disaster-recovery-ux.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioBackupDisasterRecoveryUxWorkspace.test.tsx src/components/__tests__/StudioBackupDisasterRecoveryUxWorkspace.validation.test.tsx src/components/__tests__/StudioBackupDisasterRecoveryUxPage.test.tsx- passed: 3 files, 7 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-studio-backup-dr-route.test.ts- passed: 1 file, 5 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 10 GiB available before launch, 14 GiB swap free, 48 GiB disk free. Another checkout had CPU-heavy Python/Claude/pnpm work active, so this run stayed narrow at one Chromium worker; during Playwright, memory stayed above 6.6 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-backup-disaster-recovery-ux.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
pnpm exec prettier --write WALKTHROUGH/studio/operations/studio-backup-disaster-recovery-ux.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 9.6 GiB available before launch, 14 GiB swap free, 48 GiB disk free. Another checkout still had CPU-heavy Python/Claude/pnpm work active, so the docs browser gate was kept serialized.
pnpm docs:center:test- passed
git diff --check- passed
267. 2026-07-03 Studio SDK Documentation Integration real-BFF coverage#
Closed the /studio/sdk-documentation-integration walkthrough gap where the old
runtime sweep proved route render/data health but left the live SDK surface
analyzer flow, admin-scope behavior, malformed/offline paths, pending submit
state, quick actions, direct BFF contract, and mobile containment unchecked. The
new Playwright spec opens the real Next Studio shell, forwards browser
/v1/admin/studio/sdk-surface catalog/diff requests to the real local BFF with
explicit studio-admin or non-admin dev bearer scopes, captures browser auth
headers and request bodies, and verifies the deterministic public-API surface
diff/semver classifier through the same BFF route used by the workspace.
The suite verifies admin direct navigation, anonymous redirect before the
surface renders, non-admin fail-closed auth, real catalog loading, the seeded
default payload as a major bump with changed/removed breaking symbols, an
additive minor payload, an unchanged none payload, client-only invalid JSON
blocking, live BFF duplicate/empty-payload 400 details, malformed 200
fail-closed parsing, diff-network failure, catalog
loading/failure/malformed/network states, pending-submit lockout, all five
quick-action targets, direct BFF missing-bearer/forbidden/schema gates, 44 px
controls, axe, and mobile containment. The workspace now exposes stable
quick-action selectors, pending form/submit state selectors, strict
catalog/result guards, touch-sized controls, and a focusable named scroll region
around the result table for keyboard access.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioSdkDocumentationIntegrationWorkspace.tsx apps/oshun/web/src/app/studio/sdk-documentation-integration/page.tsx apps/oshun/web/src/components/__tests__/StudioSdkDocumentationIntegrationWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioSdkDocumentationIntegrationWorkspace.validation.test.tsx apps/oshun/web/src/components/__tests__/StudioSdkDocumentationIntegrationPage.test.tsx apps/oshun/web/e2e/studio-sdk-documentation-integration.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioSdkDocumentationIntegrationWorkspace.tsx apps/oshun/web/src/app/studio/sdk-documentation-integration/page.tsx apps/oshun/web/src/components/__tests__/StudioSdkDocumentationIntegrationWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioSdkDocumentationIntegrationWorkspace.validation.test.tsx apps/oshun/web/src/components/__tests__/StudioSdkDocumentationIntegrationPage.test.tsx apps/oshun/web/e2e/studio-sdk-documentation-integration.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioSdkDocumentationIntegrationWorkspace.test.tsx src/components/__tests__/StudioSdkDocumentationIntegrationWorkspace.validation.test.tsx src/components/__tests__/StudioSdkDocumentationIntegrationPage.test.tsx- passed: 3 files, 7 tests
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-studio-sdk-surface-route.test.ts- passed: 1 file, 6 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 8.4 GiB available before launch, 12 GiB swap free, 48 GiB disk free. Another checkout had CPU-heavy Python/Claude work active, so this run stayed narrow at one Chromium worker; during Playwright, memory stayed above 5.4 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-sdk-documentation-integration.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 12 passed
pnpm exec prettier --write WALKTHROUGH/studio/operations/studio-sdk-documentation-integration.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 8.4 GiB available before launch, 11 GiB swap free, 48 GiB disk free. Another checkout still had CPU-heavy Python/Claude work active, so the docs browser gate was kept serialized.
pnpm docs:center:test- passed
git diff --check- passed
268. 2026-07-03 Studio Observability Operational Dashboards real-BFF coverage#
Closed the /studio/observability-operational-dashboards walkthrough gap where
the old runtime sweep proved route render/data health but left the live SLO
burn-rate, V7 platform-cost, and V7 creator-analytics evaluator flows,
admin-scope behavior, malformed/offline paths, pending submit states, quick
actions, direct BFF contract, and mobile containment unchecked. The new
Playwright spec opens the real Next Studio shell, forwards browser
/v1/admin/studio/observability-dashboards catalog and evaluator requests to
the real local BFF with explicit studio-admin, non-admin, or creator-analytics
dev bearer scopes, captures browser auth headers and request bodies, and
verifies the deterministic evaluators through the same BFF route used by the
workspace.
The suite verifies admin direct navigation, anonymous redirect before the surface renders, non-admin fail-closed auth, real catalog loading, seeded and edited SLO payloads, V7 platform cost lever changes, V7 creator realm selection, client-only invalid JSON blocking, live BFF 400 details for invalid SLO, platform, and creator payloads, malformed 200 fail-closed parsing, evaluator network failures, catalog loading/failure/malformed/network states, pending-submit lockout across all three lanes, all five quick-action targets, direct BFF missing-bearer/forbidden/schema gates, creator-analytics scoped BFF access, 44 px controls, axe, and mobile containment. The workspace now exposes stable quick-action selectors, pending form/submit state selectors, strict malformed result errors, and touch-sized submit/quick-action controls.
Verification:
psql --version- available: PostgreSQL client 16.14
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioObservabilityOperationalDashboardsWorkspace.tsx apps/oshun/web/src/app/studio/observability-operational-dashboards/page.tsx apps/oshun/web/src/components/__tests__/StudioObservabilityOperationalDashboardsWorkspace.validation.test.tsx apps/oshun/web/e2e/studio-observability-operational-dashboards.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioObservabilityOperationalDashboardsWorkspace.tsx apps/oshun/web/src/app/studio/observability-operational-dashboards/page.tsx apps/oshun/web/src/components/__tests__/StudioObservabilityOperationalDashboardsWorkspace.validation.test.tsx apps/oshun/web/e2e/studio-observability-operational-dashboards.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioObservabilityOperationalDashboardsWorkspace.test.tsx src/components/__tests__/StudioObservabilityOperationalDashboardsWorkspace.validation.test.tsx- passed: 2 files, 11 tests
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-studio-observability-dashboards-route.test.ts- passed: 1 file, 11 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gates before focused Playwright
- Final run: 15 GiB RAM, 8.7 GiB available before launch, 7.6 GiB swap free, 48 GiB disk free. Another checkout had CPU-heavy Python/Claude work active, so this run stayed narrow at one Chromium worker; during Playwright, memory stayed above 5.2 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-observability-operational-dashboards.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run exposed undersized submit buttons and an outdated creator-status
assertion; the live BFF correctly returned
pagefor Ixchel Lab - second run exposed undersized footer quick-action targets
- final rerun passed: 12 passed
- first run exposed undersized submit buttons and an outdated creator-status
assertion; the live BFF correctly returned
pnpm exec prettier --write WALKTHROUGH/studio/operations/studio-observability-operational-dashboards.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 7.8 GiB available before launch, 7.5 GiB swap free, 48 GiB disk free. Another checkout still had CPU-heavy Python/Claude work active, so the docs browser gate was kept serialized.
pnpm docs:center:test- passed
git diff --check- passed
164. 2026-06-26 Tenant bulk entitlement executor addendum#
Deepened tenant-bulk-operations-export beyond the users executor. The existing
entitlements commit executor is now driven end-to-end by real-dev-infra tests:
the spec provisions a real customer account through the users bulk-operation
path, reads /v1/profile as that account to confirm plan: "free", commits an
entitlements bulk operation with entitlementClass: "premium", and reads
/v1/profile again to prove the profile/entitlement projection changed to
plan: "premium".
This closed the unproven entitlement-executor leg at the time. The current journey has since narrowed the open executor gaps: rosters are covered in §166, persona assignments are covered in §167, and content/taxonomy remain open.
Verification:
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-bulk-operations-route.test.ts- passed: 10 passed
- Resource gate before targeted Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing build/test process; during Playwright, available memory stayed around 12 GiB
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-bulk-operations-export-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 3 passed
pnpm exec prettier --write apps/oshun/bff/src/__tests__/admin-bulk-operations-route.test.ts apps/oshun/web/e2e/tenant-bulk-operations-export-bff.spec.ts WALKTHROUGH/journeys/tenant-bulk-operations-export.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/tenant-bulk-operations-export.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
python3 tools/render-vdocs.py- passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/__tests__/admin-bulk-operations-route.test.ts apps/oshun/web/e2e/tenant-bulk-operations-export-bff.spec.ts- passed
pnpm nx run @oshun/bff:typecheck- passed
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
165. 2026-06-26 Tenant bulk unsupported-kind failure addendum#
Superseded by §166 for
rosters: roster rows now have a real OneRoster executor. The loud-failure contract remains current for unsupported kinds such ascontentandtaxonomy;persona_assignmentsis superseded by §167.
Deepened tenant-bulk-operations-export at the missing-executor boundary. The
real users and entitlements commit executors remain covered as successful
mutations; this addendum now proves that a valid unsupported bulk kind does not
silently stamp success. The real-BFF spec creates a rosters operation with
required rosterId/tenantId fields, validates it, dry-runs it into a
deterministic create plan, stages it, then attempts commit. The operation
lands in terminal failed with committedAt: null, empty commitOutcomes, and
the explicit reason
no commit executor is wired for kind 'rosters' — nothing was changed; audit
search also exposes admin.bulk_operation.failed.
This closes the previously unproven loud-failure contract for unsupported bulk operation kinds while keeping the journey honest: real content and taxonomy commit executors remain product gaps beyond that failure boundary. Roster and persona-assignment commits are superseded by §§166-167.
Verification:
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-bulk-operations-route.test.ts- passed: 11 passed
- Resource gate before targeted Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing build/test process; during Playwright, available memory stayed above 10 GiB
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-bulk-operations-export-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 4 passed
pnpm exec prettier --write apps/oshun/bff/src/__tests__/admin-bulk-operations-route.test.ts apps/oshun/web/e2e/tenant-bulk-operations-export-bff.spec.ts WALKTHROUGH/journeys/tenant-bulk-operations-export.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/tenant-bulk-operations-export.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/__tests__/admin-bulk-operations-route.test.ts apps/oshun/web/e2e/tenant-bulk-operations-export-bff.spec.ts- passed
pnpm nx run @oshun/bff:typecheck- passed
pnpm --dir apps/oshun/web typecheck- initial run failed on stale generated
.next/dev/types/routes.d.ts; after clearingapps/oshun/web/.next, rerun passed
- initial run failed on stale generated
python3 tools/render-vdocs.py- passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
166. 2026-06-26 Tenant bulk roster executor addendum#
Deepened tenant-bulk-operations-export from loud-failure-only roster coverage
to a real roster commit executor. kind: "rosters" rows now map to the durable
OneRoster apply store: the executor validates the row's tenant, converts the row
into a OneRosterUser plus optional class OneRosterEnrollment, applies a
deterministic bulk:<operationId>:row:<rowIndex> commit id, and returns the
actual users/enrollments created plus tenant roster totals.
The real-BFF spec now creates a rosters bulk operation, validates it, dry-runs
the deterministic create plan, stages, commits, then reads
/v1/admin/lms/oneroster to verify the same commit id and tenant roster totals.
The unsupported-kind fail-loud check moved to content, which still validates,
dry-runs, and stages before terminal failed with committedAt: null.
Remaining product gaps for this journey are now narrower: content and taxonomy commit executors remain open beyond the covered loud-failure contract; persona-assignment commits are closed in §167.
Verification:
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-bulk-operations-route.test.ts- passed: 12 passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-oneroster-apply-route.test.ts- passed: 6 passed
- Resource gate before targeted Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing build/test process; during Playwright, available memory stayed above 10 GiB
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-bulk-operations-export-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 5 passed
pnpm exec prettier --write apps/oshun/bff/src/admin/bulk-commit-executors.ts apps/oshun/bff/src/__tests__/admin-bulk-operations-route.test.ts apps/oshun/web/e2e/tenant-bulk-operations-export-bff.spec.ts WALKTHROUGH/journeys/tenant-bulk-operations-export.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/tenant-bulk-operations-export.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/admin/bulk-commit-executors.ts apps/oshun/bff/src/__tests__/admin-bulk-operations-route.test.ts apps/oshun/web/e2e/tenant-bulk-operations-export-bff.spec.ts- passed
pnpm nx run @oshun/bff:typecheck- passed
pnpm --dir apps/oshun/web typecheck- passed
python3 tools/render-vdocs.py- passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
167. 2026-06-26 Tenant bulk persona assignment executor addendum#
Deepened tenant-bulk-operations-export from loud-failure-only
persona_assignments coverage to a real active-persona commit executor.
kind: "persona_assignments" rows now require personaId and subjectId, use
an optional canonical persona surface with tara as the default, and write to
the existing active-persona projection through activePersonaStore.set.
The real-BFF spec now creates a persona-assignment bulk operation, validates it,
dry-runs the deterministic update plan, stages, commits, then reads
/v1/personas/active as the assigned subject to verify the same persona and
surface. Remaining product gaps for this journey are now content and taxonomy
commit executors, plus the documented UI/upload/export handoff work.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec prettier --write apps/oshun/bff/src/admin/bulk-commit-executors.ts apps/oshun/bff/src/__tests__/admin-bulk-operations-route.test.ts apps/oshun/web/e2e/tenant-bulk-operations-export-bff.spec.ts WALKTHROUGH/journeys/tenant-bulk-operations-export.md- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-bulk-operations-route.test.ts- passed: 13 passed
- Resource gate before targeted Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 47 GiB free disk, and no competing build/test process; during Playwright, available memory stayed above 11 GiB
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-bulk-operations-export-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/admin/bulk-commit-executors.ts apps/oshun/bff/src/__tests__/admin-bulk-operations-route.test.ts apps/oshun/web/e2e/tenant-bulk-operations-export-bff.spec.ts- passed
pnpm nx run @oshun/bff:typecheck- passed
pnpm --dir apps/oshun/web typecheck- passed
python3 tools/render-vdocs.py- passed: rendered 1634 files
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
158. 2026-06-26 Public scene signed-in report receipts#
Closed the signed-in reporter leg for public-scene-abuse-report. The public
report form now forwards the member access token when AuthProvider has one, and
the BFF stamps reporterUserId from the validated bearer instead of trusting a
body-provided reporter id. A new authenticated projection,
GET /v1/living-scenes/public-reports/mine, filters the persisted abuse-report
store to the current reporter and returns receipt-safe fields without operator
identity. /profile/safety now renders those receipts alongside the crisis
record, including open/resolved/dismissed status and operator notes.
The real browser coverage signs in a reporter, submits
/scene/<shortCode>/report, reads the live BFF receipt as open, verifies the
receipt row on /profile/safety, resolves the report through the real admin BFF
verb, and verifies /profile/safety shows resolved plus the operator note.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec prettier --write ...- passed for touched BFF, web, E2E, and walkthrough files
pnpm --dir apps/oshun/web exec vitest run src/app/profile/safety/ProfileSafetyJourney.test.tsx src/lib/living-scenes-public.test.ts- passed: 12 passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/my-abuse-reports-route.test.ts src/__tests__/living-scenes-route.test.ts- passed: 26 passed
pnpm exec eslint --no-warn-ignored ...- passed for touched BFF, web, and E2E TypeScript files
pnpm --dir apps/oshun/bff typecheck- passed
pnpm --dir apps/oshun/web typecheck- passed
- Resource gates before typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing build/test process; during Playwright, available memory stayed above 9 GiB
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/public-scene-abuse-report.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
python3 tools/render-vdocs.py- passed: rendered 1634 files
python3 V5/tools/validate-v5-docs.py- passed
154. 2026-06-26 Nisaba reading-desk language buttons#
Closed the compact /nisaba language-switch gap for nisaba-scholarly-read.
The BFF room payload now includes passageBodies for Pali, English, and Both
while preserving passageBody as the default English body. The web desk keeps
rooms.tsx server-rendered and mounts a focused client switcher for the
language buttons and reading body, so the route does not pull server-only BFF
fetch helpers into the browser bundle.
nisaba-scholarly-read now clicks Pali, Both, and English on the live compact
desk and asserts aria-pressed, active-language attributes, and swapped reading
body text. nisaba-desk-deepening pins the real /v1/nisaba/room
passageBodies contract. Remaining nisaba-scholarly-read gaps are still the
headword, folio, notebook-editor, plan-complete, and scholar-apparatus
drill-downs.
Verification:
pnpm --dir apps/oshun/bff exec vitest run src/nisaba/room.test.ts- passed: 3 passed
pnpm --dir apps/oshun/web exec vitest run src/app/nisaba/__tests__/page.test.tsx- passed: 4 passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/nisaba/room.ts apps/oshun/bff/src/nisaba/room.test.ts apps/oshun/web/src/lib/lilith-data/types.ts apps/oshun/web/src/components/lilith/rooms.tsx apps/oshun/web/src/components/lilith/NisabaDeskLanguageSwitcher.tsx apps/oshun/web/src/app/nisaba/__tests__/page.test.tsx apps/oshun/web/e2e/nisaba-desk-deepening.spec.ts apps/oshun/web/e2e/nisaba-scholarly-read.spec.ts apps/oshun/web/e2e/nyx-tonight-observation.spec.ts- passed with the repo's existing Next pages-directory warning
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 9 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm nx run @oshun/bff:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-desk-deepening.spec.ts e2e/nisaba-scholarly-read.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
python3 tools/render-vdocs.py- passed: rendered 1607 files
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/bff/src/nisaba/room.ts apps/oshun/bff/src/nisaba/room.test.ts apps/oshun/web/src/lib/lilith-data/types.ts apps/oshun/web/src/components/lilith/rooms.tsx apps/oshun/web/src/components/lilith/NisabaDeskLanguageSwitcher.tsx apps/oshun/web/src/app/nisaba/__tests__/page.test.tsx apps/oshun/web/e2e/nisaba-desk-deepening.spec.ts apps/oshun/web/e2e/nisaba-scholarly-read.spec.ts apps/oshun/web/e2e/nyx-tonight-observation.spec.ts WALKTHROUGH/customer/07-nisaba/nisaba.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/journeys/nisaba-notebook-capture-and-cite.md WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/results/README.md WALKTHROUGH/results/nisaba-scholarly-read.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
git diff --check- passed
154. 2026-06-26 Nyx to Tara handoff telemetry#
Closed the concrete telemetry gap in nyx-to-tara-bridge. Nyx event-detail Tara
recommendation cards now expose nyx_event_tara_recommendation_opened with the
source event ID, Tara practice ID, relationship kind, and from=nyx. The Tara
domain session player now receives shell origin/stack from TaraSurface and
marks its Play control with tara_sit_started, surface=nyx_event_handoff,
origin, stack, and session ID when launched from a Nyx predecessor stack.
nyx-event-pages now asserts the /events/march-equinox recommendation CTA
telemetry, follows the real /domains/tara?origin=explore&stack=nyx route into
the immersive ritual player, verifies the Nyx handoff start telemetry on the
Play control, completes the session, and still verifies the reciprocal Tara →
Nyx completion card. The journey remains partial for tone-band enforcement,
Nisaba canon cross-link gating, crisis/cadence/offline failure modes, and the
future Iris memory re-surface reason.
Verification:
pnpm --dir apps/oshun/web exec vitest run src/components/domains/nyx/__tests__/nyxEventPageModels.test.ts src/components/domains/nyx/__tests__/NyxEventDetailWorkspace.test.tsx src/components/domains/tara/__tests__/SessionPlayer.test.tsx- passed: 3 files, 87 tests
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/domains/nyx/nyxEventPageModels.ts apps/oshun/web/src/components/domains/nyx/NyxEventDetailWorkspace.tsx apps/oshun/web/src/components/domains/TaraSurface.tsx apps/oshun/web/src/components/domains/tara/SessionPlayer.tsx apps/oshun/web/src/components/domains/nyx/__tests__/nyxEventPageModels.test.ts apps/oshun/web/src/components/domains/nyx/__tests__/NyxEventDetailWorkspace.test.tsx apps/oshun/web/src/components/domains/tara/__tests__/SessionPlayer.test.tsx apps/oshun/web/e2e/nyx-event-pages.spec.ts- passed with the repo's existing Next pages-directory warning
python3 tools/render-vdocs.py- passed: rendered 1607 files
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing broad verification process; Playwright memory stayed above 12 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nyx-event-pages.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "opens Tara perspective recommendations from selected Nyx content"- passed: 1 passed
157. 2026-06-26 Assistant live grounding inspection#
Closed the browser-visible grounding-inspection gap for
assistant-handoff-context-carry. The BFF assistant message route now derives a
narrow response.grounding projection from real Veritas article cards when the
live turn is backed by source metadata. The browser continuity journey opens the
assistant from the Veritas domain context, sends a real message through
/v1/assistant/sessions/:sessionId/message, asserts the grounded envelope names
the International Energy Agency source, then clicks Inspect evidence and
verifies the shared Veritas inspection overlay renders grounding level, support
count, citation list, source name, and the source-directory action.
The same pass exposed latent contrast issues in the grounded badge row and
assistant action pills once a live grounded turn became visible. The UI now uses
theme-aware --l-ok-text and existing accent-text tokens for tinted pill
labels, removes the count opacity that washed out the citation total, and lifts
the assistant confidence label to var(--l-muted).
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/assistant.ts apps/oshun/web/e2e/assistant-continuity-journey.spec.ts WALKTHROUGH/journeys/assistant-handoff-context-carry.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/assistant-handoff-context-carry.md- passed
pnpm exec prettier --write apps/oshun/web/src/design-system/lilith/lilith.css apps/oshun/web/src/design-system/components/GroundingStateBadge.tsx apps/oshun/web/src/design-system/components/GroundingLevelBadge.tsx apps/oshun/web/src/components/assistant/AssistantPanel.tsx apps/oshun/web/src/app/globals.css apps/oshun/bff/src/routes/assistant.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/assistant.ts apps/oshun/web/e2e/assistant-continuity-journey.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/assistant.ts apps/oshun/web/e2e/assistant-continuity-journey.spec.ts apps/oshun/web/src/design-system/components/GroundingStateBadge.tsx apps/oshun/web/src/design-system/components/GroundingLevelBadge.tsx apps/oshun/web/src/components/assistant/AssistantPanel.tsx- passed with the known Next pages-directory warning
pnpm --dir apps/oshun/web exec vitest run src/design-system/components/__tests__/GroundingStateBadge.test.tsx src/design-system/components/__tests__/GroundingLevelBadge.test.tsx src/components/assistant/__tests__/AssistantPanel.test.tsx- passed: 3 files / 39 tests
pnpm nx run @oshun/bff:typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
python3 tools/render-vdocs.py- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/assistant-continuity-journey.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "opens evidence inspection for a live grounded Veritas assistant turn"- first run failed only the shared axe gate on low-contrast grounded/inspect labels; after the contrast fix, passed: 1 passed
156. 2026-06-26 Assistant null-artifact handoff copy#
Closed the browser-visible null-artifact branch for
assistant-handoff-context-carry. The assistant context handoff panel now
renders a stable artifact chip id and shows "Artifact: no current artifact" when
the sanitized handoff has no artifact, instead of implying a generic
current-screen artifact.
Component coverage renders an explicit sanitized null-artifact handoff and
asserts data-assistant-context-artifact="none" plus the exact chip copy. The
real browser continuity journey opens the assistant from /explore, waits for
the live session-create handoff, and asserts the same user-visible null-artifact
copy in the mounted assistant panel. The BFF mismatched-shell rejection remains
covered by assistant-session-bff; the remaining browser-side gap is the
entity-mismatch variant.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/ShellLayout.tsx apps/oshun/web/src/components/__tests__/ShellLayout.test.tsx apps/oshun/web/src/components/assistant/AssistantPanel.tsx apps/oshun/web/src/components/assistant/__tests__/AssistantPanel.test.tsx apps/oshun/web/e2e/assistant-continuity-journey.spec.ts WALKTHROUGH/journeys/assistant-handoff-context-carry.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec vitest run src/components/assistant/__tests__/AssistantPanel.test.tsx- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/ShellLayout.test.tsx- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/ShellLayout.tsx apps/oshun/web/src/components/__tests__/ShellLayout.test.tsx apps/oshun/web/src/components/assistant/AssistantPanel.tsx apps/oshun/web/src/components/assistant/__tests__/AssistantPanel.test.tsx apps/oshun/web/e2e/assistant-continuity-journey.spec.ts- passed
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/assistant-continuity-journey.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "hands back into assistant memory from explore"- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/ShellLayout.tsx apps/oshun/web/src/components/__tests__/ShellLayout.test.tsx apps/oshun/web/src/components/assistant/AssistantPanel.tsx apps/oshun/web/src/components/assistant/__tests__/AssistantPanel.test.tsx apps/oshun/web/e2e/assistant-continuity-journey.spec.ts WALKTHROUGH/journeys/assistant-handoff-context-carry.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
158. 2026-06-26 Assistant Tara to Veritas continuity depth#
Closed the cross-domain navigation-depth gap for
assistant-handoff-context-carry. The browser journey now starts on
/domains/tara?origin=explore, clicks the real Veritas domain shortcut, and
opens the assistant from the Veritas persistent-context strip. The live
session-create payload proves the assistant receives the Veritas handoff with
activeRoute='/domains/veritas?origin=explore&stack=tara'; the mounted
assistant strip and rail prove the user-visible return-thread and return-anchor
links preserve the Explore anchor and Tara trail.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/assistant-continuity-journey.spec.ts WALKTHROUGH/journeys/assistant-handoff-context-carry.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/assistant-handoff-context-carry.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
python3 tools/render-vdocs.py- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/assistant-continuity-journey.spec.ts- passed
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/assistant-continuity-journey.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "preserves cross-domain navigation depth when opening assistant after Tara to Veritas"- passed: 1 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/assistant-continuity-journey.spec.ts WALKTHROUGH/journeys/assistant-handoff-context-carry.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/assistant-handoff-context-carry.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
160. 2026-06-26 Nyx service-worker notification routing#
Closed the local service-worker leg of nyx-event-calendar-sync-reminder steps
7-8. A new Playwright spec loads the shipped apps/oshun/web/public/sw.js
runtime, dispatches a Nyx event reminder push payload, and proves
showNotification preserves the exact Nyx event actionPath, tag: oshun-nyx,
notification id, and domain metadata. It then drives the notificationclick
handler for both branches: no existing app window cold-opens
/domains/nyx/events/jupiter-venus-conjunction, while an existing Oshun window
receives OSHUN_NOTIFICATION_TAP and is focused instead of opening a duplicate.
The journey remains partial because external push/email/SMS provider delivery,
OS notification-tray tap automation, and quiet-hours dispatcher scheduling
remain outside the local harness, but the shipped local SW routing contract is
no longer untested.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/nyx-service-worker-notification.spec.ts WALKTHROUGH/journeys/nyx-event-calendar-sync-reminder.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/nyx-service-worker-notification.spec.ts- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nyx-service-worker-notification.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 2 passed
python3 tools/render-vdocs.py- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/nyx-service-worker-notification.spec.ts WALKTHROUGH/journeys/nyx-event-calendar-sync-reminder.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
159. 2026-06-26 Assistant profile and notebook recall copy#
Closed the browser-visible profile + notebook Iris recall-copy gap for
assistant-handoff-context-carry. The shell now recognizes Nisaba notebook
routes like /domains/nisaba?...path=/workspace/notebook/nisaba-notebook-1 as
domain.notebook assistant artifacts and stamps artifact.metadata.notebookId
into the sanitized handoff. The browser journey grants real Iris consents,
enables profile memory through /v1/preferences, writes profile and notebook
memories through /v1/iris/adapter/remember, opens the assistant from the live
Nisaba notebook route, sends a real assistant message, and proves both the BFF
response.memoryRecall envelope and the mounted transcript render
Remembered context:, Profile memory:, Notebook memory:, and
Memory: profile.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/ShellLayout.tsx apps/oshun/web/src/components/__tests__/ShellLayout.test.tsx apps/oshun/web/e2e/assistant-continuity-journey.spec.ts- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/ShellLayout.test.tsx- passed: 1 file / 59 tests
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/ShellLayout.tsx apps/oshun/web/src/components/__tests__/ShellLayout.test.tsx apps/oshun/web/e2e/assistant-continuity-journey.spec.ts- passed, with the repo's known Next pages-directory warning
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/assistant-continuity-journey.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "renders profile and notebook Iris recall copy in the browser transcript"- passed: 1 passed
python3 tools/render-vdocs.py- passed
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/ShellLayout.tsx apps/oshun/web/src/components/__tests__/ShellLayout.test.tsx apps/oshun/web/e2e/assistant-continuity-journey.spec.ts WALKTHROUGH/journeys/assistant-handoff-context-carry.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/assistant-handoff-context-carry.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
157. 2026-06-26 Assistant entity-mismatch handoff sanitization#
Closed the browser-visible entity-mismatch branch for
assistant-handoff-context-carry. The shell can now drive a fixed wrong-shell
entity preview through the real browser, keeps the sanitizer authoritative, then
retries with entity: null and an artifact metadata marker instead of dropping
the whole handoff.
Component coverage asserts the shell retry removes the wrong-shell entity and
adds entitySanitization='entity-shell-mismatch' without copying preview
metadata. Assistant panel coverage asserts the sanitized handoff is posted with
entity: null, exposes data-assistant-context-entity="none" and
data-assistant-context-entity-state="shell-mismatch", and renders the exact
"Entity: removed (shell mismatch)" chip without the dropped admin label. The
real browser continuity journey opens /search with the mismatch preview,
captures the live /v1/assistant/sessions POST, and verifies the same wire and
DOM contracts.
Verification:
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/ShellLayout.tsx apps/oshun/web/src/components/__tests__/ShellLayout.test.tsx apps/oshun/web/src/components/assistant/AssistantPanel.tsx apps/oshun/web/src/components/assistant/__tests__/AssistantPanel.test.tsx apps/oshun/web/e2e/assistant-continuity-journey.spec.ts- passed, with the repo's known Next pages-directory warning
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/ShellLayout.test.tsx src/components/assistant/__tests__/AssistantPanel.test.tsx- passed: 2 files / 85 tests
pnpm nx run @oshun/web:typecheck- passed
python3 tools/render-vdocs.py- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/assistant-continuity-journey.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "drops a browser-visible entity shell mismatch before session creation"- passed: 1 passed
155. 2026-06-26 Nisaba offline lexicon/morphology hint#
Closed the remaining Step-4 uncached lookup degradation gap for
offline-first-time-use. The Nisaba lexicon/morphology inspector now carries an
explicit offline state: cached term forms and morphology detail stay visible,
while the live lookup refresh affordance is disabled with "Available when
online" copy. The treatment is inline inside the existing inspector so the
reading lane does not gain another banner or modal.
NisabaSurface component coverage now renders the lexicon route with
navigator.onLine=false and asserts the offline copy, disabled online-only
lookup control, and preserved morphology detail. nisaba-split-view extends the
live-BFF passage hydration leg: after the authenticated workspace opens
?view=lexicon&term=term-attention, Chromium goes offline and the real browser
asserts the lexicon workspace flips to data-nisaba-lexicon-online="false",
shows the cached-term offline hint, disables the online-only lookup action, and
keeps the selected morphology detail visible.
offline-first-time-use remains partial only for natural browser-delivered sync
scheduling/replay on the specific search/Tara write surfaces.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/domains/__tests__/NisabaSurface.test.tsx apps/oshun/web/e2e/nisaba-split-view.spec.ts WALKTHROUGH/journeys/offline-first-time-use.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/offline-first-time-use.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec vitest run src/components/domains/__tests__/NisabaSurface.test.tsx- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/domains/__tests__/NisabaSurface.test.tsx apps/oshun/web/e2e/nisaba-split-view.spec.ts- passed
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-split-view.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "passage hydration opens lexicon"- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/domains/__tests__/NisabaSurface.test.tsx apps/oshun/web/e2e/nisaba-split-view.spec.ts WALKTHROUGH/journeys/offline-first-time-use.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/offline-first-time-use.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
154. 2026-06-26 Nisaba 24h offline cache expiry#
Closed the fresh/expired Step-4 cache-window gap for offline-first-time-use.
The service worker now treats the Nisaba offline BFF allowlist as a strict
24-hour cache: fresh cached /v1/nisaba/passages/daily data can still be served
by the real service worker while the browser is offline, but an entry older than
NISABA_OFFLINE_BFF_MAX_AGE_MS no longer silently serves stale text when the
network is unavailable. Instead, sw.js returns a 503 no-store JSON response
with code: "NISABA_OFFLINE_CACHE_EXPIRED" and a reconnect message.
Client-side Nisaba localStorage snapshots now apply the same 24-hour max age, so
an expired local snapshot cannot bypass the service-worker expiry. The Nisaba
workspace renders a compact inline Offline passage expired status when the BFF
cache has aged out, preserving the existing reading-lane layout rather than
adding a new modal or banner.
offline-shell-routes now proves the behavior against the real service worker:
it seeds oshun-bff-v<N> with a fresh /v1/nisaba/passages/daily response,
takes Chromium offline, fetches the allowlisted path through the active sw.js,
and asserts the fresh cached passage JSON is returned. It then replaces that
same cache key with a 25-hour-old response, clears local snapshots, fetches the
path offline again, and asserts the 503 no-store expired-cache response. The
workspace expired-cache UI is covered by the focused NisabaSurface component
test. offline-first-time-use remains partial for natural browser-delivered
sync scheduling/replay on the specific search/Tara write surfaces and the
uncached Nisaba lexicon/morphology offline hint.
Verification:
pnpm exec prettier --write apps/oshun/web/public/sw.js apps/oshun/web/src/__tests__/pwa-service-worker-policy.test.ts apps/oshun/web/src/lib/nisaba-offline.ts apps/oshun/web/src/lib/nisaba-offline.test.ts apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/domains/__tests__/NisabaSurface.test.tsx apps/oshun/web/e2e/offline-shell-routes.spec.ts WALKTHROUGH/journeys/offline-first-time-use.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/offline-first-time-use.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec vitest run src/__tests__/pwa-service-worker-policy.test.ts src/lib/nisaba-offline.test.ts src/components/domains/__tests__/NisabaSurface.test.tsx- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/public/sw.js apps/oshun/web/src/__tests__/pwa-service-worker-policy.test.ts apps/oshun/web/src/lib/nisaba-offline.ts apps/oshun/web/src/lib/nisaba-offline.test.ts apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/domains/__tests__/NisabaSurface.test.tsx apps/oshun/web/e2e/offline-shell-routes.spec.ts- passed
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, no competing broad verification process; Playwright memory stayed above 10 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/offline-shell-routes.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "24-hour Nisaba"- passed: 1 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/public/sw.js apps/oshun/web/src/__tests__/pwa-service-worker-policy.test.ts apps/oshun/web/src/lib/nisaba-offline.ts apps/oshun/web/src/lib/nisaba-offline.test.ts apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/domains/__tests__/NisabaSurface.test.tsx apps/oshun/web/e2e/offline-shell-routes.spec.ts WALKTHROUGH/journeys/offline-first-time-use.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/offline-first-time-use.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
95. 2026-06-25 Nisaba scholarly-read route and row-cell addendum#
Closed the remaining ambiguity in the Nisaba scholarly-read journey by
separating the real search destination from the compact desk route. Search
result clicks now assert the live /domains/nisaba reader through stable
workspace, signal, reading-frame, action, and quick-action anchors. The compact
/nisaba desk now exposes row/cell anchors for page/header/language/sections/
marginalia/body/graph/related data, and scholar mode exposes marginalia,
highlight, apparatus, witness, cross-reference, and concept row/cell anchors.
Verification:
-
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/lilith/rooms.tsx apps/oshun/web/src/components/lilith/nisaba.tsx apps/oshun/web/e2e/nisaba-scholarly-read.spec.ts apps/oshun/web/src/app/nisaba/__tests__/page.test.tsx- passed (repo emitted the existing Next pages-directory warning)
-
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/app/nisaba/__tests__/page.test.tsx src/components/domains/__tests__/NisabaSurface.test.tsx- 2 files passed; 53 tests passed
-
Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during the final Playwright run, available memory stayed above 8.9 GiB and returned to 13 GiB after cleanup.
-
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-scholarly-read.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 6 passed
-
Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
-
pnpm nx run @oshun/web:typecheck- first run failed on stale generated
.next/dev/types/routes.d.ts; removed generatedapps/oshun/web/.next, reran after a fresh resource gate with 13 GiB available, and the clean typecheck passed
- first run failed on stale generated
-
python3 V5/tools/validate-v5-docs.py- passed
-
pnpm exec prettier --write apps/oshun/web/e2e/nisaba-scholarly-read.spec.ts WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/journeys/coverage.md- passed
-
pnpm exec prettier --check apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/lilith/rooms.tsx apps/oshun/web/src/components/lilith/nisaba.tsx apps/oshun/web/e2e/nisaba-scholarly-read.spec.ts apps/oshun/web/src/app/nisaba/__tests__/page.test.tsx WALKTHROUGH/customer/07-nisaba/nisaba.md WALKTHROUGH/customer/07-nisaba/nisaba-scholar.md WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
-
git diff --check- passed
110. 2026-06-25 Profile Safety live crisis-frame recovery route journey#
Deepened the crisis-aware tone-policy journey for /profile/safety from a
browser route-mock into a real-dev-infra path. The page now waits for the
authenticated AuthProvider token before reading
GET /v1/safety/crisis-frames/mine, and it explicitly maps the BFF CrisisKind
taxonomy into Lilith recovery types before building stillness, re-entry,
check-in, and incident-record state. This closes the prior hidden taxonomy
mismatch where the mock used acute-grief while the live activation route emits
trust-safety kinds such as suicidal-ideation.
profile-safety-crisis-recovery.spec.ts now signs in unique members, proves the
real no-frame empty state, activates a crisis frame through
POST /v1/admin/safety/crisis-frame/activate, polls the member's real
/v1/safety/crisis-frames/mine readback until the durable projection appears,
then drives /profile/safety with no route interception. It verifies stillness
suspension/lift across the rendered non-safety surfaces, re-entry accept and
decline, 24h deliver/dismiss, 7d opt-out, resource visibility, anonymous
redirect-before-render, and the shared axe gate.
Walkthrough updates:
WALKTHROUGH/customer/09-account/profile-safety.mdnow documents the real BFF read contract, local recovery-state persistence, covered states and interactions, and remaining gaps: timeline/history, resource links, export, server writeback for recovery choices, operator parity, and cold offline.WALKTHROUGH/journeys/crisis-aware-tone-policy.mdandWALKTHROUGH/journeys/coverage.mdnow describe the live browser proof and keep the journey honestlypartialbecause customer-input-triggered browser activation, false-positive dismissal, public web safety surface, and re-frame e2e remain uncovered.
Verification:
-
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.tsx apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.test.tsx apps/oshun/web/e2e/profile-safety-crisis-recovery.spec.ts- passed; repo emitted the existing Next pages-directory warning
- post-rebase rerun after
origin/mainmoved to4eed79ba9e: passed with the same existing warning
-
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/app/profile/safety/ProfileSafetyJourney.test.tsx- first run: 5 failed by timeout because the test auth mock returned a new
getAccessTokenfunction every render, causing the component fetch effect to refire indefinitely - after stabilizing the auth mock accessor: 5 passed
- post-rebase rerun after
origin/mainmoved to4eed79ba9e: 5 passed
- first run: 5 failed by timeout because the test auth mock returned a new
-
Resource gate before typecheck / Playwright
- before typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers
- before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 12 GiB
- post-rebase before rerun: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 12 GiB
-
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved to4eed79ba9e: passed from Nx cache
-
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-safety-crisis-recovery.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 4 passed
- post-rebase rerun after
origin/mainmoved to4eed79ba9e: 4 passed
-
python3 V5/tools/validate-v5-docs.py- passed
-
pnpm exec prettier --check apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.tsx apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.test.tsx apps/oshun/web/e2e/profile-safety-crisis-recovery.spec.ts WALKTHROUGH/customer/09-account/profile-safety.md WALKTHROUGH/journeys/crisis-aware-tone-policy.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
-
git diff --check- passed
-
pnpm exec prettier --check apps/oshun/web/src/app/operator/audit/page.tsx apps/oshun/web/e2e/tenant-audit-log-investigation.spec.ts WALKTHROUGH/operator/operator-audit.md WALKTHROUGH/journeys/tenant-audit-log-investigation.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
-
git diff --check- passed
-
python3 V5/tools/validate-v5-docs.py- passed
-
git diff --check- passed
163. 2026-06-26 Tenant integrations downstream API-key auth probe#
Closed the downstream API-key-authenticated resource gap for
tenant-integrations-api-keys-webhooks. The BFF now exposes
GET /v1/integrations/auth-probe as a narrow tenant-resource probe backed by
the same registry store that creates API keys. It accepts x-oshun-api-key,
updates the redacted key's lastUsedAt, enforces tenant and required-scope
boundaries, honors IP allowlists, and rejects missing, unknown, revoked, and
expired keys without leaking raw tokens or hashes.
tenant-integrations-api-keys-webhooks-bff.spec.ts now drives the full route
against the real dev BFF: create key -> call tenant resource -> snapshot
lastUsedAt read-back, scope denial, tenant mismatch, IP denial, and
revoked-key denial. Store and Fastify route tests cover the same behavior below
the browser runner.
The journey remains partial only for tenant-admin UI controls, live outbound delivery retry/dead-letter workers, real connector health probes, and partner endpoint receipt.
Verification:
-
pnpm --dir apps/oshun/bff exec vitest run src/admin/admin-integrations-registry-store.test.ts src/__tests__/admin-integrations-registry-route.test.ts- passed: 27 passed
-
pnpm exec prettier --write apps/oshun/bff/src/admin/admin-integrations-registry-store.ts apps/oshun/bff/src/routes/admin-integrations-registry.ts apps/oshun/bff/src/admin/admin-integrations-registry-store.test.ts apps/oshun/bff/src/__tests__/admin-integrations-registry-route.test.ts apps/oshun/web/e2e/tenant-integrations-api-keys-webhooks-bff.spec.ts- passed
-
Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing build/test process; during Playwright, available memory stayed around 13 GiB
-
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/admin/admin-integrations-registry-store.ts apps/oshun/bff/src/routes/admin-integrations-registry.ts apps/oshun/bff/src/admin/admin-integrations-registry-store.test.ts apps/oshun/bff/src/__tests__/admin-integrations-registry-route.test.ts apps/oshun/web/e2e/tenant-integrations-api-keys-webhooks-bff.spec.ts- passed
-
pnpm nx run @oshun/bff:typecheck- passed
-
pnpm --dir apps/oshun/web typecheck- passed
-
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-integrations-api-keys-webhooks-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 2 passed
-
python3 tools/render-vdocs.py- passed
-
python3 V5/tools/validate-v5-docs.py- passed
-
git diff --check- passed
-
Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed around 12 GiB.
-
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-notifications-index.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 1 passed
68. 2026-06-25 Profile notifications mobile-grid addendum#
Closed the remaining /profile/notifications responsive-layout question in the
route walkthrough. The channel summary grid now uses intrinsic auto-fit/minmax
columns instead of a fixed two-column template, so desktop can show multiple
columns while phone widths stack the channel rows. The focused real-dev-infra
Playwright spec now includes a 390 px viewport assertion that the four real-BFF
channel cards render in one column without horizontal overflow.
Verification:
-
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/profile/notifications/page.tsx apps/oshun/web/e2e/profile-notifications-index.spec.ts- passed
-
pnpm --dir apps/oshun/web typecheck- passed
-
python3 V5/tools/validate-v5-docs.py- passed
-
git diff --check- passed
-
Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed around 12 GiB.
-
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-notifications-index.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 2 passed
69. 2026-06-25 Verify-email next-target/tap-target addendum#
Closed the /auth/verify-email route-walk gap around post-verification
continuation. The verify-email page walkthrough is now marked walked, the route
matrix row is promoted from drafted to walked, and the first-time anonymous
visitor coverage links call out both the real Mailpit verify-link journey and
the page-level round-trip spec. The Continue action now preserves a safe
app-relative next=/tara target through the onboarding handoff, drops unsafe
external next values to /, and has a measured 44 px minimum target height at
390 px width.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/auth/verify-email/page.tsx apps/oshun/web/src/components/auth/VerifyEmailConfirm.tsx apps/oshun/web/e2e/email-verify-roundtrip.spec.ts WALKTHROUGH/customer/00-public/auth-verify-email.md WALKTHROUGH/journeys/first-time-anonymous-visitor.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/README.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/auth/verify-email/page.tsx apps/oshun/web/src/components/auth/VerifyEmailConfirm.tsx apps/oshun/web/e2e/email-verify-roundtrip.spec.ts- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/auth/VerifyEmailConfirm.test.tsx- 5 passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 9 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/email-verify-roundtrip.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 6 passed
70. 2026-06-25 Assistant route walk/tap-target addendum#
Closed the /assistant route-walk gap in the route inventory. The assistant
entry route walkthrough is now marked walked, the route matrix row is promoted
from drafted to walked, and the route doc now ties the signed-in gate to
proxy.ts instead of leaving it as an open question. The explicit "Open
assistant" button now has a 44 px minimum target height, the mobile browser spec
measures it at 390 px, and the assistant preview card's primary and secondary
links are clicked through to /assistant and / respectively.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/assistant/AssistantEntryRoute.tsx apps/oshun/web/e2e/shared-shell-entry-routes.spec.ts apps/oshun/web/e2e/shell-surface-states.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts WALKTHROUGH/customer/02-home-discovery/assistant.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/assistant/AssistantEntryRoute.tsx apps/oshun/web/e2e/shared-shell-entry-routes.spec.ts apps/oshun/web/e2e/shell-surface-states.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/__tests__/middleware-public-paths.test.ts- 35 passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 7 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/shared-shell-entry-routes.spec.ts e2e/shell-surface-states.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 15 passed
71. 2026-06-25 Integrity appeal route walk/tap-target addendum#
Closed the /integrity/[verdictId]/appeal route-walk gap in the route
inventory. The appeal route walkthrough is now marked walked, the route matrix
row is promoted from drafted to walked, and the route doc now ties the signed-in
gate to proxy.ts with a proxy-unit assertion. The form controls now guarantee
a 44 px minimum touch target through the shared input style, and the browser
spec delays the real audit fetch long enough to prove the loading state before
measuring the name, narrative, relief, and File appeal controls at 390 px.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/integrity/IntegrityAppealWorkspace.tsx apps/oshun/web/e2e/integrity-appeal.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts WALKTHROUGH/customer/08-metis/integrity-verdictId-appeal.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/integrity/IntegrityAppealWorkspace.tsx apps/oshun/web/e2e/integrity-appeal.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/__tests__/middleware-public-paths.test.ts- 36 passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 9 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/integrity-appeal.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 13 passed
72. 2026-06-25 Notifications route loading/tap-target addendum#
Closed the /notifications route-walk loading and mobile-action gaps. The
full-page inbox now shows a dedicated [data-notifications-loading]
role="status" while the live feed request is pending, keeps the empty block
hidden until a successful empty response, and exposes 44 px tap targets for
mark-all-read, Reset filters, toggle-read, and dismiss. The route walkthrough is
now marked walked, the matrix row is promoted from drafted to walked, and the
proxy unit coverage asserts both anonymous redirect and signed-in pass-through
for /notifications.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/NotificationsCenterPanel.tsx apps/oshun/web/e2e/notifications-route.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts WALKTHROUGH/customer/02-home-discovery/notifications.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/NotificationsCenterPanel.tsx apps/oshun/web/e2e/notifications-route.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/__tests__/middleware-public-paths.test.ts- 37 passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 9 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/notifications-route.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 9 passed
73. 2026-06-25 Personas picker loading/retry/tap-target addendum#
Closed the /personas route-walk state and action-accessibility gaps. The
persona picker now distinguishes first-load status, retryable load failures,
true empty catalogue, consent-blocked no-eligible state, and post-action status
announcements. Select and clear controls expose explicit ARIA labels, busy /
disabled semantics, and 44 px minimum tap targets. The browser coverage keeps
the live BFF consent → select → active read-back → clear persistence path, and
adds deterministic route-stubbed loading, retry, empty-catalogue, and measured
tap-target assertions. The route walkthrough is now marked walked and the matrix
row is promoted from drafted to walked.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/personas/PersonaPicker.tsx apps/oshun/web/e2e/personas-picker.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts WALKTHROUGH/customer/10-lilith/personas.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/personas/PersonaPicker.tsx apps/oshun/web/e2e/personas-picker.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts- passed
pnpm --dir apps/oshun/web exec vitest run src/components/personas/PersonaPicker.test.tsx src/__tests__/middleware-public-paths.test.ts- 44 passed
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 9 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/personas-picker.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 9 passed
74. 2026-06-25 Operator LMS validator accessibility addendum#
Closed the /operator/lms route-walk validator semantics and footer target
gaps. The dry-run validator now uses a native disabled button for empty and
pending states, exposes aria-disabled / aria-busy, and announces validation
errors/results through alert/status regions. The focused browser coverage
continues to run the real-BFF validator legs and now also measures the validate
button plus footer action targets at 44 px. The route walkthrough is now marked
walked and the matrix row is promoted from drafted to walked.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/lilith/LmsConnectorValidateForm.tsx apps/oshun/web/src/app/operator/lms/page.tsx apps/oshun/web/e2e/operator-lms.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts WALKTHROUGH/operator/operator-lms.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/lilith/LmsConnectorValidateForm.tsx apps/oshun/web/src/app/operator/lms/page.tsx apps/oshun/web/e2e/operator-lms.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts- passed
pnpm --dir apps/oshun/web exec vitest run src/app/operator/lms/__tests__/page.test.tsx src/__tests__/middleware-public-paths.test.ts- 43 passed
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 9 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-lms.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 9 passed
75. 2026-06-25 Operator personas lifecycle accessibility addendum#
Closed the /operator/personas route-walk layout, tap-target, submit-state, and
proxy-gate gaps. The persona lifecycle console now stacks roster/detail at
mobile width, gives roster/form/apply controls 44 px minimum targets, exposes
the transition submit as a native disabled/busy button, announces transition
errors as alerts, and keeps the footer links at 44 px. The route walkthrough is
now marked walked and the matrix row is promoted from drafted to walked.
Verification:
psql --version- already installed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- already installed:
pnpm exec prettier --write apps/oshun/web/src/components/lilith/PersonaLifecycleConsole.tsx apps/oshun/web/src/components/lilith/PersonaLifecycleConsole.test.tsx apps/oshun/web/src/app/operator/personas/page.tsx apps/oshun/web/e2e/operator-personas-console.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts WALKTHROUGH/operator/operator-personas.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/lilith/PersonaLifecycleConsole.tsx apps/oshun/web/src/components/lilith/PersonaLifecycleConsole.test.tsx apps/oshun/web/src/app/operator/personas/page.tsx apps/oshun/web/e2e/operator-personas-console.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts- passed
pnpm --dir apps/oshun/web exec vitest run src/components/lilith/PersonaLifecycleConsole.test.tsx src/__tests__/middleware-public-paths.test.ts- 46 passed
- Resource gate before broad checks
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 8.8 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-personas-console.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 6 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/lilith/PersonaLifecycleConsole.tsx apps/oshun/web/src/components/lilith/PersonaLifecycleConsole.test.tsx apps/oshun/web/src/app/operator/personas/page.tsx apps/oshun/web/e2e/operator-personas-console.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts WALKTHROUGH/operator/operator-personas.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
76. 2026-06-25 Settings direct-route accessibility addendum#
Closed the /settings direct-route walk gaps for profile edit/save, sync,
export, sign-out, mobile tap targets, and proxy gating. ProfileSettingsPanel
now gives the edit/save/cancel icon controls, sync refresh, account shortcut,
and footer actions 44 px targets where needed; save/cancel/sign-out controls
also expose explicit labels or disabled/busy ARIA. The direct-route browser
coverage now exercises /settings itself rather than relying only on /profile
for save/sync behavior, and the route walkthrough plus matrix row are marked
walked.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/ProfileSettingsPanel.tsx apps/oshun/web/e2e/shared-shell-entry-routes.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts WALKTHROUGH/customer/09-account/settings.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/ProfileSettingsPanel.tsx apps/oshun/web/e2e/shared-shell-entry-routes.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts- passed
pnpm --dir apps/oshun/web exec vitest run src/__tests__/middleware-public-paths.test.ts- 41 passed
- Resource gate before broad checks
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 8.9 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/shared-shell-entry-routes.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 6 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/ProfileSettingsPanel.tsx apps/oshun/web/e2e/shared-shell-entry-routes.spec.ts apps/oshun/web/src/__tests__/middleware-public-paths.test.ts WALKTHROUGH/customer/09-account/settings.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
77. 2026-06-25 Neith inverse modeling evaluator accessibility addendum#
Closed the /studio/neith/inverse-modeling route-walk gaps for the live
fit-quality evaluator. The lane now exposes catalog and evaluate failures as
alerts, provides a native retry button for recoverable catalog outages, disables
and marks the submit button busy while evaluation is pending, announces results
through a status region, and keeps the payload, submit, retry, and quick-action
targets at or above 44 px. The walkthrough is marked walked while preserving the
open product mismatch between the current JSON evaluator and V1/TODOS.md §34's
image-to-parameter/export-manifest workflow.
Verification:
psql --version- already installed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- already installed:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioNeithInverseModelingWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-neith-inverse-modeling.spec.ts apps/oshun/web/src/app/studio/neith/inverse-modeling/page.tsx WALKTHROUGH/studio/domain-bridges/neith/studio-neith-inverse-modeling.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioNeithInverseModelingWorkspace.tsx apps/oshun/web/src/app/studio/neith/inverse-modeling/page.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-neith-inverse-modeling.spec.ts- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioNeithInverseModelingWorkspace.test.tsx src/components/__tests__/StudioNeithInverseModelingWorkspace.integration.test.tsx src/components/__tests__/StudioNeithInverseModelingPage.test.tsx src/components/__tests__/StudioNeithInverseModelingRouteMap.test.ts- 10 passed
- Resource gate before broad checks
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 9.6 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-neith-inverse-modeling.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 6 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/studio/StudioNeithInverseModelingWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-neith-inverse-modeling.spec.ts apps/oshun/web/src/app/studio/neith/inverse-modeling/page.tsx WALKTHROUGH/studio/domain-bridges/neith/studio-neith-inverse-modeling.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
78. 2026-06-25 Library collection direct-route state addendum#
Closed the /library/collection/[collectionId] direct-route state gaps for
found, unknown, stored-custom, corrupt-storage, query-seeded, edit-persisted,
and add/remove membership cases. Unknown collection IDs now keep the URL but
resolve to normal filtered Library mode instead of silently selecting the first
default collection. The collection E2E seeds real BFF saved items for the
authenticated browser session, blocks service workers for deterministic reads,
and verifies localStorage custom collection hydration, invalid item-id
sanitization, follow-up edit persistence across reload, corrupt payload
fallback, create-from-filter navigation, membership count recomputation,
archive, and the desktop return lane.
Verification:
psql --version- already installed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- already installed:
pnpm exec prettier --write apps/oshun/web/src/components/library/LibraryDashboard.tsx apps/oshun/web/src/components/library/__tests__/LibraryDashboard.test.tsx apps/oshun/web/e2e/library-collection-management.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/library/LibraryDashboard.tsx apps/oshun/web/src/components/library/__tests__/LibraryDashboard.test.tsx apps/oshun/web/e2e/library-collection-management.spec.ts- passed
pnpm --dir apps/oshun/web exec vitest run src/components/library/__tests__/LibraryDashboard.test.tsx- 25 passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 9 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/library-collection-management.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 6 passed
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/library/LibraryDashboard.tsx apps/oshun/web/src/components/library/__tests__/LibraryDashboard.test.tsx apps/oshun/web/e2e/library-collection-management.spec.ts WALKTHROUGH/customer/02-home-discovery/library-collection-collectionId.md WALKTHROUGH/journeys/library-save-collection-share.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
79. 2026-06-25 Profile Telegram bridge direct-route addendum#
Closed the /profile/telegram page-DOM coverage gap for the customer Telegram
bridge. The route now exposes non-visual state anchors for the not-linked and
linked cards, and the new Playwright spec drives the real BFF link lifecycle:
authenticated GET /v1/telegram/link mints a nonce, the page renders the exact
t.me deep-link href, POST /telegram/webhook with /start link-<nonce>
completes the link, the BFF read-back reports linked: true, and the route
reloads into the linked card with the /unlink instruction. The same spec
checks footer navigation targets and proves anonymous users redirect before the
route renders.
Verification:
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 12 GiB.
pnpm exec prettier --write apps/oshun/web/src/app/profile/telegram/page.tsx apps/oshun/web/e2e/profile-telegram-bridge.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/profile/telegram/page.tsx apps/oshun/web/e2e/profile-telegram-bridge.spec.ts- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-telegram-bridge.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 3 passed
pnpm exec prettier --write apps/oshun/web/src/app/profile/telegram/page.tsx apps/oshun/web/e2e/profile-telegram-bridge.spec.ts WALKTHROUGH/customer/09-account/profile-telegram.md WALKTHROUGH/journeys/telegram-bot-assistant-delivery.md WALKTHROUGH/journeys/coverage.md- passed
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/profile/telegram/page.tsx apps/oshun/web/e2e/profile-telegram-bridge.spec.ts WALKTHROUGH/customer/09-account/profile-telegram.md WALKTHROUGH/journeys/telegram-bot-assistant-delivery.md WALKTHROUGH/journeys/coverage.md- passed
git diff --check- passed
80. 2026-06-25 Billing index direct-route addendum#
Closed the /billing direct-route coverage gap for the static billing
directory. The page now exposes stable anchors for the card, rail links, and
steward mailto: link; its bare main surface uses 100svh and safe-area-aware
padding; and each rail/mail target has a 44 px tap floor. The Playwright spec
seeds a real customer session, verifies the signed-in page-DOM render, checks
the crypto/profile/AAA/mailto hrefs, proves the phone viewport has no horizontal
overflow, and confirms anonymous users redirect to /welcome before the billing
page renders.
Verification:
psql --version- already installed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- already installed:
pnpm exec prettier --write apps/oshun/web/src/app/billing/page.tsx apps/oshun/web/e2e/billing-index.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/billing/page.tsx apps/oshun/web/e2e/billing-index.spec.ts- passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 12 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/billing-index.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 3 passed
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/billing/page.tsx apps/oshun/web/e2e/billing-index.spec.ts WALKTHROUGH/customer/09-account/billing.md WALKTHROUGH/journeys/sign-up-and-pay-crypto.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
81. 2026-06-25 Operator index and tenant-console direct-route addendum#
Closed the page-DOM/direct-route layer for the operator index and tenant
console, and recorded the existing incident-queue smoke in the route
walkthrough. The operator index now exposes stable anchors for the main region,
surface grid, and each shipped surface link. The tenant console now exposes
stable anchors for the main region, KPI cells, member header columns, member
rows, fixture plan/status variants, and the inert Export CSV placeholder. The
Playwright spec verifies signed-in /operator, all four surface
codes/titles/hrefs, 44 px surface-link targets, keyboard Enter into
/operator/tenant, click navigation into /operator/admin, signed-in
/operator/tenant KPI/table/dialog state, signed-in /operator/incidents
severity/mitigation smoke, and anonymous redirect-before-render for /operator
and /operator/tenant.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/operator/page.tsx apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/e2e/operator-surfaces.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/operator/page.tsx apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/e2e/operator-surfaces.spec.ts- passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 8.6 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-surfaces.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 5 passed
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/operator/page.tsx apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/e2e/operator-surfaces.spec.ts WALKTHROUGH/operator/operator-overview.md WALKTHROUGH/operator/operator-tenant.md WALKTHROUGH/operator/operator-incidents.md WALKTHROUGH/journeys/tenant-onboard.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
82. 2026-06-25 Operator audit direct-route addendum#
Closed the direct-route/page-DOM coverage layer for /operator/audit while
preserving the existing real-BFF audit-investigation journey. The route now has
stable anchors for the page, static ledger table, empty fallback, ledger rows,
row action/target-kind attributes, and footer. Column headers carry scope. The
Playwright journey now verifies signed-in /operator/audit, real /v1/audit
fixture rows, action/target-kind row attributes, all footer hrefs (/operator,
/operator/incidents, /operator/personas, /operator/sso), the existing
incidents/admin entry points, anonymous redirect-before-render, and the explorer
UI round-trip over the live BFF bridge.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/operator/audit/page.tsx apps/oshun/web/e2e/tenant-audit-log-investigation.spec.ts WALKTHROUGH/operator/operator-audit.md WALKTHROUGH/journeys/tenant-audit-log-investigation.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/operator/audit/page.tsx apps/oshun/web/e2e/tenant-audit-log-investigation.spec.ts- passed (repo emitted the existing Next pages-directory warning)
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 8.6 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-audit-log-investigation.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 12 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm --dir apps/oshun/web typecheck- passed
83. 2026-06-25 Operator SSO direct-route and create-leg addendum#
Closed the stale /operator/sso route walkthrough gap and added the missing
browser create interaction for the shipped SSO editor. The route now exposes
stable anchors for the page, roster, empty fallback, roster cards, protocol /
status / metadata / last-sync fields, and footer. The Playwright SSO journey now
verifies signed-in /operator/sso, live BFF-seeded SAML/OIDC roster cards,
stable card protocol/status attributes, footer hrefs (/operator,
/operator/tenants, /operator/lms, /operator/audit), anonymous
redirect-before-render, the real /v1/sso envelope, and create/edit/delete/test
editor flows over the live admin SSO BFF bridge.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/operator/sso/page.tsx apps/oshun/web/e2e/tenant-sso-config.spec.ts WALKTHROUGH/operator/operator-sso.md WALKTHROUGH/journeys/tenant-sso-config-saml-oidc-claim-mapping.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/operator/sso/page.tsx apps/oshun/web/e2e/tenant-sso-config.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/web exec vitest run src/app/operator/sso/__tests__/page.test.tsx src/components/operator/OperatorSsoEditor.test.tsx- 10 passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 8.4 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-sso-config.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 12 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/operator/sso/page.tsx apps/oshun/web/e2e/tenant-sso-config.spec.ts WALKTHROUGH/operator/operator-sso.md WALKTHROUGH/journeys/tenant-sso-config-saml-oidc-claim-mapping.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
84. 2026-06-25 Operator incidents direct-route addendum#
Closed the direct-route/page-DOM coverage layer for /operator/incidents while
preserving the existing real-BFF incident triage journey. The route now has
stable anchors for the page, open/recent lanes, empty fallback, incident lists,
real incident rows, severity and mitigation fields, and footer. The Playwright
journey now verifies signed-in /operator/incidents, real BFF row ids
(inc-2026-05-23-bff-503, inc-2026-05-25-themis-queue), severity and
mitigation attributes, footer hrefs (/operator, /operator/audit,
/operator/tenants), anonymous redirect-before-render, and the existing admin
decision/lifecycle flows over the live BFF bridge.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/operator/incidents/page.tsx apps/oshun/web/e2e/incident-triage.spec.ts WALKTHROUGH/operator/operator-incidents.md WALKTHROUGH/journeys/incident-triage.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/operator/incidents/page.tsx apps/oshun/web/e2e/incident-triage.spec.ts- passed (repo emitted the existing Next pages-directory warning)
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 8.5 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/incident-triage.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 12 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/operator/incidents/page.tsx apps/oshun/web/e2e/incident-triage.spec.ts WALKTHROUGH/operator/operator-incidents.md WALKTHROUGH/journeys/incident-triage.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
85. 2026-06-25 Operator tenants direct-route addendum#
Closed the direct-route/page-DOM coverage layer for /operator/tenants while
preserving the existing tenant-onboard and member-management journeys. The route
now has stable anchors for the page, roster, empty fallback, tenant rows, row
plan/label/member/id fields, and footer. The Playwright operator-surfaces
journey now verifies signed-in /operator/tenants, real BFF tenant row ids
(tenant-oxbow, tenant-redbird, tenant-house), descending member-count
ordering, row fields, footer hrefs (/operator, /operator/sso,
/operator/incidents), anonymous redirect-before-render, and the existing
operator hub plus tenant-console dialog coverage.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/operator/tenants/page.tsx apps/oshun/web/e2e/operator-surfaces.spec.ts WALKTHROUGH/operator/operator-tenants.md WALKTHROUGH/journeys/tenant-onboard.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/operator/tenants/page.tsx apps/oshun/web/e2e/operator-surfaces.spec.ts- passed (repo emitted the existing Next pages-directory warning)
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 8.9 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-surfaces.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 6 passed
- Resource gate before typecheck
- 15 GiB RAM, 12 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/operator/tenants/page.tsx apps/oshun/web/e2e/operator-surfaces.spec.ts WALKTHROUGH/operator/operator-tenants.md WALKTHROUGH/journeys/tenant-onboard.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
86. 2026-06-25 Operator tenant-console row-cell addendum#
Closed the row-level page-DOM coverage layer for /operator/tenant while
preserving the existing tenant-onboard/member-management journeys. The tenant
console now exposes stable anchors for the header band, tenant count heading,
action row, and every body-row cell. The Playwright operator-surfaces journey
now verifies all eight fixture rows cell-by-cell (id, member, plan, status,
sittings, last-seen, action placeholder), row plan/status attributes, the
visible ellipsis action placeholders, absence of hidden row links/buttons/focus
targets, and the existing Invite / + Add member dialog focus checks.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/e2e/operator-surfaces.spec.ts WALKTHROUGH/operator/operator-tenant.md WALKTHROUGH/journeys/tenant-onboard.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/e2e/operator-surfaces.spec.ts- passed (repo emitted the existing Next pages-directory warning)
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 9.1 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-surfaces.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 6 passed
- Resource gate before typecheck
- 15 GiB RAM, 12 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/e2e/operator-surfaces.spec.ts WALKTHROUGH/operator/operator-tenant.md WALKTHROUGH/journeys/tenant-onboard.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
87. 2026-06-25 Operator Metis stable-anchor addendum#
Closed the direct-route/page-DOM coverage layer for /operator/metis while
preserving the existing real-BFF BYOM ingest and decision journeys. The operator
Metis route now exposes stable anchors for the page, header, KPI strip, review
queue, review rows and cells, OneRoster card, tutor telemetry card, and Themis
flag card. The Playwright BYOM ingest journey now verifies signed-in
/operator/metis, anonymous redirect-before-render, all five KPI fixture
values, all five review rows cell-by-cell, the LDecisionChip state distribution,
OneRoster sync fields, tutor telemetry sparkline, and Themis flag fields.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/lilith/metis.tsx apps/oshun/web/e2e/metis-byom-ingest.spec.ts WALKTHROUGH/operator/operator-metis.md WALKTHROUGH/journeys/metis-byom-ingest-to-course.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/lilith/metis.tsx apps/oshun/web/e2e/metis-byom-ingest.spec.ts- passed (repo emitted the existing Next pages-directory warning)
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 8.4 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/metis-byom-ingest.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 16 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm --dir apps/oshun/web typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/lilith/metis.tsx apps/oshun/web/e2e/metis-byom-ingest.spec.ts WALKTHROUGH/operator/operator-metis.md WALKTHROUGH/journeys/metis-byom-ingest-to-course.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
88. 2026-06-25 Operator admin inbox row-cell addendum#
Closed the direct /operator/admin page-DOM coverage layer while preserving and
stabilizing the incident-triage real-BFF decision and lifecycle coverage. The
admin inbox now exposes stable anchors for the page, header, audit-log entry
point, console, selected detail card, detail header/subtitle/severity,
drift-source rows and cells, every queue row cell, and incident action
status/severity. The BFF operator-incidents route now has an opt-in test-harness
reset path so destructive lifecycle E2E coverage can start from a seeded store
without weakening production idempotency/conflict behavior. The Playwright
incident-triage journey now verifies signed-in /operator/admin, anonymous
redirect-before-render, all six fixture inbox rows cell-by-cell, filter-chip
behavior, selected detail-card attributes, all three drift-source rows, and the
real audited decision and incident-action flows.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/admin/operator-incident-store.ts apps/oshun/bff/src/routes/admin-operator-incidents.ts apps/oshun/bff/src/app.ts apps/oshun/bff/src/__tests__/admin-operator-incidents-route.test.ts apps/oshun/web/playwright.config.ts apps/oshun/web/src/components/lilith/AdminInboxIncidentActions.tsx apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/src/components/lilith/AdminInboxConsole.tsx apps/oshun/web/src/components/lilith/AdminInboxQueue.tsx apps/oshun/web/e2e/incident-triage.spec.ts WALKTHROUGH/operator/operator-admin.md WALKTHROUGH/journeys/incident-triage.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/admin/operator-incident-store.ts apps/oshun/bff/src/routes/admin-operator-incidents.ts apps/oshun/bff/src/app.ts apps/oshun/bff/src/__tests__/admin-operator-incidents-route.test.ts apps/oshun/web/playwright.config.ts apps/oshun/web/src/components/lilith/AdminInboxIncidentActions.tsx apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/src/components/lilith/AdminInboxConsole.tsx apps/oshun/web/src/components/lilith/AdminInboxQueue.tsx apps/oshun/web/e2e/incident-triage.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-operator-incidents-route.test.ts- 11 passed
pnpm --dir apps/oshun/bff exec vitest run src/admin/operator-incident-store.test.ts- 24 passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 8.6 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/incident-triage.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 13 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/bff:typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/bff/src/admin/operator-incident-store.ts apps/oshun/bff/src/routes/admin-operator-incidents.ts apps/oshun/bff/src/app.ts apps/oshun/bff/src/__tests__/admin-operator-incidents-route.test.ts apps/oshun/web/playwright.config.ts apps/oshun/web/src/components/lilith/AdminInboxIncidentActions.tsx apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/src/components/lilith/AdminInboxConsole.tsx apps/oshun/web/src/components/lilith/AdminInboxQueue.tsx apps/oshun/web/e2e/incident-triage.spec.ts WALKTHROUGH/operator/operator-admin.md WALKTHROUGH/journeys/incident-triage.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
89. 2026-06-25 Operator incidents row-cell addendum#
Closed the direct /operator/incidents page-DOM coverage layer while preserving
the read-only incident clipboard behavior. The route now exposes stable anchors
for the page generatedAt timestamp, masthead open/recent counts, lane/list
counts, row metadata, and every visible row cell. The Playwright incident-triage
journey now verifies the real BFF incident feed as exactly one open
investigating row and one recently closed mitigated row, including lane
placement, row IDs, severity/mitigation/opened-at/acknowledged-by attributes,
visible severity/summary/meta/mitigation cells, footer links, and anonymous
redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/operator/incidents/page.tsx apps/oshun/web/e2e/incident-triage.spec.ts WALKTHROUGH/operator/operator-incidents.md WALKTHROUGH/journeys/incident-triage.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/operator/incidents/page.tsx apps/oshun/web/e2e/incident-triage.spec.ts- passed (repo emitted the existing Next pages-directory warning)
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 8.2 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/incident-triage.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 13 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/operator/incidents/page.tsx apps/oshun/web/e2e/incident-triage.spec.ts WALKTHROUGH/operator/operator-incidents.md WALKTHROUGH/journeys/incident-triage.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
90. 2026-06-25 Operator audit ledger row-cell addendum#
Closed the direct /operator/audit static-ledger page-DOM coverage layer while
preserving the read-only ledger and live explorer behavior. The audit route now
exposes stable anchors for the page generatedAt timestamp, cursor, masthead row
count, table count, column identifiers, row metadata, and every visible
When/Actor/Action/Target cell. The Playwright tenant-audit-log-investigation
journey now verifies the real /v1/audit fixture as exactly three rows sorted
newest-first, including row IDs, actor/action/target/occurred-at metadata,
visible cells, footer links, and anonymous redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/operator/audit/page.tsx apps/oshun/web/e2e/tenant-audit-log-investigation.spec.ts WALKTHROUGH/operator/operator-audit.md WALKTHROUGH/journeys/tenant-audit-log-investigation.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/operator/audit/page.tsx apps/oshun/web/e2e/tenant-audit-log-investigation.spec.ts- passed (repo emitted the existing Next pages-directory warning)
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 8.4 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-audit-log-investigation.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 12 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/operator/audit/page.tsx apps/oshun/web/e2e/tenant-audit-log-investigation.spec.ts WALKTHROUGH/operator/operator-audit.md WALKTHROUGH/journeys/tenant-audit-log-investigation.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
91. 2026-06-25 Operator SSO roster row-cell addendum#
Closed the direct /operator/sso roster page-DOM coverage layer while
preserving the live SSO editor behavior. The route now exposes stable anchors
for the page generatedAt timestamp, masthead and roster connection counts,
connection-card metadata, and every visible tenant/protocol/IdP/sync field. The
Playwright tenant-sso-config journey now verifies the live BFF-seeded SAML and
OIDC cards through those attributes and field cells while keeping the editor
create/edit/delete/test legs over the real admin SSO BFF.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/operator/sso/page.tsx apps/oshun/web/e2e/tenant-sso-config.spec.ts WALKTHROUGH/operator/operator-sso.md WALKTHROUGH/journeys/tenant-sso-config-saml-oidc-claim-mapping.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/operator/sso/page.tsx apps/oshun/web/e2e/tenant-sso-config.spec.ts- passed (repo emitted the existing Next pages-directory warning)
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed above 8.7 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-sso-config.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 12 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/operator/sso/page.tsx apps/oshun/web/e2e/tenant-sso-config.spec.ts WALKTHROUGH/operator/operator-sso.md WALKTHROUGH/journeys/tenant-sso-config-saml-oidc-claim-mapping.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
92. 2026-06-25 Operator LMS roster row-cell addendum#
Closed the direct /operator/lms roster page-DOM evidence gap without changing
the visual layout. The route now exposes stable anchors for the server fetch
generatedAt timestamp, masthead connector/invalid counts, roster count, valid
connector metadata, per-field roster cells, invalid descriptor metadata, and
per-issue code/path/severity. The Playwright operator-lms journey now verifies
the live dev-infra seeded Canvas connector and retained Moodle invalid
descriptor through those anchors, while preserving the existing real-BFF dry-run
validation legs.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/operator/lms/page.tsx apps/oshun/web/e2e/operator-lms.spec.ts WALKTHROUGH/operator/operator-lms.md WALKTHROUGH/journeys/lms-connectors-operator.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/operator/lms/page.tsx apps/oshun/web/e2e/operator-lms.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/app/operator/lms/__tests__/page.test.tsx- 1 file passed; 4 tests passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 8.6 GiB and returned to 13 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-lms.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 9 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/operator/lms/page.tsx apps/oshun/web/e2e/operator-lms.spec.ts WALKTHROUGH/operator/operator-lms.md WALKTHROUGH/journeys/lms-connectors-operator.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
93. 2026-06-25 Metis BYOM specimen row-cell addendum#
Closed the customer /metis/byom page-DOM evidence gap while preserving the
display-only specimen behavior. The BYOM page now exposes stable anchors for the
page material/outline counts, header, generate CTA, material table count and
columns, every material row and visible cell, drop-zone constraints, upload
action wrappers, generated-guide counts/meta/title, all outline rows and cells,
provenance copy, and guide action wrappers. The Metis BYOM Playwright journey
now verifies the complete customer specimen through those anchors before
continuing to the existing operator /operator/metis assertions.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/lilith/metis.tsx apps/oshun/web/e2e/metis-byom-ingest.spec.ts WALKTHROUGH/customer/08-metis/metis-byom.md WALKTHROUGH/journeys/metis-byom-ingest-to-course.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/lilith/metis.tsx apps/oshun/web/e2e/metis-byom-ingest.spec.ts- passed (repo emitted the existing Next pages-directory warning)
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 8.4 GiB and returned to 12 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/metis-byom-ingest.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 16 passed
- Resource gate before typecheck
- 15 GiB RAM, 12 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/lilith/metis.tsx apps/oshun/web/e2e/metis-byom-ingest.spec.ts WALKTHROUGH/customer/08-metis/metis-byom.md WALKTHROUGH/journeys/metis-byom-ingest-to-course.md WALKTHROUGH/journeys/coverage.md- passed
git diff --check- passed
94. 2026-06-25 Arete weekly-review specimen row-cell addendum#
Closed the customer /arete/review four-act specimen evidence gap without
changing the Lilith visual design. The page now exposes stable anchors for route
week/count metadata, masthead/layout regions, every act block and its
title/kicker/duration/accent/body-part/list cells, every KPI value/color cell,
the mood chart/caption, all seven journal rows and day/text cells, and the
footer note/action region. The Arete weekly-review Playwright journey now
asserts those anchors before exercising the existing margin-suggestion and
no-shame checks; the separate close spec remains the real-BFF proof for
close/save and /arete continuity read-back.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/lilith/arete.tsx apps/oshun/web/e2e/arete-weekly-review.spec.ts WALKTHROUGH/customer/04-arete/arete-review.md WALKTHROUGH/journeys/weekly-review-arete.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec prettier --write apps/oshun/web/src/components/lilith/AreteReview.test.tsx- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/lilith/arete.tsx apps/oshun/web/src/components/lilith/AreteReview.test.tsx apps/oshun/web/e2e/arete-weekly-review.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/components/lilith/AreteReview.test.tsx- 1 file passed; 3 tests passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 8.4 GiB and returned to 12 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/arete-weekly-review.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 11 passed
- Resource gate before typecheck
- 15 GiB RAM, 12 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- first run failed on a corrupted generated
.next/dev/types/routes.d.tsemitted by the prior Next dev server; removed untrackedapps/oshun/web/.next, reran after a fresh resource gate with 13 GiB available, and the clean typecheck passed
- first run failed on a corrupted generated
python3 V5/tools/validate-v5-docs.py- passed
96. 2026-06-25 Metis tutor row-cell addendum#
Closed the customer /metis/tutor page-DOM evidence gap without changing the
Lilith tutor layout. The page now exposes stable anchors for transcript/user/
assistant/citation/context counts, the header actions, every transcript turn and
its speaker/body/turn/citation cells, citation provenance attributes, right-rail
context rows, disclosure copy, end-of-session note cells, and composer
session/status/draft/input/send state. The Playwright tutor journey now verifies
those anchors before exercising the existing citation navigation, composer
send/keyboard, context, disclosure, note, and no-live-voice assertions.
Verification:
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/lilith/metis.tsx apps/oshun/web/src/components/lilith/MetisTutorComposer.tsx apps/oshun/web/src/components/lilith/MetisTutorComposer.test.tsx apps/oshun/web/e2e/metis-tutor-session.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/components/lilith/MetisTutorComposer.test.tsx- 1 file passed; 5 tests passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 9.0 GiB and returned to 13 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/metis-tutor-session.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 18 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --write apps/oshun/web/e2e/metis-tutor-session.spec.ts WALKTHROUGH/customer/08-metis/metis-tutor.md WALKTHROUGH/journeys/psyche-tutor-live-session-to-graded-record.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec prettier --check apps/oshun/web/src/components/lilith/metis.tsx apps/oshun/web/src/components/lilith/MetisTutorComposer.tsx apps/oshun/web/src/components/lilith/MetisTutorComposer.test.tsx apps/oshun/web/e2e/metis-tutor-session.spec.ts WALKTHROUGH/customer/08-metis/metis-tutor.md WALKTHROUGH/journeys/psyche-tutor-live-session-to-graded-record.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
97. 2026-06-25 Themis appeal row-cell addendum#
Closed the customer /integrity/<verdictId>/appeal page-DOM evidence gap
without changing the route contract. The page now exposes stable anchors for the
displayed verdict id, form intro, each field row, submit blocked/ready/filing
state, the optional institution policy link, the filed workspace's due-process
summary, and filed status/case/adjudicator fields. The Playwright journey now
asserts those anchors against the real BFF appeal route before continuing
through the existing teacher override/uphold and validation gates.
Verification:
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/integrity/IntegrityAppealWorkspace.tsx apps/oshun/web/e2e/integrity-appeal.spec.ts- passed (repo emitted the existing Next pages-directory warning)
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 8.7 GiB and returned to 13 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/integrity-appeal.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 13 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/integrity/IntegrityAppealWorkspace.tsx apps/oshun/web/e2e/integrity-appeal.spec.ts WALKTHROUGH/customer/08-metis/integrity-verdictId-appeal.md WALKTHROUGH/journeys/themis-assessment-appeal.md WALKTHROUGH/journeys/coverage.md- passed
git diff --check- passed
98. 2026-06-25 Atelier image row-cell addendum#
Closed the /atelier and /atelier/image evidence gaps by adding stable page
and row-cell anchors for the atelier index rooms/rules, the image room plate
head, step rail, prompt/specimen/contact sheet, selected plate fields,
provenance rows, and save/cast action states. The Playwright journey now checks
the index, hardcoded image-room composition, save-to-library path, and cast
provider-not-configured seam with row-scoped assertions.
While extending the save assertion, the first focused Playwright run exposed a real signed-in library-store race: an in-flight server hydrate GET could replace an optimistic local save with an empty server snapshot. The store now tracks pending optimistic saves/deletes across hydrate and server sync, with unit tests covering both "save during hydrate" and "unsave during hydrate" races.
Verification:
which psql && psql --version/usr/bin/psql;psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
pnpm exec prettier --write apps/oshun/web/src/lib/library/webLibraryStore.ts apps/oshun/web/src/lib/library/webLibraryStore.sync.test.ts apps/oshun/web/src/components/lilith/atelier.tsx apps/oshun/web/src/components/lilith/AtelierPlateActions.tsx apps/oshun/web/e2e/atelier-image-to-library.spec.ts apps/oshun/web/e2e/atelier-plate-actions.spec.ts WALKTHROUGH/customer/11-atelier/atelier.md WALKTHROUGH/customer/11-atelier/atelier-image.md WALKTHROUGH/journeys/atelier-image-to-library.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/atelier-image-to-library.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/lib/library/webLibraryStore.ts apps/oshun/web/src/lib/library/webLibraryStore.sync.test.ts apps/oshun/web/src/components/lilith/atelier.tsx apps/oshun/web/src/components/lilith/AtelierPlateActions.tsx apps/oshun/web/e2e/atelier-image-to-library.spec.ts apps/oshun/web/e2e/atelier-plate-actions.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/web exec vitest run src/lib/library/webLibraryStore.sync.test.ts- 1 file passed; 7 tests passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during the passing Playwright rerun, available memory stayed at or above 8.8 GiB and returned to 13 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/atelier-image-to-library.spec.ts e2e/atelier-plate-actions.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first focused run: 12 passed, 1 failed on the save hydrate race described above
- rerun after the store fix: 13 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/lib/library/webLibraryStore.ts apps/oshun/web/src/lib/library/webLibraryStore.sync.test.ts apps/oshun/web/src/components/lilith/atelier.tsx apps/oshun/web/src/components/lilith/AtelierPlateActions.tsx apps/oshun/web/e2e/atelier-image-to-library.spec.ts apps/oshun/web/e2e/atelier-plate-actions.spec.ts WALKTHROUGH/customer/11-atelier/atelier.md WALKTHROUGH/customer/11-atelier/atelier-image.md WALKTHROUGH/journeys/atelier-image-to-library.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/atelier-image-to-library.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
99. 2026-06-25 Tenant roster export addendum#
Closed the /operator/tenant Export CSV placeholder gap. The tenant console now
mounts a small TenantMemberExportCsv client island that generates
pacific-theological-members.csv from the same TenantConsoleData.rows
rendered in the members table. The tenant-onboard and
tenant-bulk-member-invite-SCIM Playwright specs assert the downloaded filename,
canonical column order, representative row content, and exported state, while
the broader operator surface smoke checks the export control anchors and row
count.
CSV import, bulk dry-run/commit, outbound invite email, invitee first-login, and audit-chain reconciliation remain documented product gaps; this slice only wires the existing rendered roster export.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/lilith/TenantMemberExportCsv.tsx apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/e2e/tenant-onboard.spec.ts apps/oshun/web/e2e/tenant-member-invite-scim.spec.ts apps/oshun/web/e2e/operator-surfaces.spec.ts WALKTHROUGH/operator/operator-tenant.md WALKTHROUGH/journeys/tenant-onboard.md WALKTHROUGH/journeys/tenant-bulk-member-invite-scim.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/lilith/TenantMemberExportCsv.tsx apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/e2e/tenant-onboard.spec.ts apps/oshun/web/e2e/tenant-member-invite-scim.spec.ts apps/oshun/web/e2e/operator-surfaces.spec.ts- passed (repo emitted the existing Next pages-directory warning)
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 8.5 GiB and returned to 13 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-onboard.spec.ts e2e/operator-surfaces.spec.ts e2e/tenant-member-invite-scim.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 21 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/lilith/TenantMemberExportCsv.tsx apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/e2e/tenant-onboard.spec.ts apps/oshun/web/e2e/tenant-member-invite-scim.spec.ts apps/oshun/web/e2e/operator-surfaces.spec.ts WALKTHROUGH/operator/operator-tenant.md WALKTHROUGH/journeys/tenant-onboard.md WALKTHROUGH/journeys/tenant-bulk-member-invite-scim.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
100. 2026-06-25 Isis provenance route-state addendum#
Closed the /operator/admin/isis/provenance route-state evidence gap. The Isis
provenance inspector now exposes stable tenant-scope and bundle-row
metadata/time anchors, the component unit test protects those anchors, and the
real-dev-infra citation-drift Playwright spec now proves the clean platform
ledger, tenant-preserving bundle navigation, unknown-bundle fallback, empty
tenant ledger, unavailable ledger, broken tenant verdict, generated-artifact
inspector, and anonymous redirect-before-render states.
The page remains read-only: recheck, re-render, retract, and downstream invalidation write actions are still documented product gaps rather than faked browser interactions.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/admin/IsisProvenanceInspector.tsx apps/oshun/web/src/components/admin/__tests__/IsisProvenanceInspector.test.tsx apps/oshun/web/e2e/citation-drift-resolution.spec.ts WALKTHROUGH/operator/operator-admin-isis-provenance.md WALKTHROUGH/journeys/citation-drift-resolution.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/admin/IsisProvenanceInspector.tsx apps/oshun/web/src/components/admin/__tests__/IsisProvenanceInspector.test.tsx apps/oshun/web/e2e/citation-drift-resolution.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/components/admin/__tests__/IsisProvenanceInspector.test.tsx- 1 file passed; 6 tests passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 8.0 GiB and returned to 12 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/citation-drift-resolution.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 10 passed
- Resource gate before typecheck
- 15 GiB RAM, 12 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
101. 2026-06-25 Operator index route-state addendum#
Closed the /operator index route-state evidence gap. The operator index now
exposes stable anchors for the top operator bar, page count, eyebrow, title
rule, responsive surface grid, surface codes, titles, descriptions, open labels,
and href metadata. The shared Lilith operator bar now wraps its default status
copy instead of forcing mobile horizontal overflow, and the Playwright journey
proves the 390 px one-column grid/no-overflow state.
Surface click telemetry remains a documented product gap; this slice records it instead of faking an event emitter.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/operator/page.tsx apps/oshun/web/src/design-system/lilith/shells.tsx apps/oshun/web/e2e/operator-surfaces.spec.ts WALKTHROUGH/operator/operator-overview.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/operator/page.tsx apps/oshun/web/src/design-system/lilith/shells.tsx apps/oshun/web/e2e/operator-surfaces.spec.ts- passed (repo emitted the existing Next pages-directory warning)
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during the passing Playwright rerun, available memory stayed at or above 9.3 GiB and returned to 13 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-surfaces.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first focused run: 6 passed, 1 failed on the new mobile no-overflow assertion with 49 px document overflow from the shared operator bar status copy
- rerun after the
LOperatorBarwrapping fix: 7 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/operator/page.tsx apps/oshun/web/src/design-system/lilith/shells.tsx apps/oshun/web/e2e/operator-surfaces.spec.ts WALKTHROUGH/operator/operator-overview.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
102. 2026-06-25 Studio adoption ops route-state addendum#
Closed the /studio/adoption-ops route-state evidence gap. The route now
exposes stable anchors for the Studio breadcrumb, route-map rows, footer
quick-actions, form pending state, and per-stage analyzer result cells. The
workspace now keeps the analyze submit control disabled and busy while the real
BFF request is in flight, and the dedicated Playwright spec proves the
admin-scoped catalog, ready form, real analyzer result, malformed-JSON client
validation, real BFF 400 validation detail, catalog loading/error branch,
pending-submit branch, route map, footer targets, and non-admin unauthorized
fail-closed state.
The route-map subroutes remain documented as forward-looking; only the
/studio/adoption-ops page exists under the current route subtree.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/adoption-ops/page.tsx apps/oshun/web/src/components/studio/StudioAdoptionOpsWorkspace.tsx apps/oshun/web/e2e/studio-adoption-ops.spec.ts WALKTHROUGH/studio/operations/studio-adoption-ops.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/studio/adoption-ops/page.tsx apps/oshun/web/src/components/studio/StudioAdoptionOpsWorkspace.tsx apps/oshun/web/e2e/studio-adoption-ops.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/components/__tests__/StudioAdoptionOpsPage.test.tsx src/components/__tests__/StudioAdoptionOpsWorkspace.test.tsx src/components/__tests__/StudioAdoptionOpsWorkspace.integration.test.tsx src/components/__tests__/StudioAdoptionOpsRouteMap.test.ts- 4 files passed; 7 tests passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-adoption-ops.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first focused run: 3 passed, 2 failed on the submit touch-target height and a stale validation selector
- second focused run: 4 passed, 1 failed on footer quick-action touch-target height
- rerun after the accessibility and selector fixes: 5 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/studio/adoption-ops/page.tsx apps/oshun/web/src/components/studio/StudioAdoptionOpsWorkspace.tsx apps/oshun/web/e2e/studio-adoption-ops.spec.ts WALKTHROUGH/studio/operations/studio-adoption-ops.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
103. 2026-06-25 Studio i18n localization route-state addendum#
Closed the /studio/internationalization-localization route-state evidence gap.
The i18n localization console now exposes stable anchors for its flat
quick-action footer, pending analyze state, and per-locale analyzer result
cells. The workspace keeps the analyze submit control disabled and busy while
the real BFF request is in flight, and the dedicated Playwright spec proves the
admin-scoped catalog, ready form, real analyzer result, malformed-JSON client
validation, real BFF 400 validation detail, catalog loading/error branch,
pending-submit branch, footer targets, and non-admin unauthorized fail-closed
state.
The shipped-bundle catalog ingestion remains documented as a product gap: V1
identifies @oshun/i18n plus the web next-intl JSON bundles as the canonical
catalog sources, while the current BFF route analyzes caller-supplied catalogs.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/internationalization-localization/page.tsx apps/oshun/web/src/components/studio/StudioInternationalizationLocalizationWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioInternationalizationLocalizationWorkspace.test.tsx apps/oshun/web/e2e/studio-internationalization-localization.spec.ts WALKTHROUGH/studio/governance/studio-internationalization-localization.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/studio/internationalization-localization/page.tsx apps/oshun/web/src/components/studio/StudioInternationalizationLocalizationWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioInternationalizationLocalizationWorkspace.test.tsx apps/oshun/web/e2e/studio-internationalization-localization.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/components/__tests__/StudioInternationalizationLocalizationWorkspace.test.tsx src/components/__tests__/StudioInternationalizationLocalizationWorkspace.validation.test.tsx- 2 files passed; 5 tests passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 9.3 GiB and returned to 13 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-internationalization-localization.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first focused run: 5 passed
- rerun after renaming visible analyzer copy from "placeholder" to "token": 4 passed, 1 failed on a stale browser assertion
- rerun after the stale assertion fix: 5 passed
- final rerun after the hook-suppression alias change: 5 passed
- post-rebase rerun after
origin/mainmoved: 5 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved: passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/studio/internationalization-localization/page.tsx apps/oshun/web/src/components/studio/StudioInternationalizationLocalizationWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioInternationalizationLocalizationWorkspace.test.tsx apps/oshun/web/e2e/studio-internationalization-localization.spec.ts WALKTHROUGH/studio/governance/studio-internationalization-localization.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
104. 2026-06-25 Studio enterprise tenant isolation route-state addendum#
Closed the /studio/enterprise-tenant-isolation route-state evidence gap. The
tenant isolation console now exposes stable anchors for its flat quick-action
footer, pending evaluate state, and tenant result cells. The workspace keeps the
evaluate submit control disabled and busy while the real BFF request is in
flight, and the dedicated Playwright spec proves the admin-scoped catalog, ready
form, real tenant evaluator result, malformed-JSON client validation, real BFF
400 validation detail, catalog loading/error branch, pending-submit branch,
footer targets, and non-admin unauthorized fail-closed state.
The live cluster-metrics utilization feed remains a documented product gap: the current route is a real admin BFF evaluator over caller-supplied tenant utilization JSON.
Verification:
psql --versionpsql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
pnpm exec prettier --write apps/oshun/web/src/app/studio/enterprise-tenant-isolation/page.tsx apps/oshun/web/src/components/studio/StudioEnterpriseTenantIsolationWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioEnterpriseTenantIsolationWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioEnterpriseTenantIsolationWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-enterprise-tenant-isolation.spec.ts WALKTHROUGH/studio/governance/studio-enterprise-tenant-isolation.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/studio/enterprise-tenant-isolation/page.tsx apps/oshun/web/src/components/studio/StudioEnterpriseTenantIsolationWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioEnterpriseTenantIsolationWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioEnterpriseTenantIsolationWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-enterprise-tenant-isolation.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/components/__tests__/StudioEnterpriseTenantIsolationWorkspace.test.tsx src/components/__tests__/StudioEnterpriseTenantIsolationWorkspace.integration.test.tsx- 2 files passed; 6 tests passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 12 GiB and returned to 13 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-enterprise-tenant-isolation.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 5 passed
- post-rebase rerun after
origin/mainmoved: 5 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved: passed (Nx cache)
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/studio/enterprise-tenant-isolation/page.tsx apps/oshun/web/src/components/studio/StudioEnterpriseTenantIsolationWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioEnterpriseTenantIsolationWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioEnterpriseTenantIsolationWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-enterprise-tenant-isolation.spec.ts WALKTHROUGH/studio/governance/studio-enterprise-tenant-isolation.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
105. 2026-06-25 Studio authentication architecture route-state addendum#
Closed the /studio/authentication-architecture route-state evidence gap. The
authentication policy console now exposes stable anchors for its flat
quick-action footer, pending evaluate state, and session result cells. The
workspace keeps the evaluate submit control disabled and busy while the real BFF
request is in flight, and the dedicated Playwright spec proves the admin-scoped
catalog, ready form, real auth-policy evaluator result, malformed-JSON client
validation, real BFF 400 validation detail, catalog loading/error branch,
pending-submit branch, footer targets, and non-admin unauthorized fail-closed
state.
The live login-telemetry feed remains a documented product gap: the current route is a real admin BFF evaluator over caller-supplied session signal JSON.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/authentication-architecture/page.tsx apps/oshun/web/src/components/studio/StudioAuthenticationArchitectureWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioAuthenticationArchitectureWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAuthenticationArchitectureWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-authentication-architecture.spec.ts WALKTHROUGH/studio/governance/studio-authentication-architecture.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/studio/authentication-architecture/page.tsx apps/oshun/web/src/components/studio/StudioAuthenticationArchitectureWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioAuthenticationArchitectureWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAuthenticationArchitectureWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-authentication-architecture.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/components/__tests__/StudioAuthenticationArchitectureWorkspace.test.tsx src/components/__tests__/StudioAuthenticationArchitectureWorkspace.integration.test.tsx- 2 files passed; 6 tests passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 12 GiB and returned to 13 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-authentication-architecture.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 5 passed
- post-rebase rerun after
origin/mainmoved: 5 passed - second post-rebase rerun after
origin/mainmoved again: 5 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved: passed (Nx cache) - second post-rebase rerun after
origin/mainmoved again: passed (Nx cache)
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/studio/authentication-architecture/page.tsx apps/oshun/web/src/components/studio/StudioAuthenticationArchitectureWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioAuthenticationArchitectureWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioAuthenticationArchitectureWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-authentication-architecture.spec.ts WALKTHROUGH/studio/governance/studio-authentication-architecture.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
106. 2026-06-25 Studio Neith inverse-modeling V1 closure#
Closed the V1/TODOS.md §34 Neith inverse-modeling workspace verification gap.
The /studio/neith/inverse-modeling route now exposes the V1 reference-image
workflow alongside the existing live BFF fit-quality lane: RGBA payload
validation, feature extraction (mean, contrast, edgeEnergy, entropy,
warmBias), terrain/vegetation/urban/noise parameter estimates, confidence
scoring, and deterministic neith.inverse.v1 export-manifest output.
The first Playwright rerun found a serious accessibility issue on the scrollable
manifest <pre> (scrollable-region-focusable). The manifest is now
keyboard-focusable and labelled, and the rerun passed.
Verification:
pnpm exec prettier --write apps/oshun/web/src/lib/studio/neith-inverse-modeling.ts apps/oshun/web/src/lib/studio/neith-inverse-modeling.test.ts apps/oshun/web/src/components/studio/StudioNeithInverseModelingWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.test.tsx apps/oshun/web/e2e/studio-neith-inverse-modeling.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/lib/studio/neith-inverse-modeling.ts apps/oshun/web/src/lib/studio/neith-inverse-modeling.test.ts apps/oshun/web/src/components/studio/StudioNeithInverseModelingWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-neith-inverse-modeling.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/lib/studio/neith-inverse-modeling.test.ts src/components/__tests__/StudioNeithInverseModelingWorkspace.test.tsx src/components/__tests__/StudioNeithInverseModelingWorkspace.integration.test.tsx- 3 files passed; 14 tests passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright startup, available memory stayed at or above 12 GiB and returned to 13 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-neith-inverse-modeling.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first rerun failed on axe
scrollable-region-focusablefor the manifest<pre> - after making the manifest focusable and labelled: 6 passed
- post-rebase rerun after
origin/mainmoved to94332f8cdc: 6 passed - second post-rebase rerun after
origin/mainmoved again to1b4583f697: 6 passed
- first rerun failed on axe
- Resource gate before typecheck / Neith procgen test
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during cargo, available memory stayed at 12 GiB.
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved to94332f8cdc: passed (Nx cache) - second post-rebase rerun after
origin/mainmoved again to1b4583f697: passed (Nx cache)
pnpm nx run @neith/procgen:test- passed; 381 Rust unit tests passed across the Neith procgen crate family plus doc-test targets
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/lib/studio/neith-inverse-modeling.ts apps/oshun/web/src/lib/studio/neith-inverse-modeling.test.ts apps/oshun/web/src/components/studio/StudioNeithInverseModelingWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioNeithInverseModelingWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-neith-inverse-modeling.spec.ts V1/TODOS.md WALKTHROUGH/studio/domain-bridges/neith/studio-neith-inverse-modeling.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
107. 2026-06-25 Studio Hathor Workbench World Editor V1 route journey#
Advanced the open V1/TODOS.md §34 Hathor substrate verification task by one
surface. /studio/hathor/workbench-world-editor now has real-dev-infra
Playwright coverage for the CGI scene validator: admin catalog load, issue-type
and coordinate enum rendering, seeded missing-location verdict, clean
export-ready verdict, BFF schema-validation detail, client-side malformed JSON
rejection with no validate POST, native pending submit disablement, non-admin
fail-closed state, route-map / quick-action affordances, mobile 44px controls,
and the shared axe gate.
The first Playwright run found a real mobile ergonomics defect: the "Back to Studio workspace index" quick action was only 40px tall on a 390px viewport. The two quick-action links now render as 44px inline-flex tap targets, and the full route journey rerun passed.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/hathor/workbench-world-editor/page.tsx apps/oshun/web/src/components/studio/StudioHathorWorkbenchWorldEditorWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioHathorWorkbenchWorldEditorWorkspace.test.tsx apps/oshun/web/e2e/studio-hathor-workbench-world-editor.spec.ts V1/TODOS.md WALKTHROUGH/studio/domain-bridges/hathor/studio-hathor-workbench-world-editor.md WALKTHROUGH/matrix/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/studio/hathor/workbench-world-editor/page.tsx apps/oshun/web/src/components/studio/StudioHathorWorkbenchWorldEditorWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioHathorWorkbenchWorldEditorWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorWorkbenchWorldEditorWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-hathor-workbench-world-editor.spec.ts- passed (repo emitted the existing Next pages-directory warning)
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/components/__tests__/StudioHathorWorkbenchWorldEditorWorkspace.test.tsx src/components/__tests__/StudioHathorWorkbenchWorldEditorWorkspace.integration.test.tsx- 2 files passed; 6 tests passed
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/components/__tests__/StudioHathorWorkbenchWorldEditorWorkspace.test.tsx src/components/__tests__/StudioHathorWorkbenchWorldEditorWorkspace.integration.test.tsx src/components/__tests__/StudioHathorWorkbenchWorldEditorPage.test.tsx- 3 files passed; 7 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-workbench-world-editor-route.test.ts- 1 file passed; 7 tests passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 8.9 GiB and returned to 13 GiB after cleanup.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-workbench-world-editor.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run: 7 passed, 1 failed because the mobile "Back to Studio workspace index" quick action was 40px high
- after the tap-target fix: 8 passed
- post-rebase rerun after
origin/mainmoved to333fcf81af: 8 passed
- Resource gate before typecheck
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers.
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved to333fcf81af: passed (Nx cache)
108. 2026-06-25 Profile Data Rights real-infra readback route journey#
Advanced the account/DSAR readback surface for /profile/data. The route now
uses a real authenticated /v1/data-rights/consent projection from
customerConsentStateStore instead of the legacy domain-stub fixture; exports
and deletion requests continue to use the canonical real BFF stores. The page
also exposes stable section/empty-state selectors, gives completed-export
download links contextual aria labels, and forces the footer actions plus
download affordance to 44 px mobile tap targets.
profile-data-readback.spec.ts now covers the real consent projection,
research-consent transition reflection on the server-rendered route, empty
export/deletion readback, live completed-export and scheduled-deletion
snapshots, anonymous redirect gating, the real 50-row export history cap after
52 BFF-created exports, mobile touch targets/no horizontal overflow, and the
shared axe gate.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/consent.ts apps/oshun/bff/src/routes/domain-stubs.ts apps/oshun/bff/src/__tests__/consent-route.test.ts apps/oshun/bff/src/__tests__/domain-stubs-route.test.ts apps/oshun/web/src/app/profile/data/page.tsx apps/oshun/web/e2e/profile-data-readback.spec.ts V1/TODOS.md WALKTHROUGH/customer/09-account/profile-data.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/matrix/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/consent.ts apps/oshun/bff/src/routes/domain-stubs.ts apps/oshun/bff/src/__tests__/consent-route.test.ts apps/oshun/bff/src/__tests__/domain-stubs-route.test.ts apps/oshun/web/src/app/profile/data/page.tsx apps/oshun/web/e2e/profile-data-readback.spec.ts- passed; repo emitted the existing Next pages-directory warning and existing
domain-stubs.tsnon-null assertion warnings
- passed; repo emitted the existing Next pages-directory warning and existing
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/consent-route.test.ts src/__tests__/domain-stubs-route.test.ts- 2 files passed; 105 tests passed
- post-rebase rerun after
origin/mainmoved toe0872822ef: 2 files passed; 105 tests passed - second post-rebase rerun after
origin/mainmoved again to699a1ed81d: 2 files passed; 105 tests passed
- Resource gate before typecheck / Playwright
- before typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers
- before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 8.8 GiB and returned after cleanup
pnpm nx run @oshun/bff:typecheck- passed
- post-rebase rerun after
origin/mainmoved toe0872822ef: passed (Nx cache) - second post-rebase rerun after
origin/mainmoved again to699a1ed81d: passed (Nx cache)
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved toe0872822ef: passed (Nx cache) - second post-rebase rerun after
origin/mainmoved again to699a1ed81d: passed (Nx cache)
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-data-readback.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 5 passed
- post-rebase rerun after
origin/mainmoved toe0872822ef: 5 passed - second post-rebase rerun after
origin/mainmoved again to699a1ed81d: 5 passed
109. 2026-06-25 Profile Persona real-infra voice readback route journey#
Advanced the account persona voice readback surface for /profile/persona. The
route now consumes the real registry-derived /v1/persona/voice DTO instead of
the stale fixture shape: voiceId, family, provider/vendor, engine,
voice-profile id, locale coverage, watermark algorithm, spoken-disclosure
requirement, and explicit previewUrl: null while preview media is not yet a
registry asset. The masthead count now says "available" instead of "approved",
inactive cards say "available" instead of implying an unwired switch action, and
footer links plus the preview-unavailable row are 44px mobile targets.
The BFF projection now enriches eligible voice cards from the same
@oshun/persona-registry multimodal assignment used by the picker, and
personas-consumer.test.ts covers no-consent empty voice rosters, profile
metadata projection, and active voice readback after a real persona selection
write. The first BFF test run found that selection should use the existing
persona-selection contract (requestedModalities: ['text']), not a fabricated
voice-only select request; the tests and Playwright seeding were corrected and
rerun green.
profile-persona-readback.spec.ts now covers the real no-consent empty state,
voice-consent unlock through /v1/consent/voice/grant, active voice state after
POST /v1/personas/select, server-rendered card metadata matched to live
/v1/persona/voice, anonymous redirect gating, the Data Rights footer handoff,
mobile touch targets/no horizontal overflow, and the shared axe gate.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/personas-consumer.ts apps/oshun/bff/src/routes/personas-consumer.test.ts apps/oshun/web/src/app/profile/persona/page.tsx apps/oshun/web/e2e/profile-persona-readback.spec.ts V1/TODOS.md WALKTHROUGH/customer/09-account/profile-persona.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/journeys/persona-voice-avatar-approval-workflow.md WALKTHROUGH/matrix/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/personas-consumer.ts apps/oshun/bff/src/routes/personas-consumer.test.ts apps/oshun/web/src/app/profile/persona/page.tsx apps/oshun/web/e2e/profile-persona-readback.spec.ts- passed; repo emitted the existing Next pages-directory warning
- post-rebase rerun after
origin/mainmoved toe5610e6eb5: passed with the same existing warning
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/routes/personas-consumer.test.ts- first run: 10 passed, 1 failed on the incorrect voice-only selection request assumption
- after aligning selection with the real picker contract: 11 passed
- post-rebase rerun after
origin/mainmoved toe5610e6eb5: 11 passed
- Resource gate before typecheck / Playwright
- before typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers
- before Playwright: 15 GiB RAM, 12 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 12 GiB
- post-rebase before rerun: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad build/test servers; during Playwright, available memory stayed at or above 12 GiB
pnpm nx run @oshun/bff:typecheck- passed
- post-rebase rerun after
origin/mainmoved toe5610e6eb5: passed from Nx cache
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved toe5610e6eb5: passed from Nx cache
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-persona-readback.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 4 passed
- post-rebase rerun after
origin/mainmoved toe5610e6eb5: 4 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/bff/src/routes/personas-consumer.ts apps/oshun/bff/src/routes/personas-consumer.test.ts apps/oshun/web/src/app/profile/persona/page.tsx apps/oshun/web/e2e/profile-persona-readback.spec.ts V1/TODOS.md WALKTHROUGH/customer/09-account/profile-persona.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/journeys/persona-voice-avatar-approval-workflow.md WALKTHROUGH/matrix/coverage.md- passed
git diff --check- passed
111. 2026-06-25 Profile Memory real-Iris empty + populated readback journey#
Advanced /profile/memory from stale local-only documentation to a verified
hybrid read model. The UI now renders an explicit empty ledger row and empty
inspector when the real Iris review has no records, avoiding a blank table and
making the no-memory state automatable. The real-Iris Playwright block now uses
the actual Next /api/auth/session bridge plus BFF, proves an empty live
/v1/iris/adapter/review shows no fabricated member facts, then grants real
Iris consents, writes a profile fact through /v1/iris/adapter/remember, reads
it back through /v1/iris/adapter/review, and verifies /profile/memory adopts
it with the sync notice, category/scope projection, inspector source, and local
export JSON.
WALKTHROUGH/customer/09-account/profile-memory.md now documents the real BFF
read contract, the local-only write/cache model, the new empty selectors, and
remaining route gaps: visible BFF fetch errors, anonymous redirect coverage,
offline behavior, and persisted server-side pause/export/delete semantics.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/profile/memory/ProfileMemoryControls.tsx apps/oshun/web/src/app/profile/memory/memory-controls.module.css apps/oshun/web/e2e/memory-edit-pause-forget.spec.ts WALKTHROUGH/customer/09-account/profile-memory.md WALKTHROUGH/journeys/memory-edit-pause-forget.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/profile/memory/ProfileMemoryControls.tsx apps/oshun/web/e2e/memory-edit-pause-forget.spec.ts- passed; repo emitted the existing Next pages-directory warning
pnpm --dir apps/oshun/web exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/app/profile/memory/ProfileMemoryControls.test.tsx src/app/profile/memory/memory-state.test.ts- 2 files passed; 11 tests passed
- Resource gate before typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing build/test gates; during Playwright, available memory stayed above 7.9 GiB.
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved to3a0ccd19b8: passed from Nx cache
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/memory-edit-pause-forget.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 8 passed
- post-rebase rerun after
origin/mainmoved to3a0ccd19b8: 8 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/profile/memory/ProfileMemoryControls.tsx apps/oshun/web/src/app/profile/memory/memory-controls.module.css apps/oshun/web/e2e/memory-edit-pause-forget.spec.ts WALKTHROUGH/customer/09-account/profile-memory.md WALKTHROUGH/journeys/memory-edit-pause-forget.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
112. 2026-06-25 Workspace live Nisaba/search readback journey#
Reduced the route-fixture surface in workspace-multi-panel.spec.ts for the
multi-device-workspace-handoff journey. The desktop all-panel flow now seeds a
real authenticated /v1/nisaba/notebooks record through the BFF request
fixture, opens the workspace, asserts that exact notebook appears as the active
passage-<notebookId> export item, and then searches for the unique seed term
through the live /v1/search hook, asserting the returned
notebook-<notebookId> result. The old in-file route fulfillments for
/v1/nisaba/notebooks and /v1/search were removed.
The Veritas saved-article route fixture remains intentionally scoped to the
evidence card because the BFF currently exposes
GET /v1/veritas/adapter/saved-articles but no authenticated save-article
writer suitable for E2E setup. The journey doc and coverage matrix now state
that distinction explicitly.
Verification:
psql --version- available:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- available:
pnpm exec prettier --write apps/oshun/web/e2e/workspace-multi-panel.spec.ts WALKTHROUGH/journeys/multi-device-workspace-handoff.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/workspace-multi-panel.spec.ts- passed
- post-rebase rerun after
origin/mainmoved to687ff6efef: passed
- Resource gate before typecheck / Playwright
- before typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- before Playwright: 15 GiB RAM, 12 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 8.7 GiB
- post-rebase before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during the post-rebase Playwright rerun, available memory stayed above 9.2 GiB
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved to687ff6efef: passed from Nx cache
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/workspace-multi-panel.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 8 passed
- post-rebase rerun after
origin/mainmoved to687ff6efef: 8 passed
pnpm exec prettier --check apps/oshun/web/e2e/workspace-multi-panel.spec.ts WALKTHROUGH/journeys/multi-device-workspace-handoff.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
- post-rebase rerun after
origin/mainmoved to687ff6efef: passed
python3 V5/tools/validate-v5-docs.py- passed
- post-rebase rerun after
origin/mainmoved to687ff6efef: passed
git diff --check- passed
- post-rebase rerun after
origin/mainmoved to687ff6efef: passed
113. 2026-06-25 Home Nisaba live notebook continuation#
Reduced the route-fixture surface in home-nisaba-continuation.spec.ts for the
Home Nisaba continuation journey. The live Home path now primes the real
authenticated shell, seeds a real /v1/nisaba/notebooks record through the BFF,
verifies the BFF list read returns that notebook, opens Home, and proves the
browser renders that exact notebook card from the live /v1/nisaba/notebooks
hook. The test now clicks all four live Home Nisaba actions: notebook, library,
support, and primary passage.
The unavailable-domain path now uses the same real BFF notebook seed/readback
before asserting status-first primary routing with unavailable=1, reason,
path, and daypart ref. The outage path remains intentionally fixture-backed:
it forces daily-passage and notebook endpoint failures to prove the curated
fallback thread and fallback passage route.
The deterministic GET /v1/nisaba/passages/daily route fixture remains because
V1 does not expose a deterministic daily-passage seed writer for this Home
setup. An initial run exposed a hydration warning from freezing only the client
clock; the final spec removes that mock and reads the stage-dependent
support/ref targets from the rendered telemetry attributes instead.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/home-nisaba-continuation.spec.ts WALKTHROUGH/customer/02-home-discovery/home.md WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/home-nisaba-continuation.spec.ts- passed
- rerun after removing the client-only clock mock: passed
- post-rebase reruns after
origin/mainmoved todb4b7d2a2banded0a3eee2b: passed
- Resource gate before typecheck / Playwright
- before typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- before first Playwright run: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during that run, available memory stayed above 9.7 GiB
- before the final typecheck / Playwright rerun: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during the final Playwright rerun, available memory stayed above 9.2 GiB
- post-rebase before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during the post-rebase Playwright rerun, available memory stayed above 9.1 GiB
- second post-rebase before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during the second post-rebase Playwright rerun, available memory stayed above 9.1 GiB
pnpm nx run @oshun/web:typecheck- passed
- rerun after removing the client-only clock mock: passed
- post-rebase reruns after
origin/mainmoved todb4b7d2a2banded0a3eee2b: passed from Nx cache
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/home-nisaba-continuation.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- initial run passed 3 tests but logged hydration mismatch warnings from the client-only clock mock
- final rerun after removing that mock: 3 passed, with no hydration mismatch warning observed in the run output
- post-rebase reruns after
origin/mainmoved todb4b7d2a2banded0a3eee2b: 3 passed each
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/home-nisaba-continuation.spec.ts WALKTHROUGH/customer/02-home-discovery/home.md WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
114. 2026-06-25 Multi-device real-BFF reading-anchor restore#
Reduced the route-fixture surface in multi-device-deepening.spec.ts for the
multi-device-workspace-handoff journey. The desktop deep-link reload test no
longer fulfills GET /v1/nisaba/notebooks with an in-browser route fixture.
Instead it captures the authenticated shell session, creates two real
/v1/nisaba/notebooks records through the BFF request fixture, asserts those
exact notebook IDs return as workspace reading anchors in the browser, selects
one of the live anchors, reloads the same deep link, and verifies both restore
channels: URL-restored side-panel kind and localStorage-restored reading-anchor
ID.
The journey doc, coverage matrix, and completeness audit now distinguish this
new desktop reload equality proof from the existing mobile-viewport
multi-device-handoff-deepening spec. At the time, remaining gaps were the
evidence-source ID equality path, real/PWA-installed oshun:// handoff,
post-mobile desktop side-effect reconciliation, syncing copy, and Iris failure
no-false-success branches; the evidence-source equality gap was closed in §179,
the Home sync-state copy gap was closed in §180, and the Iris no-false-success /
no-stale-payload gap was closed in §181.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/multi-device-deepening.spec.ts WALKTHROUGH/journeys/multi-device-workspace-handoff.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/multi-device-deepening.spec.ts- passed
- post-rebase rerun after
origin/mainmoved toc87cf324ac: passed
- Resource gate before typecheck / Playwright
- before typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 12 GiB
- post-rebase before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during the post-rebase Playwright rerun, available memory stayed above 12 GiB
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved toc87cf324ac: passed from Nx cache
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/multi-device-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 3 passed
- post-rebase rerun after
origin/mainmoved toc87cf324ac: 3 passed
python3 V5/tools/validate-v5-docs.py- passed
- post-rebase rerun after
origin/mainmoved toc87cf324ac: passed
pnpm exec prettier --check apps/oshun/web/e2e/multi-device-deepening.spec.ts WALKTHROUGH/journeys/multi-device-workspace-handoff.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
- post-rebase rerun after
origin/mainmoved toc87cf324ac: passed
git diff --check- passed
- post-rebase rerun after
origin/mainmoved toc87cf324ac: passed
115. 2026-06-25 Nisaba analytics live notebook telemetry#
Reduced the route-fixture surface in nisaba-analytics.spec.ts for the
nisaba-notebook-capture-and-cite journey. The browser analytics path no longer
uses stubNisabaWorkspaceApi or an offline-service-worker shadow workaround. It
now primes the authenticated shell, blocks service workers for this telemetry
path, seeds a real /v1/nisaba/notebooks record through the BFF request
fixture, verifies active-notebook list readback from the BFF, opens the real
nisaba-passage-attention workspace, saves a study note, and asserts both the
local persisted note and the nisaba_note_saved analytics event use that exact
live notebook ID. The same run keeps the inspector-open and compare-action
analytics assertions on the browser event bus.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/nisaba-analytics.spec.ts WALKTHROUGH/journeys/nisaba-notebook-capture-and-cite.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-fix-sweep-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/nisaba-analytics.spec.ts- passed
- post-rebase rerun after
origin/mainmoved to9ca99cccee: passed
- Resource gate before typecheck / Playwright
- before typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 12 GiB
- post-rebase before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during the post-rebase Playwright rerun, available memory stayed above 12 GiB
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved to9ca99cccee: passed from Nx cache
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-analytics.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 1 passed
- post-rebase rerun after
origin/mainmoved to9ca99cccee: 1 passed
python3 V5/tools/validate-v5-docs.py- passed
- post-rebase rerun after
origin/mainmoved to9ca99cccee: passed
pnpm exec prettier --check apps/oshun/web/e2e/nisaba-analytics.spec.ts WALKTHROUGH/journeys/nisaba-notebook-capture-and-cite.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-fix-sweep-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
- post-rebase rerun after
origin/mainmoved to9ca99cccee: passed
git diff --check- passed
- post-rebase rerun after
origin/mainmoved to9ca99cccee: passed
116. 2026-06-25 Nisaba Metis prompt live notebook handoff#
Reduced the route-fixture surface in nisaba-metis-study-prompts.spec.ts for
the nisaba-notebook-capture-and-cite journey. The spec now primes the
authenticated shell and blocks service workers for this live-infra path instead
of stubbing the Nisaba workspace API. The direct passage leg still proves the
nisaba-passage-attention lesson-path handoff into Metis, while the collections
leg now seeds a real /v1/nisaba/notebooks record through the BFF request
fixture, verifies active-notebook list readback, asserts the live notebook
prompt relationship, and clicks source-backed tutoring to prove the encoded
Metis target path carries that exact seeded notebook ID.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/nisaba-metis-study-prompts.spec.ts WALKTHROUGH/journeys/nisaba-notebook-capture-and-cite.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/nisaba-metis-study-prompts.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 12 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-metis-study-prompts.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 2 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/nisaba-metis-study-prompts.spec.ts WALKTHROUGH/journeys/nisaba-notebook-capture-and-cite.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
117. 2026-06-25 Tara to Nisaba destination live citation trail#
Removed the remaining workspace-route mock from
tara-to-nisaba-handoff-destination.spec.ts for the tara-to-nisaba-handoff
journey's destination payoff. The spec now primes the authenticated customer
shell, blocks service workers for this live-infra path, opens the live
nisaba-passage-attention destination, and asserts the real
NisabaCitationTrailPanel renders a closed-enum verification status plus a
derivation step over the passage's source_lineage grounded view.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/tara-to-nisaba-handoff-destination.spec.ts WALKTHROUGH/journeys/tara-to-nisaba-handoff.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/tara-to-nisaba-handoff-destination.spec.ts- passed
- post-rebase rerun after
origin/mainmoved to67379eed3f: passed
- Resource gate before typecheck / Playwright
- before typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 12 GiB
- post-rebase before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during the post-rebase Playwright rerun, available memory stayed above 12 GiB
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved to67379eed3f: passed from Nx cache
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tara-to-nisaba-handoff-destination.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 1 passed
- post-rebase rerun after
origin/mainmoved to67379eed3f: 1 passed
python3 V5/tools/validate-v5-docs.py- passed
- post-rebase rerun after
origin/mainmoved to67379eed3f: passed
pnpm exec prettier --check apps/oshun/web/e2e/tara-to-nisaba-handoff-destination.spec.ts WALKTHROUGH/journeys/tara-to-nisaba-handoff.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
118. 2026-06-25 Nisaba dashboard live shell bridges#
Removed the workspace-route mock from nisaba-dashboard.spec.ts. The spec now
primes the authenticated customer shell, blocks service workers for this
live-infra path, opens /domains/nisaba, and asserts the real curated overview
state plus the live Mind Precedes All States study shelf entry. The passage
workspace leg now uses live shared-concept-graph attributes to prove the
six-domain bridge and exact Nisaba→Metis objective URL, and the domain
recommendation leg continues to assert live ranked recommendation targets.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/nisaba-dashboard.spec.ts WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/nisaba-dashboard.spec.ts- passed
- post-rebase rerun after
origin/mainmoved toaa256650b9: passed
- Resource gate before typecheck / Playwright
- before typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 12 GiB
- post-rebase before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during the post-rebase Playwright rerun, available memory stayed above 12 GiB
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved toaa256650b9: passed from Nx cache
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-dashboard.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 3 passed
- post-rebase rerun after
origin/mainmoved toaa256650b9: 3 passed
python3 V5/tools/validate-v5-docs.py- passed
- post-rebase rerun after
origin/mainmoved toaa256650b9: passed
pnpm exec prettier --check apps/oshun/web/e2e/nisaba-dashboard.spec.ts WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
- post-rebase rerun after
origin/mainmoved toaa256650b9: passed
git diff --check- passed
- post-rebase rerun after
origin/mainmoved toaa256650b9: passed
119. 2026-06-25 Nisaba reading compare annotate live shell#
Removed stubNisabaWorkspaceApi from nisaba-reading-compare-annotate.spec.ts.
The spec now primes the authenticated customer shell, seeds and reads a real
/v1/nisaba/notebooks record for each test, opens the live public-domain
Dhammapada nisaba-passage-attention reading desk, proves the workflow-map and
compare-card target URL, and drives a real BFF-seeded annotation through browser
update → archive → show-archived. The citation-format selector remains
browser-driven from the live citations inspector. The hydrated Nisaba domain
metadata now gives the compare, passage, library, and notebook subpaths concrete
browser titles so the authenticated workflow-map compare hop also remains
WCAG-clean under the shared axe teardown.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/domains/[domainId]/page.tsx apps/oshun/web/e2e/nisaba-reading-compare-annotate.spec.ts WALKTHROUGH/journeys/nisaba-notebook-capture-and-cite.md WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/nisaba-reading-compare-annotate.spec.ts apps/oshun/web/src/app/domains/[domainId]/page.tsx- passed
- post-rebase rerun after
origin/mainmoved to4f5d6f7507: passed - second post-rebase rerun after
origin/mainmoved to53c39b6bba: passed
- Resource gate before typecheck / Playwright
- before typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 8.8 GiB
- post-rebase before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during the post-rebase Playwright rerun, available memory stayed above 8.9 GiB
- second post-rebase before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during the second post-rebase Playwright rerun, available memory stayed above 8.8 GiB
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved to4f5d6f7507: passed from Nx cache - second post-rebase rerun after
origin/mainmoved to53c39b6bba: passed from Nx cache
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-reading-compare-annotate.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 5 passed
- post-rebase rerun after
origin/mainmoved to4f5d6f7507: 5 passed - second post-rebase rerun after
origin/mainmoved to53c39b6bba: 5 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/domains/[domainId]/page.tsx apps/oshun/web/e2e/nisaba-reading-compare-annotate.spec.ts WALKTHROUGH/journeys/nisaba-notebook-capture-and-cite.md WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
120. 2026-06-25 Nisaba capture/citation live shell#
Removed stubNisabaWorkspaceApi from nisaba-notebook-capture-cite.spec.ts.
The spec now primes the authenticated customer shell, blocks service workers,
clears stale Nisaba offline snapshots, and waits for the live
/v1/nisaba/passages/nisaba-passage-attention BFF response before asserting UI
state. The Dhammapada citation workspace now proves BibTeX/Markdown/RIS/CSL-JSON
format switching from live passage data, citation download labels, copy status,
and the "Open source" path into the sources inspector with the live primary
Dhammapada source, manuscript witness, anchor-source section, and lineage-paths
section. The same focused spec still covers the private /nisaba/notebook
export/print rail and robots noindex,nofollow meta.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/nisaba-notebook-capture-cite.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/nisaba-notebook-capture-cite.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- before Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 8.7 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-notebook-capture-cite.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 6 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/nisaba-notebook-capture-cite.spec.ts WALKTHROUGH/journeys/nisaba-notebook-capture-and-cite.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
121. 2026-06-25 Nisaba reading accessibility live shell#
Removed stubNisabaWorkspaceApi from nisaba-reading-accessibility.spec.ts.
The route-level accessibility suite now primes the authenticated customer shell,
blocks service workers, clears stale Nisaba offline snapshots, seeds and reads
back a real /v1/nisaba/notebooks record, and waits for live Nisaba BFF
responses before each scan. Coverage now includes the desktop reading desk,
compare desk, manuscript, annotation, concept, lexicon, timeline, influence,
collections, study-plan, citation/export, and scholar inspectors, plus the
mobile notebook note sheet and mobile Nisaba home. The concept route now targets
the live daily passage concept ID (nisaba-concept-attention) instead of a
fixture-only fallback path.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/nisaba-reading-accessibility.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/nisaba-reading-accessibility.spec.ts- passed
- post-rebase rerun after
origin/mainmoved toace48b0747: passed
- Resource gate before typecheck / Playwright
- before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during Playwright: available memory stayed above 8.6 GiB
- post-rebase before typecheck / Playwright after
origin/mainmoved toace48b0747: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process - during post-rebase Playwright: available memory stayed above 8.5 GiB
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved toace48b0747: passed from Nx cache
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-reading-accessibility.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 14 passed
- post-rebase rerun after
origin/mainmoved toace48b0747: 14 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/nisaba-reading-accessibility.spec.ts WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
122. 2026-06-25 Nisaba split-view live shell#
Removed stubNisabaWorkspaceApi from nisaba-split-view.spec.ts. The
split-view suite now primes the authenticated customer shell, clears stale
Nisaba offline snapshots, seeds and reads back a real /v1/nisaba/notebooks
record plus a real /v1/nisaba/passages/nisaba-passage-attention/annotations
record, and waits for live daily/detail Dhammapada BFF responses before
asserting route state. Coverage now includes compare, mobile home, grounded
evidence, manuscript, annotation update/archive/show-archived, notebook note
capture, citation/export, scholar, notebook, concept, lexicon, timeline,
influence, collections, study-plan, mobile source lineage, and mobile note
routes without workspace route stubs.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/nisaba-split-view.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/nisaba-split-view.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during Playwright: available memory stayed above 8.6 GiB
- post-rebase before typecheck / Playwright after
origin/mainmoved to76473ad231: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process - during post-rebase Playwright: available memory stayed above 8.6 GiB
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved to76473ad231: passed from Nx cache
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-split-view.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 18 passed
- post-rebase rerun after
origin/mainmoved to76473ad231: 18 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/nisaba-split-view.spec.ts WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/journeys/nisaba-notebook-capture-and-cite.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
123. 2026-06-25 Domain readability live Nisaba shell#
Removed stubNisabaWorkspaceApi from domain-readability.spec.ts. The
cross-domain readability audit now primes the authenticated customer shell,
blocks service workers, clears stale Nisaba offline snapshots, seeds and reads
back a real /v1/nisaba/notebooks record, and waits for live
/v1/nisaba/passages/nisaba-passage-attention or daily-passage BFF responses
before asserting Nisaba readability state. The Nisaba legs now prove the live
Dhammapada passage, compare, grounded evidence, and note inspector routes keep
the focused 62ch study lane, support rail, notebook rail, compare rail, and note
frame constrained without workspace route stubs. The same focused spec also
opens Veritas and Tara through the authenticated shell while preserving their
readability assertions.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/domain-readability.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/domain-readability.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during Playwright: available memory stayed above 8.7 GiB
- post-rebase before typecheck / Playwright after
origin/mainmoved to6c4ea93fed: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process - during post-rebase Playwright: available memory stayed above 8.7 GiB
pnpm nx run @oshun/web:typecheck- passed
- post-rebase rerun after
origin/mainmoved to6c4ea93fed: passed from Nx cache
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/domain-readability.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 6 passed
- post-rebase rerun after
origin/mainmoved to6c4ea93fed: 6 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/domain-readability.spec.ts WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
124. 2026-06-25 Viewport fit live Nisaba compare shell#
Removed stubNisabaWorkspaceApi from the Nisaba compare breakpoint leg in
viewport-fit.spec.ts. The viewport posture audit now opens the authenticated
/domains/nisaba?origin=explore&path=%2Fcompare shell route, clears stale
Nisaba offline snapshots only for that live route, waits for the real
/v1/nisaba/passages/daily BFF response, and asserts the compare workspace
mode, responsive split/stacked study layout, compare deck, and evidence/notebook
inspector posture across narrow mobile, tablet, laptop, and desktop widths.
Verification:
psql --version- already installed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- already installed:
pnpm exec prettier --write apps/oshun/web/e2e/viewport-fit.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/viewport-fit.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck / first Playwright run: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during the full-file diagnostic Playwright run: available memory stayed above 7.9 GiB
- before targeted Playwright rerun: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during targeted Playwright rerun: available memory stayed above 8.3 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/viewport-fit.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- diagnostic run: changed Nisaba live compare test passed; full file reported
two unrelated failures (
[data-library-item]absent in the library viewport case and profile assistant teacher-style/content-tone color-contrast at 4.27-4.38:1)
- diagnostic run: changed Nisaba live compare test passed; full file reported
two unrelated failures (
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/viewport-fit.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "Nisaba preserves its semantic reading posture across live compare breakpoints"- 1 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/viewport-fit.spec.ts WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
125. 2026-06-25 Library journey no Nisaba workspace fixture#
Removed the obsolete stubNisabaWorkspaceApi setup from
library-save-collection-share.spec.ts. This journey spec does not hydrate a
Nisaba workspace directly; it now seeds and reads back its asserted
tara-evening-reset and assistant-source-trail rows through the real
/v1/library/saved-items BFF before exercising the authenticated library
dashboard, resume rail, saved queue, collection share-control mount, and
saved-item unsave surface. The library journey documentation now points the
Nisaba save-producer claim at the real-BFF search-saved-and-recent coverage,
which saves a live search result, verifies the in-domain Nisaba reading action
is already saved, drives real DELETE/POST unsave/resave de-dupe, hydrates
/library without local cache, and resumes the exact passage workspace.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/library-save-collection-share.spec.ts WALKTHROUGH/journeys/library-save-collection-share.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/library-save-collection-share.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck / first Playwright run: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during the first Playwright run: available memory stayed above 9.3 GiB
- before final typecheck / Playwright after adding real-BFF seed/readback: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during final Playwright: available memory stayed above 8.8 GiB
pnpm nx run @oshun/web:typecheck- passed
- rerun after adding real-BFF saved-items seed/readback: passed
- rerun after removing the duplicate hand-written auth route: passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/library-save-collection-share.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- diagnostic run before BFF seeding: 2 passed, 2 failed because the clean authenticated account had no saved/resume rows after the obsolete workspace fixture was removed
- run after real-BFF seed/readback: 4 passed
- final rerun after removing the duplicate hand-written auth route: 4 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/library-save-collection-share.spec.ts WALKTHROUGH/journeys/library-save-collection-share.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
126. 2026-06-25 Shell route signoff live Nisaba hydration#
Removed the obsolete stubNisabaWorkspaceApi setup from
shell-route-signoff.spec.ts. The critical shell signoff suite still captures
Home, Explore, Library, Activity, Search, Profile, profile notifications, the
notifications drawer, contextual assistant dock, and shell loading/empty/offline
/error previews; its Nisaba compare and passage screenshot legs now use a real
per-session /v1/nisaba/notebooks seed/readback, clear stale Nisaba offline
snapshots, and wait for live /v1/nisaba/passages/daily or
/v1/nisaba/passages/:id hydration before asserting authenticated-shell
workspace posture.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/shell-route-signoff.spec.ts WALKTHROUGH/shell/02-routing-layouts.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/shell-route-signoff.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck / Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during focused Playwright: available memory observed above 8.6 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/shell-route-signoff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 12 passed
127. 2026-06-25 PWA update live Nisaba reading route#
Removed the obsolete stubNisabaWorkspaceApi setup from the pwa-smoke
reading-mode update tests. The staged update prompt still uses the browser-side
waiting-service-worker harness, but the reading surface underneath now clears
stale Nisaba offline snapshots and waits for live
/v1/nisaba/passages/nisaba-passage-attention hydration before asserting the
reading frame, the staged prompt, "Keep reading" dismissal, and explicit
"Refresh now" preservation.
The first live-route diagnostic exposed a real behavior gap hidden by the old
fixture: after applying the update, the route rehydrated but returned near the
top instead of the previous mid-passage scroll position. PwaBootstrap now
stores a per-route scroll snapshot before sending OSHUN_SKIP_WAITING and
restores it after reload, preserving the snapshot across the first query-less
hydration render until useBrowserSearchParams() syncs the real search string.
Verification:
cat /root/.codex/skills/frontend-skill/SKILL.md- read before the user-facing PWA behavior fix
pnpm exec prettier --write apps/oshun/web/src/components/PwaBootstrap.tsx apps/oshun/web/src/components/__tests__/PwaBootstrap.test.tsx apps/oshun/web/e2e/pwa-smoke.spec.ts WALKTHROUGH/journeys/pwa-update-flow.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/pwa-smoke.spec.ts apps/oshun/web/src/components/PwaBootstrap.tsx apps/oshun/web/src/components/__tests__/PwaBootstrap.test.tsx- passed
- Resource gate before typecheck / Playwright
- before typecheck / focused Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during focused Playwright: available memory observed above 12 GiB
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/PwaBootstrap.test.tsx- after splitting the scroll tests and preserving the snapshot across initial query hydration: 9 passed
pnpm nx run @oshun/web:typecheck- passed before the behavior fix
- rerun after the behavior fix: passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/pwa-smoke.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "Nisaba reading"- diagnostic live-route run failed before the behavior fix: route rehydrated but scroll restored to 101 px instead of the prior mid-passage position
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/pwa-smoke.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "Nisaba"- 2 passed
128. 2026-06-25 Redesigned breakpoint live Nisaba hydration#
Removed the obsolete stubNisabaWorkspaceApi setup from
redesigned-surface-breakpoints.spec.ts. The spec still validates the shell
dashboard and dedicated search breakpoint postures, while the Nisaba compare,
passage, and notebook breakpoint legs now seed and read back a real per-session
/v1/nisaba/notebooks record, clear stale Nisaba offline snapshots, and wait
for live /v1/nisaba/passages/daily, /v1/nisaba/passages/:id, and
/v1/nisaba/notebooks hydration before asserting tablet/laptop/desktop
split/stacked study posture, support-rail geometry, note/evidence inspector
behavior, and the dynamic notebook route.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/redesigned-surface-breakpoints.spec.ts WALKTHROUGH/journeys/coverage.md WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-fix-sweep-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/redesigned-surface-breakpoints.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck / focused Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during focused Playwright: available memory observed above 8.2 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/redesigned-surface-breakpoints.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 4 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/redesigned-surface-breakpoints.spec.ts WALKTHROUGH/journeys/coverage.md WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-fix-sweep-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
129. 2026-06-25 Nyx event Nisaba bridge live hydration#
Removed the obsolete stubNisabaWorkspaceApi setup from
nyx-event-pages.spec.ts. The Nyx event-detail suite still isolates the
server-persisted Nyx event-action state with its scoped
GET/PUT /v1/nyx/event-actions boundary mock, but its generated Nisaba overlay
and concept-graph passage links now block service workers, clear stale Nisaba
offline snapshots, seed and read back a real per-test /v1/nisaba/notebooks
record, and assert the browser receives that exact notebook through live
/v1/nisaba/notebooks hydration. The clicked Nisaba targets also wait for live
/v1/nisaba/passages/daily before asserting cosmology, source-lineage, and
compare workspace views.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/nyx-event-pages.spec.ts WALKTHROUGH/journeys/coverage.md WALKTHROUGH/journeys/nyx-tonight-observation.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-fix-sweep-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/nyx-event-pages.spec.ts- passed
- Resource gate before typecheck / Playwright
- before targeted Playwright and full-file verification: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during full-file Playwright: available memory observed above 8.1 GiB
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nyx-event-pages.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "Nisaba|concept graph"- 2 passed
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nyx-event-pages.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 14 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/nyx-event-pages.spec.ts WALKTHROUGH/journeys/coverage.md WALKTHROUGH/journeys/nyx-tonight-observation.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-fix-sweep-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
130. 2026-06-25 Nisaba visual regression live hydration#
Removed the obsolete stubNisabaWorkspaceApi setup from the Nisaba screenshot
legs in visual-regression-pages.spec.ts. The seven Nisaba visual cases now
block service workers through the suite context, clear stale Nisaba offline
snapshots, seed and read back a real per-test /v1/nisaba/notebooks record, and
assert the browser receives that exact notebook through live
/v1/nisaba/notebooks hydration before capture. Passage, evidence, note, and
mobile source-lineage screenshots wait for live /v1/nisaba/passages/:id;
compare and notebook workspace screenshots wait for live
/v1/nisaba/passages/daily.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/visual-regression-pages.spec.ts WALKTHROUGH/journeys/coverage.md WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-fix-sweep-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/visual-regression-pages.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck and focused Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during focused Playwright: available memory observed above 8 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/visual-regression-pages.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "Nisaba"- 7 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/visual-regression-pages.spec.ts WALKTHROUGH/journeys/coverage.md WALKTHROUGH/journeys/nisaba-scholarly-read.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-fix-sweep-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
131. 2026-06-26 Messages center live browser BFF proxy#
Added a live browser coverage leg to messages-center.spec.ts. The test seeds
the BFF message store through POST /v1/admin/customer-messages/dispatch using
the exact sub from the browser's real access token, opens /messages without
mocking /api/messages/*, and asserts the page renders the dispatched rows and
receipt disclosure through the Next proxy. It then follows the deep link via
/api/messages/:id/follow and verifies the BFF records a clicked receipt,
marks read, archives, unsubscribes, and proves a same channel+category
re-dispatch is refused with 422 suppressed.
Verification:
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/messages-center.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck and focused/full Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during full-file Playwright: available memory observed above 7.8 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/messages-center.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "live BFF browser proxy"- 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/messages-center.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 13 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/messages-center.spec.ts WALKTHROUGH/journeys/messages-center-deliver-and-unsubscribe.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
132. 2026-06-26 Profile generated artifact deletion live browser receipt#
Closed the remaining browser-level generated_artifact receipt gap in
profile-customer-data-deletion.spec.ts. The new leg decodes the browser
session's real access-token sub, seeds a subject-owned Isis
generated_outputs row, opens /profile?path=data-rights, submits an immediate
generated_artifacts category deletion through the profile UI, and asserts the
completed live BFF response renders
data-profile-deletion-attestation="generated_artifact" with status=erased,
rowsRemoved=1, the dev audit key id, and a truncated signature. It then polls
Isis to verify the generated output row was hard-deleted. The older inline
snapshot case is retained only as the unattested tombstone negative-render
guard.
Verification:
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/profile-customer-data-deletion.spec.ts- passed
- Resource gate before typecheck / Playwright
- before focused/full Playwright and post-fix typecheck: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during full-file Playwright: available memory observed above 8.1 GiB
pnpm nx run @oshun/web:typecheck- passed after the short Isis-owner seed fix
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-customer-data-deletion.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "generated artifact erasure receipts"- first run exposed the Isis
generated_outputs.ownerIdvarchar(50) limit; rerun after shortening the generated-artifact test session seed: 1 passed
- first run exposed the Isis
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-customer-data-deletion.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 6 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/profile-customer-data-deletion.spec.ts WALKTHROUGH/journeys/account-deletion-and-dsar.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
133. 2026-06-26 Library second-device save sync resume#
Closed the full browser-level second-device library sync/resume gap for the
Nisaba search-result path. The updated search-saved-and-recent.spec.ts still
drives device A through the real /search save toggle, real saved-items BFF
POST, in-domain saved-state read-back, real DELETE/POST unsave/resave, and
BFF read-back. It now opens a fresh device-B browser context for the same
member, clears library/search/Nisaba localStorage before navigation, hydrates
/library?domain=nisaba&kind=passage from the real BFF store, and resumes the
saved passage into the exact Nisaba workspace URL.
Verification:
psql --version && which psql- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)at/usr/bin/psql
- passed:
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/search-saved-and-recent.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck and focused/full Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during full-file Playwright: available memory observed above 8.8 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "second-device Library"- 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/search-saved-and-recent.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 12 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/search-saved-and-recent.spec.ts WALKTHROUGH/journeys/library-save-collection-share.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
git diff --check- passed
134. 2026-06-26 Arete streak actions navigation-only guard#
Closed the documented /arete/streak navigation-only failure mode in
arete-streak-recovery.spec.ts. The new browser leg captures the member's real
/v1/arete/room snapshot, clicks Adjust into /arete/plan?intent=adjust,
verifies the plan masthead, then clicks Begin into
/tara/sit/when-the-mind-wanders, verifies the Tara player is still
not-started, and reads /v1/arete/room after both navigations to prove
neither action mutates Arete engagement state or writes a hidden streak record.
Verification:
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/arete-streak-recovery.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck and focused/full Playwright: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
- during full-file Playwright: available memory observed above 7.8 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/arete-streak-recovery.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "navigation-only"- first run hit a cold Tara RSC fallback before the Tara player hydrated; immediate rerun passed: 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/arete-streak-recovery.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 7 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/arete-streak-recovery.spec.ts WALKTHROUGH/journeys/arete-streak-recovery.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
135. 2026-06-26 Sophia citation handoff into Nisaba#
Closed the browser-level Sophia citation handoff gap for the shipped /sophia
page. SophiaAskForm now exposes a quiet "Open in Nisaba" source link for
passage citations, normalizing BFF search-nisaba-passage-* citation IDs into
the underlying nisaba-passage-* route target. The updated
sophia-grounded-answer-page.spec.ts submits the grounded query through the
live BFF, asserts the normalized citation target, clicks it, and verifies the
Nisaba passage-mode reading frame hydrates with the same passage id. The
cautious/partial Tao Te Ching branch also asserts its exact Nisaba citation
target.
Verification:
which psql- passed:
/usr/bin/psql
- passed:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/sophia/SophiaAskForm.tsx apps/oshun/web/e2e/sophia-grounded-answer-page.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck and browser runs: 15 GiB RAM, at least 12 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/sophia-grounded-answer-page.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "grounded-with-citations"- 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/sophia-grounded-answer-page.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 2 passed
136. 2026-06-26 Sophia grounded answer Library save/readback#
Closed the browser-level Sophia pin-to-Library gap for the shipped /sophia
page. SophiaAskForm now exposes a stable Save answer control on grounded
answer cards, builds a Library assistant-excerpt item with the answer
snapshot, witness trail, grounding state, citation count, and trust metadata,
and persists it through the real /v1/library/saved-items/nisaba/<itemId> BFF
route. The updated sophia-grounded-answer-page.spec.ts clicks the save
control, waits for the real saved-items POST, opens a fresh browser context with
the local Library cache cleared at
/library?domain=nisaba&kind=assistant-excerpt, and verifies that the saved
Sophia card hydrates from the BFF with the exact answer/witness summary,
assistant-excerpt kind, and grounded trust state before continuing the live
Nisaba citation handoff.
Verification:
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/sophia/SophiaAskForm.tsx apps/oshun/web/e2e/sophia-grounded-answer-page.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck and browser runs: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/sophia-grounded-answer-page.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "grounded-with-citations"- first run failed because the Library summary placed the answer before the witness trail and truncated the asserted witness title; summary ordering was corrected and the focused rerun passed: 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/sophia-grounded-answer-page.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 2 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/sophia/SophiaAskForm.tsx apps/oshun/web/e2e/sophia-grounded-answer-page.spec.ts WALKTHROUGH/journeys/sophia-grounded-answer.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
137. 2026-06-26 Sophia citation locator and back restore#
Closed the browser-level Sophia cited-locator and back-navigation gap for the
shipped /sophia citation path. SophiaAskForm now carries each passage
citation's real BFF summary as a nested locator query parameter in the Nisaba
handoff URL, exposes the locator on the citation link, and stores the last
Sophia answer plus return scroll in tab session storage before leaving the page.
NisabaSurface parses the locator, resolves it against the live passage body,
and renders a dedicated data-nisaba-citation-locator-highlight mark without
creating a user annotation. sophia-grounded-answer-page.spec.ts now asserts
the locator URL contract, the matched Nisaba reading-frame locator state, the
highlighted excerpt, and browser-back restoration to the same saved /sophia
answer card and scroll position.
Verification:
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/sophia/SophiaAskForm.tsx apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/e2e/sophia-grounded-answer-page.spec.ts- passed
- Resource gate before typecheck / Playwright
- before typecheck and browser runs: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/sophia-grounded-answer-page.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "grounded-with-citations"- first run failed because browser-back returned to
/sophiawithout the answer card; session answer/scroll restoration was added and the focused rerun passed: 1 passed
- first run failed because browser-back returned to
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/sophia-grounded-answer-page.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- 2 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/app/sophia/SophiaAskForm.tsx apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/e2e/sophia-grounded-answer-page.spec.ts WALKTHROUGH/journeys/sophia-grounded-answer.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
138. 2026-06-26 Messages quiet-hours weekday mask browser persistence#
Closed the browser-level quiet-hours weekday-mask gap for the shipped
/profile?path=notifications editor. NotificationPreferences now exposes each
quiet-hours day chip as an aria-pressed toggle with stable
data-profile-quiet-hours-day hooks. The updated
profile-notification-preferences.spec.ts enables quiet hours through the real
profile preference route, waits for the real notification-preferences PATCHes,
narrows Sunday/Saturday out of the active-day mask, reloads the profile editor,
and verifies the persisted start time and active-day mask come back from the
BFF-backed state. A focused component test also asserts the active-day PATCH
body and pressed-state transition.
Verification:
command -v psql && psql --version- passed:
/usr/bin/psql,psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/profile/NotificationPreferences.tsx apps/oshun/web/src/components/__tests__/NotificationPreferences.test.tsx apps/oshun/web/e2e/profile-notification-preferences.spec.ts- passed; emitted the existing Next pages-directory warning
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/NotificationPreferences.test.tsx src/components/profile/__tests__/NotificationPreferences.test.tsx- passed: 2 files, 13 tests
python3 V5/tools/validate-v5-docs.py- passed
- Resource gate before typecheck / Playwright
- before focused verification: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 9.0 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-notification-preferences.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 5 passed
pnpm exec prettier --check apps/oshun/web/src/components/profile/NotificationPreferences.tsx apps/oshun/web/src/components/__tests__/NotificationPreferences.test.tsx apps/oshun/web/e2e/profile-notification-preferences.spec.ts WALKTHROUGH/journeys/messages-quiet-hours-and-channel-binding.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
139. 2026-06-26 Atelier image plate controls and save refresh#
Closed the shipped /atelier and /atelier/image browser coverage gap around
plate controls and responsive layout. The Atelier image room now exposes a live
step rail, responsive room/composer grids, aspect and style option chips, a real
seed-lock toggle, a compare side-by-side panel, selection-driven step
advancement to step 4, and save-driven advancement to step 5. Cast/refine POST
payloads now carry the browser-selected specimen, aspect, style, and seed state.
The deterministic atelier-plate-kept save path also now refreshes existing
saved library rows, and the signed-in library hydrate path keeps a pending local
save refresh over an older same-id server row.
Verification:
command -v psql && psql --version- passed:
/usr/bin/psql,psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm --dir apps/oshun/web exec vitest run src/lib/library/webLibraryStore.test.ts src/lib/library/webLibraryStore.sync.test.ts- passed: 2 files, 17 tests
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/lilith/AtelierImageComposer.tsx apps/oshun/web/src/components/lilith/AtelierPlateActions.tsx apps/oshun/web/src/components/lilith/atelier.tsx apps/oshun/web/src/lib/library/webLibraryStore.ts apps/oshun/web/src/lib/library/webLibraryStore.test.ts apps/oshun/web/src/lib/library/webLibraryStore.sync.test.ts apps/oshun/web/e2e/atelier-image-to-library.spec.ts apps/oshun/web/e2e/atelier-plate-actions.spec.ts- passed; emitted the existing Next pages-directory warning
- Resource gate before focused typecheck / Playwright
- before browser verification: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 9.1 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/atelier-image-to-library.spec.ts e2e/atelier-plate-actions.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run exposed the stale same-id library save refresh bug; after the store fix, focused rerun passed: 15 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/lilith/AtelierImageComposer.tsx apps/oshun/web/src/components/lilith/AtelierPlateActions.tsx apps/oshun/web/src/components/lilith/atelier.tsx apps/oshun/web/src/lib/library/webLibraryStore.ts apps/oshun/web/src/lib/library/webLibraryStore.test.ts apps/oshun/web/src/lib/library/webLibraryStore.sync.test.ts apps/oshun/web/e2e/atelier-image-to-library.spec.ts apps/oshun/web/e2e/atelier-plate-actions.spec.ts WALKTHROUGH/customer/11-atelier/atelier-image.md WALKTHROUGH/customer/11-atelier/atelier.md WALKTHROUGH/journeys/atelier-image-to-library.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/atelier-image-to-library.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
140. 2026-06-26 Metis assessment submit to Themis adjudication#
Closed the themis-assessment-appeal customer-submit gap without seeding the
verdict through the operator route. /metis/assessment now submits a
rubric-valid answer to POST /v1/metis/assessment-submissions, the BFF runs the
Metis academic-integrity detector, adjudicates through the real
MetisThemisCanonicalBridge, captures the audit record, and returns a compact
Themis verdict result to the learner. Clear submissions render a closed appeal
path; suspicious submissions render an appeal link that opens the real
/integrity/<verdictId>/appeal workspace. The slice also updated the
walkthrough docs to mark submit→detection→adjudication as covered while leaving
operator review UI, gradebook read-back, rich learner evidence/rationale, and
messages notifications open.
Verification:
command -v psqlandpsql --version- passed:
/usr/bin/psql,psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/metis-integrity-route.test.ts- passed: 1 file, 9 tests
pnpm --dir apps/oshun/web exec vitest run src/components/lilith/MetisAssessmentEditor.test.tsx- passed: 1 file, 7 tests
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/metis-integrity.ts apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts apps/oshun/web/src/components/lilith/MetisAssessmentEditor.tsx apps/oshun/web/src/components/lilith/MetisAssessmentEditor.test.tsx apps/oshun/web/e2e/metis-assessment-submit.spec.ts- passed; emitted the existing Next pages-directory warning
- Resource gate before focused typecheck / Playwright
- before browser verification: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 9.5 GiB
pnpm nx run @oshun/bff:typecheck- passed
pnpm nx run @oshun/web:typecheck- first run failed in stale generated
.next/dev/types/routes.d.ts; after clearingapps/oshun/web/.next, rerun passed and Nx reported the target as flaky
- first run failed in stale generated
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/metis-assessment-submit.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run exposed the clear-answer fixture was 228 words in the browser word counter; after trimming the fixture, focused rerun passed: 4 passed
python3 V5/tools/validate-v5-docs.py- passed
142. 2026-06-26 Operator Metis Themis appeal review UI#
Closed the /operator/metis operator-review UI gap for the
themis-assessment-appeal journey. The BFF appeal store now indexes filed
appeals, exposes an admin-scoped GET /v1/metis/integrity/appeals queue, and
keeps reset isolation for route tests. /operator/metis now mounts a live
Themis appeal review panel that reads the queue, renders the canonical dispute,
claimant, evidence count, timeline deadline states, due-process summary, and
resolution note controls, then resolves the appeal through the existing real BFF
POST /v1/metis/integrity/appeals/:appealId/resolve route and updates the row
to status=closed.
Verification:
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/metis/academic-integrity-appeal-store.ts apps/oshun/bff/src/routes/metis-integrity.ts apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts apps/oshun/web/src/components/lilith/MetisThemisAppealReviewPanel.tsx apps/oshun/web/src/components/lilith/metis.tsx apps/oshun/web/e2e/operator-metis-themis-review.spec.ts- passed; emitted the existing Next pages-directory warning
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/metis-integrity-route.test.ts- first run exposed a stale due-process text assertion (
Comparedvs. the realTop access-to-justice profile...bridge summary); after correcting the assertion, rerun passed: 1 file, 10 tests
- first run exposed a stale due-process text assertion (
- Resource gate before focused typecheck / Playwright
- before browser verification: 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 9.8 GiB
pnpm nx run @oshun/bff:typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-metis-themis-review.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 1 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/bff/src/routes/metis-integrity.ts apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts apps/oshun/web/e2e/operator-metis-themis-review.spec.ts WALKTHROUGH/customer/02-home-discovery/messages.md WALKTHROUGH/journeys/themis-assessment-appeal.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/themis-assessment-appeal.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/metis-byom-ingest.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 16 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/bff/src/metis/academic-integrity-appeal-store.ts apps/oshun/bff/src/routes/metis-integrity.ts apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts apps/oshun/web/src/components/lilith/MetisThemisAppealReviewPanel.tsx apps/oshun/web/src/components/lilith/metis.tsx apps/oshun/web/e2e/operator-metis-themis-review.spec.ts WALKTHROUGH/operator/operator-metis.md WALKTHROUGH/journeys/themis-assessment-appeal.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/themis-assessment-appeal.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
git diff --check- passed
143. 2026-06-26 Themis decision notification to Messages#
Closed the /messages outcome-notification gap for the
themis-assessment-appeal journey. The Metis integrity resolve route now
publishes an in-app incident message to the claimant through the existing
customer message center store after the canonical Themis appeal workspace
closes. The message carries the verdict id, closed status, operator resolution
note, a tracked /integrity/<verdictId>/appeal follow link, and sent/delivered
receipts. The route returns a notification envelope while keeping the appeal
resolution durable if message-center dedupe or suppression prevents a second
delivery.
The browser coverage now seeds the appeal for the actual customer principal used
by the shell session, resolves the appeal from /operator/metis, reads the
learner inbox from the real BFF, opens /messages, verifies the decision row,
follows the appeal-record link through the Next /api/messages proxy, checks
the clicked receipt, marks the row read, and reads the final BFF state back.
Verification:
- Resource gate before browser verification
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 12 GiB and returned to 13 GiB after exit
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/metis-integrity.ts apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts apps/oshun/web/e2e/operator-metis-themis-review.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/metis-integrity-route.test.ts- passed: 1 file, 11 tests
pnpm nx run @oshun/bff:typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-metis-themis-review.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 1 passed
144. 2026-06-26 Themis gradebook terminal read-back#
Closed the themis-assessment-appeal gradebook terminal-state gap. The Metis
integrity BFF now emits a real @metis/gradebook entry when an assessment
submission produces an appealable non-clear academic-integrity verdict. That
first emission is version 1 with integrityVerdict: "pending" and the Themis
verdict id as integrityVerdictRef. When the appeal resolves, the same route
emits a terminal integrity_verdict_change correction with
cascadeFrom: "appeal", correctsVersion: 1, the operator resolution note as
the correction reason, and the final integrity verdict.
The BFF exposes the role-filtered read-back route
GET /v1/metis/gradebook/:assignmentId/latest, and the operator browser flow
now renders the resolved row's gradebook correction (pending → violation,
version 2, correctsVersion=1) before reading the same entry directly from the
real BFF.
Verification:
- Resource gate before focused typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 9.6 GiB and returned to 13 GiB after exit
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/metis/gradebook-store.ts apps/oshun/bff/src/routes/metis-integrity.ts apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts apps/oshun/web/src/components/lilith/MetisThemisAppealReviewPanel.tsx apps/oshun/web/e2e/operator-metis-themis-review.spec.ts- passed; emitted the existing Next pages-directory warning
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/metis-integrity-route.test.ts- passed: 1 file, 11 tests
pnpm nx run @oshun/bff:typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-metis-themis-review.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/metis-assessment-submit.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 4 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/bff/src/metis/gradebook-store.ts apps/oshun/bff/src/routes/metis-integrity.ts apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts apps/oshun/web/src/components/lilith/MetisThemisAppealReviewPanel.tsx apps/oshun/web/e2e/operator-metis-themis-review.spec.ts WALKTHROUGH/journeys/themis-assessment-appeal.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/themis-assessment-appeal.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
145. 2026-06-26 Themis verdict outcome controls#
Closed the remaining themis-assessment-appeal operator-decision gaps. The
Metis integrity BFF now exposes
POST /v1/metis/integrity/appeals/:appealId/decision, which accepts a compact
operator outcome (uphold, inconclusive, clear, or severe) and a
resolution note instead of accepting a raw client-side teacherOverride block.
The route retrieves the stored canonical academic-integrity verdict, maps the
outcome into the bridge's repeated adjudication contract, records the resulting
upheld or overturned verdict, closes the appeal workspace, emits the
customer decision message, and writes the terminal gradebook correction.
/operator/metis now renders Uphold / Revise / Dismiss / Escalate controls in
the live Themis appeal row. The browser test verifies the controls, toggles the
Escalate control and returns to Uphold, submits outcome: "uphold" with no raw
teacherOverride, and reads back the closed workspace, upheld verdict status,
gradebook correction, and /messages decision notification. The BFF route suite
covers the non-default inconclusive, clear, and severe outcome mappings.
Verification:
pnpm exec eslint --no-warn-ignored libs/metis/integrations/src/themis-canonical-wiring.ts apps/oshun/bff/src/metis/academic-integrity-appeal-store.ts apps/oshun/bff/src/routes/metis-integrity.ts apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts apps/oshun/web/src/components/lilith/MetisThemisAppealReviewPanel.tsx apps/oshun/web/e2e/operator-metis-themis-review.spec.ts- passed; emitted the existing Next pages-directory warning
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/metis-integrity-route.test.ts- passed: 1 file, 13 tests
- Resource gate before focused typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 12 GiB
pnpm nx run @oshun/bff:typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-metis-themis-review.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 1 passed
pnpm --dir libs/metis/integrations exec vitest run src/themis-canonical-wiring.test.ts- passed: 1 file, 9 tests
pnpm exec tsc -p libs/metis/integrations/tsconfig.lib.json --noEmit- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check libs/metis/integrations/src/themis-canonical-wiring.ts apps/oshun/bff/src/metis/academic-integrity-appeal-store.ts apps/oshun/bff/src/routes/metis-integrity.ts apps/oshun/bff/src/__tests__/metis-integrity-route.test.ts apps/oshun/web/src/components/lilith/MetisThemisAppealReviewPanel.tsx apps/oshun/web/e2e/operator-metis-themis-review.spec.ts WALKTHROUGH/journeys/themis-assessment-appeal.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/themis-assessment-appeal.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
146. 2026-06-26 PWA queued-write update prompt#
Closed the pwa-update-flow queued-write prompt gap. The service worker now
publishes OSHUN_SYNC_QUEUE_STATUS whenever a background-sync action is queued
or replayed, and PwaBootstrap carries the pending count into
PwaUpdatePrompt. When an update prompt appears while the real
oshun-sync-queue IndexedDB store holds pending writes, the prompt renders a
compact data-pwa-update-note="queued-write" continuity note with the count and
copy that Refresh now preserves the held service-worker queue.
The new Chromium Playwright leg queues an authenticated Arete check-in through
the real sw.js OSHUN_QUEUE_ACTION path, verifies the pending row in
IndexedDB, surfaces the update prompt, and asserts the queued-write note, count,
service-worker queue copy, and Refresh-now affordance. The journey remains
partial only because cold-start telemetry is still unasserted.
Verification:
pnpm --dir apps/oshun/web exec vitest run src/components/PwaUpdatePrompt.test.tsx- passed: 1 file, 4 tests
pnpm exec eslint --no-warn-ignored apps/oshun/web/public/sw.js apps/oshun/web/src/components/PwaBootstrap.tsx apps/oshun/web/src/components/PwaUpdatePrompt.tsx apps/oshun/web/src/components/PwaUpdatePrompt.test.tsx apps/oshun/web/e2e/pwa-lifecycle-deepening.spec.ts- passed; emitted the existing Next pages-directory warning
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 12 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/pwa-lifecycle-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "queued write update prompt"- passed: 1 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/public/sw.js apps/oshun/web/src/components/PwaBootstrap.tsx apps/oshun/web/src/components/PwaUpdatePrompt.tsx apps/oshun/web/src/components/PwaUpdatePrompt.test.tsx apps/oshun/web/e2e/pwa-lifecycle-deepening.spec.ts WALKTHROUGH/journeys/pwa-update-flow.md WALKTHROUGH/journeys/offline-first-time-use.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/pwa-update-flow.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
147. 2026-06-26 PWA update-flow telemetry closure#
Closed the remaining pwa-update-flow telemetry gaps. The shared analytics
schema now includes pwa_update_applied and pwa_sync_queued, and
PwaBootstrap emits them from the existing service-worker lifecycle seams:
Refresh-now controllerchange, silent standalone cold start with an active
worker and no prompt, and pending service-worker queue status. The telemetry
normalizes the transient ?surface=pwa launch marker out of the route while
preserving meaningful route query state.
The Chromium real-infra browser slice now captures oshun-analytics:event
inside the page and asserts:
pwa_update_appliedfor explicit Refresh-now apply on/explorepwa_update_appliedwithapplyMode: "silent-cold-start"after standalone relaunch to/activitypwa_sync_queuedfor a realsw.jsIndexedDB queue row created byOSHUN_QUEUE_ACTION
The pwa-update-flow journey and coverage matrix are now deep for the V1
PWA update lifecycle. offline-first-time-use remains partial because its
remaining gaps are the broader search-result offline Save hint, Tara reflection
queue UI, user-facing network-only denial copy, and long-lived Nisaba pin
behavior.
Verification:
psql --version- confirmed installed: PostgreSQL 16.14 at
/usr/bin/psql
- confirmed installed: PostgreSQL 16.14 at
pnpm --dir apps/oshun/web exec vitest run src/analytics/pwaLifecycleTelemetry.test.ts src/components/__tests__/PwaBootstrap.test.tsx- passed: 2 files, 13 tests
pnpm --dir libs/oshun/analytics exec vitest run src/__tests__/customer-taxonomy.test.ts- passed: 1 file, 41 tests
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/analytics/pwaLifecycleTelemetry.ts apps/oshun/web/src/analytics/pwaLifecycleTelemetry.test.ts apps/oshun/web/src/components/PwaBootstrap.tsx apps/oshun/web/src/components/__tests__/PwaBootstrap.test.tsx apps/oshun/web/e2e/pwa-lifecycle-deepening.spec.ts libs/oshun/analytics/src/types.ts libs/oshun/analytics/src/customer-taxonomy.ts libs/oshun/analytics/src/__tests__/customer-taxonomy.test.ts- passed; emitted the existing Next pages-directory warning
- Resource gate before focused typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no
competing broad verification process; a separate
claudeprocess appeared during the final Playwright run, but available memory stayed above 9 GiB
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 48 GiB free disk, and no
competing broad verification process; a separate
pnpm nx run @oshun/web:typecheck- passed after clearing corrupted generated
.next/dev/typesoutput left by a prior Next dev-server run
- passed after clearing corrupted generated
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/pwa-lifecycle-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "Refresh now|standalone cold start|queued write update prompt"- passed: 3 passed
148. 2026-06-26 Offline auth/session network-only SW denial#
Closed the service-worker transport half of offline-first-time-use Step 8.
offline-shell-routes now registers and controls the page with the real
sw.js, poisons Cache Storage with matching /api/auth/session and
/v1/auth/session responses across the current oshun-* cache families, proves
the online requests still come from the network, then takes the browser offline
and verifies the same auth/session requests reject instead of being satisfied
from cache. This is the real-browser negative control for the /api/auth/* and
/v1/auth/* network-only policy.
offline-first-time-use remains partial because the customer-visible "This
action requires an internet connection" action/copy, search-result offline-save
sync hints, Tara reflection queue UI, and long-lived Nisaba offline-pin expiry
remain undriven.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/offline-shell-routes.spec.ts WALKTHROUGH/journeys/offline-first-time-use.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/offline-first-time-use.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/offline-shell-routes.spec.ts- passed
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 14 GiB available, 31 GiB swap, 47 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 10 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/offline-shell-routes.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "network-only"- passed: 1 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/offline-shell-routes.spec.ts WALKTHROUGH/journeys/offline-first-time-use.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/offline-first-time-use.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
149. 2026-06-26 Offline uncached deep-route real-SW fallback#
Closed the service-worker navigation half of offline-first-time-use Step 7.
offline-shell-routes now controls the browser with the real sw.js, reloads
/ so networkFirstWithFallback stores the home shell, proves a unique
/domains/veritas/claims/real-sw-uncached-* URL is absent from every oshun-*
cache, then takes Chromium offline and navigates directly to that uncached deep
route. The navigation succeeds under the original deep URL, the customer shell
renders from a response.fromServiceWorker() document response, and browser
back returns to the cached home shell. Without the real service worker fallback,
the offline page.goto would fail before the shell could hydrate.
offline-first-time-use remains partial because the search-result offline-save
sync hint, Tara reflection queue UI, customer-visible network-only denial
action/copy, and long-lived Nisaba offline-pin expiry remain undriven. Addendum
#150 closes the naturally hydrated PwaOfflineFallback controls on the same
real-SW navigation.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/offline-shell-routes.spec.ts WALKTHROUGH/journeys/offline-first-time-use.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/offline-first-time-use.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/offline-shell-routes.spec.ts- passed
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 14 GiB available, 31 GiB swap, 47 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 13 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/offline-shell-routes.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "uncached deep navigation"- passed: 1 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/e2e/offline-shell-routes.spec.ts WALKTHROUGH/journeys/offline-first-time-use.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/offline-first-time-use.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
150. 2026-06-26 Offline uncached deep-route hydrated fallback controls#
Closed the remaining Step-7 UI coupling gap for offline-first-time-use. When
sw.js falls back from an uncached deep navigation to the cached home shell, it
now marks the returned HTML document with data-oshun-sw-offline-fallback and
an x-oshun-sw-offline-fallback: shell response header, plus a durable Cache
Storage marker containing the target URL. The fallback document also embeds the
same compact retry/cached-surface controls as a no-JS recovery layer; when React
hydrates, PwaOfflineFallback reads the service-worker marker, removes the
static layer, treats the shell as offline even if the browser's
navigator.onLine is still optimistic, and renders the existing compact
controls. The marker is cleared on the next online event so the fallback does
not persist after recovery.
The real-infra Chromium leg now proves the full path in one browser: warm /
under active sw.js, prove a unique Veritas deep URL is absent from Cache
Storage, go offline, navigate directly to the uncached deep URL, assert the
document response came from the service worker with the fallback header, and
assert the service-worker marker URL plus the retry and cached-route controls
are visible before browser back returns to the cached home shell.
offline-first-time-use remains partial for the search-result offline-save sync
hint, Tara reflection queue UI, customer-visible network-only denial
action/copy, and long-lived Nisaba offline-pin expiry.
Verification:
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/PwaOfflineFallback.test.tsx src/__tests__/pwa-service-worker-policy.test.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/public/sw.js apps/oshun/web/src/components/PwaOfflineFallback.tsx apps/oshun/web/src/components/__tests__/PwaOfflineFallback.test.tsx apps/oshun/web/src/__tests__/pwa-service-worker-policy.test.ts apps/oshun/web/e2e/offline-shell-routes.spec.ts- passed
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 10 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/offline-shell-routes.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "uncached deep navigation"- passed: 1 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/public/sw.js apps/oshun/web/src/components/PwaOfflineFallback.tsx apps/oshun/web/src/components/__tests__/PwaOfflineFallback.test.tsx apps/oshun/web/src/__tests__/pwa-service-worker-policy.test.ts apps/oshun/web/e2e/offline-shell-routes.spec.ts WALKTHROUGH/journeys/offline-first-time-use.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/offline-first-time-use.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
151. 2026-06-26 Offline search-result save local-sync hint#
Closed the user-facing Step-5 search-save gap for offline-first-time-use.
SearchResultsView now tracks result saves performed while
navigator.onLine === false and renders compact inline status next to both the
result-card Save affordance and the selected-result preview save action:
Saved locally · sync will retry when you're back online. Unsaving the same
result removes that pending local-sync marker. The store remains the existing
fail-soft useOshunWebLibraryStore path, so this addendum deliberately proves
local durability and visible feedback rather than over-claiming natural
background-sync scheduling for the search-save write.
offline-write-deepening now resets nisaba-passage-speech through the real
saved-items BFF for the seeded user, opens the live
/search?q=guarded speech&domain=nisaba result set, takes Chromium offline,
clicks the real result Save pill, asserts the visible local-sync hint, and
verifies oshun.web.library.saved-items.v1 contains On Guarded Speech with
/library/passage/nisaba-passage-speech. The journey remains partial for
natural service-worker sync scheduling/replay on this specific search-save
surface, Tara reflection queue UI, customer-visible network-only denial
action/copy, and long-lived Nisaba offline-pin expiry.
Verification:
pnpm --dir apps/oshun/web exec vitest run src/components/search/__tests__/SearchResultsViewTelemetry.test.tsx- passed: 3 passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/search/SearchResultsView.tsx apps/oshun/web/src/components/search/__tests__/SearchResultsViewTelemetry.test.tsx apps/oshun/web/e2e/offline-write-deepening.spec.ts- passed with the repo's existing Next pages-directory warning
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 9 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/offline-write-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "search result"- passed: 1 passed
152. 2026-06-26 Tara reflection offline queue sync dot#
Closed the user-facing Step-6 Tara reflection gap for offline-first-time-use.
TaraSitPlayer now renders the existing Lilith LSyncDot state="queued" beside
the queued reflection copy, with data-tara-reflection-sync-state="queued" as
the deterministic browser selector. This keeps the completion surface restrained
and inline while making the pending local-write state explicit.
first-tara-sit-deepening no longer simulates this branch by shadowing
navigator.onLine. The test now loads the real Tara sit page, reaches the
completion reflection form, calls context.setOffline(true), verifies
navigator.onLine === false, saves a reflection, asserts the queued sync dot
and "Saved locally, will sync" copy, and reads back the queued
tara:reflection:<id> localStorage payload. offline-first-time-use remains
partial for natural service-worker sync scheduling/replay on the search/Tara
write surfaces, customer-visible network-only denial action/copy, and long-lived
Nisaba offline-pin expiry.
Verification:
pnpm --dir apps/oshun/web exec vitest run src/components/lilith/TaraSitPlayer.test.tsx- passed: 7 passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/lilith/TaraSitPlayer.tsx apps/oshun/web/e2e/first-tara-sit-deepening.spec.ts- passed with the repo's existing Next pages-directory warning
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 13 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/first-tara-sit-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "reflection saved while offline"- passed: 1 passed
153. 2026-06-26 Offline auth action denial copy#
Closed the customer-visible Step-8 action/copy gap for offline-first-time-use.
SessionManagementSection now normalizes browser offline failures from the
profile Active devices network-only actions to the exact inline denial:
This action requires an internet connection. The refresh path still issues
GET /v1/auth/sessions; it just skips GET retries when
navigator.onLine === false so the button returns to idle quickly.
offline-shell-routes now opens /profile?path=sessions under the real service
worker, waits for Active devices to hydrate, takes Chromium offline, clicks
Refresh, asserts the /v1/auth/sessions request fails instead of being served
from cache, and verifies the inline denial copy plus restored Refresh button
state. offline-first-time-use remains partial only for natural
browser-delivered sync scheduling/replay on the specific search/Tara write
surfaces and the long-lived Nisaba offline-pin expiry path.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/profile/SessionManagementSection.tsx apps/oshun/web/src/components/profile/__tests__/SessionManagementSection.test.tsx apps/oshun/web/e2e/offline-shell-routes.spec.ts WALKTHROUGH/journeys/offline-first-time-use.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/offline-first-time-use.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec vitest run src/components/profile/__tests__/SessionManagementSection.test.tsx- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/profile/SessionManagementSection.tsx apps/oshun/web/src/components/profile/__tests__/SessionManagementSection.test.tsx apps/oshun/web/e2e/offline-shell-routes.spec.ts- passed
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, no competing broad verification process; Playwright memory stayed above 10 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/offline-shell-routes.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "explicit denial"- passed: 1 passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check apps/oshun/web/src/components/profile/SessionManagementSection.tsx apps/oshun/web/src/components/profile/__tests__/SessionManagementSection.test.tsx apps/oshun/web/e2e/offline-shell-routes.spec.ts WALKTHROUGH/journeys/offline-first-time-use.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/offline-first-time-use.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
154. 2026-06-26 Assistant dock storage scope#
Closed the storage-scope gap for assistant-handoff-context-carry.
shell-utility-dock.spec.ts now drives the real customer shell from /explore,
clears the assistant storage keys, expands the dock, and verifies the real
oshun-web-assistant-dock-mode localStorage mirror for expanded, collapsed,
and closed. The test sends a real assistant message through
/v1/assistant/sessions/:sessionId/message, asserts the active Explore thread
and prompt are stored in sessionStorage['oshun-web-assistant-thread'], reloads
the same tab to prove the collapsed dock mode and transcript restore, then opens
a second tab to prove it inherits only the current local dock mode while seeding
an independent sessionStorage-backed assistant session whose transcript does not
contain the original prompt.
At the time of this storage-scope pass, assistant-handoff-context-carry
remained partial only for per-persona/domain permittedToolGrants policy
enforcement and the future recommendation BFF endpoint for persona handoff
candidates; later entries close both items.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/shell-utility-dock.spec.ts WALKTHROUGH/journeys/assistant-handoff-context-carry.md WALKTHROUGH/results/assistant-handoff-context-carry.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/shell-utility-dock.spec.ts- passed
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing broad verification process; during the passing Playwright run, available memory stayed above 9 GiB
pnpm nx run @oshun/web:typecheck- passed after regenerating stale
.nextroute types
- passed after regenerating stale
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/shell-utility-dock.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 3 passed
155. 2026-06-26 Onboarding sensitive memory reconciliation#
Closed the Step-4 sensitive-context reconciliation gap for
onboarding-ten-steps. OnboardingWizard now exposes explicit
wellbeing-signals and sensitive-traits switches on the Interests step, keeps
both off by default, mirrors the choices into the Memory step, and carries
assistant.memory.categories.sensitiveTraits through the final preferences
patch alongside wellbeingSignals. The controls stay aligned with the existing
memory consent model: the opted-in categories are visible on Memory, disabled
while the user is still in session-memory posture, then enabled once Approved
memory is selected.
onboarding-deepening.spec.ts now signs up a real browser user, enables both
sensitive-context switches, verifies the Memory-step reconciliation, confirms
the Ready summary chips, and asserts the real PATCH /v1/preferences request
body posts scope='profile', consentGranted=true, wellbeingSignals=true,
and sensitiveTraits=true. onboarding-ten-steps remains deep; the remaining
documented gap is offline Finish queueing.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/onboarding/OnboardingWizard.tsx apps/oshun/web/src/lib/hooks/use-onboarding.ts apps/oshun/web/e2e/onboarding-deepening.spec.ts WALKTHROUGH/journeys/onboarding-ten-steps.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/onboarding-ten-steps.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec vitest run src/components/onboarding/__tests__/OnboardingWizard.test.tsx- passed: 10 passed
files=$(git diff --name-only -- '*.ts' '*.tsx' '*.md'); pnpm exec prettier --check $files- passed
files=$(git diff --name-only -- '*.ts' '*.tsx'); pnpm exec eslint --no-warn-ignored $files- passed with the repo's existing Next pages-directory warning
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 9 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/onboarding-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "sensitive context"- passed: 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/onboarding-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 4 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/onboarding-depth-introduction.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 1 passed
python3 tools/render-vdocs.py- passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
156. 2026-06-26 Onboarding first-run target resolver#
Closed the Step-8 first-run target weighting gap for onboarding-ten-steps.
onboarding-deepening.spec.ts now completes two no-redirect browser onboarding
flows through the real Finish path and real PATCH /v1/preferences: structured
learning with guided courses lands on /domains/metis?origin=home, and the
general practice fallback with only Tara selected lands on
/domains/tara?origin=home. The Ready step is asserted before Finish via
data-onboarding-first-run-entry, then the final URL and customer shell root
are asserted after the preferences response.
onboarding-ten-steps remains deep; the only remaining documented gap is
offline Finish queueing/background-sync replay.
Verification:
python3 tools/render-vdocs.py- passed
python3 V5/tools/validate-v5-docs.py- passed
pnpm exec prettier --check $(git diff --name-only -- '*.ts' '*.tsx' '*.md')- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/onboarding-deepening.spec.ts- passed
pnpm --dir apps/oshun/web exec vitest run src/lib/public-entry.test.ts- passed: 7 passed
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 9 GiB
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/onboarding-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "first-run target"- passed: 2 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/onboarding-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/onboarding-depth-introduction.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 1 passed
157. 2026-06-28 Onboarding offline Finish queue/replay#
Closed the offline Finish queueing/background-sync replay gap for
onboarding-ten-steps. OnboardingWizard now treats browser-offline Finish as
a stable saved-and-queued state: after local onboarding and preference-store
persistence, it posts the exact PATCH /v1/preferences payload to the shipped
service-worker queue instead of trying to navigate away. The inline Ready-step
status uses data-onboarding-finish-queued and keeps a clear Continue action.
The online 5xx branch remains separate and still shows
data-onboarding-finish-error.
onboarding-lifecycle.spec.ts now drives the full real-dev-infra path: real
signup, real service-worker controller, browser-offline Finish, IndexedDB
oshun-sync-queue assertion with bearer auth and preference body, Chromium
Background Sync dispatch, live BFF /v1/preferences read-back, and queue drain.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/onboarding/OnboardingWizard.tsx apps/oshun/web/src/components/onboarding/__tests__/OnboardingWizard.test.tsx apps/oshun/web/e2e/onboarding-lifecycle.spec.ts WALKTHROUGH/journeys/onboarding-ten-steps.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/customer/01-onboarding/onboarding.md WALKTHROUGH/results/onboarding-ten-steps.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/onboarding/OnboardingWizard.tsx src/components/onboarding/__tests__/OnboardingWizard.test.tsx e2e/onboarding-lifecycle.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/components/onboarding/__tests__/OnboardingWizard.test.tsx- passed: 12 passed
pnpm --dir apps/oshun/web typecheck- passed
- Resource gates before targeted/full Playwright
- 15 GiB RAM, 12-13 GiB available before launches, 31 GiB swap, 51 GiB free disk, and no competing broad verification process; during the full Playwright file run, available memory stayed above 8.9 GiB
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/onboarding-lifecycle.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "offline Finish"- passed: 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/onboarding-lifecycle.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
157. 2026-06-26 Trust & Safety Metis report affordances#
Closed the Metis origin-affordance gap for user-flag-to-review without
overstating the combined browser coverage. MetisLesson and MetisTutor now
mount the shared TrustSafetyFlagButton with stable target kind/id/label
metadata:
metis://lesson/phl-102/stoic-ethics/section-4metis://tutor/session-14-hour-with-epictetus
TrustSafetyFlagButton now submits through the same-origin
/api/trust-safety/flags route, which reads the customer bearer cookie
server-side and forwards the request to the real BFF POST /v1/user-reports.
The focused browser spec keeps one full live UI submit in the combined run
(Nisaba → same-origin route → BFF → admin moderation workspace read-back), and
verifies the Metis lesson/tutor target metadata plus dialog category/rationale
controls in the same run. This avoids claiming Metis live queue persistence from
the combined dev-server run; an isolated Metis tutor submit was observed
passing, but the stable committed gate documents only the combined-run evidence.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm --dir apps/oshun/web exec prettier --write ...- passed for the touched web and walkthrough files
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/TrustSafetyFlagButton.tsx src/app/api/trust-safety/flags/route.ts src/components/lilith/metis.tsx e2e/user-flag-to-review.spec.ts- passed
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing broad verification process; during Playwright, available memory stayed above 9 GiB
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/user-flag-to-review.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 4 passed
python3 tools/render-vdocs.py- passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
161. 2026-06-26 Assistant handoff tool-grant policy#
Closed the customer-domain tool-grant gap for assistant-handoff-context-carry.
ShellLayout now resolves assistant permittedToolGrants from the active
customer domain instead of handing every customer launch the full grant set:
- profile and other neutral shell surfaces expose only
navigation.open - library/search/source-study domains add
library.save - activity/action-capable domains such as Tara add
domain.action.execute
The browser handoff spec opens the assistant from /profile, /library, and
/domains/tara?origin=home and asserts the mounted handoff grant attributes
match those policies.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec prettier --write apps/oshun/web/src/components/ShellLayout.tsx apps/oshun/web/src/components/__tests__/ShellLayout.test.tsx apps/oshun/web/e2e/assistant-handoff-deepening.spec.ts- passed
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing build/test process; during Playwright, available memory stayed above 9 GiB
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/ShellLayout.test.tsx- passed: 60 passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/ShellLayout.tsx apps/oshun/web/src/components/__tests__/ShellLayout.test.tsx apps/oshun/web/e2e/assistant-handoff-deepening.spec.ts- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/assistant-handoff-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 3 passed
python3 tools/render-vdocs.py- passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
162. 2026-06-26 Assistant persona recommendation endpoint#
Closed the final named gap for assistant-handoff-context-carry: the BFF now
serves canonical persona handoff candidates from
GET /v1/assistant/persona-handoffs/recommendations. The endpoint uses the
shared buildAssistantPersonaHandoffState policy, validates shell and memory
scope query values, enforces customer domain scopes for real domain contexts,
and requires an admin scope before returning admin-shell candidates.
assistant-session-bff.spec.ts now drives the endpoint against the real dev BFF
for:
- unauthenticated 401
- customer
/librarycandidates with recommended Stoic/source personas and restricted admin-only personas - requested admin persona fallback in the customer shell
- customer domain-scope denial (
domain:taracannot request Veritas candidates) - admin-shell candidates with the admin session-only memory boundary
assistant-handoff-context-carry is now marked deep in coverage.md.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/assistant.ts apps/oshun/web/e2e/assistant-session-bff.spec.ts- passed
- Resource gate before targeted typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 31 GiB swap, 47 GiB free disk, and no competing build/test process; during Playwright, available memory stayed around 10 GiB
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/assistant.ts apps/oshun/web/e2e/assistant-session-bff.spec.ts- passed
pnpm nx run @oshun/bff:typecheck- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/assistant-session-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 14 passed
python3 tools/render-vdocs.py- passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
168. 2026-06-26 User report decision and reporter receipt API#
Deepened user-flag-to-review beyond intake and admin queue read-back. Live
customer reports now have a real moderator decision endpoint:
POST /v1/admin/user-reports/:reportId/decision. The route is admin-scoped,
accepts only terminal AdminReportOutcome values, updates the live
customer-submitted report to actioned or dismissed, stamps the reviewer and
related moderation content id, and records trust_safety.user_report.decided
into the admin audit-event store.
Reporters now have a scoped receipt endpoint, GET /v1/user-reports/mine, which
returns only their own live reports. The real-BFF Playwright leg creates a live
privacy report, proves another reporter cannot see it, records a moderator
content_removed decision, reads the reporter receipt back as actioned, and
verifies the audit event through /v1/admin/search?facets=auditEvents.
Remaining product gaps for this journey are now narrower: actor suspension,
second-reviewer signoff, notification delivery, appeal filing, crisis/severity
classification, brigade rate-limits, and origin surfaces outside the current
Veritas / Nisaba / Tara / Metis mounts. Browser /profile/safety receipt
rendering is superseded by §169.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/admin/state.ts apps/oshun/bff/src/routes/user-reports.ts apps/oshun/bff/src/app.ts apps/oshun/bff/src/__tests__/user-reports-route.test.ts apps/oshun/web/e2e/user-flag-to-review.spec.ts- passed
pnpm exec prettier --write WALKTHROUGH/journeys/user-flag-to-review.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/admin/state.ts apps/oshun/bff/src/routes/user-reports.ts apps/oshun/bff/src/app.ts apps/oshun/bff/src/__tests__/user-reports-route.test.ts apps/oshun/web/e2e/user-flag-to-review.spec.ts- passed with the existing
state.tsoshun-stub/no-fake-confidencefixture warnings
- passed with the existing
pnpm nx run @oshun/bff:typecheck- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/user-reports-route.test.ts- passed: 9 passed
- Resource gate before targeted Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap, 47 GiB free disk, and no competing broad build/test process; during Playwright, available memory stayed above 9 GiB
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/user-flag-to-review.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 5 passed
170. 2026-06-26 User report decision notification delivery#
Closed the in-app decision-notification gap for user-flag-to-review. Moderator
decisions on live customer reports now emit a real customer-message-center
incident row to the reporter: subject "Your Trust & Safety report was
reviewed", in-app channel, high priority, stable
user-report-decision-<reportId> message id, Safety Center deep link, and
queued → sent → delivered receipts. The decision response and audit payload
include the notification message id and delivery status without failing the
moderator decision if the message center reports duplicate/suppressed/store
errors.
The /messages browser behavior now normal-clicks deep links by fetching the
existing /api/messages/<messageId>/follow endpoint, recording the clicked
receipt, and routing to the returned internal target. The focused real-dev-infra
Playwright journey opens /messages as the reporter, verifies the delivered
report-status row and receipts, clicks "Open Safety Center", lands on
/profile/safety?reportId=<id>, and reads the BFF inbox back to prove the
clicked receipt. External push/email delivery, appeals, actor suspension,
second-reviewer signoff, crisis/severity classification, brigade rate-limits,
and broader origin surfaces remain tracked separately.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/user-reports.ts apps/oshun/bff/src/__tests__/user-reports-route.test.ts apps/oshun/web/src/components/MessageCenter.tsx apps/oshun/web/e2e/user-flag-to-review.spec.ts- passed
pnpm exec prettier --write WALKTHROUGH/journeys/user-flag-to-review.md WALKTHROUGH/customer/09-account/profile-safety.md WALKTHROUGH/customer/02-home-discovery/messages.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
- Resource gate before targeted verification
- 15 GiB RAM, 13 GiB available, 30 GiB swap, 47 GiB free disk, and no competing broad build/test process; during Playwright, available memory stayed above 9.5 GiB
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/user-reports.ts apps/oshun/bff/src/__tests__/user-reports-route.test.ts apps/oshun/web/src/components/MessageCenter.tsx apps/oshun/web/e2e/user-flag-to-review.spec.ts- passed; emitted the existing Next pages-directory warning
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/user-reports-route.test.ts- passed: 9 passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/MessageCenter.test.tsx- passed: 11 passed
pnpm nx run @oshun/bff:typecheck- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/user-flag-to-review.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 5 passed
python3 tools/render-vdocs.py- passed
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
python3 tools/render-vdocs.py- passed: rendered 1634 files
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
169. 2026-06-26 User report receipt on Profile Safety#
Closed the browser receipt gap for user-flag-to-review. /profile/safety now
reads the reporter-scoped GET /v1/user-reports/mine receipt feed in addition
to the existing public-scene abuse receipt feed. The Report receipts section has
a submitted-reports lane with stable row/status/outcome attributes, target
label, category, submitted/updated timestamps, reporter rationale, and a
customer-safe Trust & Safety reviewed marker for actioned reports.
The focused real-BFF Playwright journey now uses the already-primed browser
member's real access token to create a live customer report, decisions it as a
moderator with content_removed, verifies direct /v1/user-reports/mine
read-back and cross-reporter isolation, then opens /profile/safety as the same
reporter and proves the row renders as actioned / content_removed.
Remaining user-flag-to-review gaps are actor suspension, second-reviewer
signoff, notification delivery, appeal filing, crisis/severity classification,
brigade rate-limits, and origin surfaces outside the current Veritas / Nisaba /
Tara / Metis mounts.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.tsx apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.test.tsx apps/oshun/web/src/app/profile/safety/safety.module.css apps/oshun/web/e2e/user-flag-to-review.spec.ts WALKTHROUGH/customer/09-account/profile-safety.md WALKTHROUGH/journeys/user-flag-to-review.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.tsx apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.test.tsx apps/oshun/web/e2e/user-flag-to-review.spec.ts- passed; emitted the existing Next pages-directory warning
pnpm --dir apps/oshun/web exec vitest run src/app/profile/safety/ProfileSafetyJourney.test.tsx- passed: 7 passed
pnpm --dir apps/oshun/web typecheck- passed
python3 tools/render-vdocs.py- passed: rendered 1634 files
python3 V5/tools/validate-v5-docs.py- passed
- Resource gate before targeted Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap, 47 GiB free disk, and no competing broad build/test process; during Playwright, available memory stayed above 9.7 GiB
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/user-flag-to-review.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 5 passed
171. 2026-06-26 Messages crisis-frame dispatch suppression#
Closed the local-dev crisis suppression leg for
messages-quiet-hours-and-channel-binding. The admin-scoped customer-message
dispatch route now consults the same server-side durable crisis-frame runtime
used by assistant, payments, reminders, and scene gates. When a recipient has an
active Lilith crisis frame, non-essential dispatches return an explicit
202 dispatch.suppressed.crisis_frame decision with no inbox row; critical
incident/support dispatches still bypass with
dispatch.bypassed.safety_critical.
The BFF route unit test binds a durable in-memory crisis-frame marker and proves
immediate suppression, safety-critical bypass, and replay-time holding for a
delayed quiet-hours dispatch whose recipient enters crisis before the replay
boundary runs. The real-HTTP Playwright spec activates a live crisis frame via
POST /v1/admin/safety/crisis-frame/activate, waits for the member's
/v1/safety/crisis-frames/mine projection, dispatches a non-essential
reengagement message and verifies the empty inbox, schedules a quiet-hours
message before activation and proves /v1/admin/customer-messages/replay-due
keeps it delayed with dispatch.suppressed.crisis_frame, then dispatches a
critical incident and verifies inbox read-back.
Remaining messages-quiet-hours-and-channel-binding gaps are external
Telegram/WhatsApp/email/SMS provider handoff beyond the message-center receipt
seam, the per-channel x domain category matrix, Lilith tone-band persona-policy
send checks, real OTP/magic-link ownership delivery, and the full
consent-revocation cascade.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/customer/customer-message-center-store.ts apps/oshun/bff/src/routes/customer-message-center.ts apps/oshun/bff/src/__tests__/customer-message-center-route.test.ts apps/oshun/web/e2e/messages-center-bff.spec.ts WALKTHROUGH/journeys/messages-quiet-hours-and-channel-binding.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/customer/02-home-discovery/messages.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/customer/customer-message-center-store.ts apps/oshun/bff/src/routes/customer-message-center.ts apps/oshun/bff/src/__tests__/customer-message-center-route.test.ts apps/oshun/web/e2e/messages-center-bff.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/customer-message-center-route.test.ts- passed: 17 passed
pnpm nx run @oshun/bff:typecheck- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/messages-center-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 16 passed
python3 tools/render-vdocs.py- passed: rendered 1634 files
python3 V5/tools/validate-v5-docs.py- passed
git diff --check- passed
172. 2026-06-27 Memory pause UI persistence and assistant dock indicator#
Closed the Step 6 browser gap for memory-edit-pause-forget. The
/profile/memory pause switch now hydrates the persisted Iris pause record
independently of review rows, writes pause/resume through
PATCH /v1/iris/adapter/pause?role=settings, mirrors the BFF response into the
profile memory control state, and emits a same-shell pause-change event. The
customer shell listens for that event and refreshes the assistant-scoped pause
state on focus/visibility; when pause is active, assistant handoffs and the dock
panel use memory scope off. The collapsed assistant dock now carries a compact
memory disclosure with data-shell-assistant-dock-memory-scope.
The Playwright journey now proves the UI and server contract together over real
dev infra: a signed-in real Iris user toggles pause from /profile/memory, the
live BFF pause readback reports paused: true and continuity
indicator: "off", /profile assistant dock opens with
data-assistant-context-memory-scope="off" and
data-assistant-memory-scope="off", the collapsed dock summary exposes the
memory-off scope, and returning to /profile/memory resumes through the banner
button with persisted BFF readback paused: false.
At this point, the still-open memory-edit-pause-forget gaps were Step 4
browser conflict injection, full-clear cron execution at the grace-window
boundary, anonymous/offline route breadth, and cross-device pause drift beyond
the same-shell event/focus refresh. Step 4 was later closed in section 243.
Verification:
pnpm exec prettier --write WALKTHROUGH/customer/09-account/profile-memory.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/journeys/memory-edit-pause-forget.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md apps/oshun/web/e2e/memory-edit-pause-forget.spec.ts apps/oshun/web/src/app/profile/memory/ProfileMemoryControls.tsx apps/oshun/web/src/app/profile/memory/memory-state.test.ts apps/oshun/web/src/app/profile/memory/memory-state.ts apps/oshun/web/src/components/ShellLayout.tsx apps/oshun/web/src/components/__tests__/ShellLayout.test.tsx apps/oshun/web/src/components/assistant-dock/AssistantDock.tsx apps/oshun/web/src/components/assistant-dock/__tests__/AssistantDock.test.tsx- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/e2e/memory-edit-pause-forget.spec.ts apps/oshun/web/src/app/profile/memory/ProfileMemoryControls.tsx apps/oshun/web/src/app/profile/memory/memory-state.test.ts apps/oshun/web/src/app/profile/memory/memory-state.ts apps/oshun/web/src/components/ShellLayout.tsx apps/oshun/web/src/components/__tests__/ShellLayout.test.tsx apps/oshun/web/src/components/assistant-dock/AssistantDock.tsx apps/oshun/web/src/components/assistant-dock/__tests__/AssistantDock.test.tsx- passed; emitted the existing Next pages-directory warning
pnpm --dir apps/oshun/web exec vitest run src/app/profile/memory/memory-state.test.ts src/app/profile/memory/ProfileMemoryControls.test.tsx src/components/assistant-dock/__tests__/AssistantDock.test.tsx src/components/__tests__/ShellLayout.test.tsx- passed: 4 files, 76 tests
pnpm --dir apps/oshun/web typecheck- passed
python3 tools/render-vdocs.py- passed: rendered 1634 files
python3 V5/tools/validate-v5-docs.py- passed
- Resource gates before broad/expensive checks
- 15 GiB RAM, 13 GiB available, 30 GiB swap, 47 GiB free disk, and no competing broad build/test process; during Playwright, available memory stayed above 8.8 GiB
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/memory-edit-pause-forget.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 10 passed
173. 2026-06-28 Tenant OneRoster periodic pull reconciliation#
Closed the server-side periodic SIS pull gap for tenant-oneroster-roster-sync.
The admin OneRoster route now exposes POST /v1/admin/lms/oneroster/pull as a
local-dev worker handoff. A pull payload carries pullId, sourceSystem,
tenantId, and normalized OneRoster users/enrollments; the route derives
pull:{tenantId}:{pullId}, reuses the same dryRunOneRosterImport/apply store
gate as manual commits, and persists only clean reconciliations.
The real-BFF journey now seeds a manual commit, runs a clean pull that updates
an existing user plus creates a new student/enrollment, reads the derived pull
commit back from /v1/admin/lms/oneroster, rejects duplicate pull ids with
409 duplicate_pull, and drives a drift-conflict pull that returns
422 has_conflicts, emits tenant.oneroster.pull.conflicts_detected, and
leaves roster counts unchanged. The dedicated operator diff table was still a
tracked product gap at this point; §174 closes it.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/admin-oneroster-apply.ts apps/oshun/bff/src/__tests__/admin-oneroster-apply-route.test.ts apps/oshun/web/e2e/tenant-oneroster-provisioning-bff.spec.ts WALKTHROUGH/journeys/tenant-oneroster-roster-sync.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/tenant-oneroster-roster-sync.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/bff exec eslint --no-warn-ignored src/routes/admin-oneroster-apply.ts src/__tests__/admin-oneroster-apply-route.test.ts src/tenant-console/oneroster-apply-store.test.ts src/tenant-console/oneroster-route.test.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/tenant-oneroster-provisioning-bff.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-oneroster-apply-route.test.ts src/tenant-console/oneroster-apply-store.test.ts src/tenant-console/oneroster-route.test.ts- passed: 13 passed
pnpm --dir apps/oshun/bff typecheck- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm docs:center,pnpm docs:center:check,pnpm docs:center:verify- passed
pnpm --dir apps/oshun/web e2e tenant-oneroster-provisioning-bff.spec.ts- passed
git diff --check- passed
174. 2026-06-28 Tenant OneRoster operator diff preview table#
Closed the dedicated operator-visible diff table gap for
tenant-oneroster-roster-sync. The admin OneRoster route now exposes
POST /v1/admin/lms/oneroster/preview, a no-mutation preview endpoint that
diffs { tenantId, incomingUsers, incomingEnrollments } against the committed
tenant roster through the same dryRunOneRosterImport engine used by apply and
pull. The response contains canApply, conflict strings, before/after roster
counts, and row-level user create, user update, enrollment create, and blocked
conflict rows.
/operator/lms now includes a first-class OneRoster import diff table. The
browser test seeds a committed roster through real
/v1/admin/lms/oneroster/apply, opens /operator/lms, drives the diff form
through browser /v1/admin/lms/oneroster/preview, verifies clean diff rows,
verifies blocked conflict rows, and reads the roster back to prove preview has
no mutation side effect. The journey now retains only production scheduler and
tenant-admin commit-control questions, not a missing local walkthrough/test
surface.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/tenant-console/oneroster-apply-store.ts apps/oshun/bff/src/routes/admin-oneroster-apply.ts apps/oshun/bff/src/__tests__/admin-oneroster-apply-route.test.ts apps/oshun/web/src/app/operator/lms/page.tsx apps/oshun/web/src/components/lilith/OneRosterDiffPreviewForm.tsx apps/oshun/web/src/components/lilith/OneRosterDiffPreviewForm.test.tsx apps/oshun/web/e2e/operator-lms.spec.ts WALKTHROUGH/operator/operator-lms.md WALKTHROUGH/journeys/tenant-oneroster-roster-sync.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/journeys/README.md WALKTHROUGH/results/tenant-oneroster-roster-sync.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/bff exec eslint --no-warn-ignored src/tenant-console/oneroster-apply-store.ts src/routes/admin-oneroster-apply.ts src/__tests__/admin-oneroster-apply-route.test.ts src/tenant-console/oneroster-apply-store.test.ts src/tenant-console/oneroster-route.test.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/operator/lms/page.tsx src/components/lilith/OneRosterDiffPreviewForm.tsx src/components/lilith/OneRosterDiffPreviewForm.test.tsx e2e/operator-lms.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-oneroster-apply-route.test.ts src/tenant-console/oneroster-apply-store.test.ts src/tenant-console/oneroster-route.test.ts- passed
pnpm --dir apps/oshun/web exec vitest run src/components/lilith/OneRosterDiffPreviewForm.test.tsx src/app/operator/lms/__tests__/page.test.tsx src/components/lilith/LmsConnectorValidateForm.test.tsx- passed
pnpm --dir apps/oshun/bff typecheck- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm docs:center,pnpm docs:center:check,pnpm docs:center:verify,pnpm docs:center:test- passed: docs-center test reported 61 passed, 5 skipped
pnpm --dir apps/oshun/web e2e operator-lms.spec.ts- passed
git diff --check- passed
175. 2026-06-28 Billing crypto issued-paywall support action#
Closed the /billing/crypto issued-paywall support-link gap for
sign-up-and-pay-crypto. The pending invoice notice already exposed
mailto:billing@oshun.app; the issued CryptoPaywall now exposes the same
billing-support action when a customer is blocked at the issued-asset trust
disclosure gate and when the payment address is visible.
The browser journey still runs through real dev infra: the spec issues BTC and
USDC/Base invoices through the live BFF quote route, loads /billing/crypto
through the app's by-id invoice fetcher, and now asserts the support action as a
single 44 px target in the BTC address-visible state, the USDC disclosure-gated
state, and the USDC post-ack address-visible state. The journey remains partial
for the external wallet/provider, oracle, receipt, and return-to-gated-surface
legs outside the local browser/BFF seam.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/billing/crypto/CryptoPaywall.tsx apps/oshun/web/e2e/billing-crypto-paywall.spec.ts WALKTHROUGH/customer/09-account/billing-crypto.md WALKTHROUGH/journeys/sign-up-and-pay-crypto.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/sign-up-and-pay-crypto.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/billing/crypto/CryptoPaywall.tsx e2e/billing-crypto-paywall.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before Playwright
- 15 GiB RAM, 12 GiB available, 30 GiB swap, 51 GiB disk free, and no competing broad build/test process; during Playwright, available memory stayed above 9.2 GiB.
pnpm --dir apps/oshun/web e2e billing-crypto-paywall.spec.ts- passed: 10 passed
pnpm docs:center,pnpm docs:center:check,pnpm docs:center:verify,pnpm docs:center:test- passed
git diff --check- passed
178. 2026-06-28 Tara to Nisaba citation locator drilldown#
Closed the Step 7 locator-drilldown gap for tara-to-nisaba-handoff. The
authenticated-shell Nisaba destination now carries an exact Sophia-style locator
in the URL, proves the reading frame matches that sentence in paragraph 1, and
asserts the rendered NisabaCitationTrailPanel primary support step exposes the
Canonical source source type plus the chapter/paragraph/sentence locator.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/domains/nisaba/NisabaCitationTrailPanel.tsx apps/oshun/web/src/components/domains/nisaba/__tests__/NisabaCitationTrailPanel.test.tsx apps/oshun/web/e2e/tara-to-nisaba-handoff-destination.spec.ts WALKTHROUGH/journeys/tara-to-nisaba-handoff.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/domains/NisabaSurface.tsx src/components/domains/nisaba/NisabaCitationTrailPanel.tsx src/components/domains/nisaba/__tests__/NisabaCitationTrailPanel.test.tsx e2e/tara-to-nisaba-handoff-destination.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/components/domains/nisaba/__tests__/NisabaCitationTrailPanel.test.tsx- passed: 1 file, 8 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before Playwright
- 15 GiB RAM, 12 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during Playwright, available memory stayed above 12 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tara-to-nisaba-handoff-destination.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 1 passed
pnpm docs:center,pnpm docs:center:check,pnpm docs:center:verify,pnpm docs:center:test- passed: docs-center test reported 61 passed, 5 skipped
git diff --check- passed
177. 2026-06-28 Tara to Nisaba completion back-stack restore#
Closed the remaining browser-back gap for tara-to-nisaba-handoff. Tara session
completion now marks the current history entry with taraSessionState=complete;
the Tara route consumes that state from live client search params as well as the
server-provided route props, and SessionPlayer can mount or transition
directly to the completion surface for restored browser history. The real-infra
browser journey now completes a Tara sit, opens the Nisaba passage companion,
verifies the live customer-shell Nisaba destination, then uses browser-back to
prove /domains/tara?...&taraSessionState=complete restores the Tara completion
surface and the same companion card.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/domains/[domainId]/page.tsx apps/oshun/web/src/components/DomainRouteExperience.tsx apps/oshun/web/src/components/domains/TaraSurface.tsx apps/oshun/web/src/components/domains/tara/SessionPlayer.tsx apps/oshun/web/src/components/domains/__tests__/TaraSurface.test.tsx apps/oshun/web/src/components/domains/tara/__tests__/SessionPlayer.test.tsx apps/oshun/web/e2e/tara-session-player.spec.ts- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored 'src/app/domains/[domainId]/page.tsx' src/components/DomainRouteExperience.tsx src/components/domains/TaraSurface.tsx src/components/domains/tara/SessionPlayer.tsx src/components/domains/__tests__/TaraSurface.test.tsx src/components/domains/tara/__tests__/SessionPlayer.test.tsx e2e/tara-session-player.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/domains/__tests__/TaraSurface.test.tsx src/components/domains/tara/__tests__/SessionPlayer.test.tsx- passed: 2 files, 76 tests
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no
competing broad build/test process; during the focused Playwright reruns,
available memory stayed above 12 GiB, and during the full
tara-session-playerfile it stayed above 8.8 GiB.
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no
competing broad build/test process; during the focused Playwright reruns,
available memory stayed above 12 GiB, and during the full
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tara-session-player.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 12 passed
pnpm docs:center,pnpm docs:center:check,pnpm docs:center:verify,pnpm docs:center:test- passed: docs-center test reported 61 passed, 5 skipped
176. 2026-06-28 Telegram profile expired-link recovery#
Closed the /profile/telegram expired deep-link gap for
telegram-bot-assistant-delivery. The unlinked Telegram card now uses a small
client countdown panel around the live BFF nonce response: while the nonce is
inside its window it renders the primary Open Telegram to link anchor, and
once browser time reaches expiresAtIso it removes that stale anchor, switches
the copy to the closed-window recovery copy, renders a disabled Link expired
control at 44 px+, and leaves Refresh link as the active recovery action.
The browser journey still uses real dev infra. The focused spec mints a live
GET /v1/telegram/link nonce, advances browser time beyond that nonce's
expiresAtIso, asserts the disabled expired state, restores browser time, and
clicks the real server-action refresh path to prove POST /v1/telegram/link
rotates back to an active t.me link. The existing real webhook completion,
linked render, mobile/offline/no-telemetry, and anonymous redirect branches stay
covered in the same spec.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/profile/telegram/ProfileTelegramLinkPanel.tsx apps/oshun/web/src/app/profile/telegram/ProfileTelegramLinkPanel.test.tsx apps/oshun/web/src/app/profile/telegram/page.tsx apps/oshun/web/e2e/profile-telegram-bridge.spec.ts WALKTHROUGH/customer/09-account/profile-telegram.md WALKTHROUGH/journeys/telegram-bot-assistant-delivery.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/telegram-bot-assistant-delivery.md WALKTHROUGH/results/README.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/profile/telegram/page.tsx src/app/profile/telegram/ProfileTelegramLinkPanel.tsx src/app/profile/telegram/ProfileTelegramLinkPanel.test.tsx e2e/profile-telegram-bridge.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/app/profile/telegram/ProfileTelegramLinkPanel.test.tsx- passed: 1 file, 2 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during Playwright, available memory stayed above 9.8 GiB.
pnpm --dir apps/oshun/web e2e profile-telegram-bridge.spec.ts- passed: 5 passed
pnpm docs:center,pnpm docs:center:check,pnpm docs:center:verify,pnpm docs:center:test- passed
git diff --check- passed
179. 2026-06-28 Multi-device mobile evidence equality#
Closed the mobile evidence-source equality gap for
multi-device-workspace-handoff. The multi-device-handoff-deepening browser
journey now selects the scoped Veritas evidence source on desktop, waits until
that active source is persisted in the workspace tab state, carries the
desktop-persisted tab state into a fresh 390×844 mobile browser context, opens
the captured workspace deep link, and asserts the mobile workspace hydrates in
stacked layout with the URL-restored evidence panel and the same rendered
[data-workspace-evidence-inspector] ID.
The scoped /v1/veritas/adapter/saved-articles fixture remains documented
because the local BFF still exposes a saved-article read route but no
authenticated saved-article writer for E2E setup; this slice closes the mobile
ID-equality assertion, not that writer gap.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/multi-device-handoff-deepening.spec.ts WALKTHROUGH/journeys/multi-device-workspace-handoff.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/multi-device-handoff-deepening.spec.ts --max-warnings=0- passed
- Resource gate before typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during Playwright, available memory stayed above 11 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/multi-device-handoff-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 2 passed
pnpm docs:center,pnpm docs:center:check,pnpm docs:center:verify,pnpm docs:center:test- passed
git diff --check- passed
180. 2026-06-28 Multi-device Home sync-state copy#
Closed the remaining Step 9 sync-state coverage gap for
multi-device-workspace-handoff. The multi-device-handoff-deepening browser
journey now holds the real Home profile/preference refresh in flight so
HomeMultiDeviceContinuityPanel remains in
[data-home-multi-device-status="syncing"] long enough to assert the exact
"Syncing across devices" label. It then releases the same refresh as a transport
failure, asserts exact "Sync delayed" copy plus the calm error detail and retry
affordance, clicks Refresh sync, holds the retry in syncing, and fulfills
the live profile/preferences envelopes to prove the panel returns to
[data-home-multi-device-status="idle"] and exact "Synced across devices" copy.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/multi-device-handoff-deepening.spec.ts WALKTHROUGH/journeys/multi-device-workspace-handoff.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/multi-device-handoff-deepening.spec.ts --max-warnings=0- passed
- Resource gate before typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during Playwright, available memory stayed above 12 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/multi-device-handoff-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 2 passed
pnpm docs:center,pnpm docs:center:check,pnpm docs:center:verify,pnpm docs:center:test- passed
git diff --check- passed
181. 2026-06-28 Multi-device no-stale handoff failure modes#
Closed the remaining Iris no-false-success / no-stale-payload failure-mode gap
for multi-device-workspace-handoff. The workspace-multi-panel failed-write
branch now proves a blocked writeWorkspaceIrisMobileHandoffState leaves no
success timestamp and no oshun.iris.mobile-handoff.v1 receipt in localStorage.
The multi-device-deepening tab-cap branch now goes beyond FIFO eviction: after
MAX_WORKSPACE_TABS evicts the oldest tab, it waits for the active workspace
state link, verifies the visible Iris token link shape, writes the handoff, then
asserts the persisted handoff token matches the visible link while the
tab-scoped Iris item IDs and route paths target the post-eviction active tab
instead of the evicted tab.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/multi-device-deepening.spec.ts apps/oshun/web/e2e/workspace-multi-panel.spec.ts WALKTHROUGH/journeys/multi-device-workspace-handoff.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/multi-device-deepening.spec.ts e2e/workspace-multi-panel.spec.ts --max-warnings=0- passed
- Resource gate before typecheck / Playwright
- 15 GiB RAM, 12-13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final Playwright run, available memory stayed above 9.8 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/multi-device-deepening.spec.ts e2e/workspace-multi-panel.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
pnpm docs:center,pnpm docs:center:check,pnpm docs:center:verify,pnpm docs:center:test- passed; docs-center test reported 61 passed and 5 skipped
182. 2026-06-28 Memory pause cross-device drift#
Closed the cross-device pause-drift breadth gap for memory-edit-pause-forget.
The real-Iris Playwright journey now creates two isolated browser contexts
sharing one BFF-issued session: device A pauses memory from /profile/memory,
device B opens /profile, waits for the live
/v1/iris/adapter/pause?role=assistant read, expands the assistant dock, and
asserts the context handoff, memory disclosure, transcript state, and collapsed
dock summary all report memory off. Device A then resumes from the
/profile/memory banner, device B reloads /profile, and the assistant dock
returns to session memory in both the memory disclosure and transcript state.
The journey remained partial at this point because Step 4 browser conflict injection and full-clear grace expiry were still open. Step 4 was later closed in section 243; full-clear grace expiry remains server-cron-bound.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/memory-edit-pause-forget.spec.ts WALKTHROUGH/journeys/memory-edit-pause-forget.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/memory-edit-pause-forget.spec.ts --max-warnings=0- passed
- Resource gates before typecheck / Playwright
- 15 GiB RAM, 12-13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final Playwright run, available memory stayed above 8.4 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/memory-edit-pause-forget.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 13 passed
pnpm docs:center,pnpm docs:center:check,pnpm docs:center:verify,pnpm docs:center:test- passed; docs-center test reported 61 passed and 5 skipped
183. 2026-06-29 Tenant Admin Identity Cockpit Coverage#
Closed the tenant-admin /identity missing-walkthrough / missing-Playwright gap
for the currently shipped read-only cockpit without over-claiming the unshipped
setup controls. The new tenant-admin Playwright project starts the dedicated
apps/oshun/tenant-admin Next app with the real Oshun BFF, verifies anonymous
/identity redirect-before-render, seeds real SSO connections through
POST /v1/admin/sso, sets the tenant-admin session cookie, and proves
/identity renders only the caller tenant's live SSO row via
/v1/tenant-console/sso. It also verifies the read-only SSO probe,
auth-challenge, federation, and evidence-table outputs, while the fixture-level
axe scan caught and closed the tenant shell muted-token contrast issue.
The journey remains partial because tenant-admin metadata import/upload controls, the per-tenant auth-policy edit panel, tenant-admin sandbox sign-in per-verdict UI, and the draft→enabled state machine are still unshipped.
Verification:
pnpm --dir apps/oshun/tenant-admin exec eslint --no-warn-ignored playwright.config.ts e2e/fixtures.ts e2e/tenant-identity.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/tenant-sso-config.spec.ts --max-warnings=0- passed
- Resource gates before Playwright
- 15 GiB RAM, 12-13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final Playwright run, available memory stayed above 12 GiB.
pnpm --dir apps/oshun/tenant-admin lint- passed
pnpm --dir apps/oshun/tenant-admin typecheck- passed
pnpm --dir apps/oshun/tenant-admin exec playwright test -c playwright.config.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 2 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
195. 2026-06-29 Tara sound library coverage#
Closed the stale Tara sound library gap on /domains/tara/sounds. The route now
documents the actual V1 audio behavior: ambient previews and mixer layers fetch
real BFF-generated WAVs from /v1/tara/sessions/:sessionId/ambient.wav, bells
are browser Web Audio synthesis, binaural beats are real stereo oscillators, and
music rows remain metadata-only with an explicit no-recording disclosure.
The component now exposes stable route hooks for the root, tabs, filters, search, cards, presets, mixer, volume controls, save dialog, music rows, bell selection, and binaural cards. It also hardens the route by using real range inputs for volume controls, explicit semantic buttons for preset load/delete and bell selection, target-size-compliant custom preset delete controls, reduced motion CSS for the route animations, and SSR-safe preference hydration so localStorage-backed bell selection no longer creates stale hydration attributes.
The new Playwright coverage signs in through real dev auth seeding and drives
the live customer route. It verifies default ambient state, reduced motion,
master volume range, default preset loading, real 200 audio/wav ambient
responses for preview and mixer fetches, category/search filtering, preview
start/stop, the five-layer mixer cap, layer range/mute/remove controls, favorite
persistence, custom preset save/delete, music no-recording honesty, bell
keyboard selection and reload persistence, binaural filter/playback state, route
back-stack, and scoped axe scans.
The walkthrough keeps the remaining product gaps explicit: music recordings are not attached to this route in V1, saved sound preferences are localStorage-only instead of profile-synced, Playwright proves WAV responses and Web Audio state but not perceptual speaker output, and mobile mixer ergonomics still need a dedicated mobile viewport pass if this route becomes a primary mobile workflow.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/domains/tara/TaraSoundLibrary.tsx apps/oshun/web/e2e/tara-sounds.spec.ts WALKTHROUGH/customer/03-tara/domains-tara-sounds.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/domains/tara/TaraSoundLibrary.tsx e2e/tara-sounds.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web typecheck- passed before and after the SSR-safe preference hydration fix
- Resource gates before typecheck, Playwright, and docs-center
- 15 GiB RAM, 12-13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final Playwright run, available memory stayed above 12 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tara-sounds.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- initial focused run exposed an over-broad weather search assertion and a reload cleanup bug in the spec
- second focused run exposed the custom preset delete target-size violation
- third focused run exposed a real localStorage/SSR hydration mismatch for selected bell persistence
- final run passed after those fixes: 2 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
194. 2026-06-29 Tara collections browser coverage#
Closed the Tara collections browser gap on /domains/tara/collections without
claiming a live collections backend. The route now passes the collection query
param into TaraCollectionsBrowserPage, resolves Tara search collection ids
such as col-002 onto the shipped tara-coll-* fixture ids, and exposes stable
anchors for the browser, daily widget, search, filters, result count, grid,
cards, detail view, and item rows. Unknown collection ids fall back to the
browser instead of rendering an empty detail.
The new Playwright coverage drives the real signed-in web route and real dev infra auth seeding. It verifies the no-selection browser, daily widget hydration, eight collection cards, card type/count metadata, live search, clear, seasonal filter, empty-result state, reduced motion, detail hydration from both search-style and canonical ids, unknown-id fallback, keyboard card activation, detail back, header back-stack, and scoped browser/detail axe scans. The existing Tara scoped-search spec was tightened so Better Sleep Collection navigation proves the detail view opens, not merely that the route shell loads.
The pass also removed the decorative Tara search highlight pulse after the focused browser run exposed that it could still compute as animated during the reduced-motion assertion. Highlighting remains by color; the nonessential pulse is gone.
The walkthrough keeps the remaining product gaps explicit: the collections route
is still local simulated content, the polished /tara hub does not link to this
depth route, daily-content date/refresh semantics need a product decision, and
collection item rows remain display-only.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/domains/tara/TaraCollections.tsx apps/oshun/web/src/app/domains/tara/collections/page.tsx apps/oshun/web/e2e/tara-collections.spec.ts apps/oshun/web/e2e/tara-scoped-search.spec.ts- passed
pnpm exec prettier --write apps/oshun/web/src/components/domains/tara/TaraSearchEngine.tsx WALKTHROUGH/customer/03-tara/domains-tara-collections.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/domains/tara/TaraCollections.tsx src/components/domains/tara/TaraSearchEngine.tsx src/app/domains/tara/collections/page.tsx e2e/tara-collections.spec.ts e2e/tara-scoped-search.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web typecheck- passed before and after the final Tara search reduced-motion fix
- Resource gates before Playwright, typecheck, and docs-center
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final Playwright run, available memory stayed above 8.1 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tara-collections.spec.ts e2e/tara-scoped-search.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first focused run: collections coverage passed, existing Tara search reduced-motion assertion failed on the decorative highlight pulse
- final run after removing the pulse: 5 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
193. 2026-06-29 Tara analytics dashboard coverage#
Closed the stale Tara analytics walkthrough gap on /domains/tara/analytics.
The dashboard now exposes stable analytics anchors and remains backed by the
real /v1/tara/analytics model, not seeded-random fixture history. The UI also
retries the initial no-token auth hydration race so an authenticated member does
not get a false empty dashboard from an early 401. The heatmap row labels now
match the BFF contract (weekday: 0 is Sunday), and heatmap titles describe
session counts rather than minutes.
The new Playwright coverage creates fresh signed-in users, records real Tara sit
completions through /v1/tara/sittings/:id/complete, reads the BFF analytics
model directly, and proves the browser dashboard mirrors that same model:
empty-member state, populated totals, rhythm, completion rate, practiced day,
per-sitting rows, weekday/hour heatmap cell, range switch, CSV export, reduced
motion, chart title text, scoped axe scans, and route back-stack.
The walkthrough keeps the remaining product gaps explicit: no source link from
the polished /tara hub to this route was found, BFF/database failures reuse
the honest empty state rather than a distinct error panel, and chart titles are
native hover text rather than a keyboard-accessible tooltip/data-table pattern.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/domains/tara/TaraAnalyticsDashboard.tsx apps/oshun/web/e2e/tara-analytics.spec.ts- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/domains/tara/TaraAnalyticsDashboard.tsx e2e/tara-analytics.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/domains/tara/__tests__/TaraAnalyticsDashboard.test.tsx- passed: 1 file, 2 tests
- Resource gates before Playwright and docs-center
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final Playwright run, available memory stayed above 8.3 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tara-analytics.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed before the heatmap label correction: 3 passed
- final run passed after the heatmap label/title correction: 3 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
192. 2026-06-29 Tara programs browser coverage#
Closed the Tara programs browser gap on /domains/tara/programs without
claiming a persisted programs backend. Program cards, the route browser root,
detail view, day-detail view, milestones, enrollment CTA, and current/locked day
rows now expose stable anchors for the shipped UI state. The detail hero and
reached milestone chip also use the existing cream-safe Tara text colors so the
route-level axe scan can enforce real contrast.
The new Playwright coverage drives the shipped fixture data for enrolled
tara-prog-001 and tara-prog-002, non-enrolled tara-prog-003, and a missing
programId. It verifies the no-selection browser, My Programs and All Programs
card counts, selection from a card, deep-link hydration, unknown-id fallback,
local enrollment, future-day locking, current/completed day rows, day detail
quote/intention/meditation/activity content, detail back, route header back, and
scoped browser/detail accessibility scans.
The walkthrough now keeps the remaining product gaps explicit: no fixture route currently hides My Programs, there is no day-completion or un-enroll control, milestone crossing is not browser-drivable, card selection does not write a URL param, and enrollment/progress are local component state until the BFF contract lands.
Verification:
psql --version- passed: PostgreSQL 16.14
pnpm exec prettier --write apps/oshun/web/src/components/domains/tara/TaraCollections.tsx apps/oshun/web/e2e/tara-programs.spec.ts WALKTHROUGH/customer/03-tara/domains-tara-programs.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/domains/tara/TaraCollections.tsx e2e/tara-programs.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web typecheck- passed
- Resource gates before Playwright
- 15 GiB RAM, 12-13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final Playwright run, available memory stayed above 8.5 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tara-programs.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run caught serious color-contrast violations in the program detail hero and reached milestone chip; fixed in the route styles
- final run passed: 5 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
189. 2026-06-29 Veritas-to-Nisaba counterclaim lineage coverage#
Closed the counterclaim handoff gap in veritas-to-nisaba-deeper. Counterclaim
inspection overlays now include a counterclaim-specific
open-nisaba-counterclaim-lineage action built through
resolveVeritasNisabaClaimRelationship, preserving the same real shell
cross-domain route contract as the primary claim source-lineage action while
using the counterclaim id and disagreement source set.
The browser journey now switches to the Counterclaims tab, opens
counterclaim-capacity-is-not-generation, captures the
veritas_inspection_opened analytics event for the counterclaim inspection,
asserts the counterclaim lineage href, and follows it into the real Nisaba
surface. The journey remains partial for exhaustive landed-passage citation
integrity across every interpretive claim, AAA-gated scholar bounce, and broader
tenant/source-scope failure modes.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/domains/veritas/VeritasClaimDetailWorkspace.tsx apps/oshun/web/src/components/domains/veritas/__tests__/VeritasClaimDetailWorkspace.test.tsx apps/oshun/web/e2e/veritas-nisaba-bridge.spec.ts WALKTHROUGH/customer/05-veritas/domains-veritas-claims-claimId.md WALKTHROUGH/journeys/veritas-to-nisaba-deeper.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/veritas-to-nisaba-deeper.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/domains/veritas/VeritasClaimDetailWorkspace.tsx src/components/domains/veritas/__tests__/VeritasClaimDetailWorkspace.test.tsx e2e/veritas-nisaba-bridge.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/components/domains/veritas/__tests__/VeritasClaimDetailWorkspace.test.tsx- passed: 7 passed
- Resource gates before typecheck / Playwright / docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final browser Playwright run, available memory stayed above 8.2 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/veritas-nisaba-bridge.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 9 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
188. 2026-06-29 Veritas-to-Nisaba edition-diff bridge coverage#
Closed the dedicated passage-edition diff gap that remained after the
Veritas-side retracted-source confidence band landed. The Nisaba notebook
retraction citation now exposes an open-edition-diff action to
/nisaba/compare with the shared Veritas cascade and citation id. The compare
route is query-aware: for cascade-ai-governance-survey-retraction, it renders
a source-retracted edition-update notice with stable cascade/source/citation
anchors, the pinned edition version, locator, original/corrected citation
labels, before/after diff rows, and a corrected-source handoff back to Veritas.
The veritas-nisaba-bridge browser journey now proves the whole path from the
retracted Veritas claim confidence band → Nisaba notebook marker → affected
notebook citation → Nisaba compare edition diff → corrected Veritas source
profile. The journey remains partial only for broader exhaustive step-6 coverage
across every landed interpretive claim, locator granularity, manuscript hops,
AAA-gate bounce, and tenant/source-scope failure modes.
Verification:
pnpm exec prettier --write apps/oshun/web/src/lib/lilith-data/types.ts apps/oshun/web/src/lib/lilith-data/nisaba-depth.ts apps/oshun/web/src/app/nisaba/compare/page.tsx apps/oshun/web/src/components/lilith/nisaba.tsx apps/oshun/web/e2e/veritas-nisaba-bridge.spec.ts WALKTHROUGH/customer/07-nisaba/nisaba-compare.md WALKTHROUGH/customer/07-nisaba/nisaba-notebook.md WALKTHROUGH/journeys/veritas-to-nisaba-deeper.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/veritas-to-nisaba-deeper.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/lib/lilith-data/types.ts src/lib/lilith-data/nisaba-depth.ts src/app/nisaba/compare/page.tsx src/components/lilith/nisaba.tsx e2e/veritas-nisaba-bridge.spec.ts --max-warnings=0- passed
- Resource gates before typecheck / Playwright / docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final browser Playwright run, available memory stayed above 8.2 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/veritas-nisaba-bridge.spec.ts e2e/veritas-retraction-cascade.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 19 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
187. 2026-06-29 Veritas-to-Nisaba retracted-source confidence-band coverage#
Closed the Veritas-side step 8 browser gap in veritas-to-nisaba-deeper without
conflating unrelated claims. The new claim-ai-governance-adoption route
represents the AI-governance survey retraction that already drives the Nisaba
notebook correction notice. Its claim detail now exposes a retracted-source
confidence band with stable cascade, affected-source, prior-score,
current-score, soft-correction, and Nisaba-notebook-marker anchors. The browser
journey follows that notebook marker into the real /nisaba/notebook route and
asserts the correction notice for cascade-ai-governance-survey-retraction.
The component now imports Veritas domain helpers from their concrete source modules instead of the stale generated package index, keeping the direct Vitest layer aligned with the shipped object-model and counterclaim helpers.
The journey remains partial because the dedicated passage-edition diff UI and exhaustive landed-passage citation coverage are still not shipped or browser-drivable.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/domains/veritas/VeritasClaimDetailWorkspace.tsx apps/oshun/web/src/components/domains/veritas/__tests__/VeritasClaimDetailWorkspace.test.tsx apps/oshun/web/e2e/veritas-nisaba-bridge.spec.ts WALKTHROUGH/customer/05-veritas/domains-veritas-claims-claimId.md WALKTHROUGH/journeys/veritas-to-nisaba-deeper.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/veritas-to-nisaba-deeper.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/domains/veritas/VeritasClaimDetailWorkspace.tsx src/components/domains/veritas/__tests__/VeritasClaimDetailWorkspace.test.tsx e2e/veritas-nisaba-bridge.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/components/domains/veritas/__tests__/VeritasClaimDetailWorkspace.test.tsx- passed: 7 passed
- Resource gates before typecheck / Playwright / docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final browser Playwright run, available memory stayed above 8.4 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/veritas-nisaba-bridge.spec.ts e2e/veritas-claim-detail-workspace.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 12 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
184. 2026-06-29 Metis ingest proposal browser coverage#
Deepened metis-byom-ingest-to-course at the real browser boundary without
over-claiming the approved bundle pipeline. The Metis BYOM Playwright file now
adds a live /metis/ingest Text-source path that posts through the real BFF,
waits for 202 state=completed, and asserts the returned outline in the browser
status card. It also adds a live /metis/courses/new proposal path that posts
through the real BFF, then opens /metis and proves the same learner's drafted
proposal hydrates in "Open courses · 4".
The course proposal browser path exposed a real auth bug: the form sent CSRF but
no bearer token, so the member-scoped BFF write returned
Authentication required. MetisProposeCourseForm now mirrors
MetisIngestForm and sends bearer auth when an API token is present. The
journey remains partial because the /metis/byom file/URL upload affordances
are still display-only and the safety → Sophia → KG → approved published
CourseBuild branch is still not browser-drivable.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/metis/courses/new/MetisProposeCourseForm.tsx apps/oshun/web/e2e/metis-byom-ingest.spec.ts WALKTHROUGH/customer/08-metis/metis-ingest.md WALKTHROUGH/customer/08-metis/metis-courses-new.md WALKTHROUGH/journeys/metis-byom-ingest-to-course.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/metis-byom-ingest-to-course.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/metis/courses/new/MetisProposeCourseForm.tsx e2e/metis-byom-ingest.spec.ts --max-warnings=0- passed
- Resource gates before typecheck / Playwright / docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final Playwright run, available memory stayed above 8.5 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/metis-byom-ingest.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 18 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
190. 2026-06-29 Tara teacher profile course handoff coverage#
Closed a real Tara teacher-profile interaction gap without inventing unshipped
destinations. Course rows on /domains/tara/teachers/[id] now render as native
links to the existing /domains/tara/courses/[id] detail route, and the course
detail page exposes a stable data-tara-course-detail root for browser handoff
assertions. The same pass makes profile social controls explicitly disabled
until real teacher URLs exist and marks simulated meditation rows as
display-only instead of presenting an inert pointer affordance.
The browser journey now searches the real teacher directory, opens Sarah Chen's
profile, verifies featured status, disabled external-profile controls,
display-only session rows, follows the tara-course-001 course row into the
real course-detail route, and browser-backs to the profile. The customer
walkthrough now records which profile interactions are truly shipped and which
remain fixture/product gaps.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/domains/tara/TaraTeacherProfile.tsx apps/oshun/web/src/components/domains/tara/TaraCourseDetail.tsx apps/oshun/web/src/components/domains/tara/__tests__/TaraTeacherProfile.test.tsx apps/oshun/web/e2e/tara-teacher-pages.spec.ts WALKTHROUGH/customer/03-tara/domains-tara-teachers-id.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/domains/tara/TaraTeacherProfile.tsx src/components/domains/tara/TaraCourseDetail.tsx src/components/domains/tara/__tests__/TaraTeacherProfile.test.tsx e2e/tara-teacher-pages.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/components/domains/tara/__tests__/TaraTeacherProfile.test.tsx- passed: 5 passed
- Resource gates before typecheck / Playwright / docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during Playwright, available memory stayed above 8.2 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tara-teacher-pages.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 2 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tara-teacher-pages-accessibility.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 2 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
191. 2026-06-29 Tara course detail route coverage#
Closed the Tara course-detail browser gap on /domains/tara/courses/[id]
without treating fixture-only local state as a persisted course backend. The
course detail component now exposes stable route, enrollment, stats, objective,
teacher, section, lesson, quiz, resources, missing-course, and certificate
anchors. Lesson/resource/share actions that have no shipped backing behavior are
explicitly disabled, while modal-style resources, quiz, reflection, and
certificate surfaces expose dialog semantics for route-level accessibility
checks.
The new Playwright coverage drives the shipped route data for tara-course-001
and tara-course-003: in-progress course anatomy, local not-enrolled ->
enrolled -> in-progress transition, continue CTA, section accordion open/close,
locked/available/in-progress/completed lesson rows, disabled resource actions,
quiz fail/pass scoring, unknown-course fallback, and a scoped axe scan of the
settled course-detail root. The walkthrough now records the remaining product
gaps separately: completed/certificate state is not route-reachable with current
fixtures, reflection lessons are all locked, and enrollment/progress persistence
still needs a BFF contract.
Verification:
psql --version- passed: PostgreSQL 16.14
pnpm exec prettier --write apps/oshun/web/src/components/domains/tara/TaraCourseDetail.tsx apps/oshun/web/e2e/tara-course-detail.spec.ts WALKTHROUGH/customer/03-tara/domains-tara-courses-id.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/domains/tara/TaraCourseDetail.tsx e2e/tara-course-detail.spec.ts --max-warnings=0- passed
- Resource gates before typecheck / Playwright / docs-center
- 15 GiB RAM, 12-13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during final Playwright, available memory stayed above 8.3 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tara-course-detail.spec.ts --project=chromium --grep "renders in-progress course anatomy" --workers=1 --retries=0 --reporter=list- passed: 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tara-course-detail.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 5 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
pnpm exec prettier --check apps/oshun/web/src/components/domains/tara/TaraCourseDetail.tsx apps/oshun/web/e2e/tara-course-detail.spec.ts WALKTHROUGH/customer/03-tara/domains-tara-courses-id.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
git diff --check- passed
185. 2026-06-29 Veritas topic and citation trail coverage#
Deepened veritas-evidence-trail at the shipped polished web surfaces without
claiming unimplemented dynamic topic controls. The Veritas topic component now
exposes stable row/cell anchors for the topic masthead counts, settled claims,
open disputes, reading-history cells, primary-source rows, gap lines, and follow
status rows. The Playwright journey uses those anchors to prove /veritas/topic
renders the populated topic hub and that its follow rows are static status rows,
not nested action buttons.
The same pass adds cross-view citation-contract coverage from /veritas/claim
into /veritas/source/:sourceId and /veritas/counterclaims: source bands,
source-profile rationale, provenance, reviewer attestation, hashes, and
contested-quality labels now have browser assertions that catch drift between
the claim rail, source profile, and counterclaim evidence inspection panels.
The journey remains partial because the polished /veritas/topic follow
affordances do not yet toggle state, and retraction-trigger behavior remains a
server-side next-visit promise rather than a browser-drivable notification path.
The story trajectory SVG hardcoded-specimen gap was closed in addendum 240.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/lilith/veritas.tsx apps/oshun/web/e2e/veritas-evidence-trail.spec.ts WALKTHROUGH/journeys/veritas-evidence-trail.md WALKTHROUGH/customer/05-veritas/veritas-topic.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/veritas-evidence-trail.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/lilith/veritas.tsx e2e/veritas-evidence-trail.spec.ts --max-warnings=0- passed
pnpm exec prettier --check apps/oshun/web/src/components/lilith/veritas.tsx apps/oshun/web/e2e/veritas-evidence-trail.spec.ts WALKTHROUGH/journeys/veritas-evidence-trail.md WALKTHROUGH/customer/05-veritas/veritas-topic.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/veritas-evidence-trail.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
- Resource gates before Playwright and docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final Playwright run, available memory stayed above 8.4 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/veritas-evidence-trail.spec.ts --project=chromium --grep "step 8|step 10" --workers=1 --retries=0 --reporter=list- passed: 2 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/veritas-evidence-trail.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 17 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
186. 2026-06-29 Veritas retraction notebook drill-down coverage#
Closed the polished notebook-drill gap in
veritas-retraction-cascade-customer-view without pretending the missing
acknowledgement write exists. The /nisaba/notebook specimen data now carries
an optional Veritas retraction notice. The notebook renders it as a native
disclosure with stable cascade/severity/affected-count anchors, an inline
per-citation row, the original quote preserved with struck-through treatment,
and a corrected-source link to the existing Veritas source profile. The
keep-with-marker action is explicitly marked as a placeholder until the
persisted notebook acknowledgement/re-citation write is implemented.
The journey remains partial because customer-shell subscriber/audit fan-out, persisted notebook acknowledgement writes, Library confidence enum retraction state, and the kept-offering re-render surface are still not shipped or browser-drivable.
Verification:
pnpm exec prettier --write apps/oshun/web/src/lib/lilith-data/types.ts apps/oshun/web/src/lib/lilith-data/nisaba-depth.ts apps/oshun/web/src/components/lilith/nisaba.tsx apps/oshun/web/e2e/veritas-retraction-cascade.spec.ts WALKTHROUGH/journeys/veritas-retraction-cascade-customer-view.md WALKTHROUGH/customer/07-nisaba/nisaba-notebook.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/veritas-retraction-cascade-customer-view.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/lilith/nisaba.tsx src/lib/lilith-data/types.ts src/lib/lilith-data/nisaba-depth.ts e2e/veritas-retraction-cascade.spec.ts --max-warnings=0- passed
pnpm exec prettier --check apps/oshun/web/src/lib/lilith-data/types.ts apps/oshun/web/src/lib/lilith-data/nisaba-depth.ts apps/oshun/web/src/components/lilith/nisaba.tsx apps/oshun/web/e2e/veritas-retraction-cascade.spec.ts WALKTHROUGH/journeys/veritas-retraction-cascade-customer-view.md WALKTHROUGH/customer/07-nisaba/nisaba-notebook.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/veritas-retraction-cascade-customer-view.md- passed
- Resource gates before Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the final browser Playwright run, available memory stayed above 8.4 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/veritas-retraction-cascade.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/veritas-retraction-cascade-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 1 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
196. 2026-06-29 Tara teacher directory coverage#
Deepened /domains/tara/teachers from a source-described directory into a
browser-proven route state machine. The directory now exposes stable page,
listing, search, filter, result-count, empty-state, carousel, card metadata,
status, and back-button anchors. The featured carousel records its featured
count and scroll step; teacher cards and featured cards share click and keyboard
activation; the in-grid empty result is rendered as a status region; and
reduced-motion CSS collapses teacher animations under the browser media
preference.
The Playwright coverage now proves the Tara hub secondary-tool entry, exact
simulated-data totals (12 teachers, 7 featured, 5 active), Anxiety filtering,
Sarah search, clear search, no-result search, carousel right/left scroll state,
Space-key teacher-card routing, profile metadata, Sarah profile/course handoff,
and route-level axe scans for the directory and profile. The walkthrough remains
honest that the current directory is local simulated data, and that inactive
and guest status styles are present but unreachable with the current V1
fixture set.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/domains/tara/TaraTeacherProfile.tsx apps/oshun/web/e2e/tara-teacher-pages.spec.ts WALKTHROUGH/customer/03-tara/domains-tara-teachers.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/domains/tara/TaraTeacherProfile.tsx e2e/tara-teacher-pages.spec.ts --max-warnings=0- passed
- Resource gates before typecheck and Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the Playwright stack run, available memory stayed above 8.2 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tara-teacher-pages.spec.ts e2e/tara-teacher-pages-accessibility.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run found a real setup gap in the new reduced-motion assertion
(
300mscomputed duration when the spec did not explicitly emulate reduced motion); after pinningpage.emulateMedia({ reducedMotion: 'reduce' })in the interaction spec, rerun passed: 5 passed.
- first run found a real setup gap in the new reduced-motion assertion
(
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
197. 2026-06-29 Arete habit proposal browser submit coverage#
Closed the /arete/habits/new gap where Playwright filled the polished form but
created the proposed habit through a direct API request. The route now exposes a
stable page root, hydrated form state, field/cadence/domain/why state anchors,
valid radio semantics with roving keyboard focus, pending/error/success anchors,
and success-card response metadata. The offline branch copy was softened to
match the shipped behavior: reconnect, then submit again; no retry queue is
promised.
The browser coverage now proves entry from /arete/habits, hydration before
controlled-input fill, default idle state, label/why state updates, cadence
Arrow/Home/End behavior, true browser POST payload, pending disabled state, real
BFF 202 held-for-review response, BFF read-back on /v1/arete/habits,
Propose another reset behavior, rendered habit read-back, native required
validation, real BFF 422 rejection, and a network-abort offline alert that
preserves user-entered form state.
The first focused Playwright run found a real hydration race: the SSR input
could receive text before the client form state was wired, leaving
data-label-length="0". The form now exposes data-hydrated="true" and the
test waits for it before filling controlled fields.
Verification:
command -v psql && psql --version- passed:
/usr/bin/psql, PostgreSQL 16.14
- passed:
pnpm exec prettier --write apps/oshun/web/src/app/arete/habits/new/page.tsx apps/oshun/web/src/app/arete/habits/new/AreteProposeHabitForm.tsx apps/oshun/web/e2e/arete-create-habit.spec.ts WALKTHROUGH/customer/04-arete/arete-habits-new.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/arete/habits/new/page.tsx src/app/arete/habits/new/AreteProposeHabitForm.tsx e2e/arete-create-habit.spec.ts --max-warnings=0- first run caught invalid
aria-pressedonrole="radio"; after removing it, rerun passed
- first run caught invalid
- Resource gates before typecheck and Playwright
- 15 GiB RAM, 12-13 GiB available before launches, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the full Playwright run, available memory stayed above 7.3 GiB.
pnpm --dir apps/oshun/web typecheck- passed; after the Playwright dev server generated a malformed stale
.next/dev/types/routes.d.ts, clearingapps/oshun/web/.nextand rerunning passed
- passed; after the Playwright dev server generated a malformed stale
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/arete-create-habit.spec.ts --project=chromium --grep "step 3-alt" --workers=1 --retries=0 --reporter=list- first run exposed the hydration race above; after adding the hydration guard, rerun passed: 2 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/arete-create-habit.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
198. 2026-06-29 Nyx sky-almanac live-BFF coverage#
Closed the /nyx/sky-almanac gap where the walkthrough still cited only a
mock-BFF runtime probe. The page now exposes stable route, almanac, section,
row, detail, availability, generated-at, and count anchors so browser automation
can assert the computed read-only surface without relying on fast-moving
astronomy values.
The new Playwright coverage proves the live BFF GET /v1/nyx/sky-almanac
default contract, the explicit observer query contract for ?lat=51.5&lon=0,
the signed-in customer route, Explore nav active state, page and almanac roots,
generated-at ISO shape, section/row counts, exact section titles (Sun, Moon,
Chart angles, Darkness), exact row labels, detail presence,
unavailable-status absence on the populated route, and a mobile standalone
launch with no horizontal overflow.
The walkthrough now also corrects an overstated auth claim: the page is walked as a signed-in customer shell route, but the current domain-stubs BFF endpoint has no route pre-handler. It also records the remaining product gap that the BFF accepts observer coordinates while the page currently calls the default-observer endpoint.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/nyx/sky-almanac/page.tsx apps/oshun/web/src/app/nyx/sky-almanac/SkyAlmanacSections.tsx apps/oshun/web/src/app/nyx/sky-almanac/SkyAlmanacSections.test.tsx apps/oshun/web/e2e/nyx-sky-almanac.spec.ts WALKTHROUGH/customer/06-nyx/nyx-sky-almanac.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/nyx/sky-almanac/page.tsx src/app/nyx/sky-almanac/SkyAlmanacSections.tsx src/app/nyx/sky-almanac/SkyAlmanacSections.test.tsx e2e/nyx-sky-almanac.spec.ts --max-warnings=0- passed; rerun after the API-only
skipAxepatch also passed
- passed; rerun after the API-only
- Resource gates before typecheck and Playwright
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during Playwright, available memory stayed above 9.3 GiB.
pnpm --dir apps/oshun/web typecheck- passed; rerun after the API-only
skipAxepatch also passed
- passed; rerun after the API-only
pnpm --dir apps/oshun/web exec vitest run src/app/nyx/sky-almanac/SkyAlmanacSections.test.tsx src/lib/server/nyx-depth.test.ts- passed: 2 files, 7 tests
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nyx-sky-almanac.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run exposed a harness issue: the BFF-only request test did not
navigate a page, so the shared axe fixture scanned Playwright's blank page
and failed
document-title/html-has-lang. After scopingtest.use({ skipAxe: true })to the API-only describe block, rerun passed: 3 passed.
- first run exposed a harness issue: the BFF-only request test did not
navigate a page, so the shared axe fixture scanned Playwright's blank page
and failed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
199. 2026-06-29 Metis lessons/session live-BFF coverage#
Closed the /metis/lessons and /metis/session gap where the walkthroughs
still cited only the older runtime probe. The guarded dev/test BFF fixture now
exposes a multi-course backlog: 3 lessons across 2 courses, with exactly one
assessment-ready lesson. The pages expose stable route, generated-at, count,
course, row, selected-start, and queue anchors so browser automation can assert
the real SSR output without relying on screenshots.
The new Playwright coverage proves the live BFF GET /v1/metis/lessons
contract, the signed-in customer lessons route, Explore nav active state, course
grouping, exact lesson metadata, assessment-ready and not-ready labels, course
and lesson hrefs, 44px course/lesson tap targets, footer hrefs, the session
route's assessment-ready start selection, two-row queue, 58 planned minutes,
non-interactive queue rows, and mobile standalone launches for both routes with
no horizontal overflow.
The walkthroughs now also correct an overstated auth claim: both pages are walked as signed-in customer shell routes, but the current domain-stubs BFF endpoint is a production-guarded fixture, not an auth-scoped per-user backlog.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/domain-stubs.ts apps/oshun/bff/src/__tests__/domain-stubs-route.test.ts apps/oshun/web/src/app/metis/lessons/page.tsx apps/oshun/web/src/app/metis/session/page.tsx apps/oshun/web/e2e/metis-lessons-session.spec.ts WALKTHROUGH/customer/08-metis/metis-lessons.md WALKTHROUGH/customer/08-metis/metis-session.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/metis/lessons/page.tsx src/app/metis/session/page.tsx e2e/metis-lessons-session.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/bff exec eslint --no-warn-ignored src/routes/domain-stubs.ts src/__tests__/domain-stubs-route.test.ts --max-warnings=0- first run exposed pre-existing non-null auth assertions in the touched route file; after replacing them with a guarded auth helper, rerun passed
- Resource gates before typecheck, Playwright, and docs-center
- 15 GiB RAM, 12-13 GiB available before launches, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the Playwright run, available memory stayed above 9.7 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/bff typecheck- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/domain-stubs-route.test.ts- passed: 1 file, 92 tests
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/metis-lessons-session.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 4 passed
pnpm docs:center- passed; rendered 1886 files
pnpm docs:center:check- passed; all 1886 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 61 passed, 5 skipped
200. 2026-06-29 Metis create-form state coverage#
Closed the /metis/courses/new and /metis/ingest form-state gaps where the
walkthroughs did not yet prove pending, recoverable error, offline, reset, and
standalone behavior through browser automation.
The pages and forms now expose stable route, form-state, field-state,
source-kind, error, accepted-status, and response-metadata anchors. The course
proposal form resets the next proposal to its full idle defaults after a
successful accept. The ingest source selector now uses true role="radio" /
aria-checked semantics with roving Arrow/Home/End keyboard behavior, and the
ingest accepted card exposes BFF state, outline counts, segment metadata, and
pending-reason attributes.
The new Playwright coverage proves the signed-in customer shell for both routes,
course idle defaults, controlled fields, delayed live-BFF pending state, real
accepted proposal metadata, Propose another reset, real server 422 validation,
explicit offline abort handling, ingest idle URL default, source selector
keyboard behavior, PDF reference acceptance through the live BFF, delayed
pasted-text pending state, completed outline rendering, real invalid-URL 422
handling, Queue another reset, mobile standalone launches, no horizontal
overflow, and the shared axe scan. Happy-path and validation responses use the
real BFF; offline branches are explicit network aborts in the browser.
Verification:
command -v psql && psql --version- passed:
/usr/bin/psql, PostgreSQL 16.14
- passed:
pnpm exec prettier --write apps/oshun/web/src/app/metis/courses/new/page.tsx apps/oshun/web/src/app/metis/courses/new/MetisProposeCourseForm.tsx apps/oshun/web/src/app/metis/ingest/page.tsx apps/oshun/web/src/app/metis/ingest/MetisIngestForm.tsx apps/oshun/web/e2e/metis-create-forms.spec.ts WALKTHROUGH/customer/08-metis/metis-courses-new.md WALKTHROUGH/customer/08-metis/metis-ingest.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/metis/courses/new/page.tsx src/app/metis/courses/new/MetisProposeCourseForm.tsx src/app/metis/ingest/page.tsx src/app/metis/ingest/MetisIngestForm.tsx e2e/metis-create-forms.spec.ts --max-warnings=0- passed; rerun after scoping the form Back-link selector also passed
- Resource gates before typecheck and Playwright
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. External docs-center work in another checkout was allowed to finish before broad checks continued; during the final Playwright run, available memory stayed above 9.4 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/metis-create-forms.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run exposed an ambiguous Back-link assertion because the shell also contains "Back to OSHUN home"; after scoping the assertion to the form and exact accessible name, rerun passed: 6 passed.
pnpm docs:center- passed; rendered 2893 files after rebasing onto the updated docs-center renderer
pnpm docs:center:check- passed; all 2893 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 77 passed, 5 skipped
201. 2026-06-29 Library collection create-form state coverage#
Closed the /library/collections/new gap where the walkthrough still listed
idle, pending, accepted, server-error, offline, native-validation, standalone,
field, action, and success-card interactions as unverified.
The route and form now expose stable route, form-state, field-state, seed-count,
error, pending, and accepted-status anchors. The submit button explicitly
surfaces aria-disabled while pending, the accepted status receives focus after
the live BFF accepts the collection, and the form action rows wrap on narrow
standalone viewports without horizontal overflow.
The new Playwright coverage proves the signed-in customer shell route, Library
nav active state, idle form attributes, Back href, controlled label/seed fields,
comma/space/newline seed parsing, delayed live-BFF pending state, exact POST
body, accepted BFF response metadata, success-card focus handoff, success links,
real BFF 422 validation, explicit offline abort preservation, native
required/minLength validation with zero collection POSTs, mobile standalone
launch, 44 px touch targets, no horizontal overflow, and the shared axe scan.
Happy-path and validation responses use the real BFF; the offline branch is an
explicit browser network abort.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/library/collections/new/page.tsx apps/oshun/web/src/app/library/collections/new/LibraryNewCollectionForm.tsx apps/oshun/web/e2e/library-collections-new.spec.ts WALKTHROUGH/customer/02-home-discovery/library-collections-new.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/library/collections/new/page.tsx src/app/library/collections/new/LibraryNewCollectionForm.tsx e2e/library-collections-new.spec.ts --max-warnings=0- passed
- Resource gates before typecheck, Playwright, and docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the Playwright run, available memory stayed above 9.2 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/library-collections-new.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 4 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
202. 2026-06-29 Billing index offline and standalone coverage#
Closed the /billing static account route gap where the walkthrough still
listed offline and standalone states as unverified. /billing is now an exact
service-worker shell navigation, so an authenticated online visit caches the
static billing document and an offline navigation replays the billing directory
instead of the generic offline fallback.
The Playwright coverage now proves the signed-in static billing directory,
crypto/profile/AAA rail hrefs, billing steward mailto:, mobile 44 px
tap-target floor, no horizontal overflow, standalone display-mode launch, real
service-worker cached-document replay while navigator.onLine === false, no
generic offline fallback card/marker, and anonymous redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/public/sw.js apps/oshun/web/src/__tests__/pwa-service-worker-policy.test.ts apps/oshun/web/e2e/billing-index.spec.ts- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored public/sw.js src/__tests__/pwa-service-worker-policy.test.ts e2e/billing-index.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/__tests__/pwa-service-worker-policy.test.ts- passed: 1 file, 11 tests
- Resource gates before Playwright and docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the Playwright run, available memory stayed above 8.8 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/billing-index.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 5 passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
203. 2026-06-29 Profile data standalone PWA coverage#
Closed the /profile/data account readback gap where the walkthrough still
listed standalone PWA rendering as unverified. The existing route already
covered authenticated readback, capped export history, anonymous gating, mobile
tap targets, and real service-worker offline replay; this slice adds a
standalone mobile PWA launch that keeps the read surface on the real BFF path.
The Playwright coverage now seeds a real customer session, creates a completed
data export and scheduled deletion through the live BFF POST endpoints, launches
/profile/data with (display-mode: standalone) mocked through the shared PWA
helper, and verifies the consent rows, export row, deletion row, footer
controls, 44 px touch targets, absence of the generic offline fallback, and no
horizontal overflow at a 390 px phone viewport.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/profile-data-readback.spec.ts WALKTHROUGH/customer/09-account/profile-data.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/profile-data-readback.spec.ts --max-warnings=0- passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the Playwright run, available memory stayed above 8.6 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-data-readback.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 7 passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
204. 2026-06-29 Profile notifications offline and standalone coverage#
Closed the /profile/notifications account read-index gap where the walkthrough
still listed offline and standalone PWA rendering as unverified. The route is
now an exact service-worker shell navigation, so an authenticated online visit
caches the BFF-backed notification summary document and an offline navigation
replays that same channel/category summary instead of the generic fallback.
The Playwright coverage now proves the real BFF-backed email/push/SMS/Telegram
channel rows, notification category rows, footer targets, sibling-route
navigation, anonymous redirect, mobile channel stacking, 44 px footer tap
targets, standalone display-mode launch, no horizontal overflow, real
service-worker cached-document replay while navigator.onLine === false, and no
generic offline fallback card/marker.
Verification:
pnpm exec prettier --write apps/oshun/web/public/sw.js apps/oshun/web/src/__tests__/pwa-service-worker-policy.test.ts apps/oshun/web/e2e/profile-notifications-index.spec.ts WALKTHROUGH/customer/09-account/profile-notifications.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored public/sw.js src/__tests__/pwa-service-worker-policy.test.ts e2e/profile-notifications-index.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/__tests__/pwa-service-worker-policy.test.ts- passed: 1 file, 11 tests
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the Playwright run, available memory stayed above 8.5 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-notifications-index.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 7 passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
205. 2026-06-29 Profile persona offline and standalone coverage#
Closed the /profile/persona account readback gap where the walkthrough still
listed offline and standalone PWA rendering as unverified. The route is now an
exact service-worker shell navigation, so an authenticated online visit caches
the BFF-backed active voice readback and an offline navigation replays that same
persona voice document instead of the generic fallback.
The Playwright coverage now proves the real BFF-backed no-consent empty state,
live voice consent grant, voice catalogue metadata, active voice selection,
footer navigation, mobile control sizing, standalone display-mode launch, no
horizontal overflow, real service-worker cached-document replay while
navigator.onLine === false, and no generic offline fallback marker.
Verification:
pnpm exec prettier --write apps/oshun/web/public/sw.js apps/oshun/web/src/__tests__/pwa-service-worker-policy.test.ts apps/oshun/web/e2e/profile-persona-readback.spec.ts WALKTHROUGH/customer/09-account/profile-persona.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored public/sw.js src/__tests__/pwa-service-worker-policy.test.ts e2e/profile-persona-readback.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/__tests__/pwa-service-worker-policy.test.ts- passed: 1 file, 11 tests
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the Playwright run, available memory stayed above 12 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-persona-readback.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 7 passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
206. 2026-06-29 Profile safety offline replay coverage#
Closed the /profile/safety account recovery gap where the walkthrough still
listed cold visited-offline safety-record rendering as unproven. The route is
now an exact service-worker shell navigation, while the sensitive safety record
itself is restored only from a same-device last-frame snapshot and the
frame-keyed recovery state written after a successful live BFF read.
The Playwright coverage now proves the real BFF-backed active crisis frame,
accepted local re-entry choice, service-worker cached /profile/safety
document, offline replay while navigator.onLine === false, no generic offline
fallback marker, and a cached-document bootstrap that renders the real last
frame plus the local recovery choice even when the offline cached HTML would
otherwise stay on the loading shell.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.tsx apps/oshun/web/e2e/profile-safety-crisis-recovery.spec.ts- passed
pnpm --dir apps/oshun/web exec vitest run src/app/profile/safety/ProfileSafetyJourney.test.tsx src/lib/offline-shell-routes.test.ts src/__tests__/pwa-service-worker-policy.test.ts- passed: 3 files, 26 tests
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored public/sw.js src/__tests__/pwa-service-worker-policy.test.ts src/lib/offline-shell-routes.ts src/lib/offline-shell-routes.test.ts src/app/profile/safety/ProfileSafetyJourney.tsx src/app/profile/safety/ProfileSafetyJourney.test.tsx e2e/profile-safety-crisis-recovery.spec.ts --max-warnings=0- passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 51 GiB disk free, and no competing broad build/test process; during the Playwright run, available memory stayed above 8.7 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-safety-crisis-recovery.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 5 passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
207. 2026-06-29 Profile Telegram BFF-failure fallback coverage#
Closed the /profile/telegram fallback gap where a failed BFF read previously
rendered a fabricated generic Telegram deep link
(https://t.me/oshun_bot?start=link). The page now renders an honest
unavailable card when the account-scoped /v1/telegram/link read returns null,
and it exposes no Telegram href, no refresh action, and no generic start=link
token until the BFF can mint a per-account nonce.
The Playwright coverage now proves the live not-linked nonce render, manual
refresh nonce rotation, client expiry disablement, mobile/offline-after-load
stability, real Telegram webhook completion, anonymous proxy redirect, and a
protected-route BFF auth failure by keeping the real session cookie while
poisoning only the forwarded oshun-access bearer.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14
- passed:
pnpm exec prettier --write apps/oshun/web/src/app/profile/telegram/page.tsx apps/oshun/web/e2e/profile-telegram-bridge.spec.ts- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/profile/telegram/page.tsx src/app/profile/telegram/ProfileTelegramLinkPanel.tsx src/app/profile/telegram/ProfileTelegramLinkPanel.test.tsx e2e/profile-telegram-bridge.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/app/profile/telegram/ProfileTelegramLinkPanel.test.tsx- passed: 1 file, 2 tests
rm -rf apps/oshun/web/.next- passed: cleared a truncated generated
.next/dev/types/routes.d.tscache after the first browser run rendered 404s from corrupt route type state
- passed: cleared a truncated generated
pnpm --dir apps/oshun/web typecheck- passed after regenerating from the clean
.nextcache, and passed again after the final spec/docs edits
- passed after regenerating from the clean
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 51 GiB disk free. A CPU-heavy docs render was active in another checkout, so the browser gate stayed limited to one spec and one worker; during the run, available memory stayed above 9.5 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-telegram-bridge.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed: 77 passed, 5 skipped
208. 2026-06-29 Profile data download/footer telemetry coverage#
Closed the /profile/data account readback gap where the walkthrough still
listed telemetry absence on the completed export Download link and footer
navigation controls as unproven. The route remains a read-only DSAR surface; the
browser coverage now explicitly proves the completed export download anchor and
all four footer action links expose no data-telemetry-event,
data-analytics-event, or data-event hooks while the live BFF-backed export
row is rendered.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/profile-data-readback.spec.ts WALKTHROUGH/customer/09-account/profile-data.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/profile-data-readback.spec.ts --max-warnings=0- passed
- Resource gates before typecheck/Playwright and docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. An external docs-center render/check was allowed to finish before this checkout's docs-center gate started; during the focused browser run, available memory stayed above 8.7 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-data-readback.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 7 passed
pnpm docs:center- passed; rendered 2976 files after rebasing onto the updated docs-center source set
pnpm docs:center:check- passed; all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
209. 2026-06-29 Profile notifications footer telemetry coverage#
Closed the /profile/notifications account readback gap where footer navigation
telemetry absence was still listed as unproven. The route remains a read-only
BFF-backed notification summary; the browser coverage now explicitly proves the
rendered footer action container, all four footer action links, and footer
descendants expose no data-telemetry-event, data-analytics-event, or
data-event hooks in both the normal route and standalone PWA launch.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/profile-notifications-index.spec.ts WALKTHROUGH/customer/09-account/profile-notifications.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/profile-notifications-index.spec.ts --max-warnings=0- passed after rebasing onto the updated
origin/main
- passed after rebasing onto the updated
- Resource gates before typecheck/Playwright and docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk
free. External docs-center merge/push runs from another checkout were
allowed to finish before the final docs-center gates; after rebasing onto
origin/main, no competing build/test jobs were active. During the focused browser and docs-center runs, available memory stayed above 11 GiB.
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk
free. External docs-center merge/push runs from another checkout were
allowed to finish before the final docs-center gates; after rebasing onto
pnpm --dir apps/oshun/web typecheck- passed after rebasing onto the updated
origin/main
- passed after rebasing onto the updated
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-notifications-index.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 7 passed after rebasing onto the updated
origin/main
- passed: 7 passed after rebasing onto the updated
pnpm docs:center- passed; rendered 2976 files
pnpm docs:center:check- passed; all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
210. 2026-06-29 Profile persona footer telemetry coverage#
Closed the /profile/persona account readback gap where footer navigation
telemetry absence was still listed as unproven. The route remains a read-only
BFF-backed persona voice catalogue; the browser coverage now explicitly proves
the rendered footer action container, all three footer action links, and footer
descendants expose no data-telemetry-event, data-analytics-event, or
data-event hooks in the normal route, mobile viewport, and standalone PWA
launch.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/profile-persona-readback.spec.ts WALKTHROUGH/customer/09-account/profile-persona.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/profile-persona-readback.spec.ts --max-warnings=0- passed after rebasing onto the updated
origin/main
- passed after rebasing onto the updated
- Resource gates before typecheck/Playwright and docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before the final focused route checks; during the browser run, available memory stayed above 9.2 GiB.
pnpm --dir apps/oshun/web typecheck- passed after rebasing onto the updated
origin/main
- passed after rebasing onto the updated
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-persona-readback.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 7 passed after rebasing onto the updated
origin/main
- passed: 7 passed after rebasing onto the updated
pnpm docs:center- passed; rendered 2976 files
pnpm docs:center:check- passed; all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
211. 2026-06-29 Profile Telegram deep-link telemetry coverage#
Closed the /profile/telegram deep-link telemetry gap where the active Telegram
handoff only had partial negative assertions. The browser coverage now proves
the active deep-link wrapper, anchor, and descendants expose no
data-telemetry-event, data-analytics-event, or data-event hooks before
refresh, after the real refresh server action rotates the nonce, and in the 390
px mobile/offline-after-load branch. The expired replacement path also proves
the wrapper, descendants, and disabled "Link expired" control remain hook-free
after the stale anchor is removed.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/profile-telegram-bridge.spec.ts WALKTHROUGH/customer/09-account/profile-telegram.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed after rebasing onto the updated
origin/main
- passed after rebasing onto the updated
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/profile-telegram-bridge.spec.ts --max-warnings=0- passed after rebasing onto the updated
origin/main
- passed after rebasing onto the updated
- Resource gates before typecheck/Playwright and docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before the final focused route and docs-center checks; during the focused browser run, available memory stayed above 9.9 GiB.
pnpm --dir apps/oshun/web typecheck- passed after rebasing onto the updated
origin/main
- passed after rebasing onto the updated
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-telegram-bridge.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed after rebasing onto the updated
origin/main
- passed: 6 passed after rebasing onto the updated
pnpm docs:center- passed; rendered 2976 files
pnpm docs:center:check- passed; all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
212. 2026-06-29 Metis ingest submit/accept telemetry coverage#
Closed the /metis/ingest create-form gap where submit and accepted-state
telemetry absence was still listed as unproven. The browser coverage now proves
the live-BFF ingest form, submit button, accepted status card, Back-to-Metis
link, Queue-another button, and descendants expose no data-telemetry-event,
data-analytics-event, or data-event hooks before submit, while the delayed
real BFF request is pending, after a completed text outline, after a PDF
reference is accepted, and after Queue another resets the form.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/metis-create-forms.spec.ts WALKTHROUGH/customer/08-metis/metis-ingest.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/metis-create-forms.spec.ts --max-warnings=0- passed
- Resource gates before typecheck/Playwright and docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before the focused route checks; during the browser run, available memory stayed above 9.2 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/metis-create-forms.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
pnpm docs:center- passed; rendered 2976 files
pnpm docs:center:check- passed; all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
213. 2026-06-29 Settings panel button telemetry coverage#
Closed the direct /settings account-surface gap where profile-panel button
telemetry absence was still listed as unproven. The browser coverage now proves
the direct settings panel renders profile buttons and that no profile-panel
button exposes data-telemetry-event, data-analytics-event, or data-event
after the presentational connected-service Connect action and connected-domain
Manage action are clicked.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/profile-settings-flows.spec.ts WALKTHROUGH/customer/09-account/settings.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/profile-settings-flows.spec.ts --max-warnings=0- passed
- Resource gates before typecheck/Playwright and docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before the focused route checks; during the focused browser run, available memory stayed above 8.6 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-settings-flows.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 19 passed
pnpm docs:center- passed; rendered 2976 files
pnpm docs:center:check- passed; all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
214. 2026-06-29 Metis course proposal submit/accept telemetry coverage#
Closed the /metis/courses/new create-form gap where submit and accepted-state
telemetry absence was still listed as unproven. The browser coverage now proves
the live-BFF course proposal form, submit button, accepted status card,
Back-to-Metis link, Propose-another button, reset form, and descendants expose
no data-telemetry-event, data-analytics-event, or data-event hooks before
submit, while the delayed real BFF request is pending, after the proposal is
accepted, and after Propose another resets the form.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/metis-create-forms.spec.ts WALKTHROUGH/customer/08-metis/metis-courses-new.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/metis-create-forms.spec.ts --max-warnings=0- passed
- Resource gates before typecheck/Playwright and docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before the focused route checks; during the browser run, available memory stayed above 8.6 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/metis-create-forms.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
pnpm docs:center- passed; rendered 2976 files
pnpm docs:center:check- passed; all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
215. 2026-06-29 Verify-email Continue telemetry coverage#
Closed the /auth/verify-email public onboarding gap where the Continue link's
telemetry absence was documented from source but not proven in browser coverage.
The focused real-dev-infra Playwright spec now proves the verify-email state
container, Continue link, and descendants expose no data-telemetry-event,
data-analytics-event, or data-event hooks in the transient verifying state,
real-BFF verified state, real-BFF replay-error state, mocked already-verified
state, missing-token state, safe-next state, and unsafe-next state. It also
click-guards Continue and asserts no oshun-analytics:event dispatch occurs
from the activation.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/email-verify-roundtrip.spec.ts WALKTHROUGH/customer/00-public/auth-verify-email.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/email-verify-roundtrip.spec.ts --max-warnings=0- passed
- Resource gates before typecheck/Playwright and docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before the focused route checks; during the browser run, available memory stayed above 11 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/email-verify-roundtrip.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
pnpm docs:center- passed; rendered 2976 files
pnpm docs:center:check- passed; all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
216. 2026-06-29 Billing rail telemetry coverage#
Closed the /billing account-directory gap where the rail links' lack of
telemetry was noted in the walkthrough but not asserted in browser coverage. The
focused real-dev-infra Playwright spec now proves the static billing root, card,
rail list, crypto/profile/AAA rail links, and billing steward mailto: link
expose no data-telemetry-event, data-analytics-event, or data-event hooks.
It also click-guards all four controls and asserts no oshun-analytics:event
dispatch occurs from activation.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/billing-index.spec.ts WALKTHROUGH/customer/09-account/billing.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/billing-index.spec.ts --max-warnings=0- passed
- Resource gates before typecheck/Playwright and docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before the focused route checks; during the browser run, available memory stayed above 9.4 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/billing-index.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
pnpm docs:center- passed; rendered 2976 files
pnpm docs:center:check- passed; all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
217. 2026-06-29 Nisaba notebooks index real-infra coverage#
Closed the /nisaba/notebooks index gaps where the walkthrough documented live
BFF, empty, fallback, mobile, standalone, offline, gating, and telemetry states
without focused route coverage. The route now normalizes the real BFF
notebookId / updatedAt / status list contract instead of assuming fixture
fields, exposes stable selectors, keeps footer actions at a 44 px tap-target
floor, and registers /nisaba/notebooks as a service-worker shell navigation
(CACHE_VERSION=v7) so the cached BFF-backed document replays offline. The
focused Playwright spec seeds notebooks through the real BFF, proves the
explicit empty-array state for a fresh user, forces the signed-in/no-bearer
fixture fallback, verifies mobile and standalone containment, asserts no
telemetry hooks or oshun-analytics:event dispatch on card/footer activation,
and confirms anonymous redirect-before-render.
The first browser attempt also exposed a dev-infra startup break:
@oshun/ai/openai-compatible was path-aliased to a declaration file, so BFF dev
startup could not import DEFAULT_OPENROUTER_TEXT_MODEL. The alias now points
to the runtime source barrel.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/nisaba/notebooks/page.tsx apps/oshun/web/public/sw.js apps/oshun/web/e2e/nisaba-notebooks-index.spec.ts WALKTHROUGH/customer/07-nisaba/nisaba-notebooks.md WALKTHROUGH/shell/03-pwa-behavior.md tsconfig.base.json- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/nisaba-notebooks-index.spec.ts src/app/nisaba/notebooks/page.tsx public/sw.js --max-warnings=0- passed
- Resource gates before typecheck/Playwright and docs-center
- 15 GiB RAM, 12-13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. Unrelated CPU-heavy agent/Python work was active in another checkout, so verification stayed targeted and single-worker; during the focused browser run, available memory stayed above 11 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-notebooks-index.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 7 passed
pnpm docs:center- passed; rendered 2976 files
pnpm docs:center:check- passed; all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
218. 2026-06-29 Profile channel-binding BFF reload coverage#
Deepened messages-quiet-hours-and-channel-binding for the shipped
email/SMS/WhatsApp profile channel-binding UI. The Playwright spec no longer
blocks service workers, drives /profile "Notification channels" with the real
service-worker path enabled, and proves the email lifecycle across both browser
state and the direct BFF projection: send code → pending BFF read-back → verify
→ verified BFF read-back → full /profile reload → Remove → unbound BFF
read-back → second /profile reload. The wrong-code SMS leg now also proves the
BFF list stays pending, not only the visible row.
The same pass added mobile interaction coverage for the visible channel controls
at a 390 px viewport, and the component now gives channel inputs/buttons a 44 px
target floor. The journey and profile walkthroughs now call out the exact
shipped route distinction: /profile hosts channel binding, while
/profile?path=notifications hosts notification preferences.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/profile-channel-bindings.spec.ts apps/oshun/web/src/components/profile/ChannelBindingsSection.tsx WALKTHROUGH/journeys/messages-quiet-hours-and-channel-binding.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/customer/09-account/profile.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/profile-channel-bindings.spec.ts src/components/profile/ChannelBindingsSection.tsx --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/components/profile/ChannelBindingsSection.test.tsx- passed: 5 passed
- Resource gates before typecheck/Playwright and docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before the focused route checks; during the focused browser run, available memory stayed above 9 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-channel-bindings.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 2 passed
pnpm docs:center- passed; rendered 2976 files
pnpm docs:center:check- passed; all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
219. 2026-06-29 Telegram crisis audit Postgres coverage#
Deepened telegram-bot-assistant-delivery for the durable audit-sink branch
used by crisis interrupts. The focused Playwright spec now sends a crisis phrase
through the real POST /telegram/webhook route with a unique tenant header,
then polls the Postgres-backed admin_audit_event table and proves the row is
persisted as telegram.crisis-suppression with the plain-operator persona,
short-30d retention class, exact Telegram update/message/chat metadata, and no
crisis response body text copied into the audit payload.
The existing /today audit proof continues to cover the normal telegram.send
branch, so the Telegram journey now distinguishes both durable event types
called out in the V1 channel-audit contract.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/telegram-webhook-delivery.spec.ts WALKTHROUGH/journeys/telegram-bot-assistant-delivery.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/telegram-webhook-delivery.spec.ts --max-warnings=0- passed
- Resource gates before Playwright/docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before the focused route checks; during the focused Playwright run, available memory stayed above 10 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/telegram-webhook-delivery.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 23 passed
pnpm docs:center- passed; rendered 2976 files
pnpm docs:center:check- passed; all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed; 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
220. 2026-06-29 Arete active-surface crisis preflight coverage#
Deepened crisis-aware-tone-policy and arete-living-offering-create by
removing the legacy Lilith safety-assessment route bridge from the Arete
offering browser spec. The focused Playwright coverage now proves the active
/arete/offering surface sends the blocking intention directly from the browser
to the live POST /v1/lilith/adapter/safety-assessment?role=safety BFF route
with the auth-context bearer, then swaps the action region into the plain safety
interruption with 988 resources and a /profile/safety handoff while no
/v1/arete/offerings/keep write occurs.
This closes the active-surface preflight proof for one shipped Lilith-wired customer surface. The durable typed-input → crisis-frame-marker cascade remains honestly partial: operator activation still covers the Redis worker and member-visible markers, while Arete typed input covers the browser preflight and in-place safety interrupt.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/arete-offering-actions.spec.ts- passed
- Resource gate before Playwright
- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before the focused route check; during the focused browser run, available memory stayed above 12 GiB.
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/arete-offering-actions.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/arete-offering-actions.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 9 passed
- Resource gate before typecheck and docs-center
- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active; during docs-center verification, available memory stayed at or above 13 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files were fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
246. 2026-06-30 Studio CRDT merge substrate coverage#
Closed the focused /studio/real-time-collaboration-substrate browser coverage
gap for the V1 Studio collaboration substrate route. The new Playwright spec
primes a real Studio admin shell session, verifies the live CRDT catalog GET
uses a dev bearer, submits the default operation log to the real
/v1/admin/studio/crdt-merge/merge BFF route, and asserts the converged
headline plus the x/y/z element timestamp and presence rows.
The browser coverage also drives an edited shuffled operation log through the
live BFF to prove LWW add-biased ties (addTs === removeTs remains present) and
sorted convergence, checks all six sibling collaboration quick-action targets,
holds the catalog request to prove the loading lane before surfacing a 503 error
state, distinguishes malformed JSON as a zero-POST client block from a valid
JSON BFF 400 detail, and proves non-admin and anonymous fail-closed states. The
route remains a stateless request/response merge console; durable CRDT
persistence and future op-kind extensibility are still product questions.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/studio-real-time-collaboration-substrate.spec.ts WALKTHROUGH/studio/collaboration/studio-real-time-collaboration-substrate.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore e2e/studio-real-time-collaboration-substrate.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-studio-crdt-merge-route.test.ts- passed: 1 file, 5 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioRealTimeCollaborationSubstrateWorkspace.test.tsx src/components/__tests__/StudioRealTimeCollaborationSubstrateWorkspace.integration.test.tsx- passed: 2 files, 5 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before the browser run. No competing build/test/docs jobs were active; available memory stayed above 10 GiB during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-real-time-collaboration-substrate.spec.ts --project=chromium- passed: 6 passed
248. 2026-06-30 Studio commenting and annotation coverage#
Closed the focused /studio/commenting-annotation-system browser coverage gap
for the V1 Studio collaboration route. The new Playwright spec primes a real
Studio admin shell session, verifies the live comment-thread catalog GET uses a
dev bearer, submits the default comments payload to the real
/v1/admin/studio/comment-threads/analyze BFF route, and asserts the thread
headline plus per-comment depth, mention, and orphan rows.
The browser coverage also drives an edited comments payload through the live BFF
to prove parent-chain depth (0 → 1 → 2), repeated-mention dedupe, orphan
detection, resolved-thread summary, and total mention counting. It checks all
six sibling collaboration quick-action targets, holds the catalog request to
prove the loading lane before surfacing a 503 error state, distinguishes
malformed JSON as a zero-POST client block from a valid JSON BFF 400 detail, and
proves non-admin and anonymous fail-closed states. The route remains a stateless
request/response analyzer; persisted annotation search and mention edge-case
contracts are still product questions.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/studio-commenting-annotation-system.spec.ts WALKTHROUGH/studio/collaboration/studio-commenting-annotation-system.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore e2e/studio-commenting-annotation-system.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-studio-comment-threads-route.test.ts- passed: 1 file, 5 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioCommentingAnnotationSystemWorkspace.test.tsx src/components/__tests__/StudioCommentingAnnotationSystemWorkspace.integration.test.tsx- passed: 2 files, 5 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before the browser run. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-commenting-annotation-system.spec.ts --project=chromium- passed: 6 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before generation. No competing build/test/docs jobs were active; available memory stayed at or above 13 GiB during generated-doc checks.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 53 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
249. 2026-06-30 Studio Isis retention policies coverage#
Closed the focused /studio/isis/retention-policies browser coverage gap for
the V1 Studio Isis output-governance route. The new Playwright spec first proves
the direct route remains hard-blocked by the Studio Isis boundary, then primes
an authenticated Studio shell through the localhost-only lane bypass, forwards
the browser's same-origin /v1/admin/isis/retention-policies requests to the
real local BFF with an admin bearer, verifies the active retention policy
windows, and asserts the seeded allow/deny records for recent render, stale
upload, and legal hold.
The browser coverage also calls the real BFF scan endpoint to prove continuous
deletion-sweep semantics, drives exported-customer and legal-hold artifact
evaluations through the UI, verifies persisted allow/deny rows and exact POST
payloads, checks route-map articles plus sibling quick-actions, and covers
required-field, duplicate-id, pending, loading, empty, 503 error, malformed
catalog, non-admin, and anonymous fail-closed states. The route remains a
client-triggered admin lane; the open product questions are breadcrumb presence,
embedding behavior inside /studio/isis/outputs, and unimplemented route-map
sub-path pages.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/studio-isis-retention-policies.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-retention-policies.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore e2e/studio-isis-retention-policies.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-isis-retention-policies-route.test.ts- passed: 1 file, 11 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisRetentionPoliciesWorkspace.test.tsx src/components/__tests__/StudioIsisRetentionPoliciesWorkspace.integration.test.tsx- passed: 2 files, 6 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before the browser run. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-isis-retention-policies.spec.ts --project=chromium- passed: 8 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before generation. No competing build/test/docs jobs were active; available memory stayed above the stop threshold during generated-doc checks.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 53 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
250. 2026-06-30 Studio Isis workflow templates coverage#
Closed the focused /studio/isis/workflow-templates browser coverage gap for
the V1 Studio Isis workflow-governance route. The new Playwright spec first
proves the direct route remains hard-blocked by the Studio Isis boundary, then
primes an authenticated Studio shell through the localhost-only lane bypass,
forwards the browser's same-origin /v1/admin/isis/workflow-templates requests
to the real local BFF with an admin bearer, verifies the seeded template
catalog, and asserts route-map articles plus sibling quick-actions.
The browser coverage also selects the curated illustration example, posts a manual template to the live BFF inspect endpoint, verifies the direct and lookup expression rows plus extracted variables, checks the exact POST payload, and covers pending inspect, network-failed inspect, loading, empty catalog, 503 catalog error, malformed catalog, non-admin, and anonymous fail-closed states. The route remains a client-triggered admin lane; the open product questions are breadcrumb presence, unimplemented route-map sub-path pages, and dedicated manual AT/touch/offline/telemetry passes beyond automated axe coverage.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/studio-isis-workflow-templates.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-workflow-templates.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore e2e/studio-isis-workflow-templates.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-isis-workflow-templates-route.test.ts- passed: 1 file, 4 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisWorkflowTemplatesWorkspace.test.tsx src/components/__tests__/StudioIsisWorkflowTemplatesWorkspace.integration.test.tsx src/components/__tests__/StudioIsisWorkflowTemplatesPage.test.tsx src/components/__tests__/StudioIsisWorkflowTemplatesRouteMap.test.ts- passed: 4 files, 6 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-isis-workflow-templates.spec.ts --project=chromium- passed: 8 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 53 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
251. 2026-06-30 Studio Project Obsidian coverage#
Closed the focused /studio/project-obsidian browser coverage gap for the V1
Studio authoring/program-governance route. The new Playwright spec primes an
authenticated Studio admin shell, verifies the live critical-path catalog GET
uses a dev bearer, asserts the breadcrumb, route-map articles, and quick-action
targets into Isis/Yemaya/Bellona authoring neighbors, then submits the default
task graph through the real /v1/admin/studio/critical-path/compute BFF route.
The browser asserts project duration 9, critical path A -> C -> D, per-task
critical flags, and slack rows for the non-critical B/E tasks.
The browser coverage also edits the task graph and recomputes a distinct
Design -> Build -> Certify critical path through the live BFF, proves
malformed JSON is a zero-POST client block, proves dependency cycles surface the
live BFF dependency cycle detected detail, and covers compute network failure,
loading, 503 catalog error, malformed catalog, non-admin, and anonymous
fail-closed states. The route remains a pasted-graph admin console; route-map
sub-path implementations, named analysis display beyond the count, and manual
AT/touch/offline/telemetry passes remain product hardening items.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioProjectObsidianWorkspace.tsx apps/oshun/web/src/app/studio/project-obsidian/page.tsx apps/oshun/web/e2e/studio-project-obsidian.spec.ts WALKTHROUGH/studio/authoring/studio-project-obsidian.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore src/components/studio/StudioProjectObsidianWorkspace.tsx src/app/studio/project-obsidian/page.tsx e2e/studio-project-obsidian.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-studio-critical-path-route.test.ts- passed: 1 file, 6 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioProjectObsidianWorkspace.test.tsx src/components/__tests__/StudioProjectObsidianWorkspace.integration.test.tsx src/components/__tests__/StudioProjectObsidianPage.test.tsx src/components/__tests__/StudioProjectObsidianRouteMap.test.ts- passed: 4 files, 7 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-project-obsidian.spec.ts --project=chromium- passed: 7 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 54 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
252. 2026-06-30 Studio Isis generation-mode coverage#
Closed the focused /studio/isis/generation-mode-coverage browser coverage gap
for the V1 Studio generation-mode governance route. The new Playwright spec
proves the direct route remains Studio-boundary hard-blocked, then primes an
authenticated Studio admin shell through the localhost-only lane bypass and
forwards browser requests to the real local BFF. The happy path asserts the
manifest-backed 18-mode coverage matrix, the image/video/audio/3d/text package
list, representative text-to-image, image-to-image, text-to-3d, and
music-generation rows, route-map articles, sibling quick-actions, bearer auth
on the catalog request, and 44px hit targets for the input, select, submit, and
quick-action links.
The browser coverage also drives the live compatibility endpoint for compatible
text-to-image -> image, incompatible text-to-image -> video, and unknown
text-to-hologram checks; verifies the exact POST bodies and bearer headers;
and covers loading, empty coverage, 503 catalog error, malformed catalog, check
network failure, non-admin unauthorized, and anonymous redirect-before-render
states. The route remains a manifest-checking admin console; route-map sub-path
implementations, intentional cross-domain quick action ownership, and manual
AT/touch-device/offline/telemetry passes remain product hardening items.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisGenerationModeCoverageWorkspace.tsx apps/oshun/web/src/app/studio/isis/generation-mode-coverage/page.tsx apps/oshun/web/e2e/studio-isis-generation-mode-coverage.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-generation-mode-coverage.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore src/components/studio/StudioIsisGenerationModeCoverageWorkspace.tsx src/app/studio/isis/generation-mode-coverage/page.tsx e2e/studio-isis-generation-mode-coverage.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-isis-generation-mode-coverage-route.test.ts- passed: 1 file, 4 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisGenerationModeCoverageWorkspace.test.tsx src/components/__tests__/StudioIsisGenerationModeCoveragePage.test.tsx src/components/__tests__/StudioIsisGenerationModeCoverageRouteMap.test.ts- passed: 3 files, 5 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-isis-generation-mode-coverage.spec.ts --project=chromium- passed: 8 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 54 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
253. 2026-06-30 Studio Isis workflow-versioning coverage#
Closed the focused /studio/isis/workflow-versioning browser coverage gap for
the V1 Studio workflow-governance route. The new Playwright spec proves the
direct route remains Studio-boundary hard-blocked, then primes an authenticated
Studio admin shell through the localhost-only lane bypass and forwards browser
GET requests to the real local BFF. The happy path asserts the real
@isis/workflows registry contract: schema 1.0.0, compatibility range
^1.0.0, 48 workflow rows, Behind latest: 0, representative
artifact-reconstruction and music-cue-composer entries, route-map articles,
sibling quick-actions, bearer auth on the catalog request, and 44px hit targets
for compare controls, the behind-only filter target, and quick-action links.
The browser coverage also drives the read-only compare tool through live
parameterized BFF GETs for 1.0.0 -> 2.0.0 (older, satisfies range),
2.0.0 -> 1.0.0 (newer, does not satisfy range), and invalid not-semver
input; verifies the exact query strings and bearer headers; and covers the real
behind-only empty filter state, loading, empty catalog, 503 catalog error,
malformed catalog, compare network failure, non-admin unauthorized, and
anonymous redirect-before-render states. The route remains a read-only registry
browser; route-map sub-path implementations, breadcrumbs, and manual
AT/touch-device/offline/telemetry passes remain product hardening items.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisWorkflowVersioningWorkspace.tsx apps/oshun/web/src/app/studio/isis/workflow-versioning/page.tsx apps/oshun/web/e2e/studio-isis-workflow-versioning.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-workflow-versioning.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore src/components/studio/StudioIsisWorkflowVersioningWorkspace.tsx src/app/studio/isis/workflow-versioning/page.tsx e2e/studio-isis-workflow-versioning.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-isis-workflow-versioning-route.test.ts- passed: 1 file, 4 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisWorkflowVersioningWorkspace.test.tsx src/components/__tests__/StudioIsisWorkflowVersioningWorkspace.integration.test.tsx src/components/__tests__/StudioIsisWorkflowVersioningPage.test.tsx src/components/__tests__/StudioIsisWorkflowVersioningRouteMap.test.ts- passed: 4 files, 8 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-isis-workflow-versioning.spec.ts --project=chromium- passed: 9 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 54 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
254. 2026-07-01 Studio Isis model-registry coverage#
Closed the focused /studio/isis/model-registry browser coverage gap for the V1
Studio model-governance route. The new Playwright spec proves the direct route
remains Studio-boundary hard-blocked, then primes an authenticated Studio admin
shell through the localhost-only lane bypass and forwards browser GET requests
to the real local BFF. The happy path asserts the seeded managed-model registry
contract: four default safe rows, NSFW model mm_mature_studies_v1 hidden by
default, non-commercial mm_portrait_warmth_v2 visible by default, checkpoint
/ lora asset facets, route-map articles, sibling quick-actions, bearer auth on
the catalog request, and 44px hit targets for filters, toggles, load-more, and
quick-action links.
The browser coverage also drives search, asset-type, commercial-use, NSFW, and
cursor-pagination interactions through the live ManagedModelBrowser BFF
contract; verifies the browser query strings and forwarded BFF query strings;
and covers loading, empty catalog, 503 catalog error, malformed catalog,
non-admin unauthorized, and anonymous redirect-before-render states. The route
remains a read-only managed-model browser; upstream Civitai intake/approval,
route-map sub-path implementations, and manual AT/touch-device/offline/
telemetry passes remain product hardening items.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisModelRegistryWorkspace.tsx apps/oshun/web/src/app/studio/isis/model-registry/page.tsx apps/oshun/web/src/components/__tests__/StudioIsisModelRegistryWorkspace.test.tsx apps/oshun/web/e2e/studio-isis-model-registry.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-model-registry.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore src/components/studio/StudioIsisModelRegistryWorkspace.tsx src/app/studio/isis/model-registry/page.tsx src/components/__tests__/StudioIsisModelRegistryWorkspace.test.tsx e2e/studio-isis-model-registry.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-isis-model-registry-route.test.ts- passed: 1 file, 7 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisModelRegistryWorkspace.test.tsx src/components/__tests__/StudioIsisModelRegistryWorkspace.integration.test.tsx src/components/__tests__/StudioIsisModelRegistryPage.test.tsx src/components/__tests__/StudioIsisModelRegistryRouteMap.test.ts- passed: 4 files, 8 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-isis-model-registry.spec.ts --project=chromium- passed: 8 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 54 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
255. 2026-07-01 Studio Isis job-submission coverage#
Closed the focused /studio/isis/job-submission browser coverage gap for the V1
Studio job-governance route. The new Playwright spec proves the direct route
remains Studio-boundary hard-blocked, then primes an authenticated Studio admin
shell through the localhost-only lane bypass and forwards browser GET/POST
requests to the real local BFF. The happy path asserts the real
@isis/job-envelope submission catalog contract: 18 generation types,
priorities low / normal / high / urgent, default form state, route-map
articles, sibling quick-actions, bearer auth on the catalog request, and 44px
hit targets for the type select, priority select, JSON textarea, submit button,
and quick-action links.
The browser coverage also builds a valid music-generation envelope through the
live BFF, verifies native pending-submit disablement, and proves the route does
not fabricate envelopes for client-only malformed JSON, live BFF
invalid_payload 400s, or strict zod enum validation issues surfaced as
data-job-issues / data-job-issue="type". Loading, 503 catalog error,
malformed catalog, non-admin unauthorized, and anonymous redirect-before-render
states are also covered. The route still builds/validates an envelope rather
than enqueueing it; queue handoff, route-map sub-path implementations, and
manual AT/touch-device/offline/telemetry passes remain product hardening items.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisJobSubmissionWorkspace.tsx apps/oshun/web/src/app/studio/isis/job-submission/page.tsx apps/oshun/web/src/components/__tests__/StudioIsisJobSubmissionWorkspace.test.tsx apps/oshun/web/e2e/studio-isis-job-submission.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-job-submission.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore src/components/studio/StudioIsisJobSubmissionWorkspace.tsx src/app/studio/isis/job-submission/page.tsx src/components/__tests__/StudioIsisJobSubmissionWorkspace.test.tsx e2e/studio-isis-job-submission.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-isis-job-submission-route.test.ts- passed: 1 file, 6 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisJobSubmissionWorkspace.test.tsx src/components/__tests__/StudioIsisJobSubmissionWorkspace.integration.test.tsx src/components/__tests__/StudioIsisJobSubmissionRouteMap.test.ts- passed: 3 files, 6 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 51 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-isis-job-submission.spec.ts --project=chromium- passed: 8 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 51 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 54 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
256. 2026-07-01 Studio Isis job-management coverage#
Closed the focused /studio/isis/job-management browser coverage gap for the V1
Studio generation-job queue route. The new Playwright spec proves the direct
route remains Studio-boundary hard-blocked, then primes an authenticated Studio
admin shell through the localhost-only lane bypass and forwards browser GET/POST
requests to the real local BFF. The happy path seeds live /v1/generation/jobs
rows through the BFF, asserts queued and failed jobs in the queue console,
verifies job-id search, status/kind filters, selected request and error detail,
route-map articles, sibling quick-actions, bearer auth on the catalog request,
and 44px hit targets for filters, process/retry buttons, job rows, and
quick-action links.
The browser coverage also drains a real queued unknown-provider job with the
workspace's { max: 25 } worker tick and verifies the fail-closed
provider_not_configured result, then re-queues a failed job through the real
retry endpoint and proves the UI reloads to queued. Loading, empty queue, 503
service failure, malformed queue response, non-admin unauthorized, and anonymous
redirect-before-render states are covered. The workspace now validates every job
row before rendering and includes the BFF release-gate statuses blocked and
needs_review; route-map sub-path implementations and manual
AT/touch-device/offline/telemetry passes remain product hardening items.
Verification:
command -v psql && psql --version- passed:
/usr/bin/psql,psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisJobManagementWorkspace.tsx apps/oshun/web/src/app/studio/isis/job-management/page.tsx apps/oshun/web/src/components/__tests__/StudioIsisJobManagementWorkspace.test.tsx apps/oshun/web/e2e/studio-isis-job-management.spec.ts- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore src/components/studio/StudioIsisJobManagementWorkspace.tsx src/app/studio/isis/job-management/page.tsx src/components/__tests__/StudioIsisJobManagementWorkspace.test.tsx e2e/studio-isis-job-management.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/generation/jobs-route.test.ts- passed: 1 file, 17 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisJobManagementWorkspace.test.tsx src/components/__tests__/StudioIsisJobManagementWorkspace.integration.test.tsx src/components/__tests__/StudioIsisJobManagementPage.test.tsx src/components/__tests__/StudioIsisJobManagementRouteMap.test.ts- passed: 4 files, 7 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 51 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-isis-job-management.spec.ts --project=chromium- passed: 7 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 51 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 54 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
257. 2026-07-01 Studio Isis job-envelope coverage#
Closed the focused /studio/isis/job-envelope browser coverage gap for the V1
Studio job-envelope normalization route. The new Playwright spec proves the
direct legacy Studio Isis route remains Studio-boundary hard-blocked, then
primes an authenticated Studio shell through the localhost-only lane bypass and
forwards browser GET/POST requests to the real local BFF. The happy path asserts
the real @isis/job-envelope normalization catalog contract: seven control
fields, live field/vocabulary catalog load, route-map articles, quick-actions,
embedded job-pipeline lane shells, the GPU Worker AAA embed-gate, bearer auth on
the catalog request, and 44px hit targets for raw-value inputs, the normalize
button, and quick-action links.
The browser coverage also submits the default alias-heavy raw envelope through
the live BFF and verifies canonical coercion (BLENDER_RENDER →
blender-render, openpose → pose, feature-map → cached-feature-map)
with 7 resolved · 0 unresolved. It then edits ipAdapterMode to
not-a-real-mode and proves the UI renders 6 resolved · 1 unresolved without
fabricating a canonical value. Loading, 503 catalog error, malformed catalog,
malformed successful normalization, normalize network failure, non-admin
unauthorized, and anonymous redirect-before-render states are covered. The
route-map deep paths remain advertised contract paths, and manual
AT/touch-device/offline/telemetry passes remain product hardening items.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisJobEnvelopeNormalizationLane.tsx apps/oshun/web/src/app/studio/isis/job-envelope/page.tsx apps/oshun/web/src/components/__tests__/StudioIsisJobEnvelopeWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioIsisJobEnvelopeWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-isis-job-envelope.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-job-envelope.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/matrix/coverage.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore src/components/studio/StudioIsisJobEnvelopeNormalizationLane.tsx src/app/studio/isis/job-envelope/page.tsx src/components/__tests__/StudioIsisJobEnvelopeWorkspace.test.tsx src/components/__tests__/StudioIsisJobEnvelopeWorkspace.integration.test.tsx e2e/studio-isis-job-envelope.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-isis-job-envelope-route.test.ts- passed: 1 file, 6 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisJobEnvelopeWorkspace.test.tsx src/components/__tests__/StudioIsisJobEnvelopeWorkspace.integration.test.tsx src/components/__tests__/StudioIsisJobEnvelopePage.test.tsx src/components/__tests__/StudioIsisJobEnvelopeRouteMap.test.ts- passed: 4 files, 7 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 51 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-isis-job-envelope.spec.ts --project=chromium- passed: 6 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 51 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 54 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
258. 2026-07-01 Studio Isis budget-management coverage#
Closed the focused /studio/isis/budget-management browser coverage gap for the
V1 Studio GPU spend-governance route. The new Playwright spec proves the direct
legacy Studio Isis route remains Studio-boundary hard-blocked, then primes an
authenticated Studio shell through the localhost-only lane bypass and forwards
browser GET requests to the real local BFF. The happy path asserts the real
@isis/runpod-surface cost-quota evaluator contract: four seeded tenants
covering ok, alert, kill-switch-armed, and over-cap, status-count
rollup, route-map articles, sibling quick-actions, bearer auth on the catalog
request, and 44px hit targets for the status filter and quick-action links.
The browser coverage also narrows the tenant list with the status filter and verifies the operator preference is persisted locally. Loading, 503 service failure, malformed successful response, filtered-empty state, fetch/network failure, non-admin unauthorized, and anonymous redirect-before-render states are covered. The workspace now validates every tenant row, budget status, status count, and persisted filter value before rendering; route-map deep paths remain advertised contract paths, and manual AT/touch-device/offline/telemetry passes remain product hardening items.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisBudgetManagementWorkspace.tsx apps/oshun/web/src/app/studio/isis/budget-management/page.tsx apps/oshun/web/src/components/__tests__/StudioIsisBudgetManagementWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioIsisBudgetManagementWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-isis-budget-management.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-budget-management.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/matrix/coverage.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore src/components/studio/StudioIsisBudgetManagementWorkspace.tsx src/app/studio/isis/budget-management/page.tsx src/components/__tests__/StudioIsisBudgetManagementWorkspace.test.tsx src/components/__tests__/StudioIsisBudgetManagementWorkspace.integration.test.tsx e2e/studio-isis-budget-management.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-isis-budget-management-route.test.ts- passed: 1 file, 3 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisBudgetManagementWorkspace.test.tsx src/components/__tests__/StudioIsisBudgetManagementWorkspace.integration.test.tsx src/components/__tests__/StudioIsisBudgetManagementPage.test.tsx src/components/__tests__/StudioIsisBudgetManagementRouteMap.test.ts- passed: 4 files, 7 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 51 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-isis-budget-management.spec.ts --project=chromium- passed: 6 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 51 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 54 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
259. 2026-07-01 Studio Isis cost-tracking coverage#
Closed the focused /studio/isis/cost-tracking browser coverage gap for the V1
Studio LLM spend-governance route. The new Playwright spec proves the direct
legacy Studio Isis route remains Studio-boundary hard-blocked, then primes an
authenticated Studio shell through the localhost-only lane bypass and forwards
browser GET/POST requests to the real local BFF. The happy path asserts the real
@isis/token-budget pricing catalog and current rollup, records a unique
claude-3.5-sonnet usage event, verifies the exact $0.0180 computed cost in
the result, row, rollup, and provider bucket, then proves duplicate ids and
unknown models fail closed.
The browser coverage also covers client token-count validation, native pending submit disablement, bearer auth on list and record requests, route-map articles, sibling quick-actions, and 44px hit targets for form controls and quick-action links. Loading, 503 service failure, malformed successful catalog, malformed successful record response, fetch/network failure, non-admin unauthorized, and anonymous redirect-before-render states are covered. The workspace now validates every pricing row, usage record, provider/model rollup, total-record count, and successful write response before rendering or acknowledging a cost entry. The record ledger remains in the service session store until production persistence is defined; route-map deep paths remain advertised contract paths, and manual AT/touch-device/offline/telemetry passes remain product hardening items.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisCostTrackingWorkspace.tsx apps/oshun/web/src/app/studio/isis/cost-tracking/page.tsx apps/oshun/web/src/components/__tests__/StudioIsisCostTrackingWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioIsisCostTrackingWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-isis-cost-tracking.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-cost-tracking.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore src/components/studio/StudioIsisCostTrackingWorkspace.tsx src/app/studio/isis/cost-tracking/page.tsx src/components/__tests__/StudioIsisCostTrackingWorkspace.test.tsx src/components/__tests__/StudioIsisCostTrackingWorkspace.integration.test.tsx e2e/studio-isis-cost-tracking.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-isis-cost-tracking-route.test.ts- passed: 1 file, 7 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisCostTrackingWorkspace.test.tsx src/components/__tests__/StudioIsisCostTrackingWorkspace.integration.test.tsx src/components/__tests__/StudioIsisCostTrackingPage.test.tsx src/components/__tests__/StudioIsisCostTrackingRouteMap.test.ts- passed: 4 files, 10 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 51 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-isis-cost-tracking.spec.ts --project=chromium- passed: 7 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 51 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 54 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
260. 2026-07-01 Studio Isis resource-recommendations coverage#
Closed the focused /studio/isis/resource-recommendations browser coverage gap
for the V1 Studio LLM downgrade-governance route. The new Playwright spec proves
the direct legacy Studio Isis route remains Studio-boundary hard-blocked, then
primes an authenticated Studio shell through the localhost-only lane bypass and
forwards browser GET/POST requests to the real local BFF. The happy path asserts
the live fallback chain and reason catalog, renders the seeded rec-opus-budget
downgrade and rec-haiku-cost no-downgrade recommendations, writes a unique
claude-3-opus downgrade request, verifies the expected Sonnet fallback and
80.0% savings, then proves duplicate ids, cheapest-model no-downgrade requests,
and off-chain model payloads fail closed.
The browser coverage also covers client id/model/reason validation, native pending submit disablement, bearer auth on list and record requests, route-map articles, sibling quick-actions, and 44px hit targets for form controls and quick-action links. Loading, 503 service failure, malformed successful catalog, malformed successful record response, fetch/network failure, non-admin unauthorized, and anonymous redirect-before-render states are covered. The workspace now validates every fallback-chain entry, reason, recommendation record, downgrade target, and successful write response before rendering or acknowledging a recommendation. Recommendation persistence remains in the service session store until production persistence is defined; route-map deep paths remain advertised contract paths, and manual AT/touch-device/offline/ telemetry passes remain product hardening items.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisResourceRecommendationsWorkspace.tsx apps/oshun/web/src/app/studio/isis/resource-recommendations/page.tsx apps/oshun/web/src/components/__tests__/StudioIsisResourceRecommendationsWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioIsisResourceRecommendationsWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-isis-resource-recommendations.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-resource-recommendations.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore src/components/studio/StudioIsisResourceRecommendationsWorkspace.tsx src/app/studio/isis/resource-recommendations/page.tsx src/components/__tests__/StudioIsisResourceRecommendationsWorkspace.test.tsx src/components/__tests__/StudioIsisResourceRecommendationsWorkspace.integration.test.tsx e2e/studio-isis-resource-recommendations.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-isis-resource-recommendations-route.test.ts- passed: 1 file, 6 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisResourceRecommendationsWorkspace.test.tsx src/components/__tests__/StudioIsisResourceRecommendationsWorkspace.integration.test.tsx src/components/__tests__/StudioIsisResourceRecommendationsPage.test.tsx src/components/__tests__/StudioIsisResourceRecommendationsRouteMap.test.ts- passed: 4 files, 10 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the run.
pnpm --dir apps/oshun/web e2e -- e2e/studio-isis-resource-recommendations.spec.ts --project=chromium- passed: 7 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 54 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
261. 2026-07-01 Studio Isis creator-monetization coverage#
Closed the focused /studio/isis/creator-monetization browser coverage gap for
the V1 Studio marketplace payout-governance route. The new Playwright spec
proves the direct legacy Studio Isis route remains Studio-boundary hard-blocked,
then primes an authenticated Studio shell through the localhost-only lane bypass
and forwards browser GET/POST requests to the real local BFF. The happy path
asserts the live collaborator role/status catalog, writes the default 60/40
creator + modeler split, verifies the valid 100% plan and lead payee, then
drives the real engine through a manual-review marketplace-terms warning and a
blocked under-allocation warning. A live direct BFF POST also proves unknown
roles reject with invalid_payload.
The browser coverage also covers client malformed/non-array JSON validation,
native pending submit disablement, bearer auth on catalog and plan requests,
route-map articles, sibling quick-actions, and 44px hit targets for the JSON
textarea, submit button, and quick-action links. Loading, 503 service failure,
malformed successful catalog, malformed successful plan response, fetch/network
failure, non-admin unauthorized, and anonymous redirect-before-render states are
covered. The workspace now validates every role/status catalog, normalized
share, result status, warning, lead payee, and successful { ok: true, result }
envelope before rendering or acknowledging a split plan. Canonical ownership for
the cross-domain Aje/Hathor payout tail remains a product question; route-map
deep paths remain advertised contract paths, and manual AT/touch-device/offline/
telemetry passes remain product hardening items.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisCreatorMonetizationWorkspace.tsx apps/oshun/web/src/app/studio/isis/creator-monetization/page.tsx apps/oshun/web/src/components/__tests__/StudioIsisCreatorMonetizationWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioIsisCreatorMonetizationWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-isis-creator-monetization.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-creator-monetization.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-ignore src/components/studio/StudioIsisCreatorMonetizationWorkspace.tsx src/app/studio/isis/creator-monetization/page.tsx src/components/__tests__/StudioIsisCreatorMonetizationWorkspace.test.tsx src/components/__tests__/StudioIsisCreatorMonetizationWorkspace.integration.test.tsx e2e/studio-isis-creator-monetization.spec.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-isis-creator-monetization-route.test.ts- passed: 1 file, 7 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisCreatorMonetizationWorkspace.test.tsx src/components/__tests__/StudioIsisCreatorMonetizationWorkspace.integration.test.tsx src/components/__tests__/StudioIsisCreatorMonetizationPage.test.tsx src/components/__tests__/StudioIsisCreatorMonetizationRouteMap.test.ts- passed: 4 files, 11 tests
pnpm --dir apps/oshun/web typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active; during the focused browser run, available memory stayed above 9.5 GiB and returned to 13 GiB.
pnpm --dir apps/oshun/web e2e -- e2e/studio-isis-creator-monetization.spec.ts --project=chromium- passed: 7 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 54 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
262. 2026-07-01 Studio Isis RIFE interpolation coverage#
Closed the focused /studio/isis/rife-interpolation browser coverage gap for
the V1 Studio video-frame interpolation route. The new Playwright spec proves
the direct legacy Studio Isis route remains Studio-boundary hard-blocked, then
primes an authenticated Studio shell through the localhost-only lane bypass and
forwards browser GET/POST requests to the real local BFF. The happy path asserts
the live source/target fps catalog, writes the default exact 24→48 RIFE plan,
verifies the per-pair generated-frame count and confidence estimate, then drives
a 24→120 exact plan and an unsupported 30→48 plan failure. A live direct BFF
POST also proves too few source frames reject with invalid_payload.
The browser coverage also covers client frame-count validation, native pending
submit disablement, bearer auth on catalog and plan requests, route-map
articles, sibling quick-actions, and 44px hit targets for the selects, source
frames input, submit button, and quick-action links. Loading, 503 service
failure, malformed successful catalog, malformed successful plan response,
fetch/network failure, non-admin unauthorized, and anonymous
redirect-before-render states are covered. The workspace now validates the fps
catalog and every successful { ok: true, plan } envelope before rendering or
acknowledging a plan. Actual RIFE execution dispatch remains a product
integration question; route-map deep paths remain advertised contract paths, and
manual AT/touch-device/offline/telemetry passes remain product hardening items.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisRifeInterpolationWorkspace.tsx apps/oshun/web/src/app/studio/isis/rife-interpolation/page.tsx apps/oshun/web/src/components/__tests__/StudioIsisRifeInterpolationWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioIsisRifeInterpolationWorkspace.integration.test.tsx apps/oshun/web/e2e/studio-isis-rife-interpolation.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-rife-interpolation.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/studio/isis/rife-interpolation/page.tsx src/components/studio/StudioIsisRifeInterpolationWorkspace.tsx- passed
pnpm --dir apps/oshun/bff exec eslint --no-warn-ignored src/routes/admin-isis-rife-interpolation.ts- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/admin-isis-rife-interpolation-route.test.ts- passed: 1 file, 5 tests
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisRifeInterpolationWorkspace.test.tsx src/components/__tests__/StudioIsisRifeInterpolationWorkspace.integration.test.tsx src/components/__tests__/StudioIsisRifeInterpolationPage.test.tsx src/components/__tests__/StudioIsisRifeInterpolationRouteMap.test.ts- passed: 4 files, 10 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active; during the focused browser run, available memory stayed around 12 GiB and returned to 13 GiB.
pnpm --dir apps/oshun/web run e2e -- e2e/studio-isis-rife-interpolation.spec.ts --workers=1- passed: 7 passed
- Resource gate before docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, and 50 GiB disk free before generation. No competing build/test/docs jobs were active.
pnpm docs:center- passed: rendered 2983 files.
pnpm docs:center:check- passed: all 2983 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths; 54 known imported-content warnings were surfaced as non-blocking.
pnpm docs:center:test- passed: 90 passed, 6 skipped.
243. 2026-06-30 Nisaba notebook create contract and coverage#
Closed the /nisaba/notebook/new create-form gap against the real Nisaba BFF.
The client form now submits the live notebook-create payload
{ title, summary, visibility, tags: [] }, attaches both bearer auth and
csrfHeaders(), normalizes the BFF mutation envelope, and emits text-safe
submit/success/failure telemetry. Visibility is now a real radio group with
aria-checked and roving keyboard focus.
The BFF notebook model persists visibility through create, update, list, and
detail payloads, and the OpenAPI/source client contracts expose the field. The
route contract tests were also brought back in line with the current honest
empty Nisaba seed: notebooks, annotations, and grounded-evidence views now
appear only after real mutations or a real grounding pipeline output, not as
fabricated fixtures. psql was already available on the host at /usr/bin/psql
(psql (PostgreSQL) 16.14), so no package install was needed.
Verification:
command -v psql- passed:
/usr/bin/psql
- passed:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec prettier --write apps/oshun/web/src/app/nisaba/notebook/new/NisabaNewNotebookForm.tsx apps/oshun/web/src/app/nisaba/notebook/new/NisabaNewNotebookForm.test.tsx apps/oshun/web/e2e/nisaba-notebook-new.spec.ts apps/oshun/web/src/analytics/nisabaStudyTelemetry.ts apps/oshun/web/src/analytics/nisabaStudyTelemetry.test.ts libs/oshun/analytics/src/types.ts libs/oshun/analytics/src/customer-taxonomy.ts libs/oshun/analytics/src/__tests__/customer-taxonomy.test.ts apps/oshun/bff/src/nisaba/state.ts apps/oshun/bff/src/routes/nisaba.ts apps/oshun/bff/src/nisaba/in-process-adapter.test.ts apps/oshun/bff/src/__tests__/search-route.test.ts apps/oshun/bff/src/__tests__/nisaba-route.test.ts apps/oshun/bff/src/__tests__/contract/nisaba-bff-contract.test.ts apps/oshun/bff/openapi/oshun-bff.openapi.yaml libs/openapi/src/specs/oshun-bff/oshun-bff-v1-contracts.yaml libs/openapi/src/generated/oshun-bff.ts apps/oshun/web/src/lib/hooks/use-bff.ts apps/oshun/mobile/src/network/oshun-bff-client.ts apps/oshun/web/src/components/domains/NisabaSurface.tsx apps/oshun/web/src/components/home/homeNisabaContinuationModels.ts WALKTHROUGH/customer/07-nisaba/nisaba-notebook-new.md WALKTHROUGH/journeys/nisaba-notebook-capture-and-cite.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec vitest run src/analytics/nisabaStudyTelemetry.test.ts src/app/nisaba/notebook/new/NisabaNewNotebookForm.test.tsx- passed: 2 files passed, 6 tests passed
pnpm --dir libs/oshun/analytics exec vitest run src/__tests__/customer-taxonomy.test.ts- passed: 1 file passed, 41 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/nisaba-route.test.ts src/nisaba/in-process-adapter.test.ts src/__tests__/search-route.test.ts- passed: 3 files passed, 34 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/contract/nisaba-bff-contract.test.ts- passed: 1 file passed, 5 tests passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/nisaba/notebook/new/NisabaNewNotebookForm.tsx src/app/nisaba/notebook/new/NisabaNewNotebookForm.test.tsx src/analytics/nisabaStudyTelemetry.ts src/analytics/nisabaStudyTelemetry.test.ts src/lib/hooks/use-bff.ts src/components/domains/NisabaSurface.tsx src/components/home/homeNisabaContinuationModels.ts e2e/nisaba-notebook-new.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/bff exec eslint --no-warn-ignored src/nisaba/state.ts src/routes/nisaba.ts src/nisaba/in-process-adapter.test.ts src/__tests__/search-route.test.ts src/__tests__/nisaba-route.test.ts src/__tests__/contract/nisaba-bff-contract.test.ts --max-warnings=0- passed
pnpm --dir libs/oshun/analytics exec eslint --no-warn-ignored src/types.ts src/customer-taxonomy.ts src/__tests__/customer-taxonomy.test.ts --max-warnings=0- passed
pnpm --dir apps/oshun/mobile exec eslint --no-warn-ignored src/network/oshun-bff-client.ts --max-warnings=0- passed
pnpm nx run @oshun/analytics:typecheck- passed
pnpm --dir apps/oshun/bff typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/mobile typecheck- passed
pnpm --filter @oshun/openapi run generate:oshun-v1-specs- passed: generated 7 Oshun V1 OpenAPI spec artifacts
pnpm oshun-v1:openapi:check- passed: validated 7 V1 spec artifacts, 6 typed API client packages, and BFF runtime drift
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, at least 7.1 GiB available during final focused Playwright, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the passing focused browser runs.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-notebook-new.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/nisaba-notebook-bff.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 5 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
243. 2026-06-30 Profile safety resource-open telemetry coverage#
Closed the /profile/safety resource-open telemetry gap. The safety record now
maps surfaced resource IDs to actionable destinations: us-988 renders as a
tel:988 crisis-line link and audit-platform links back to the in-page
profile safety record. Both hydrated and service-worker offline replay markup
render the same labels and stable resource-link selectors.
The page emits lilith_safety_resource_opened when a member opens a surfaced
resource, including the active frame ID, destination, and resource kind. The
customer analytics taxonomy now records that implemented payload under canonical
oshun.safety.resource_opened. The focused browser spec activates a real crisis
frame through the operator BFF, loads the signed-in member's live
/v1/safety/crisis-frames/mine projection, asserts the tel:988 target, and
captures the browser-dispatched resource-open event from that live safety
record.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec prettier --write apps/oshun/web/src/analytics/profileSafetyTelemetry.ts apps/oshun/web/src/analytics/profileSafetyTelemetry.test.ts apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.tsx apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.test.tsx apps/oshun/web/src/app/profile/safety/safety.module.css apps/oshun/web/e2e/profile-safety-crisis-recovery.spec.ts libs/oshun/analytics/src/types.ts libs/oshun/analytics/src/customer-taxonomy.ts WALKTHROUGH/customer/09-account/profile-safety.md WALKTHROUGH/journeys/crisis-aware-tone-policy.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm exec prettier --write apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.test.tsx libs/oshun/analytics/src/__tests__/customer-taxonomy.test.ts- passed
pnpm --dir apps/oshun/web exec vitest run src/analytics/profileSafetyTelemetry.test.ts src/app/profile/safety/ProfileSafetyJourney.test.tsx- passed: 2 files passed, 11 tests passed
pnpm --dir libs/oshun/analytics exec vitest run src/__tests__/customer-taxonomy.test.ts- passed: 1 file passed, 41 tests passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/analytics/profileSafetyTelemetry.ts src/analytics/profileSafetyTelemetry.test.ts src/app/profile/safety/ProfileSafetyJourney.tsx src/app/profile/safety/ProfileSafetyJourney.test.tsx e2e/profile-safety-crisis-recovery.spec.ts --max-warnings=0- passed
pnpm exec eslint --no-warn-ignored libs/oshun/analytics/src/types.ts libs/oshun/analytics/src/customer-taxonomy.ts libs/oshun/analytics/src/__tests__/customer-taxonomy.test.ts --max-warnings=0- passed
pnpm nx run @oshun/analytics:typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, at least 7.3 GiB available during focused Playwright, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the passing focused browser run.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-safety-crisis-recovery.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
pnpm exec prettier --write WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
247. 2026-06-30 Arete weekly-review close telemetry#
Closed the browser-observable telemetry gap on the Arete weekly-review terminal
footer actions. AreteReviewClose now emits arete_weekly_review_closed only
after the real /v1/arete/review/close response returns, carrying the persisted
weekLabel, action, state, and closureId envelope plus
sourcePath: '/arete/review'.
The focused browser spec still drives the real close/save writes through the
Playwright-managed BFF, verifies /v1/arete/review/closed persistence, and
returns to /arete to prove the continuity card is read from /v1/arete/room.
It now also captures and asserts the analytics event for both "Close the week"
(week-closed) and "Save as private letter" (kept-private). The journey
remains partial for the explicitly unmodeled Sunday push/OS notification path,
per-act completion state, and richer review-derived plan-adjustment read-back.
Verification:
pnpm exec prettier --write apps/oshun/web/src/analytics/areteReviewTelemetry.ts apps/oshun/web/src/analytics/areteReviewTelemetry.test.ts apps/oshun/web/src/components/lilith/AreteReviewClose.tsx apps/oshun/web/e2e/arete-review-close.spec.ts WALKTHROUGH/customer/04-arete/arete-review.md WALKTHROUGH/customer/04-arete/arete.md WALKTHROUGH/journeys/weekly-review-arete.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/analytics/areteReviewTelemetry.ts src/analytics/areteReviewTelemetry.test.ts src/components/lilith/AreteReviewClose.tsx e2e/arete-review-close.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/analytics/areteReviewTelemetry.test.ts- passed: 1 file passed, 1 test passed
pnpm nx run @oshun/web:typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, 13 GiB available before the final focused browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the passing focused browser run.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/arete-review-close.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 2 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
246. 2026-06-30 AAA upgrade browser telemetry coverage#
Closed the browser-observable telemetry gap on the AAA upgrade disclosure. The
server route still preserves the fail-closed entitlement boundary and open
redirect protections, while a small client action component now emits
aaa_upgrade_viewed, aaa_upgrade_open_yemaya_clicked, and
aaa_upgrade_back_to_gallery_clicked through the existing
oshun-analytics:event bridge without adding DOM telemetry hooks.
The focused browser spec now proves the full customer-facing telemetry
post-condition: an AAA-tier session redirected from /studio/yemaya/studio-web
sees the disclosure, records the source route, keeps both CTA destinations
intact, and emits distinct analytics payloads for each CTA click. The direct
/aaa-upgrade render also records a null source path, so the flow covers both
redirected and direct disclosure visits. The remaining observability gap is
proxy-side structured access-log telemetry for the 307 and 404 boundary
decisions, which is not browser-observable.
Verification:
pnpm exec prettier --write apps/oshun/web/src/analytics/aaaUpgradeTelemetry.ts apps/oshun/web/src/app/aaa-upgrade/AaaUpgradeActions.tsx apps/oshun/web/src/app/aaa-upgrade/page.tsx apps/oshun/web/e2e/aaa-upgrade-entitlement-bounce.spec.ts WALKTHROUGH/customer/13-system/aaa-upgrade.md WALKTHROUGH/journeys/aaa-upgrade-entitlement-bounce.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/analytics/aaaUpgradeTelemetry.ts src/app/aaa-upgrade/AaaUpgradeActions.tsx src/app/aaa-upgrade/page.tsx src/app/__tests__/aaa-upgrade.test.tsx e2e/aaa-upgrade-entitlement-bounce.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/app/__tests__/aaa-upgrade.test.tsx- passed: 1 file passed, 2 tests passed
pnpm nx run @oshun/web:typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, 13 GiB available before the final focused browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the passing focused browser run.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/aaa-upgrade-entitlement-bounce.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 7 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
243. 2026-06-30 Profile memory edit-conflict browser coverage#
Closed the Step 4 edit-conflict gap for memory-edit-pause-forget. The
/profile/memory controls now listen for same-origin
PROFILE_MEMORY_STORAGE_KEY storage events, refresh from another open tab, and
preserve a dirty editor draft plus its original editBaseRevisionCount instead
of silently rebasing the draft when the selected fact changes underneath it.
Conflict resolution now handles the replacement-style Iris edit model: Keep
remote version selects the active remote replacement and rebases the editor,
while Save my edit as the next revision targets the active replacement when
the original stale item has already been soft-deleted. The Playwright journey
uses two pages in the same browser context so tab B's save triggers a real
browser storage event in tab A, then asserts stale-draft preservation,
data-profile-memory-edit-conflict, keep-remote, overwrite, and both conflict
telemetry events.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/profile/memory/ProfileMemoryControls.tsx apps/oshun/web/src/app/profile/memory/ProfileMemoryControls.test.tsx apps/oshun/web/e2e/memory-edit-pause-forget.spec.ts WALKTHROUGH/customer/09-account/profile-memory.md WALKTHROUGH/journeys/memory-edit-pause-forget.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/profile/memory/ProfileMemoryControls.tsx src/app/profile/memory/ProfileMemoryControls.test.tsx e2e/memory-edit-pause-forget.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec vitest run src/app/profile/memory/ProfileMemoryControls.test.tsx src/app/profile/memory/memory-state.test.ts- passed: 2 files passed, 18 tests passed
- Resource gates before typecheck / Playwright
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 50 GiB disk free, and no competing build/test gates; during Playwright, available memory stayed above 6.3 GiB.
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/memory-edit-pause-forget.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "step 4"- passed: 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/memory-edit-pause-forget.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 16 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
244. 2026-06-30 Tenant member audit events#
Closed the tenant-onboard step 2 audit-chain gap for the single-member write
paths. The tenant invite route now records tenant.member_invite after a
successful invite write, and the direct add-member route records
tenant.member_create after a successful active-member allocation. Both events
carry the tenant id, actor id, target id, role/status details, and
write-specific payload fields, then flow through the existing tenant-scoped
GET /v1/tenant-console/audit?tenantId=... read path.
The BFF route test covers both audit events using the injected audit store and tenant admin audit read-back. The real-HTTP Playwright BFF section now creates a live invite and direct member add against the dev BFF, reads the tenant audit cockpit endpoint, and asserts the event user, target id, and payload fields. The walkthroughs now mark the single-member audit events as implemented while keeping the remaining branded outbound email, CSV import/bulk per-row audit, and broader audit-chain reconciliation gaps explicit.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)is installed in the environment.
- passed:
pnpm exec prettier --write apps/oshun/bff/src/routes/admin-tenant-invitations.ts apps/oshun/bff/src/app.ts apps/oshun/bff/src/__tests__/admin-tenant-invitations-route.test.ts apps/oshun/web/e2e/tenant-member-actions.spec.ts WALKTHROUGH/journeys/tenant-onboard.md WALKTHROUGH/journeys/tenant-bulk-member-invite-scim.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/operator/operator-tenant.md- passed
pnpm --dir apps/oshun/bff exec eslint --no-warn-ignored src/routes/admin-tenant-invitations.ts src/app.ts src/__tests__/admin-tenant-invitations-route.test.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/tenant-member-actions.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-tenant-invitations-route.test.ts src/routes/tenant-console-reads.test.ts- passed: 2 files passed, 10 tests passed
pnpm --dir apps/oshun/bff typecheck- passed
pnpm --dir apps/oshun/web typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, 13 GiB available before verification, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the passing focused browser run. During Playwright, memory stayed above 7.8 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-member-actions.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 8 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
246. 2026-06-30 Profile memory Iris export receipt#
Closed the synced /profile/memory export-receipt gap. When the memory page is
hydrated from real Iris review data, Build export now first posts to
/v1/iris/adapter/export?role=settings with JSON, consent, opt-out, and
metadata export options. The page renders the returned non-secret receipt
(exportId, memory count, checksum) and still exposes the local signed JSON
artifact for download and inspection.
The real-infra Playwright coverage writes a profile fact through the real Iris
remember route, hydrates /profile/memory through review and consents, captures
the export request/response, asserts the receipt + toast + preview, and keeps
the local signed export JSON assertion for the real user id and
iris-data-storage-consent. The remaining honest gaps are DSAR request id
persistence as an IrisDataRightsRequest and full-clear execution, which
remains server-cron-bound.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)is installed in the environment.
- passed:
pnpm exec prettier --write apps/oshun/web/src/app/profile/memory/ProfileMemoryControls.tsx apps/oshun/web/src/app/profile/memory/memory-controls.module.css apps/oshun/web/src/app/profile/memory/memory-state.ts apps/oshun/web/src/app/profile/memory/ProfileMemoryControls.test.tsx apps/oshun/web/e2e/memory-edit-pause-forget.spec.ts WALKTHROUGH/customer/09-account/profile-memory.md WALKTHROUGH/journeys/memory-edit-pause-forget.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec vitest run src/app/profile/memory/ProfileMemoryControls.test.tsx src/app/profile/memory/memory-state.test.ts- passed: 2 files passed, 19 tests passed.
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/profile/memory/ProfileMemoryControls.tsx src/app/profile/memory/memory-state.ts src/app/profile/memory/ProfileMemoryControls.test.tsx e2e/memory-edit-pause-forget.spec.ts --max-warnings=0- passed
pnpm nx run @oshun/web:typecheck- passed
- Resource gates before focused typecheck / Playwright / docs-center
- 15 GiB RAM, 13 GiB available before typecheck and Playwright, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the focused browser run. During Playwright, available memory stayed at or above 6.5 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/memory-edit-pause-forget.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 16 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
245. 2026-06-30 Profile memory single-fact Iris delete#
Closed the /profile/memory synced single-fact forget gap. When the selected
fact came from the real Iris review read, Clear this fact now calls the BFF
single-memory delete endpoint with mode=soft before applying the local view
mutation, and the step-up-gated hard delete calls the same endpoint with
mode=hard before mirroring the tombstone into the local control state. The web
client now consumes the canonical Iris delete summary
(deletedCount/deletedMemoryIds/warnings) returned by
/v1/iris/adapter/memory/:memoryId instead of assuming the lower-level storage
adapter result shape.
The real-infra Playwright coverage writes a profile fact through
POST /v1/iris/adapter/remember?role=assistant, captures its real memory id
from /v1/iris/adapter/review, performs the /profile/memory step-up hard
delete in Chromium, then reads review again and proves neither the memory id nor
content is returned. The customer walkthrough and journey coverage now mark
synced single-fact hard-delete as verified while keeping edit, opt-out, scope
change, category/scope clear, full-clear, and export listed as remaining
local-only writes.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)is installed in the environment.
- passed:
pnpm exec prettier --write apps/oshun/web/src/app/profile/memory/ProfileMemoryControls.tsx apps/oshun/web/src/app/profile/memory/memory-state.ts apps/oshun/web/src/app/profile/memory/memory-state.test.ts apps/oshun/web/e2e/memory-edit-pause-forget.spec.ts WALKTHROUGH/customer/09-account/profile-memory.md WALKTHROUGH/journeys/memory-edit-pause-forget.md WALKTHROUGH/journeys/coverage.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/profile/memory/ProfileMemoryControls.tsx src/app/profile/memory/memory-state.ts src/app/profile/memory/memory-state.test.ts e2e/memory-edit-pause-forget.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/memory-edit-pause-forget.spec.ts --max-warnings=0- passed after tightening the final read-back assertion for the canonical
recordsresponse.
- passed after tightening the final read-back assertion for the canonical
pnpm --dir apps/oshun/web exec vitest run src/app/profile/memory/ProfileMemoryControls.test.tsx src/app/profile/memory/memory-state.test.ts- passed: 2 files passed, 17 tests passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/iris-route.test.ts- passed: 1 file passed, 11 tests passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, 13 GiB available before the final focused browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the passing focused browser run. During Playwright, available memory stayed above 6.1 GiB.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/memory-edit-pause-forget.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 15 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
243. 2026-06-30 Tenant member register live refresh#
Closed the visible roster-refresh gap in the tenant onboarding journey. The
operator /operator/tenant member register now preserves the fixture ledger,
then refreshes from the real tenant-console cockpit read after successful Invite
/ + Add member writes. Pending invites append live rows with
data-tenant-member-status="invited", the invited email, role label, pending
sitting cell, and "invite sent" last-seen cell. Direct add-member writes append
live active-member rows with the added user ID, default member role, 0 / 0d,
and not seen.
The browser E2E now bridges both the admin write routes and the tenant-scoped member read route to the live BFF with isolated test tenants, so repeated runs do not consume the shared fixture tenant's 25-seat pool. The same focused run keeps the operator-surface regression contract green: the initial page still renders the eight fixture rows and all existing table/dialog anchors.
Verification:
pnpm exec prettier --write apps/oshun/web/src/lib/lilith-data/types.ts apps/oshun/web/src/components/lilith/TenantMemberActions.tsx apps/oshun/web/src/components/lilith/TenantMemberRegister.tsx apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/e2e/tenant-member-actions.spec.ts WALKTHROUGH/journeys/tenant-onboard.md WALKTHROUGH/operator/operator-tenant.md WALKTHROUGH/journeys/coverage.md- passed
- Resource gates before focused typecheck / Playwright / docs-center
- 15 GiB RAM, at least 8.0 GiB available during the focused Playwright run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the passing focused browser run.
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/lib/lilith-data/types.ts src/components/lilith/TenantMemberActions.tsx src/components/lilith/TenantMemberRegister.tsx src/components/lilith/operator.tsx e2e/tenant-member-actions.spec.ts --max-warnings=0- passed
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-member-actions.spec.ts e2e/operator-surfaces.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 14 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
237. 2026-06-30 Profile memory BFF retry coverage#
Closed the /profile/memory recoverable hydration-error gap. The memory state
helper now distinguishes synced, empty, and unavailable Iris review reads
instead of collapsing empty and failed BFF reads into null. The page keeps
cached rows visible on unavailable reads, exposes
data-profile-memory-bff-status with a Retry Iris read action, and clears the
alert after a retry reaches the real BFF hydration path.
The focused Playwright failure-mode leg seeds a real Iris session plus cached
memory, aborts the initial browser review read, verifies cached facts remain
visible with the retry banner, then removes the abort and waits for the real
/v1/iris/adapter/review?role=settings&pageSize=100 retry response before
asserting the alert is gone. Unit coverage now proves empty reviews remain
non-destructive while unavailable reads surface as an explicit status.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/profile/memory/ProfileMemoryControls.tsx apps/oshun/web/src/app/profile/memory/memory-controls.module.css apps/oshun/web/src/app/profile/memory/memory-state.ts apps/oshun/web/src/app/profile/memory/memory-state.test.ts apps/oshun/web/src/app/profile/memory/ProfileMemoryControls.test.tsx apps/oshun/web/e2e/memory-edit-pause-forget.spec.ts WALKTHROUGH/customer/09-account/profile-memory.md WALKTHROUGH/journeys/memory-edit-pause-forget.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec vitest run src/app/profile/memory/memory-state.test.ts src/app/profile/memory/ProfileMemoryControls.test.tsx- passed: 2 files passed, 16 tests passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/profile/memory/ProfileMemoryControls.tsx src/app/profile/memory/memory-state.ts src/app/profile/memory/ProfileMemoryControls.test.tsx src/app/profile/memory/memory-state.test.ts e2e/memory-edit-pause-forget.spec.ts --max-warnings=0- passed
pnpm nx run @oshun/web:typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, 13 GiB available before browser/docs gates, 30 GiB swap free, 50 GiB disk free. No competing build/test/docs jobs were active; the focused Playwright run peaked at 6.4 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/memory-edit-pause-forget.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 14 passed
pnpm docs:center- passed: rendered 2976 files
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths
pnpm docs:center:test- passed: 89 passed, 5 skipped
237. 2026-06-30 Settings connected-service/profile projection coverage#
Closed the direct /settings account-surface gap where connected services,
connected domains, and domain statistics were documented as component-local demo
or presentational rows. The profile contract now carries domainStats and
connectedServices; /v1/profile projects connected services from real
per-user BFF state by reading calendar OAuth connections and notification
channel bindings. The settings panel renders those profile projections, routes
calendar service actions to /profile?path=calendar, routes notification
channel actions to /profile?path=notifications, and routes connected-domain
management to /domains/<id>?origin=profile.
The focused Playwright journey seeds a verified email channel through the real
/v1/profile/channels/* BFF flow, opens direct /settings, asserts the
projected connected notification-channel row, and drives the service/domain
management navigations. The BFF profile-route unit test also seeds a real
calendar connection and verified channel binding, proves the profile projection,
and asserts the calendar refresh token is not leaked.
Verification:
pnpm exec prettier --write libs/oshun/auth/src/profile-store.ts libs/oshun/auth/src/__tests__/profile-store.test.ts apps/oshun/bff/src/profile/state.ts apps/oshun/bff/src/routes/profile.ts apps/oshun/bff/src/__tests__/profile-route.test.ts apps/oshun/web/src/lib/auth-context.tsx apps/oshun/web/src/profile/profile-sync.ts apps/oshun/web/src/components/ProfileSettingsPanel.tsx apps/oshun/web/src/components/__tests__/ProfileSettingsPanel.test.tsx apps/oshun/web/e2e/profile-settings-flows.spec.ts WALKTHROUGH/customer/09-account/settings.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, 31 GiB swap, and 50 GiB disk free. No competing build/test process was active before the focused browser run; the run was supervised and memory remained above the safety threshold.
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/profile-route.test.ts- passed: 1 file passed, 5 tests passed
pnpm exec vitest run --config libs/oshun/auth/vitest.config.ts libs/oshun/auth/src/__tests__/profile-store.test.ts- passed: 1 file passed, 4 tests passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/ProfileSettingsPanel.test.tsx- passed: 1 file passed, 67 tests passed
pnpm nx run @oshun/auth-client:typecheck- passed
pnpm nx run @oshun/bff:typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
pnpm nx run @oshun/web:lint- passed with existing warnings only
pnpm exec eslint libs/oshun/auth/src/profile-store.ts libs/oshun/auth/src/__tests__/profile-store.test.ts apps/oshun/bff/src/profile/state.ts apps/oshun/bff/src/routes/profile.ts apps/oshun/bff/src/__tests__/profile-route.test.ts apps/oshun/web/src/lib/auth-context.tsx apps/oshun/web/src/profile/profile-sync.ts apps/oshun/web/src/components/ProfileSettingsPanel.tsx apps/oshun/web/src/components/__tests__/ProfileSettingsPanel.test.tsx apps/oshun/web/e2e/profile-settings-flows.spec.ts- passed: 0 errors; repository ignore warnings for ignored test/e2e files.
pnpm nx run @oshun/auth-client:lint- attempted; blocked by pre-existing project-wide auth lint errors outside
this slice (
billing-store.ts,customer-support-history-store.ts,data-rights-store.ts,preferences-store.ts,privacy-store.ts). Touched auth files pass the file-scoped ESLint gate above.
- attempted; blocked by pre-existing project-wide auth lint errors outside
this slice (
pnpm nx run @oshun/bff:lint- attempted; blocked by pre-existing project-wide BFF lint errors outside this slice (module-boundary, duplicate-import, and no-useless-assignment errors across unrelated accessibility/Aja/Yemaya/admin routes). Touched BFF files pass the file-scoped ESLint gate above.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-settings-flows.spec.ts --grep "connected management actions"- passed: 1 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
238. 2026-06-30 Profile Telegram live-status polling coverage#
Closed the account Telegram bridge gap where the not-linked page required a
manual re-navigation after the user opened the Telegram deep link. The
server-rendered route still fetches the first /v1/telegram/link snapshot, but
the client state panel now owns the visible card, polls the authenticated
account-scoped BFF read while the nonce is unlinked, and repaints in place to
the linked chat state once the real /telegram/webhook /start link-<nonce>
path completes the nonce.
The focused Playwright journey now opens /profile/telegram in the not-linked
state, verifies the live t.me href, completes that exact nonce through the
real Telegram webhook, confirms BFF linked read-back, then waits for the same
browser URL to repaint from data-profile-telegram-live-status="watching" to
"linked" with the /unlink instruction visible. Existing refresh, expiry,
mobile/offline, anonymous redirect, telemetry-hook absence, and fail-closed
invalid-bearer coverage remain intact.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/profile/telegram/ProfileTelegramLinkPanel.tsx apps/oshun/web/src/app/profile/telegram/page.tsx apps/oshun/web/src/app/profile/telegram/ProfileTelegramLinkPanel.test.tsx apps/oshun/web/e2e/profile-telegram-bridge.spec.ts WALKTHROUGH/customer/09-account/profile-telegram.md WALKTHROUGH/matrix/coverage.md- passed
- Resource gates before focused Playwright
- 15 GiB RAM, 31 GiB swap, and 50 GiB disk free. No competing build/test process was active before the focused browser run; during the run available memory stayed at or above 12 GiB.
pnpm --dir apps/oshun/web exec vitest run src/app/profile/telegram/ProfileTelegramLinkPanel.test.tsx- passed: 1 file passed, 3 tests passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/profile/telegram/ProfileTelegramLinkPanel.tsx src/app/profile/telegram/page.tsx src/app/profile/telegram/ProfileTelegramLinkPanel.test.tsx e2e/profile-telegram-bridge.spec.ts --max-warnings=0- passed
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/bff exec vitest run src/__tests__/telegram-route.test.ts- passed: 1 file passed, 10 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-telegram-bridge.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
221. 2026-06-29 Tenant integrations operator UI coverage#
Closed the browser-visible operator UI gap for
tenant-integrations-api-keys-webhooks on /operator/tenant. The Lilith tenant
console now includes TenantIntegrationsPanel, which waits for the
authenticated admin browser session, loads the live integrations snapshot,
creates scoped API keys, creates webhook subscriptions, and runs the sandbox
signed-delivery simulator through the shared api client and real BFF routes.
The focused Playwright spec seeds an admin-scoped browser session without
mocking the BFF, then verifies the actual browser POST requests carry the admin
bearer and the typed UI payloads. It also proves one-time raw API tokens and
webhook signing secrets are surfaced only in the action result blocks and do not
appear in the snapshot read-back, while the simulator returns a matched,
successful, signature-verified delivery with an x-oshun-signature header.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/lilith/TenantIntegrationsPanel.tsx apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/e2e/tenant-integrations-ui.spec.ts- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/tenant-integrations-ui.spec.ts src/components/lilith/TenantIntegrationsPanel.tsx src/components/lilith/operator.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright/docs-center
- 15 GiB RAM, 13 GiB available before launches, 29 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before the focused route checks; during Playwright, available memory stayed above 9 GiB, and during docs-center verification it stayed at or above 13 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/tenant-integrations-ui.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-surfaces.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 7 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files were fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
222. 2026-06-29 Operator studio route-DOM coverage#
Closed the page-DOM coverage gap for editorial-review-approval on
/operator/studio. The Lilith operator studio surface now exposes stable,
nonvisual data attributes around the shipped review queue, selected artifact
pane, waveform/transcript, notes, and citation list, without changing the visual
layout or product behavior.
The focused Playwright spec seeds an authenticated shell session and verifies
the actual route render: all seven review queue rows with code/status/title/
byline/selected-state attributes, the current static queue-row boundary, the
selected TR-047 artifact header/chips/waveform/transcript, the
StudioReviewDecisionRow entry point, all review notes, citation statuses, and
the anonymous redirect-before-render guard. The related editorial release-stream
spec was also rerun to keep the existing decision-row approve/request-changes
coverage green after adding the route-level hooks.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/lilith/operator.tsx apps/oshun/web/e2e/operator-studio-surface.spec.ts WALKTHROUGH/operator/operator-studio.md WALKTHROUGH/journeys/editorial-review-approval.md WALKTHROUGH/journeys/coverage.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/operator-studio-surface.spec.ts src/components/lilith/operator.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright/docs-center
- 15 GiB RAM, 13 GiB available before launches, 29 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before the focused route checks; during Playwright, available memory stayed at or above 12 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/operator-studio-surface.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 3 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/editorial-release-streams.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 8 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
223. 2026-06-29 Studio review-approval workflow real-BFF coverage#
Closed the focused route-level coverage gap for
/studio/review-approval-workflows. The Studio approval-gate workspace now has
the same testable pending-submit semantics and quick-action anchors as adjacent
Studio console surfaces: data-aw-form-state, disabled/busy submit state,
stage-name and role-satisfaction cells, and 44px quick-action links.
The focused Playwright spec seeds an admin-scoped browser session and drives the
real approval-workflow BFF routes: catalog GET, default workflow POST/evaluate,
rejected rollup, current-stage pointer, per-stage approval and role verdicts,
malformed JSON zero-POST, live BFF 400 detail, catalog loading/error, non-admin
fail-closed state, pending-submit lockout, and anonymous redirect-before-render.
The walkthrough also now records that /operator/studio and
/studio/review-approval-workflows are distinct surfaces today: the former is
the operator editorial queue, while the latter is a stateless admin-scoped
approval-gate evaluator.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioReviewApprovalWorkflowsWorkspace.tsx apps/oshun/web/src/app/studio/review-approval-workflows/page.tsx apps/oshun/web/e2e/studio-review-approval-workflows.spec.ts WALKTHROUGH/studio/collaboration/studio-review-approval-workflows.md WALKTHROUGH/operator/operator-studio.md WALKTHROUGH/journeys/editorial-review-approval.md WALKTHROUGH/journeys/lilith-studio-tara-scene-publish.md WALKTHROUGH/journeys/coverage.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-review-approval-workflows.spec.ts src/components/studio/StudioReviewApprovalWorkflowsWorkspace.tsx src/app/studio/review-approval-workflows/page.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright/docs-center
- 15 GiB RAM, 13 GiB available before launches, 29 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before focused route checks; during Playwright, available memory stayed at or above 12 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-review-approval-workflows.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioReviewApprovalWorkflowsWorkspace.test.tsx- passed: 3 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
224. 2026-06-29 Studio Hathor lore-validation timeline real-BFF coverage#
Closed the focused route-level coverage gap for
/studio/hathor/lore-validation-timeline. The Hathor timeline validator lane
now has testable catalog evidence, pending-submit semantics, quick-action
anchors, and 44px automated touch checks for the main editable controls and
quick-action links.
The focused Playwright spec seeds an admin-scoped Hathor browser session and
drives the real timeline-validation BFF routes: catalog GET, seeded
TIMELINE_ORDER_VIOLATION, opt-in TIMELINE_GAP_DETECTED, malformed JSON /
empty array / invalid threshold zero-POST branches, live BFF invalid_event 400
detail, catalog loading/error, non-admin fail-closed state, pending-submit
lockout, route-map / quick-action targets, shared axe, and anonymous
redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorLoreValidationTimelineWorkspace.tsx apps/oshun/web/src/app/studio/hathor/lore-validation-timeline/page.tsx apps/oshun/web/e2e/studio-hathor-lore-validation-timeline.spec.ts WALKTHROUGH/studio/domain-bridges/hathor/studio-hathor-lore-validation-timeline.md WALKTHROUGH/matrix/coverage.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-hathor-lore-validation-timeline.spec.ts src/components/studio/StudioHathorLoreValidationTimelineWorkspace.tsx src/app/studio/hathor/lore-validation-timeline/page.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright
- 15 GiB RAM, 13 GiB available before launches, 29 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before focused route checks.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorLoreValidationTimelineWorkspace.test.tsx src/components/__tests__/StudioHathorLoreValidationTimelineWorkspace.integration.test.tsx src/components/__tests__/StudioHathorLoreValidationTimelinePage.test.tsx src/components/__tests__/StudioHathorLoreValidationTimelineRouteMap.test.ts- passed: 4 files passed, 8 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-lore-validation-timeline-route.test.ts- passed: 1 file passed, 7 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-lore-validation-timeline.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 8 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
225. 2026-06-29 Studio Hathor lore-validation causality real-BFF coverage#
Closed the focused route-level coverage gap for
/studio/hathor/lore-validation-causality. The Hathor causality validator lane
now has testable catalog evidence, pending-submit semantics, quick-action
anchors, and 44px automated touch checks for the main editable controls and
quick-action links.
The focused Playwright spec seeds an admin-scoped Hathor browser session and
drives the real causality-validation BFF routes: catalog GET, seeded
CAUSALITY_CYCLE_DETECTED, opt-in CAUSALITY_ORPHAN_EFFECT /
CAUSALITY_DANGLING_CAUSE, malformed JSON / empty array zero-POST branches,
live BFF invalid_event 400 detail, catalog loading/error, non-admin
fail-closed state, pending-submit lockout, route-map / quick-action targets,
shared axe, and anonymous redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorLoreValidationCausalityWorkspace.tsx apps/oshun/web/src/app/studio/hathor/lore-validation-causality/page.tsx apps/oshun/web/e2e/studio-hathor-lore-validation-causality.spec.ts WALKTHROUGH/studio/domain-bridges/hathor/studio-hathor-lore-validation-causality.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-hathor-lore-validation-causality.spec.ts src/components/studio/StudioHathorLoreValidationCausalityWorkspace.tsx src/app/studio/hathor/lore-validation-causality/page.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright
- 15 GiB RAM, 13 GiB available before launches, 29 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before focused route checks.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorLoreValidationCausalityWorkspace.test.tsx src/components/__tests__/StudioHathorLoreValidationCausalityWorkspace.integration.test.tsx src/components/__tests__/StudioHathorLoreValidationCausalityPage.test.tsx src/components/__tests__/StudioHathorLoreValidationCausalityRouteMap.test.ts- passed: 4 files passed, 8 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-lore-validation-causality-route.test.ts- passed: 1 file passed, 7 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-lore-validation-causality.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 8 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
226. 2026-06-29 Studio Hathor lore-validation taxonomy real-BFF coverage#
Closed the focused route-level coverage gap for
/studio/hathor/lore-validation-taxonomy. The Hathor taxonomy validator lane
now has testable catalog evidence, pending-submit semantics, quick-action
anchors, and 44px automated touch checks for the main editable controls and
quick-action links.
The focused Playwright spec seeds an admin-scoped Hathor browser session and
drives the real taxonomy-validation BFF routes: catalog GET, seeded
TAXONOMY_CYCLE_DETECTED, edited TAXONOMY_INVALID_TYPE, clean age → epoch
hierarchy, TAXONOMY_HIERARCHY_VIOLATION warning, malformed JSON / empty array
zero-POST branches, live BFF invalid_era 400 detail, catalog loading/error,
non-admin fail-closed state, pending-submit lockout, route-map / quick-action
targets, shared axe, and anonymous redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorLoreValidationTaxonomyWorkspace.tsx apps/oshun/web/src/app/studio/hathor/lore-validation-taxonomy/page.tsx apps/oshun/web/e2e/studio-hathor-lore-validation-taxonomy.spec.ts WALKTHROUGH/studio/domain-bridges/hathor/studio-hathor-lore-validation-taxonomy.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-hathor-lore-validation-taxonomy.spec.ts src/components/studio/StudioHathorLoreValidationTaxonomyWorkspace.tsx src/app/studio/hathor/lore-validation-taxonomy/page.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright
- 15 GiB RAM, 13 GiB available before launches, 29 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before focused route checks.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorLoreValidationTaxonomyWorkspace.test.tsx src/components/__tests__/StudioHathorLoreValidationTaxonomyWorkspace.integration.test.tsx src/components/__tests__/StudioHathorLoreValidationTaxonomyPage.test.tsx src/components/__tests__/StudioHathorLoreValidationTaxonomyRouteMap.test.ts- passed: 4 files passed, 8 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-lore-validation-taxonomy-route.test.ts- passed: 1 file passed, 7 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-lore-validation-taxonomy.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 9 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
227. 2026-06-29 Studio Hathor lore-validation contradictions real-BFF coverage#
Closed the focused route-level coverage gap for
/studio/hathor/lore-validation-contradictions. The Hathor contradiction
detector lane now has testable catalog evidence, pending-submit semantics,
quick-action anchors, and 44px automated touch checks for the main editable
controls and quick-action links.
The focused Playwright spec seeds an admin-scoped Hathor browser session and
drives the real contradictions BFF routes: catalog GET, seeded
CONTRADICTION_TEMPORAL, edited clean-event payload, malformed JSON / empty
array zero-POST branches, live BFF invalid_event 400 detail, catalog
loading/error, non-admin fail-closed state, pending-submit lockout, route-map /
quick-action targets, shared axe, and anonymous redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorLoreValidationContradictionsWorkspace.tsx apps/oshun/web/src/app/studio/hathor/lore-validation-contradictions/page.tsx apps/oshun/web/e2e/studio-hathor-lore-validation-contradictions.spec.ts WALKTHROUGH/studio/domain-bridges/hathor/studio-hathor-lore-validation-contradictions.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-hathor-lore-validation-contradictions.spec.ts src/components/studio/StudioHathorLoreValidationContradictionsWorkspace.tsx src/app/studio/hathor/lore-validation-contradictions/page.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright
- 15 GiB RAM, 13 GiB available before launches, 29 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before focused route checks.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorLoreValidationContradictionsWorkspace.test.tsx src/components/__tests__/StudioHathorLoreValidationContradictionsWorkspace.integration.test.tsx src/components/__tests__/StudioHathorLoreValidationContradictionsPage.test.tsx src/components/__tests__/StudioHathorLoreValidationContradictionsRouteMap.test.ts- passed: 4 files passed, 6 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-lore-validation-contradictions-route.test.ts- passed: 1 file passed, 6 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-lore-validation-contradictions.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 8 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
228. 2026-06-29 Studio Hathor validation aggregator real-BFF coverage#
Closed the focused route-level coverage gap for /studio/hathor/validation. The
Hathor validation aggregator now has stable route-map and quick-action evidence,
includes the dedicated Contradictions validator affordance, and its embedded
Unified Validation Dashboard workspace exposes catalog and pending submit state
for route-level automation.
The focused Playwright spec seeds an admin-scoped Hathor browser session and drives the real dev BFF endpoints composed by the hub: Unified Validation Dashboard, Lore Validation Timeline, Lore Validation Causality, and Lore Validation Taxonomy. It verifies all embedded catalog GETs, seeded and clean unified-dashboard suite POSTs, seeded embedded Timeline/Causality/Taxonomy POSTs, malformed JSON / non-array / empty dashboard zero-POST branches, dashboard catalog-failure isolation while sibling lanes remain ready, non-admin fail-closed state across every embedded lane, pending-submit lockout, route-map / quick-action targets including Contradictions, shared axe, and anonymous redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioHathorUnifiedValidationDashboardWorkspace.tsx apps/oshun/web/src/components/studio/StudioHathorValidationWorkspace.tsx apps/oshun/web/src/app/studio/hathor/validation/page.tsx apps/oshun/web/src/components/studio/StudioHathorValidationRouteMap.ts apps/oshun/web/src/components/__tests__/StudioHathorValidationRouteMap.test.ts apps/oshun/web/src/components/__tests__/StudioHathorValidationPage.test.tsx apps/oshun/web/e2e/studio-hathor-validation.spec.ts WALKTHROUGH/studio/domain-bridges/hathor/studio-hathor-validation.md WALKTHROUGH/studio/domain-bridges/hathor/studio-hathor-unified-validation-dashboard.md WALKTHROUGH/matrix/coverage.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-hathor-validation.spec.ts src/components/studio/StudioHathorUnifiedValidationDashboardWorkspace.tsx src/components/studio/StudioHathorValidationWorkspace.tsx src/app/studio/hathor/validation/page.tsx src/components/studio/StudioHathorValidationRouteMap.ts src/components/__tests__/StudioHathorValidationRouteMap.test.ts src/components/__tests__/StudioHathorValidationPage.test.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before focused route checks.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorValidationPage.test.tsx src/components/__tests__/StudioHathorValidationWorkspace.test.tsx src/components/__tests__/StudioHathorValidationWorkspace.integration.test.tsx src/components/__tests__/StudioHathorValidationRouteMap.test.ts src/components/__tests__/StudioHathorUnifiedValidationDashboardWorkspace.test.tsx src/components/__tests__/StudioHathorUnifiedValidationDashboardWorkspace.integration.test.tsx src/components/__tests__/StudioHathorUnifiedValidationDashboardPage.test.tsx- passed: 7 files passed, 13 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-unified-validation-dashboard-route.test.ts src/__tests__/admin-hathor-lore-validation-timeline-route.test.ts src/__tests__/admin-hathor-lore-validation-causality-route.test.ts src/__tests__/admin-hathor-lore-validation-taxonomy-route.test.ts- passed: 4 files passed, 27 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-validation.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 7 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
229. 2026-06-29 Studio Hathor unified validation dashboard real-BFF coverage#
Closed the focused standalone route-level coverage gap for
/studio/hathor/unified-validation-dashboard. The route now exposes stable
route-map count evidence, quick-action anchors, and 44px quick-action affordance
coverage while preserving the existing operational Studio layout.
The focused Playwright spec seeds an admin-scoped Hathor browser session and
drives the real Unified Validation Dashboard BFF route. It verifies direct admin
navigation, catalog GET bearer forwarding, seeded inconsistent validation,
edited clean validation, malformed JSON / non-array / empty zero-POST branches,
live BFF invalid_event detail, catalog loading/error state, non-admin
fail-closed state, pending-submit lockout, route-map and quick-action targets,
shared axe, 44px editable-control and quick-action checks, and anonymous
redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/hathor/unified-validation-dashboard/page.tsx apps/oshun/web/src/components/__tests__/StudioHathorUnifiedValidationDashboardPage.test.tsx apps/oshun/web/e2e/studio-hathor-unified-validation-dashboard.spec.ts WALKTHROUGH/studio/domain-bridges/hathor/studio-hathor-unified-validation-dashboard.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-hathor-unified-validation-dashboard.spec.ts src/app/studio/hathor/unified-validation-dashboard/page.tsx src/components/__tests__/StudioHathorUnifiedValidationDashboardPage.test.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright/docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before focused route checks; during Playwright, available memory stayed above 9 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorUnifiedValidationDashboardPage.test.tsx src/components/__tests__/StudioHathorUnifiedValidationDashboardWorkspace.test.tsx src/components/__tests__/StudioHathorUnifiedValidationDashboardWorkspace.integration.test.tsx src/components/__tests__/StudioHathorUnifiedValidationDashboardRouteMap.test.ts- passed: 4 files passed, 8 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-unified-validation-dashboard-route.test.ts- passed: 1 file passed, 6 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-unified-validation-dashboard.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 8 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
230. 2026-06-29 Studio Hathor workbench worlds real-BFF coverage#
Closed the focused standalone route-level coverage gap for
/studio/hathor/workbench-worlds. The route now exposes stable catalog,
route-map count, quick-action, submit-state, and 44px affordance evidence while
preserving the existing Studio admin layout.
The focused Playwright spec seeds admin and non-admin Hathor browser sessions and drives the real Workbench Worlds BFF route. It verifies direct admin navigation, catalog GET bearer forwarding, seeded temperate-forest analysis, edited volcanic-wasteland analysis, malformed JSON zero-POST rejection, live BFF terrain-validation detail, catalog loading/error state, non-admin fail-closed state, pending-submit lockout, route-map and quick-action targets, shared axe, 44px editor/submit/quick-action checks, and anonymous redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/hathor/workbench-worlds/page.tsx apps/oshun/web/src/components/studio/StudioHathorWorkbenchWorldsWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioHathorWorkbenchWorldsPage.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorWorkbenchWorldsWorkspace.test.tsx apps/oshun/web/e2e/studio-hathor-workbench-worlds.spec.ts WALKTHROUGH/studio/domain-bridges/hathor/studio-hathor-workbench-worlds.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-hathor-workbench-worlds.spec.ts src/app/studio/hathor/workbench-worlds/page.tsx src/components/studio/StudioHathorWorkbenchWorldsWorkspace.tsx src/components/__tests__/StudioHathorWorkbenchWorldsPage.test.tsx src/components/__tests__/StudioHathorWorkbenchWorldsWorkspace.test.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright/docs-center
- 15 GiB RAM, 13 GiB available before focused route checks, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before focused route checks; during Playwright, available memory stayed above 9 GiB.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorWorkbenchWorldsPage.test.tsx src/components/__tests__/StudioHathorWorkbenchWorldsWorkspace.test.tsx src/components/__tests__/StudioHathorWorkbenchWorldsWorkspace.integration.test.tsx src/components/__tests__/StudioHathorWorkbenchWorldsRouteMap.test.ts- passed: 4 files passed, 8 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-workbench-worlds-route.test.ts- passed: 1 file passed, 5 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-workbench-worlds.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 8 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
231. 2026-06-29 Studio Hathor economy simulation real-BFF coverage#
Closed the focused standalone route-level coverage gap for
/studio/hathor/economy-simulation. The route now exposes stable catalog,
route-map count, quick-action, submit-state, and 44px affordance evidence while
preserving the existing Studio admin layout.
The focused Playwright spec seeds admin and non-admin Hathor browser sessions and drives the real Economy Simulation BFF route. It verifies direct admin navigation, catalog GET bearer forwarding, seeded luxury/rare elastic pricing, edited land/common scarce pricing, zero-ratio maximum-scarcity pricing, client-only numeric rejection with no price POST, live BFF unknown-category validation detail, catalog loading/error state, non-admin fail-closed state, pending-submit lockout, route-map and quick-action targets, shared axe, 44px control/quick-action checks, and anonymous redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/hathor/economy-simulation/page.tsx apps/oshun/web/src/components/studio/StudioHathorEconomySimulationWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioHathorEconomySimulationPage.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorEconomySimulationWorkspace.test.tsx apps/oshun/web/e2e/studio-hathor-economy-simulation.spec.ts WALKTHROUGH/studio/domain-bridges/hathor/studio-hathor-economy-simulation.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-hathor-economy-simulation.spec.ts src/app/studio/hathor/economy-simulation/page.tsx src/components/studio/StudioHathorEconomySimulationWorkspace.tsx src/components/__tests__/StudioHathorEconomySimulationPage.test.tsx src/components/__tests__/StudioHathorEconomySimulationWorkspace.test.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright/docs-center
- 15 GiB RAM, at least 12 GiB available before focused route checks, 30 GiB swap free, 51 GiB disk free. No competing build/test/docs jobs were active before focused route checks.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorEconomySimulationPage.test.tsx src/components/__tests__/StudioHathorEconomySimulationWorkspace.test.tsx src/components/__tests__/StudioHathorEconomySimulationWorkspace.integration.test.tsx src/components/__tests__/StudioHathorEconomySimulationRouteMap.test.ts- passed: 4 files passed, 8 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-economy-simulation-route.test.ts- passed: 1 file passed, 7 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-economy-simulation.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 9 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
232. 2026-06-29 Studio Hathor workbench timeline real-BFF coverage#
Closed the focused standalone route-level coverage gap for
/studio/hathor/workbench-timeline. The route now exposes stable catalog,
route-map count, quick-action, submit-state, and 44px affordance evidence while
preserving the existing Studio admin layout.
The focused Playwright spec seeds admin and non-admin Hathor browser sessions and drives the real Workbench Timeline BFF route. It verifies direct admin navigation, catalog GET bearer forwarding, seeded blocking story-order plus causal-dependency verdict, edited clean export-ready packet, warning-only uncovered world-state tag, client-only malformed/primitive JSON rejection with no validate POST, live BFF empty-scenes validation detail, catalog loading/error state, non-admin fail-closed state, pending-submit lockout, route-map and quick-action targets, shared axe, 44px editor/submit/quick-action checks, and anonymous redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/hathor/workbench-timeline/page.tsx apps/oshun/web/src/components/studio/StudioHathorWorkbenchTimelineWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioHathorWorkbenchTimelinePage.test.tsx apps/oshun/web/src/components/__tests__/StudioHathorWorkbenchTimelineWorkspace.test.tsx apps/oshun/web/e2e/studio-hathor-workbench-timeline.spec.ts WALKTHROUGH/studio/domain-bridges/hathor/studio-hathor-workbench-timeline.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-hathor-workbench-timeline.spec.ts src/app/studio/hathor/workbench-timeline/page.tsx src/components/studio/StudioHathorWorkbenchTimelineWorkspace.tsx src/components/__tests__/StudioHathorWorkbenchTimelinePage.test.tsx src/components/__tests__/StudioHathorWorkbenchTimelineWorkspace.test.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright/docs-center
- 15 GiB RAM, at least 8.9 GiB available during focused route checks, 30 GiB swap free, 50 GiB disk free. No competing build/test/docs jobs were active before focused route checks.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioHathorWorkbenchTimelinePage.test.tsx src/components/__tests__/StudioHathorWorkbenchTimelineWorkspace.test.tsx src/components/__tests__/StudioHathorWorkbenchTimelineWorkspace.integration.test.tsx src/components/__tests__/StudioHathorWorkbenchTimelineRouteMap.test.ts- passed: 4 files passed, 8 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-hathor-workbench-timeline-route.test.ts- passed: 1 file passed, 7 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-hathor-workbench-timeline.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 9 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
233. 2026-06-30 Studio data retention lifecycle controls real-BFF coverage#
Closed the focused standalone route-level coverage gap for
/studio/data-retention-lifecycle-controls. The route now exposes stable
quick-action count/id selectors and the live classify form exposes idle/pending
state, disabled/busy submit semantics, and 44px editable-control evidence while
preserving the existing Studio governance layout.
The focused Playwright spec seeds admin and non-admin Studio browser sessions and drives the real Studio Data Retention BFF route. It verifies direct admin navigation, catalog GET bearer forwarding, seeded retain/archive/purge/hold classification, edited unknown-class safe-retain issue, legal-hold precedence, client-only malformed JSON rejection with no evaluate POST, live BFF invalid-payload details, network-unreachable classify failure, catalog loading/error state, non-admin fail-closed state, pending-submit lockout, flat quick-action targets, shared axe, 44px editor/submit/quick-action checks, and anonymous redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/data-retention-lifecycle-controls/page.tsx apps/oshun/web/src/components/studio/StudioDataRetentionLifecycleControlsWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioDataRetentionLifecycleControlsPage.test.tsx apps/oshun/web/src/components/__tests__/StudioDataRetentionLifecycleControlsWorkspace.test.tsx apps/oshun/web/src/components/__tests__/StudioDataRetentionLifecycleControlsWorkspace.validation.test.tsx apps/oshun/web/e2e/studio-data-retention-lifecycle-controls.spec.ts WALKTHROUGH/studio/governance/studio-data-retention-lifecycle-controls.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-data-retention-lifecycle-controls.spec.ts src/app/studio/data-retention-lifecycle-controls/page.tsx src/components/studio/StudioDataRetentionLifecycleControlsWorkspace.tsx src/components/__tests__/StudioDataRetentionLifecycleControlsPage.test.tsx src/components/__tests__/StudioDataRetentionLifecycleControlsWorkspace.test.tsx src/components/__tests__/StudioDataRetentionLifecycleControlsWorkspace.validation.test.tsx --max-warnings=0- passed
- Resource gates before Playwright/docs-center
- 15 GiB RAM, at least 9.0 GiB available during focused route checks, 30 GiB swap free, 50 GiB disk free. No competing build/test/docs jobs were active before focused route checks.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioDataRetentionLifecycleControlsPage.test.tsx src/components/__tests__/StudioDataRetentionLifecycleControlsWorkspace.test.tsx src/components/__tests__/StudioDataRetentionLifecycleControlsWorkspace.validation.test.tsx- passed: 3 files passed, 7 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-studio-data-retention-route.test.ts- passed: 1 file passed, 5 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-data-retention-lifecycle-controls.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 10 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
234. 2026-06-30 Studio Isis video production workflows real-BFF coverage#
Closed the focused standalone route-level coverage gap for
/studio/isis/video-production-workflows. The route now exposes stable
route-map count/path selectors, quick-action count/id selectors, and the live
workflow validation form exposes idle/pending state, disabled/busy submit
semantics, and 44px editable-control evidence while preserving the existing
Studio Isis lane-console layout.
The focused Playwright spec uses the established localhost-only Studio Isis lane
E2E bypass for the workspace route while separately asserting the production
direct-route hard-block. It seeds admin and non-admin Studio browser sessions
and drives the real Isis Video Production Workflows BFF route. It verifies the
production boundary, E2E lane navigation, catalog GET bearer forwarding, default
valid workflow header, edited missing-section and bad-schema_version schema
errors, client-only malformed JSON rejection with no validate POST, live BFF
invalid_workflow details, network-unreachable validate failure, catalog
loading/error state, non-admin fail-closed state, pending-submit lockout,
route-map and quick-action targets, shared axe, 44px editor/submit/quick-action
checks, and anonymous redirect-before-render.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/isis/video-production-workflows/page.tsx apps/oshun/web/src/components/studio/StudioIsisVideoProductionWorkflowsWorkspace.tsx apps/oshun/web/src/components/__tests__/StudioIsisVideoProductionWorkflowsPage.test.tsx apps/oshun/web/src/components/__tests__/StudioIsisVideoProductionWorkflowsWorkspace.test.tsx apps/oshun/web/e2e/studio-isis-video-production-workflows.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-video-production-workflows.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-isis-video-production-workflows.spec.ts src/app/studio/isis/video-production-workflows/page.tsx src/components/studio/StudioIsisVideoProductionWorkflowsWorkspace.tsx src/components/__tests__/StudioIsisVideoProductionWorkflowsPage.test.tsx src/components/__tests__/StudioIsisVideoProductionWorkflowsWorkspace.test.tsx --max-warnings=0- passed
- Resource gates before typecheck/Playwright/docs-center
- 15 GiB RAM, at least 13 GiB available before focused route checks, 30 GiB swap free, 50 GiB disk free. No competing build/test/docs jobs were active before focused route checks.
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisVideoProductionWorkflowsPage.test.tsx src/components/__tests__/StudioIsisVideoProductionWorkflowsWorkspace.test.tsx src/components/__tests__/StudioIsisVideoProductionWorkflowsRouteMap.test.ts- passed: 3 files passed, 6 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-isis-video-production-workflows-route.test.ts- passed: 1 file passed, 6 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-isis-video-production-workflows.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 10 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
235. 2026-06-30 Studio Concordia workbench real-BFF coverage#
Closed the focused route-level coverage gap for /studio/concordia-workbench.
The root page no longer emits unsupported dynamic
<Link href="/cases/[caseId]"> targets in the App Router; quick actions now
resolve the placeholder to the seeded default Concordia case while preserving
the documented placeholder path in a data attribute. The live Agreement Frontier
lane exposes stable loading/ready/error/unauthorized, form-state, submit-state,
disabled, busy, and 44px submit affordances, and the workspace now exposes
role/surface/case/route-map/quick-action counts and entry selectors for
deterministic route-level automation.
The focused Playwright spec forwards the browser's
/v1/admin/studio/agreement-frontier calls to the real local BFF with explicit
admin and non-admin dev bearers. It verifies admin catalog load, default Pareto
compute, edited duplicate-option and missing-utility BFF invalid_payload
details, client-only malformed JSON rejection with no compute POST,
network-unreachable compute failure, catalog loading and 503 error states,
non-admin fail-closed state, pending-submit lockout, route-map and quick-action
targets, all 11 seeded surface renderers, viewer privacy projection, case
switching, audit recording, direct /cases/:caseId/frontier subroute selection,
anonymous redirect-before-render, and the existing shared-axe Concordia
accessibility smoke. The case bundle remains in-memory until the production
Concordia adapter lands, so adapter-offline and future production adapter
behavior remain open.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioConcordiaWorkbenchWorkspace.tsx apps/oshun/web/src/app/studio/concordia-workbench/page.tsx apps/oshun/web/src/components/__tests__/StudioConcordiaWorkbenchWorkspace.live.test.tsx apps/oshun/web/src/components/__tests__/StudioConcordiaWorkbenchPage.test.tsx apps/oshun/web/e2e/studio-concordia-workbench.spec.ts WALKTHROUGH/studio/collaboration/concordia-workbench/studio-concordia-workbench.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/studio-concordia-workbench.spec.ts src/app/studio/concordia-workbench/page.tsx src/components/studio/StudioConcordiaWorkbenchWorkspace.tsx src/components/__tests__/StudioConcordiaWorkbenchPage.test.tsx src/components/__tests__/StudioConcordiaWorkbenchWorkspace.live.test.tsx --max-warnings=0- passed
- Resource gates before Playwright/docs-center
- 15 GiB RAM, at least 9.2 GiB available during focused route checks, 30 GiB swap free, 50 GiB disk free. No competing build/test/docs jobs were active before focused route checks; stale dev-server PIDs from an interrupted failing run were killed before the passing reruns.
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioConcordiaWorkbenchPage.test.tsx src/components/__tests__/StudioConcordiaWorkbenchWorkspace.live.test.tsx- passed: 2 files passed, 5 tests passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-studio-agreement-frontier-route.test.ts- passed: 1 file passed, 4 tests passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-concordia-workbench.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-concordia-workbench-accessibility.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 1 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
236. 2026-06-30 Profile notifications real-projection route coverage#
Closed the focused account notifications gap by moving
/v1/profile/notifications out of the static guarded fixture set and into an
authenticated account-scoped projection. The BFF now reads the consumer profile,
notification preferences, and Telegram link state, syncs the profile preference
store before responding, and fails unauthenticated reads closed with 401. The
profile notifications page exposes stable populated/empty/count/generated-at
state attributes and explicit fail-closed copy for unavailable channels or
categories instead of inventing delivery preferences.
The focused Playwright spec now seeds a real browser auth/session cookie, reads
the live BFF summary before asserting the page surface, flips notification
preferences through PATCH /v1/preferences, verifies the read-only channel
summary reflects the real preference state, and covers an invalid-bearer
fail-closed empty render. The existing footer, anonymous redirect, mobile,
standalone PWA, and real service-worker offline replay coverage remain intact.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/notifications-preferences.ts apps/oshun/bff/src/routes/domain-stubs.ts apps/oshun/bff/src/__tests__/notifications-preferences-route.test.ts apps/oshun/bff/src/__tests__/domain-stubs-route.test.ts apps/oshun/web/src/app/profile/notifications/page.tsx apps/oshun/web/e2e/profile-notifications-index.spec.ts WALKTHROUGH/customer/09-account/profile-notifications.md WALKTHROUGH/matrix/coverage.md WALKTHROUGH/journeys/messages-quiet-hours-and-channel-binding.md WALKTHROUGH/journeys/coverage.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/profile-notifications-index.spec.ts src/app/profile/notifications/page.tsx --max-warnings=0- passed
pnpm --dir apps/oshun/bff exec eslint --no-warn-ignored src/routes/notifications-preferences.ts src/routes/domain-stubs.ts src/__tests__/notifications-preferences-route.test.ts src/__tests__/domain-stubs-route.test.ts --max-warnings=0- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, at least 8.7 GiB available during the focused Playwright run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the focused browser rerun.
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/notifications-preferences-route.test.ts src/__tests__/domain-stubs-route.test.ts- passed: 2 files passed, 100 tests passed
pnpm --dir apps/oshun/bff typecheck- passed
pnpm --dir apps/oshun/web typecheck- passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-notifications-index.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 9 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
239. 2026-06-30 Profile safety crisis-frame timeline coverage#
Closed the focused /profile/safety timeline gap by rendering the full live
GET /v1/safety/crisis-frames/mine frames[] projection instead of only the
first active frame. The safety record now shows an expandable crisis-frame
timeline covering the active cross-surface markers for assistant, Iris, Lilith
video, Psyche, and Tara. Each row exposes stable selectors for the surface,
current marker, toggle, and expanded metadata, while the existing stillness,
re-entry, check-in, resource, report-receipt, and offline replay behavior stays
intact.
The focused browser spec now activates a real crisis frame through the operator BFF route, reads the member-owned BFF projection back, asserts all five durable surface markers, and verifies the assistant marker can collapse and re-open to show frame ID, memory-write suspension, and halted synthesis metadata. The axe gate caught and the implementation corrected a low-contrast timeline state pill before the passing rerun.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec prettier --write apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.tsx apps/oshun/web/src/app/profile/safety/ProfileSafetyJourney.test.tsx apps/oshun/web/src/app/profile/safety/safety.module.css apps/oshun/web/e2e/profile-safety-crisis-recovery.spec.ts WALKTHROUGH/customer/09-account/profile-safety.md WALKTHROUGH/journeys/crisis-aware-tone-policy.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/matrix/coverage.md- passed
pnpm --dir apps/oshun/web exec vitest run src/app/profile/safety/ProfileSafetyJourney.test.tsx- passed: 1 file passed, 9 tests passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/profile/safety/ProfileSafetyJourney.tsx src/app/profile/safety/ProfileSafetyJourney.test.tsx e2e/profile-safety-crisis-recovery.spec.ts --max-warnings=0- passed
pnpm nx run @oshun/web:typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, at least 12 GiB available during focused Playwright, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the passing focused browser rerun.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/profile-safety-crisis-recovery.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 6 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
240. 2026-06-30 Veritas story trajectory data-derived coverage#
Closed the focused Veritas evidence-trail gap where /veritas/story rendered a
hardcoded trajectory SVG unrelated to the story timeline payload. The
StoryTimelineData.entries[] contract now optionally carries per-entry
confidence and trajectory labels, the polished VeritasTimeline chart maps the
entries in chronological order into its SVG path and markers, and each marker
exposes stable point/kind/confidence/current data attributes. The chart remains
a small decorative editorial aid, but its path, current today · 0.92 marker,
and retracted-entry labels are now tied to the same timeline data rendered in
the rail.
The focused browser spec now asserts the /veritas/story trajectory point
count, data-derived path endpoints, current 04 May marker confidence, and 09
March retracted marker/label inside the existing real web/BFF Veritas evidence
trail run. The journey remains partial because the polished topic follow rows
are still static status rows and the retraction trigger is still a server-side
next-visit promise.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/lilith/veritas.tsx apps/oshun/web/src/lib/lilith-data/types.ts apps/oshun/web/src/lib/lilith-data/veritas-depth.ts apps/oshun/web/e2e/veritas-evidence-trail.spec.ts WALKTHROUGH/customer/05-veritas/veritas-story.md WALKTHROUGH/journeys/veritas-evidence-trail.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/lilith/veritas.tsx src/lib/lilith-data/types.ts src/lib/lilith-data/veritas-depth.ts e2e/veritas-evidence-trail.spec.ts --max-warnings=0- passed
pnpm nx run @oshun/web:typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, at least 12 GiB available during focused Playwright, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the passing focused browser run.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/veritas-evidence-trail.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 18 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
241. 2026-06-30 Veritas retraction acknowledgement persistence#
Closed the focused Veritas retraction-cascade gap where /veritas/retraction
rendered "Read once · don't keep" as an honest disabled placeholder. The BFF now
exposes POST /v1/veritas/retractions/personal-letter/acknowledgement, stores a
per-user acknowledgement idempotently, and hides the same reader's
GET /v1/veritas/retractions/personal-letter response after acknowledgement.
The web surface keeps the private letter server-rendered and delegates only the
action row to a small client component that posts through the same-origin
customer BFF proxy, shows saving/success/error states, and preserves the
existing "Re-open the piece" story link.
The focused browser spec now proves the full customer-facing post-condition: a reader with a pending notice sees the active acknowledgement button, the POST succeeds through the web API proxy, the success state renders, and reloading the same URL returns the private 404 instead of the letter. The BFF route spec also covers direct acknowledgement, idempotent second POST, read-hidden post-condition, and Veritas scope enforcement. The journey remains partial because customer-shell subscriber/audit fan-out, real BFF-backed notebook retraction data, confidence-band retraction state, and kept-offering re-render surfaces are still not complete.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/veritas.ts apps/oshun/bff/src/__tests__/veritas-route.test.ts apps/oshun/web/src/app/api/veritas/retractions/personal-letter/acknowledgement/route.ts apps/oshun/web/src/components/lilith/VeritasRetractionActions.tsx apps/oshun/web/src/components/lilith/veritas.tsx apps/oshun/web/e2e/veritas-retraction-cascade.spec.ts WALKTHROUGH/customer/05-veritas/veritas-retraction.md WALKTHROUGH/journeys/veritas-retraction-cascade-customer-view.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/components/lilith/VeritasRetractionActions.tsx src/components/lilith/veritas.tsx src/app/api/veritas/retractions/personal-letter/acknowledgement/route.ts e2e/veritas-retraction-cascade.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/bff exec eslint --no-warn-ignored src/routes/veritas.ts src/__tests__/veritas-route.test.ts --max-warnings=0- passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/veritas-route.test.ts- passed: 1 file passed, 14 tests passed
pnpm nx run @oshun/web:typecheck- passed
pnpm --dir apps/oshun/bff typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, at least 7.6 GiB available during focused Playwright, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the passing focused browser run.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/veritas-retraction-cascade.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 13 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
242. 2026-06-30 LMS connector managed CRUD coverage#
Closed the remaining LMS connector in-app CRUD gap. The shared LMS framework can
now unregister connectors and clear scoped LTI Advantage token cache entries.
The BFF exposes an admin-managed connector store that validates descriptors
before registration, marks list summaries as env or managed, lets managed
descriptors override env descriptors with the same tenant/connector id, restores
the env descriptor when that override is deleted, and tombstones env-only
descriptors for the current runtime when an operator disables them.
The operator /operator/lms page now renders source badges on roster cards and
a managed connector panel that saves and deletes descriptors through the real
admin BFF, refreshes the server roster after successful mutations, and surfaces
fail-closed validation/scope/not-found/unavailable copy. The pure-BFF E2E covers
managed create/delete, env override, env restore, and tombstone-driven LTI
login 404. The browser E2E drives the new CRUD panel through a live BFF bridge.
The walkthrough keeps the remaining product hardening explicit: managed storage
is in-memory for local dev, while durable persistence, audit events, and
external LMS registration ownership still need a production backing design.
Verification:
pnpm exec prettier --write libs/shared/inbound-integrations/src/lms.ts apps/oshun/bff/src/tenant-console/lms-route.ts apps/oshun/bff/src/tenant-console/lms-admin-route.test.ts apps/oshun/web/src/components/lilith/LmsConnectorCrudPanel.tsx apps/oshun/web/src/app/operator/lms/page.tsx apps/oshun/web/src/app/operator/lms/__tests__/page.test.tsx apps/oshun/web/e2e/lms-connectors.spec.ts apps/oshun/web/e2e/operator-lms.spec.ts WALKTHROUGH/journeys/lms-connectors-operator.md WALKTHROUGH/operator/operator-lms.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec prettier --write libs/shared/inbound-integrations/src/lms.spec.ts apps/oshun/web/e2e/lms-connectors.spec.ts WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored libs/shared/inbound-integrations/src/lms.ts libs/shared/inbound-integrations/src/lms.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/bff exec eslint --no-warn-ignored src/tenant-console/lms-route.ts src/tenant-console/lms-admin-route.test.ts --max-warnings=0- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/operator/lms/page.tsx src/app/operator/lms/__tests__/page.test.tsx src/components/lilith/LmsConnectorCrudPanel.tsx e2e/lms-connectors.spec.ts e2e/operator-lms.spec.ts --max-warnings=0- passed
pnpm --dir libs/shared/inbound-integrations exec vitest run src/lms.spec.ts- passed: 1 file passed, 7 tests passed
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/tenant-console/lms-admin-route.test.ts- passed: 1 file passed, 17 tests passed
pnpm --dir apps/oshun/web exec vitest run src/app/operator/lms/__tests__/page.test.tsx- passed: 1 file passed, 4 tests passed
pnpm nx run @oshun/inbound-integrations:typecheck- passed
pnpm --dir apps/oshun/bff typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, at least 7.8 GiB available during the final focused Playwright run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active before the passing focused browser run.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/lms-connectors.spec.ts e2e/operator-lms.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 15 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
243. 2026-06-30 Citation drift terminal decision coverage#
Closed the citation-drift journey's local UI write-path gap for terminal
operator decisions. The BFF now exposes
POST /v1/admin/citation-drift/:incidentId/resolutions and matching GET
readback backed by a durable snapshot store. Each recheck, re-render, or retract
decision validates the action-specific rationale/target fields, records a
drift.* admin audit event, and returns a receipt with the audit event id.
The /operator/admin/isis/provenance selected-bundle inspector now renders a
small terminal-action panel without converting the server component to a client
component. It disables all actions when the ledger verification is broken,
blocks short rationales client-side, posts all three terminal decisions to the
real BFF, and preserves the BFF receipt on screen. The browser journey now also
reads the per-operator resolution list back and queries
/v1/admin/audit-log/events for the emitted drift.recheck_immaterial,
drift.re_render, and drift.retract rows. The journey remains partial because
background Sophia source classification, actual Isis generation append,
customer-facing retraction cascade, and full INC lifecycle resolution are still
not driven.
Verification:
psql --version- passed:
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
- passed:
pnpm exec prettier --write apps/oshun/bff/src/admin/citation-drift-resolution-store.ts apps/oshun/bff/src/admin/citation-drift-resolution-store.test.ts apps/oshun/bff/src/routes/admin-citation-drift-resolution.ts apps/oshun/bff/src/__tests__/admin-citation-drift-resolution-route.test.ts apps/oshun/bff/src/app.ts apps/oshun/bff/src/server.ts apps/oshun/web/src/components/admin/CitationDriftResolutionActions.tsx apps/oshun/web/src/components/admin/__tests__/CitationDriftResolutionActions.test.tsx apps/oshun/web/src/components/admin/IsisProvenanceInspector.tsx apps/oshun/web/e2e/citation-drift-resolution.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/admin/citation-drift-resolution-store.ts apps/oshun/bff/src/admin/citation-drift-resolution-store.test.ts apps/oshun/bff/src/routes/admin-citation-drift-resolution.ts apps/oshun/bff/src/__tests__/admin-citation-drift-resolution-route.test.ts apps/oshun/bff/src/app.ts apps/oshun/bff/src/server.ts apps/oshun/web/src/components/admin/CitationDriftResolutionActions.tsx apps/oshun/web/src/components/admin/__tests__/CitationDriftResolutionActions.test.tsx apps/oshun/web/src/components/admin/IsisProvenanceInspector.tsx apps/oshun/web/e2e/citation-drift-resolution.spec.ts --max-warnings=0- passed
pnpm --dir apps/oshun/bff exec vitest run src/admin/citation-drift-resolution-store.test.ts src/__tests__/admin-citation-drift-resolution-route.test.ts- passed: 2 files, 7 tests
pnpm --dir apps/oshun/web exec vitest run src/components/admin/__tests__/CitationDriftResolutionActions.test.tsx src/components/admin/__tests__/IsisProvenanceInspector.test.tsx- passed: 2 files, 9 tests
pnpm nx run @oshun/bff:typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, 13 GiB available before the passing browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the focused browser run.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/citation-drift-resolution.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
244. 2026-07-01 Citation drift source classification coverage#
Closed the citation-drift journey's per-source classification write-path gap.
The admin BFF now exposes
POST /v1/admin/citation-drift/:incidentId/source-classifications plus matching
GET read-back, backed by a durable snapshot store. Each classification records
the source id/label/change/quality band, validates the operator rationale floor,
emits drift.source_classified, and returns the audit receipt id.
The /operator/admin/isis/provenance selected-bundle inspector now renders a
source-classification panel before terminal recheck/re-render/retract controls.
It reuses the three drift sources from the operator inbox fixture, disables
classification while the ledger verification is broken or no bundle is selected,
blocks short rationales, posts source decisions to the real BFF, and shows
per-source receipts. The browser journey now classifies all three drift sources
and verifies both the BFF read-back and /v1/admin/audit-log/events rows for
drift.source_classified.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/admin/citation-drift-source-classification-store.ts apps/oshun/bff/src/admin/citation-drift-source-classification-store.test.ts apps/oshun/bff/src/routes/admin-citation-drift-resolution.ts apps/oshun/bff/src/__tests__/admin-citation-drift-resolution-route.test.ts apps/oshun/bff/src/server.ts apps/oshun/web/src/components/admin/CitationDriftSourceClassifier.tsx apps/oshun/web/src/components/admin/__tests__/CitationDriftSourceClassifier.test.tsx apps/oshun/web/src/components/admin/IsisProvenanceInspector.tsx apps/oshun/web/e2e/citation-drift-resolution.spec.ts WALKTHROUGH/journeys/citation-drift-resolution.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm --dir apps/oshun/bff exec vitest run src/admin/citation-drift-source-classification-store.test.ts src/admin/citation-drift-resolution-store.test.ts src/__tests__/admin-citation-drift-resolution-route.test.ts- passed: 3 files, 12 tests
pnpm --dir apps/oshun/web exec vitest run src/components/admin/__tests__/CitationDriftSourceClassifier.test.tsx src/components/admin/__tests__/CitationDriftResolutionActions.test.tsx src/components/admin/__tests__/IsisProvenanceInspector.test.tsx- passed: 3 files, 12 tests
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/admin/citation-drift-source-classification-store.ts apps/oshun/bff/src/admin/citation-drift-source-classification-store.test.ts apps/oshun/bff/src/routes/admin-citation-drift-resolution.ts apps/oshun/bff/src/__tests__/admin-citation-drift-resolution-route.test.ts apps/oshun/bff/src/server.ts apps/oshun/web/src/components/admin/CitationDriftSourceClassifier.tsx apps/oshun/web/src/components/admin/__tests__/CitationDriftSourceClassifier.test.tsx apps/oshun/web/src/components/admin/IsisProvenanceInspector.tsx apps/oshun/web/e2e/citation-drift-resolution.spec.ts --max-warnings=0- passed
pnpm nx run @oshun/bff:typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, 13 GiB available before the passing browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active; memory stayed above the stop threshold during the focused browser run.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/citation-drift-resolution.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 12 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
245. 2026-06-30 Citation drift incident lifecycle coverage#
Closed the citation-drift journey's shared-incident resolution gap for the
chosen terminal decision path. The citation-drift terminal-resolution BFF route
now resolves the matching shared operator incident through the real
operatorIncidentStore before returning the drift receipt. It maps
recheck_immaterial to no-violation, maps re-render/retract to actioned,
rejects a second terminal decision once the incident is already resolved, and
emits a linked incident.resolved admin-audit event whose payload names the
drift resolution id, drift event type, bundle id, and drift audit event id.
The browser journey now resets the real operator-incident harness before each
test, records all terminal modes without leaking resolved state across cases,
and then drives the granular lifecycle path in one browser flow: classify all
three drift sources, choose the retract decision, read INC-2041 back from the
real operator-incident BFF as resolved, assert the incident history begins
with the seeded created entry and ends with the operator resolved entry, and
query /v1/admin/audit-log/events for the linked incident.resolved row. The
journey remains partial because the actual Isis generation append/publication
gates, customer retraction cascade/cache purge, and explicit incident.created
admin-audit emission are still not implemented.
Verification:
pnpm exec prettier --write apps/oshun/bff/src/routes/admin-citation-drift-resolution.ts apps/oshun/bff/src/__tests__/admin-citation-drift-resolution-route.test.ts apps/oshun/web/e2e/citation-drift-resolution.spec.ts WALKTHROUGH/journeys/citation-drift-resolution.md WALKTHROUGH/journeys/coverage.md WALKTHROUGH/results/v1-completeness-audit-2026-06-22.md- passed
pnpm --dir apps/oshun/bff exec vitest run src/admin/citation-drift-source-classification-store.test.ts src/admin/citation-drift-resolution-store.test.ts src/admin/operator-incident-store.test.ts src/__tests__/admin-citation-drift-resolution-route.test.ts src/__tests__/admin-operator-incidents-route.test.ts- passed: 5 files, 48 tests
pnpm --dir apps/oshun/web exec vitest run src/components/admin/__tests__/CitationDriftSourceClassifier.test.tsx src/components/admin/__tests__/CitationDriftResolutionActions.test.tsx src/components/admin/__tests__/IsisProvenanceInspector.test.tsx- passed: 3 files, 12 tests
pnpm exec eslint --no-warn-ignored apps/oshun/bff/src/routes/admin-citation-drift-resolution.ts apps/oshun/bff/src/__tests__/admin-citation-drift-resolution-route.test.ts apps/oshun/web/e2e/citation-drift-resolution.spec.ts --max-warnings=0- passed
pnpm nx run @oshun/bff:typecheck- passed
pnpm nx run @oshun/web:typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, 13 GiB available before the passing browser run, 30 GiB swap free, and 50 GiB disk free. No competing build/test/docs jobs were active.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/citation-drift-resolution.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 12 passed
pnpm docs:center- passed: rendered 2976 files.
pnpm docs:center:check- passed: all 2976 generated docs-center files are fresh.
pnpm docs:center:verify- passed: 0 structural broken links and 0 dead source paths.
pnpm docs:center:test- passed: 89 passed, 5 skipped.
246. 2026-07-03 Events agenda calendar feed coverage#
Closed the /events and /nyx/events coverage gap where both walkthroughs
still cited the older runtime sweep and the browser calendar links pointed at
/nyx/events.ics, a path with no Next route and no rewrite. The shared
EventList now uses the same-origin BFF endpoint /v1/nyx/events.ics for all
card/footer calendar actions, and both agenda pages expose stable route/count,
domain, row, text, and link anchors for browser assertions.
The new Playwright coverage proves the live BFF GET /v1/events/upcoming
contract, the direct BFF GET /v1/nyx/events.ics feed, the web-origin
/v1/nyx/events.ics rewrite, the signed-in /events route, Explore nav active
state, exact event count, event ids/domains/start/end attributes, date/title/
summary rendering, domain chips, Nyx observation links, absence of stale
/nyx/events.ics hrefs, the /nyx/events Nyx-only filter with domain chips
suppressed, and a mobile standalone /events launch with no horizontal
overflow.
The walkthroughs now also record the product-data mismatch the test makes
explicit: /events is intended and copywritten as a cross-domain agenda, but
the current live /v1/events/upcoming implementation returns only Nyx
ephemeris-solved events. Tara/Metis/Arete/community agenda rows remain a source
wiring gap, not an E2E assertion gap.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/events/page.tsx apps/oshun/web/src/app/nyx/events/page.tsx apps/oshun/web/src/components/nyx/EventList.tsx apps/oshun/web/e2e/events-agenda.spec.ts WALKTHROUGH/customer/02-home-discovery/events.md WALKTHROUGH/customer/06-nyx/nyx-events.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored src/app/events/page.tsx src/app/nyx/events/page.tsx src/components/nyx/EventList.tsx e2e/events-agenda.spec.ts --max-warnings=0- passed
git diff --check- passed
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gates before focused Playwright/docs-center
- 15 GiB RAM, 13 GiB available before launches, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 9.1 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/events-agenda.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 4 passed
pnpm docs:center- passed: rendered 2991 files
pnpm docs:center:check- passed: all 2991 generated docs-center files are fresh
pnpm docs:center:verify- passed: 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 95 passed, 11 skipped
261. 2026-07-03 Studio Isis InstantID real-BFF coverage#
Closed the /studio/isis/instantid walkthrough gap where the old runtime sweep
proved only route render/data health and the InstantID catalog, admin-scope
gates, alias resolution states, route map, quick actions, touch targets, and
mobile containment remained unchecked. The new Playwright spec opens the real
Next Studio shell through the localhost-only Isis lane E2E bypass, proves the
direct route is still hard-blocked by the Studio Isis boundary, forwards browser
/v1/admin/isis/controlnet catalog and /v1/admin/isis/controlnet/resolve
POSTs to the real local BFF with explicit studio-admin or non-admin dev bearer
scopes, and captures browser auth headers and request bodies.
The suite verifies anonymous redirect, studio-admin catalog load, exact
InstantID modes, route-map articles, quick-action targets, 44 px controls,
pending-submit lockout, real BFF alias resolution for instant-id,
instantid-sdxl, and ip-adapter-face, unresolved alias handling, live BFF
invalid-payload errors, malformed 200 resolve responses, resolve-network
failure, loading, 503 catalog failure, malformed catalog failure,
catalog-network failure, non-admin fail-closed auth, direct BFF auth/schema
gates, shared axe scans on rendered UI paths, and mobile containment without
horizontal overflow. The page now exposes stable route-map and quick-action
selectors, pending form/submit state selectors, and fail-closed client parsing
for malformed catalog or resolve success payloads.
Verification:
pnpm exec prettier --write WALKTHROUGH/studio/domain-bridges/isis/studio-isis-instantid.md apps/oshun/web/src/components/studio/StudioIsisInstantIDWorkspace.tsx apps/oshun/web/src/app/studio/isis/instantid/page.tsx apps/oshun/web/e2e/studio-isis-instantid.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioIsisInstantIDWorkspace.tsx apps/oshun/web/src/app/studio/isis/instantid/page.tsx apps/oshun/web/e2e/studio-isis-instantid.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisInstantIDWorkspace.test.tsx src/components/__tests__/StudioIsisInstantIDWorkspace.integration.test.tsx src/components/__tests__/StudioIsisInstantIDPage.test.tsx src/components/__tests__/StudioIsisInstantIDRouteMap.test.ts- passed: 4 files, 6 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-isis-controlnet-route.test.ts- passed: 1 file, 6 tests
- Resource gate before focused Playwright
- 15 GiB RAM, 9.4 GiB available before launch, 29 GiB swap free, 48 GiB disk free. Another agent had CPU-heavy Python scans active, so this run stayed narrow at one Chromium worker; during Playwright, memory stayed above 5.9 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-isis-instantid.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 10 passed
pnpm --dir apps/oshun/web run typecheck- passed
247. 2026-07-03 Tara first-sit long-idle drift coverage#
Closed the first-tara-sit walkthrough gap where TaraSitPlayer's long-idle
drifted branch existed in route code and component tests but was not driven by
real-browser Playwright against the live /tara/sit/<id> route. The focused E2E
now installs Playwright's browser clock before loading
/tara/sit/when-the-mind-wanders, starts the hydrated player, fast-forwards
past DRIFT_IDLE_SECONDS = 90, asserts data-session-state="drifted" and the
soft pause copy, scrubs forward to recover to paused, then resumes with the
tara_sit_resumed telemetry hook intact.
The first-tara-sit journey no longer lists long-idle drift as uncovered. The
/tara/sit/[id] per-view file and the journey coverage matrix now cite the
clock-controlled browser proof alongside the existing transport, keyboard,
completion, and offline-reflection coverage.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/first-tara-sit-deepening.spec.ts WALKTHROUGH/journeys/first-tara-sit.md WALKTHROUGH/customer/03-tara/tara-sit-id.md WALKTHROUGH/journeys/coverage.md- passed
pnpm exec prettier --write WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/first-tara-sit-deepening.spec.ts --max-warnings=0- passed
git diff --check- passed
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gates before focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 8.6 GiB available.
- Resource gates before web typecheck and docs-center
- 15 GiB RAM, 13 GiB available, 30 GiB swap free, 48 GiB disk free, and no competing build/test process.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/first-tara-sit-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 11 passed
pnpm docs:center- passed: rendered 2991 files
pnpm docs:center:check- passed: all 2991 generated docs-center files are fresh
pnpm docs:center:verify- passed: 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 95 passed, 11 skipped
248. 2026-07-03 Tara sit unknown-id 404 coverage#
Closed the /tara/sit/[id] coverage gap where an unknown sitting id reached
Next notFound() but the walkthrough had no real-browser proof of the fallback
surface. The new Playwright leg starts at /tara, deep-links to
/tara/sit/not-a-real-sitting-id, records the current Next dev-shell document
status as 200, and asserts the app-level 404 UI: "Page not found", exact
404, no [data-tara-sit-player], usable 404 search routing to
/?q=morning%20clarity, and browser-back recovery to /tara.
The /tara/sit/[id] per-view walkthrough now marks the not-found path as
walked, the first Tara sit journey cites the unknown-id route state, and the
journey coverage matrix lists the app 404 search/browser-back recovery under
first-tara-sit-deepening.
Verification:
command -v psql && psql --version- passed:
/usr/bin/psql, PostgreSQL 16.14
- passed:
pnpm exec prettier --write apps/oshun/web/e2e/first-tara-sit-deepening.spec.ts WALKTHROUGH/customer/03-tara/tara-sit-id.md WALKTHROUGH/journeys/first-tara-sit.md WALKTHROUGH/journeys/coverage.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/first-tara-sit-deepening.spec.ts --max-warnings=0- passed
git diff --check- passed
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gates before focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During the full spec, memory stayed above 9.1 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/first-tara-sit-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "unknown sitting ids"- passed: 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/first-tara-sit-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 12 passed
pnpm docs:center- passed: rendered 2991 files
pnpm docs:center:check- passed: all 2991 generated docs-center files are fresh
pnpm docs:center:verify- passed: 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 95 passed, 11 skipped
249. 2026-07-03 Tara reflection reconnect non-drain coverage#
Closed the verification ambiguity around Tara's offline reflection queue. The
route already saved offline reflection drafts to
localStorage["tara:reflection:<id>"], but the walkthrough still repeated the
broader offline-first claim that sync resumes on reconnect. The strengthened
Playwright leg now drives the real /tara/sit/when-the-mind-wanders route,
completes the player, sets Chromium offline, saves a reflection, verifies the
queued LSyncDot and "Saved locally, will sync" hint, then returns Chromium
online and proves the queued UI plus localStorage draft remain. That captures
the current shipped behavior without falsely claiming a reconnect drain.
The /tara/sit/[id] per-view walkthrough now marks the reconnect drain question
as answered: no client-side drain exists for tara:reflection:<id> today. The
first Tara sit journey separates the covered local queue behavior from the
still-open product gap for a future BFF reflection route + client drain, and the
coverage matrix now calls out Tara's reconnect non-drain behavior under both
first-tara-sit and offline-first-time-use.
Verification:
pnpm exec prettier --write apps/oshun/web/e2e/first-tara-sit-deepening.spec.ts WALKTHROUGH/customer/03-tara/tara-sit-id.md WALKTHROUGH/journeys/first-tara-sit.md WALKTHROUGH/journeys/coverage.md- passed
pnpm --dir apps/oshun/web exec eslint --no-warn-ignored e2e/first-tara-sit-deepening.spec.ts --max-warnings=0- passed
git diff --check- passed
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gates before focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During the full spec, memory stayed above 9.0 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/first-tara-sit-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list -g "reflection saved while offline"- passed: 1 passed
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/first-tara-sit-deepening.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 12 passed
pnpm docs:center- passed: rendered 2991 files
pnpm docs:center:check- passed: all 2991 generated docs-center files are fresh
pnpm docs:center:verify- passed: 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 95 passed, 11 skipped
250. 2026-07-03 Studio Isis text-to-audio real-BFF coverage#
Closed the /studio/isis/text-to-audio walkthrough gap where the route was
listed as walked by the old runtime sweep but every granular state and
interaction remained unchecked. The new Playwright spec proves the direct route
is still hard-blocked by the Studio Isis boundary, then opens the localhost-only
?__oshunStudioIsisLaneE2E=1 lane in the real Next shell with browser requests
forwarded to the real local BFF using dev bearer auth.
The suite drives the live generation-manifest contract for the text-to-audio
entry, verifies prompt-required / image-controls-disabled flags, audio output
package rules, route-map articles, sibling quick actions, authenticated manifest
GETs, and live compatibility POSTs for text-to-audio → audio and
text-to-audio → image. It also proves loading, missing manifest entry, 503
service failure, malformed manifest, check network failure, non-admin
unauthorized, and anonymous redirect-before-render states fail closed without
fabricating a checker or compatibility result.
The first browser run exposed that the output-package select was only 23px tall; after fixing that, the next run exposed the sibling quick-action links at 40px. Both controls now have explicit 44px minimum hit targets, and the passing suite measures the select, submit button, and quick-action links in Chromium.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/isis/text-to-audio/page.tsx apps/oshun/web/src/components/studio/StudioIsisTextToAudioWorkspace.tsx apps/oshun/web/e2e/studio-isis-text-to-audio.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-text-to-audio.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/studio/isis/text-to-audio/page.tsx apps/oshun/web/src/components/studio/StudioIsisTextToAudioWorkspace.tsx apps/oshun/web/e2e/studio-isis-text-to-audio.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisTextToAudioPage.test.tsx src/components/__tests__/StudioIsisTextToAudioWorkspace.test.tsx src/components/__tests__/StudioIsisTextToAudioWorkspace.integration.test.tsx- passed: 3 files, 5 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gates before focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 9.7 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-isis-text-to-audio.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run exposed the 23px select hit target; second run exposed the 40px quick-action hit target; final rerun passed: 8 passed
git diff --check- passed
pnpm docs:center- passed: rendered 2991 files
pnpm docs:center:check- passed: all 2991 generated docs-center files are fresh
pnpm docs:center:verify- passed: 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 95 passed, 11 skipped
251. 2026-07-03 Studio Isis text-to-speech real-BFF lifecycle coverage#
Closed the /studio/isis/text-to-speech walkthrough gap where the route was
listed as walked by the old runtime sweep but the granular voice-clone
governance states and interactions were still unchecked. The new Playwright spec
proves the direct route is still hard-blocked by the Studio Isis boundary, then
opens the localhost-only ?__oshunStudioIsisLaneE2E=1 lane in the real Next
shell with browser requests forwarded to the real local BFF using dev bearer
auth.
The suite loads the live /v1/admin/isis/voice-cloning seed records, verifies
the pending-signoff and released records, filter behavior, route-map articles,
sibling quick actions, authenticated browser requests, and 44px minimum targets
for the primary form controls. It then creates a unique workflow and drives the
live BFF state machine through consent, identity verification, sample attach,
naturalness scoring, watermark attestation, abuse-risk scoring, all four signoff
roles, profile registration, and released state while capturing exact POST
bodies. Separate legs cover revoke from pending consent, invalid transition
payload feedback, high-abuse auto-reject, loading, 503 service failure,
malformed response, network failure, non-admin unauthorized, and anonymous
redirect before the surface renders.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/isis/text-to-speech/page.tsx apps/oshun/web/src/components/studio/StudioIsisTextToSpeechWorkspace.tsx apps/oshun/web/e2e/studio-isis-text-to-speech.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-text-to-speech.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/studio/isis/text-to-speech/page.tsx apps/oshun/web/src/components/studio/StudioIsisTextToSpeechWorkspace.tsx apps/oshun/web/e2e/studio-isis-text-to-speech.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisTextToSpeechPage.test.tsx src/components/__tests__/StudioIsisTextToSpeechWorkspace.test.tsx src/components/__tests__/StudioIsisTextToSpeechWorkspace.integration.test.tsx- passed: 3 files, 5 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gates before focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 9.3 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-isis-text-to-speech.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run exposed a test assertion count error for the 11-step lifecycle; final rerun passed: 8 passed
git diff --check- passed
pnpm docs:center- passed: rendered 2991 files
pnpm docs:center:check- passed: all 2991 generated docs-center files are fresh
pnpm docs:center:verify- passed: 0 structural broken links, 0 dead source paths
pnpm docs:center:test- passed: 95 passed, 11 skipped
252. 2026-07-03 Studio experimentation feature-flags real-BFF coverage#
Closed the /studio/experimentation-feature-flags walkthrough gap where the old
runtime sweep had only proved a render, while the real flag-evaluation lane
states and interactions were still unchecked. The new Playwright spec plants an
admin session in the real Next shell, lets the browser
GET /v1/admin/studio/experimentation-flags and
POST /v1/admin/studio/experimentation-flags/evaluate fall through to the live
local BFF, and captures the bearer headers plus parsed POST body before
fallback.
The suite verifies the deterministic FNV-1a default result (2 on / 3 off,
new-checkout bucket 48.14, dark-mode out of rollout, beta-gate
rule-excluded, legacy disabled, and homepage-cta assigned to variant-a at
bucket 76.12), the five quick-action targets, and 44px minimum hit targets for
the JSON textarea, submit button, and sibling links. Separate legs cover
anonymous redirect, loading, 503 catalog failure, malformed catalog,
catalog-network failure, malformed JSON with zero evaluate POSTs, live BFF
mis-summed experiment-weight validation detail, evaluate POST network failure,
and non-admin unauthorized.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/studio/experimentation-feature-flags/page.tsx apps/oshun/web/src/components/studio/StudioExperimentationFeatureFlagsWorkspace.tsx apps/oshun/web/e2e/studio-experimentation-feature-flags.spec.ts WALKTHROUGH/studio/governance/studio-experimentation-feature-flags.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/studio/experimentation-feature-flags/page.tsx apps/oshun/web/src/components/studio/StudioExperimentationFeatureFlagsWorkspace.tsx apps/oshun/web/e2e/studio-experimentation-feature-flags.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioExperimentationFeatureFlagsWorkspace.test.tsx src/components/__tests__/StudioExperimentationFeatureFlagsWorkspace.validation.test.tsx- passed: 2 files, 5 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gates before focused Playwright
- 15 GiB RAM, 12 GiB available before launch, 30 GiB swap free, 48 GiB disk free. A competing Vitest job in another checkout was allowed to finish before browser verification started. During Playwright, memory stayed above 9.4 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-experimentation-feature-flags.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 7 passed
pnpm exec prettier --write WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm docs:center- passed: rendered 2991 files
pnpm docs:center:check- passed: all 2991 generated docs-center files are fresh
pnpm docs:center:verify- passed: 0 structural broken links, 0 dead source paths
- Resource gate before docs-center Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process.
pnpm docs:center:test- passed: 95 passed, 11 skipped
git diff --check- passed
253. 2026-07-03 Lilith Studio new-scene real-BFF coverage#
Closed the /lilith-studio/scene/new walkthrough gap where the old runtime
sweep had only proved a render and the form states, entry points, gating, live
BFF write, and mobile behavior were still unchecked. The new Playwright spec
plants signed-in editorial sessions in the real Next shell, drives the browser
through the live /v1/lilith-studio/scenes POST path, and captures the request
body plus bearer/CSRF headers before letting the request fall through to the
local BFF.
The suite verifies the idle form, working-title constraints, real role="radio"
kind cells, roving keyboard selection, session-index normalization, pending
disabled/progress lockout, live 202 accepted response, accepted metadata, 44 px
accepted-state links, and protected handoff to the scenes editor. Separate legs
cover live BFF 422 validation detail, explicit offline fail-closed messaging
with retained field values, anonymous redirect, non-editorial access denial,
every documented new-scene entry point from the hub, Tara mirror, and scenes
editor, and mobile standalone containment without horizontal overflow.
Verification:
pnpm exec prettier --write apps/oshun/web/src/app/lilith-studio/scene/new/StudioNewSceneForm.tsx apps/oshun/web/src/app/lilith-studio/LilithStudioShell.tsx apps/oshun/web/src/app/lilith-studio/tara/page.tsx apps/oshun/web/src/app/lilith-studio/scenes/TaraSceneEditor.tsx apps/oshun/web/src/app/lilith-studio/scenes/TaraSceneEditor.test.tsx apps/oshun/web/e2e/lilith-studio-new-scene.spec.ts WALKTHROUGH/customer/10-lilith/lilith-studio-scene-new.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/app/lilith-studio/scene/new/StudioNewSceneForm.tsx apps/oshun/web/src/app/lilith-studio/LilithStudioShell.tsx apps/oshun/web/src/app/lilith-studio/tara/page.tsx apps/oshun/web/src/app/lilith-studio/scenes/TaraSceneEditor.tsx apps/oshun/web/src/app/lilith-studio/scenes/TaraSceneEditor.test.tsx apps/oshun/web/e2e/lilith-studio-new-scene.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/app/lilith-studio/scenes/TaraSceneEditor.test.tsx- passed: 1 file, 5 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gates before focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 8.9 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/lilith-studio-new-scene.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- final rerun passed: 5 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before docs-center Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process.
pnpm docs:center:test- passed
git diff --check- passed
254. 2026-07-03 Studio RBAC permission-policy real-BFF coverage#
Closed the /studio/rbac-permission-policy walkthrough gap where the old
runtime sweep proved only a render and the policy-evaluation lane states were
still unchecked. The new Playwright spec opens the real Next Studio shell,
forwards browser /v1/admin/studio/rbac-policy requests to the real local BFF
with explicit dev bearer scopes, and captures the browser request bodies and
auth headers before the live evaluator handles the payload.
The suite verifies anonymous redirect, admin catalog load, ready form metadata, the seven quick-action targets, 44 px controls, default-policy evaluation, explicit deny override, wildcard allow, default deny, inherited allow, unknown-role issues, client-only malformed JSON with zero POSTs, live BFF 400 detail, evaluate-network failure, pending-submit lockout, 503 catalog failure, malformed catalog failure, catalog-network failure, non-admin fail-closed auth, and mobile containment without horizontal overflow.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioRbacPermissionPolicyUxWorkspace.tsx apps/oshun/web/src/app/studio/rbac-permission-policy/page.tsx apps/oshun/web/e2e/studio-rbac-permission-policy.spec.ts WALKTHROUGH/studio/governance/studio-rbac-permission-policy.md WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioRbacPermissionPolicyUxWorkspace.tsx apps/oshun/web/src/app/studio/rbac-permission-policy/page.tsx apps/oshun/web/e2e/studio-rbac-permission-policy.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioRbacPermissionPolicyUxWorkspace.test.tsx src/components/__tests__/StudioRbacPermissionPolicyUxWorkspace.integration.test.tsx- passed: 2 files, 5 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-studio-rbac-policy-route.test.ts- passed: 1 file, 5 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During Playwright, memory stayed above 8.6 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-rbac-permission-policy.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 10 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before docs-center Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process.
pnpm docs:center:test- passed
git diff --check- passed
255. 2026-07-03 Studio Bellona CLI-surfaces real-BFF coverage#
Closed the /studio/bellona/cli-surfaces walkthrough gap where the old runtime
sweep proved only render/data health and the argv parser states, route map,
quick actions, BFF gates, pending behavior, and mobile containment remained
unchecked. The new Playwright spec opens the real Next Studio shell, forwards
browser /v1/admin/bellona/cli-surfaces catalog and parse calls to the real
local BFF with explicit Bellona admin or non-admin dev bearer scopes, and
captures browser request bodies and auth headers while the live parser handles
the payload.
The suite verifies anonymous redirect, Bellona-admin catalog load, route-map entries, quick-action targets, 44 px controls, default long/short/boolean argv parse, positionals, missing-required issues, unknown-flag issues, invalid-number issues, client-only malformed JSON with zero POSTs, live BFF 400 and 422 details, parse-network failure, malformed parse success, pending-submit lockout, catalog loading, 503 catalog failure, malformed catalog failure, catalog-network failure, non-admin fail-closed auth, direct BFF auth/schema gates, and mobile containment without horizontal overflow.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioBellonaCliSurfacesWorkspace.tsx apps/oshun/web/src/app/studio/bellona/cli-surfaces/page.tsx apps/oshun/web/e2e/studio-bellona-cli-surfaces.spec.ts- passed
pnpm exec prettier --write apps/oshun/web/e2e/studio-bellona-cli-surfaces.spec.ts WALKTHROUGH/studio/domain-bridges/bellona/studio-bellona-cli-surfaces.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioBellonaCliSurfacesWorkspace.tsx apps/oshun/web/src/app/studio/bellona/cli-surfaces/page.tsx apps/oshun/web/e2e/studio-bellona-cli-surfaces.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioBellonaCliSurfacesWorkspace.test.tsx src/components/__tests__/StudioBellonaCliSurfacesWorkspace.integration.test.tsx- passed: 2 files, 6 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-bellona-cli-surfaces-route.test.ts- passed: 1 file, 7 tests
pnpm --dir apps/oshun/web run typecheck- passed
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 30 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During the final Playwright run, memory stayed above 8.7 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-bellona-cli-surfaces.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- final rerun passed: 11 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
git diff --check- passed
256. 2026-07-03 Studio Quality Reliability real-BFF coverage#
Closed the /studio/quality-reliability walkthrough gap where the old runtime
sweep proved only render/data health and the test-flakiness scorer states,
breadcrumbs, route map, quick actions, BFF gates, pending behavior, and mobile
containment remained unchecked. The new Playwright spec opens the real Next
Studio shell, forwards browser /v1/admin/studio/test-flakiness catalog and
score calls to the real local BFF with explicit studio-admin or non-admin dev
bearer scopes, and captures browser request bodies and auth headers while the
live scorer calculates pass rate, flake score, classification, and quarantine
recommendations.
The suite verifies anonymous redirect, studio-admin catalog load, breadcrumbs,
route-map entries, quick-action targets, 44 px controls, default stable/failing
/ flaky scoring, threshold-dependent quarantine changes, client-only malformed
JSON with zero POSTs, live BFF 400 details, score-network failure, malformed
score success, pending-submit lockout, catalog loading, 503 catalog failure,
malformed catalog failure, catalog-network failure, non-admin fail-closed auth,
direct BFF auth/schema gates, and mobile containment without horizontal
overflow. The first focused Playwright run exposed an auto-axe
scrollable-region-focusable failure on the horizontally scrollable results
table; the table scroller is now focusable and named, and the final run verifies
that accessibility behavior.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioQualityReliabilityWorkspace.tsx apps/oshun/web/src/app/studio/quality-reliability/page.tsx apps/oshun/web/e2e/studio-quality-reliability.spec.ts- passed
pnpm exec prettier --write WALKTHROUGH/studio/operations/studio-quality-reliability.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioQualityReliabilityWorkspace.tsx apps/oshun/web/src/app/studio/quality-reliability/page.tsx apps/oshun/web/e2e/studio-quality-reliability.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioQualityReliabilityPage.test.tsx src/components/__tests__/StudioQualityReliabilityRouteMap.test.ts src/components/__tests__/StudioQualityReliabilityWorkspace.test.tsx src/components/__tests__/StudioQualityReliabilityWorkspace.integration.test.tsx- passed: 4 files, 7 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-studio-test-flakiness-route.test.ts- passed: 1 file, 5 tests
pnpm --dir apps/oshun/web run typecheck- passed; an intermediate run failed on stale generated
.next/devroute types left by the dev server, then passed after clearing the generated.nextcache
- passed; an intermediate run failed on stale generated
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During the final Playwright run, memory stayed above 5.9 GiB available even after another checkout started a separate Vitest/TypeScript run.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-quality-reliability.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- final rerun passed: 11 passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
git diff --check- passed
259. 2026-07-03 Studio Isis ControlNet real-BFF coverage#
Closed the /studio/isis/controlnet walkthrough gap where the old runtime sweep
proved only route render/data health and the ControlNet catalog, admin-scope
gates, alias resolution states, route map, quick actions, touch targets, and
mobile containment remained unchecked. The new Playwright spec opens the real
Next Studio shell through the localhost-only Isis lane E2E bypass, proves the
direct route is still hard-blocked by the Studio Isis boundary, forwards browser
/v1/admin/isis/controlnet catalog and /v1/admin/isis/controlnet/resolve
POSTs to the real local BFF with explicit studio-admin or non-admin dev bearer
scopes, and captures browser auth headers and request bodies.
The suite verifies anonymous redirect, studio-admin catalog load, exact
ControlNet modes and blend precedence, route-map articles, quick-action targets,
44 px controls, pending-submit lockout, real BFF alias resolution for ControlNet
openpose, IP-Adapter identity, and InstantID instant-id, unresolved alias
handling, live BFF invalid-payload errors, malformed 200 resolve responses,
resolve-network failure, loading, 503 catalog failure, malformed catalog
failure, catalog-network failure, non-admin fail-closed auth, direct BFF
auth/schema gates, shared axe scans on rendered UI paths, and mobile containment
without horizontal overflow. The first Playwright run exposed that
unauthenticated BFF requests fail at the auth middleware with
missing_bearer_token rather than the route-level missing_auth_context; the
test now asserts the live middleware contract. A second run exposed that the
request-only direct BFF test should skip page-level axe because no document is
rendered; only that non-UI check now uses skipAxe, while all UI paths remain
covered by the shared axe fixture.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisControlNetWorkspace.tsx apps/oshun/web/src/app/studio/isis/controlnet/page.tsx apps/oshun/web/e2e/studio-isis-controlnet.spec.ts- passed
pnpm exec prettier --write WALKTHROUGH/studio/domain-bridges/isis/studio-isis-controlnet.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioIsisControlNetWorkspace.tsx apps/oshun/web/src/app/studio/isis/controlnet/page.tsx apps/oshun/web/e2e/studio-isis-controlnet.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisControlNetWorkspace.test.tsx src/components/__tests__/StudioIsisControlNetWorkspace.integration.test.tsx src/components/__tests__/StudioIsisControlNetPage.test.tsx src/components/__tests__/StudioIsisControlNetRouteMap.test.ts- passed: 4 files, 6 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-isis-controlnet-route.test.ts- passed: 1 file, 6 tests
- Resource gate before focused Playwright
- 15 GiB RAM, 13 GiB available before the first launch, 29 GiB swap free, 48 GiB disk free, and no competing broad build/test process. During the first two runs another checkout started separate TypeScript checks; memory stayed above 5.5 GiB available. The final rerun started from 13 GiB available and no competing heavy verification process.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-isis-controlnet.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- final rerun passed: 10 passed
pnpm --dir apps/oshun/web run typecheck- passed
pnpm docs:center- passed
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
pnpm docs:center:test- passed
git diff --check- passed
260. 2026-07-03 Studio Isis IP-Adapter real-BFF coverage#
Closed the /studio/isis/ip-adapter walkthrough gap where the old runtime sweep
proved only route render/data health and the IP-Adapter catalog, admin-scope
gates, alias resolution states, route map, quick actions, touch targets, and
mobile containment remained unchecked. The new Playwright spec opens the real
Next Studio shell through the localhost-only Isis lane E2E bypass, proves the
direct route is still hard-blocked by the Studio Isis boundary, forwards browser
/v1/admin/isis/controlnet catalog and /v1/admin/isis/controlnet/resolve
POSTs to the real local BFF with explicit studio-admin or non-admin dev bearer
scopes, and captures browser auth headers and request bodies.
The suite verifies anonymous redirect, studio-admin catalog load, exact
IP-Adapter modes, route-map articles, quick-action targets, 44 px controls,
pending-submit lockout, real BFF alias resolution for identity,
ip-adapter-style, and layout, unresolved alias handling, live BFF
invalid-payload errors, malformed 200 resolve responses, resolve-network
failure, loading, 503 catalog failure, malformed catalog failure,
catalog-network failure, non-admin fail-closed auth, direct BFF auth/schema
gates, shared axe scans on rendered UI paths, and mobile containment without
horizontal overflow. The page now exposes stable route-map and quick-action
selectors, pending form/submit state selectors, and fail-closed client parsing
for malformed catalog or resolve success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioIsisIPAdapterWorkspace.tsx apps/oshun/web/src/app/studio/isis/ip-adapter/page.tsx apps/oshun/web/e2e/studio-isis-ip-adapter.spec.ts WALKTHROUGH/studio/domain-bridges/isis/studio-isis-ip-adapter.md- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioIsisIPAdapterWorkspace.tsx apps/oshun/web/src/app/studio/isis/ip-adapter/page.tsx apps/oshun/web/e2e/studio-isis-ip-adapter.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioIsisIPAdapterWorkspace.test.tsx src/components/__tests__/StudioIsisIPAdapterWorkspace.integration.test.tsx src/components/__tests__/StudioIsisIPAdapterPage.test.tsx src/components/__tests__/StudioIsisIPAdapterRouteMap.test.ts- passed: 4 files, 6 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-isis-controlnet-route.test.ts- passed: 1 file, 6 tests
- Resource gate before focused Playwright
- 15 GiB RAM, 12 GiB available before launch, 29 GiB swap free, 48 GiB disk free. Another checkout had a CPU-heavy agent process active, so this run stayed narrow at one Chromium worker; during Playwright, memory stayed above 8.9 GiB available.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-isis-ip-adapter.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- passed: 10 passed
pnpm --dir apps/oshun/web run typecheck- passed; run while another checkout had a broader TypeScript rollout active, with this repo limited to the targeted web app typecheck
pnpm docs:center- passed; rendered 2991 files
pnpm docs:center:check- passed
pnpm docs:center:verify- passed
- Resource gate before
pnpm docs:center:test- 15 GiB RAM, 11 GiB available before launch, 29 GiB swap free, 48 GiB disk free. Another checkout still had a TypeScript rollout active, so the docs browser gate was run serialized.
pnpm docs:center:test- passed: 95 passed, 11 skipped
262. 2026-07-03 Studio Security Hardening Program real-BFF coverage#
Closed the /studio/security-hardening-program walkthrough gap where the old
runtime sweep proved only route render/data health and the security-posture
catalog, admin-scope gates, scoring states, quick actions, touch targets,
malformed/offline failure paths, and mobile containment remained unchecked. The
new Playwright spec opens the real Next Studio shell, forwards browser
/v1/admin/studio/security-posture catalog and
/v1/admin/studio/security-posture/evaluate POSTs to the real local BFF with
explicit studio-admin or non-admin dev bearer scopes, and captures browser auth
headers and request bodies while the live scorer computes severity-weighted
posture and remediation rank.
The suite verifies anonymous redirect, studio-admin catalog load, exact
severity/status catalog values, quick-action targets, 44 px controls,
pending-submit lockout, seeded posture score 53.33, remediation ordering
c2 → c3 → c5, perfect posture, deterministic same-gap remediation tie-breaks,
client-only malformed JSON with zero POSTs, live BFF invalid-payload details,
loading, 503 catalog failure, malformed catalog failure, malformed 200 evaluate
responses, evaluate-network failure, non-admin fail-closed auth, direct BFF
auth/schema gates, shared axe scans on rendered UI paths, and mobile containment
without horizontal overflow. The page now exposes stable quick-action selectors,
pending form/submit state selectors, touch-sized controls, and fail-closed
client parsing for malformed catalog or evaluate success payloads.
Verification:
pnpm exec prettier --write apps/oshun/web/src/components/studio/StudioSecurityHardeningProgramWorkspace.tsx apps/oshun/web/src/app/studio/security-hardening-program/page.tsx apps/oshun/web/e2e/studio-security-hardening-program.spec.ts- passed
pnpm exec eslint --no-warn-ignored apps/oshun/web/src/components/studio/StudioSecurityHardeningProgramWorkspace.tsx apps/oshun/web/src/app/studio/security-hardening-program/page.tsx apps/oshun/web/e2e/studio-security-hardening-program.spec.ts --max-warnings=0- passed; emitted the existing Next pages-directory notice
pnpm --dir apps/oshun/web exec vitest run src/components/__tests__/StudioSecurityHardeningProgramWorkspace.test.tsx src/components/__tests__/StudioSecurityHardeningProgramWorkspace.validation.test.tsx- passed: 2 files, 5 tests
pnpm --dir apps/oshun/bff exec vitest run --passWithNoTests --maxWorkers=1 --no-file-parallelism src/__tests__/admin-studio-security-posture-route.test.ts- passed: 1 file, 6 tests
- Resource gates before focused Playwright
- First run: 15 GiB RAM, 8.0 GiB available before launch, 28 GiB swap free, 48 GiB disk free. Another checkout had CPU-heavy Python/Claude work active, so the run stayed narrow at one Chromium worker.
- Final rerun: 15 GiB RAM, 7.5 GiB available before launch, 28 GiB swap free, 48 GiB disk free, with the same unrelated work still active.
pnpm --dir apps/oshun/web exec playwright test -c playwright.config.ts e2e/studio-security-hardening-program.spec.ts --project=chromium --workers=1 --retries=0 --reporter=list- first run exposed an incorrect test expectation for the edited payload
score; the live scorer correctly returned
68.42(13 achieved weight / 19 total weight) - final rerun passed: 11 passed
- first run exposed an incorrect test expectation for the edited payload
score; the live scorer correctly returned
pnpm --dir apps/oshun/web run typecheck- passed