Local Discovery release integration — 2026-09-20
Follow-up integration
Candidate b4c32d1f150385bcf4ccb3a9ebe7171d36459b01 now includes controller 4c724abcd621fa1ef3470c6f45fb3e4c14454192: the frozen retrieval report/scorer, bounded historical backfill and reviewed operator cost journal. One additional billing-audit conflict was resolved by preserving both main's extension/generation billing assertions and the new operator ownership checks. Main's existing generation-enhance policy registration remains unchanged in this candidate.
Fresh checks on this combined code passed: eight hosted typecheck tasks, five build tasks, 148 focused server regressions with zero failures/skips, 185 Python tests, and the generated OSS boundary. The initial operator accounting failure documented below is resolved; the earlier full OSS and expanded client results remain evidence for their unchanged code. This does not claim a newly rerun full hosted suite. The cost patch's independent review closed both findings: poolers are rejected for dry-run as well as apply, and the ownership audit resolves extensionless imports using the configured TypeScript resolver.
The earlier source-install failure below is also superseded by the successful bounded installation/reconciliation in the production preparation report. The source publication and grants are ready; the existing ClickPipe still needs the two new mappings. Semantic promotion remains unsupported by the frozen retrieval results.
Follow-up logs: .local-artifacts/release-followup-{tests,typecheck,build,python,oss}.log. The original integration evidence below is retained with its original scope.
This is a local integration candidate, not a deployment or production enablement. No remote branch, PR, production setting, schema or data was changed by this work.
Inputs and ownership
- Owned worktree:
C:/Users/jefra/.codex/worktrees/yumina-discovery-release. - Owned branch:
codex/discovery-release. Both path and branch were verified absent before creation. - Controller starting commit:
ff54af4bb1459684cefb32187f3925e9e5f02560. - Fetched main:
bf84f55d0b55e91c1318de30230fd4a3732ea739. - Common ancestor:
edcbd8f3993a6b9bd9b221defb7892ca9b560c2e. - Includes foundation #172, measurement #177 and personalization #179 by ancestry.
- Original workspace and controller worktree files were not edited. Fetch updated the shared
origin/maintracking reference as authorized; localmainwas not merged or reset. - The later controller documentation commit
dba78e75bwas observed but not folded into this explicitly pinned integration. The controller owns ongoing diagnostics.
Merge resolution
One textual conflict occurred, in oss/manifest.json:
- Retained Discovery's hosted implementation/test forbidden-path rules.
- Retained main's
install-ledger-guard.sqlkeep override and matching forbidden-path exception. - Retained main's State Update Guard hosted-test exclusions.
The other three overlapping files merged automatically and were reviewed:
packages/server/src/db/schema.ts: main's Guard fields plus all Discovery schema.packages/server/src/edition/hosted.ts: main's ledger verifier startup/shutdown plus Discovery preferences mounting.packages/server/src/routes/sessions.ts: main's copied Guard settings on branching plus Discovery attribution and strict intervals.
Before the test-only follow-up, index comparisons verified all 183 controller-only changed paths matched the controller input and all 159 main-only changed paths matched fetched main. The four overlaps above were the complete intersection.
The expanded client run also exposed an existing main test failure. An untouched origin/main app source snapshot inside the owned worktree reproduced it: the Guard navigation test searched for the retired description Free for everyone. The single-line test fix selects Yumina Free instead. It retains the assertions for selecting official::openrouter/free, keeping the BYOK story provider unchanged, and subsequently choosing a private correction model. No product behavior changed.
Validation
Validation used an ignored local wrapper at .local-artifacts/release-audit/run-isolated.mjs. It passes only OS path variables, synthetic authentication settings, in-memory database settings and disabled rollout flags. Server tests additionally use the repository's dotenv-blocking isolated launcher. No service credentials, dotenv files, browser or production data were used.
| Check | Result |
|---|---|
| Pre-merge focused Discovery baseline | 24 passed |
Hosted pnpm typecheck | 8 tasks successful |
Hosted pnpm build | 5 tasks successful; existing large-bundle warnings |
| Expanded hosted server selection | 940 passed, 1 failed, 11 service-dependent skips |
| Expanded client selection after selector fix | 159 passed, zero failures/skips |
| Client edition boundary | Passed |
| Temporal dataset and personalization evaluation | 134 passed |
| Generated OSS Discovery boundary and ledger SQL presence | Passed |
| OSS install, typecheck and build | Passed |
| OSS shared tests | 55 passed, 1 skip |
| OSS engine tests | 1,174 passed |
| OSS server tests | 1,484 passed, 4 skips |
| OSS app tests | 786 passed |
OSS tests ran serially by package to avoid the documented Windows concurrent build/output race. Total OSS result: 3,499 passed, zero failures, five skips. The exported package test commands do not include all .tsx files; the Guard navigation .tsx coverage above was run explicitly on the hosted candidate.
The expanded hosted server failure is billing-coverage.test.ts: every LLM-calling file records usage: lib/personalization/story-model-request.ts calls the descriptor provider without recordUsageLog. This is not introduced by the merge. Its source is identical to ff54af4bb, whose audit already contains the matching raw-chat-completions rule. The transport SHA-256 is bc360306c89f8825d3fcbef13be53439177c09e0eed57463e88d8e59adc0df69. The inspected production caller is the explicitly invoked offline personalization CLI; the serving path does not invoke it. The response parser drops provider usage metadata. No audit exemption, fabricated user billing identity or accounting policy was added. Cost-accounting treatment of these operator calls remains unresolved; this report does not claim a clean full hosted suite.
The eleven hosted skips cover unavailable ClickHouse, Redis and external PostgreSQL integration environments. Local tests do not establish production CDC or capacity. git diff --check against the controller parent reports a trailing blank line in main's unchanged studio-credit-recovery.test.ts; the candidate diff against fetched main is whitespace-clean. The inherited file was left intact.
GitGuardian metadata only
- Published PR #179 head:
393de766b71d79bec137123f17f008f45fe3deee. - Check ID:
106034313302; completed, failure; zero GitHub file annotations. - Safe metadata identifies detector
Username Password/username_passwordandpackages/server/src/analytics/config.test.tspluspackages/server/src/analytics/migration-cli.test.ts. - No matched values, raw check logs or incident payloads were printed or retained.
- These are test files, but the check has not been dismissed, bypassed or remotely reclassified. Its disposition remains outstanding. The local-only controller and release commits have no new GitHub checks.
Flags and controller handoff
Default-off behavior remains unchanged: cursor, canonical measurement, personalization, interest onboarding and analytics worker readiness. Personalization treatment defaults to zero and session encoding remains raw. Validation child processes explicitly start with those flags off; individual isolated tests toggle their own synthetic fixtures. No deployment environment was written.
This merge does not resolve the earlier distinction between incumbent model and identical incumbent slates: canonical page receipts currently require the cursor path, which changes delivery diversity and continuation. Semantic personalization can remain disabled independently. No ranking model or embedding backfill ran.
Controller-reported production status during this integration, not independently rechecked by this agent:
- World-history SQL installed; 18,800 baseline mappings reconciled, missing 0, mismatch 0; no feed flags enabled.
- Measurement SQL attempt under 250 ms lock / 2 s statement limits returned PostgreSQL
57014and rolled back fully; event/knownness schema not installed. - Controller owns a bounded installer fix limited to measurement SQL, its migration test and a new backfill CLI. This candidate leaves those files unchanged pending the controller commit and subsequent integration.
- Warehouse migration 008 was installed successfully by the restricted migrator: two empty
SharedReplacingMergeTreetables and an erasure-filtered view. Flags remain unchanged. This warehouse prerequisite is now complete. - The existing ClickPipe is Running with 17 mappings and is missing the two Discovery mappings. Adding the two Discovery source tables remains an operator/UI or newly authorized management-capability step; this agent has not attempted a write through read-only tooling. The controller is preparing that concrete UI step once PostgreSQL source tables are ready.
Commands and local evidence
Creation and merge, after verifying the destination path/branch were absent:
git worktree add -b codex/discovery-release C:/Users/jefra/.codex/worktrees/yumina-discovery-release ff54af4bb1459684cefb32187f3925e9e5f02560
# Subsequent commands run in the new worktree.
git fetch --no-tags origin main
pnpm install --frozen-lockfile --offline
git merge --no-commit --no-ff origin/main
git add -- oss/manifest.json
node .local-artifacts/release-audit/run-isolated.mjs pnpm typecheck
node .local-artifacts/release-audit/run-isolated.mjs pnpm build
node .local-artifacts/release-audit/run-isolated.mjs python -B -m unittest trainer.test_discovery_data trainer.test_personalization_evaluation -qExpanded server selection, from the worktree root:
node .local-artifacts/release-audit/run-isolated.mjs node packages/server/scripts/test-local.mjs 'src/lib/discovery*.test.ts' 'src/lib/recommendations*.test.ts' 'src/lib/personalization-*.test.ts' 'src/lib/personalization/*.test.ts' src/lib/engagement.test.ts 'src/lib/embedding*.test.ts' 'src/lib/account-deletion*.test.ts' src/lib/play-engagement.test.ts src/lib/playtime-policy.test.ts 'src/analytics/*.test.ts' 'src/routes/discovery*.test.ts' 'src/routes/feed-dismiss*.test.ts' src/routes/worlds-local-discovery.test.ts src/routes/playthrough-session-create-regression.test.ts src/routes/sessions-branch.test.ts 'src/extensions/state-update-guard/*.test.ts' 'src/lib/state-guard-*.test.ts' 'src/lib/ledger*.test.ts' src/lib/billing-coverage.test.ts src/lib/usage-log.test.ts src/lib/turn-output-validation.test.ts src/lib/turn-output-validation.pg.test.ts src/routes/state-update-guard.test.tsExpanded client selection, from packages/app:
node ../../.local-artifacts/release-audit/run-isolated.mjs pnpm exec tsx --tsconfig tsconfig.app.json --test --test-timeout=120000 --test-concurrency=2 'src/lib/discovery*.test.ts' 'src/lib/feed-beacon*.test.ts' src/lib/analytics.test.ts 'src/features/hub/*.test.ts' src/features/chat/use-guest-session-start.test.ts src/hooks/use-play-with-language.test.ts 'src/features/chat/state-guard*.test.ts' 'src/features/chat/state-guard*.test.tsx' src/features/chat/variable-name-alias.test.ts src/components/layout/top-bar.test.ts src/lib/back-navigation-audit.test.ts src/lib/mobile-nav-drawer-layout.test.ts src/lib/plan-theme.test.ts src/lib/reading-page-canvas.test.ts
node ../../.local-artifacts/release-audit/run-isolated.mjs pnpm check:editionOSS export was generated with node scripts/oss-export.mjs through the same wrapper, after verifying its resolved output was the new worktree's oss/out. Then node --test scripts/oss-discovery-boundary.test.mjs passed and ledger SQL presence was asserted. Inside oss/out, the wrapper's --local mode ran, in order:
pnpm install --lockfile-only --ignore-scripts --offline
pnpm install --frozen-lockfile --offline
pnpm typecheck
pnpm build
pnpm --filter @yumina/shared test
pnpm --filter @yumina/engine test
pnpm --filter @yumina/server test
pnpm --filter @yumina/app exec tsx --tsconfig tsconfig.app.json --test --test-timeout=120000 --test-concurrency=2 src/**/*.test.tsIgnored local evidence: baseline-*.log, release-typecheck.log, release-build.log, release-server-tests.log, release-app-tests.log, release-app-tests-final.log, release-main-ui-baseline.log, release-python-tests.log, and release-oss-*.log. The only intended integration edits beyond the parent merge are the manifest resolution, the stale test selector and this report.
