.omo/evidence/senpi-task/task-2-config-loader-writer/evidence-summary-loader-symlink-discovery-20260706.md
bun test packages/omo-config-core/src/loader/loader.test.ts --bail --test-name-pattern "symlinked project omo directory" before the loader fix.
.omo/evidence/senpi-task/task-2-config-loader-writer/red-loader-project-omo-symlink-20260706.txt.omo/evidence/senpi-task/task-2-config-loader-writer/green-loader-project-omo-symlink-20260706.txtbun test packages/omo-config-core --bail.
.omo/evidence/senpi-task/task-2-config-loader-writer/test-omo-config-core-bail-20260706.txtbun test tests/omo-config-category-drift.test.ts --bail.
.omo/evidence/senpi-task/task-2-config-loader-writer/test-omo-config-category-drift-bail-20260706.txtbun run typecheck.
.omo/evidence/senpi-task/task-2-config-loader-writer/typecheck-loader-symlink-final4-20260706.txtgit diff --check origin/code-yeongyu/senpi-task-w0-config-schema...HEAD.
.omo/evidence/senpi-task/task-2-config-loader-writer/diff-check-schema-base-20260706.txtbun test packages/omo-config-core/src/loader/loader.test.ts --bail --test-name-pattern "same-key partial team layers".
.omo/evidence/senpi-task/task-2-config-loader-writer/green-teams-partial-merge-focused-20260706.txt.omo/evidence/senpi-task/task-2-config-loader-writer/no-excuse-loader-ts-20260706.txtbun .omo/evidence/senpi-task/task-2-config-loader-writer/manual-public-api-fixture-probe-20260706.mjs.
.omo/evidence/senpi-task/task-2-config-loader-writer/manual-public-api-fixture-probe-20260706.txt.omo/evidence/senpi-task/task-2-config-loader-writer/manual-public-api-fixture-probe-20260706.mjstask.default_concurrency default 5, received 9 from the outside symlink target.1 pass, 0 fail, and the symlinked project .omo target was not loaded.omo-config-core package gate observed 20 pass, 0 fail, 90 expect() calls.1 pass, 0 fail.tsgo --noEmit invocations.1 pass, preserving the prior final3 repair.symlinkedProjectOmo.taskDefaultConcurrency: 5, diagnostics: [], and loadedProjectSources: [].normalProjectOmo.taskDefaultConcurrency: 7 with a loaded regular project .omo/omo.jsonc source.sameKeyTeamPartialMerge.alpha preserved both members[0].name: "one" and description: "near layer description".cleanup.fixtureRootExistsAfterCleanup: false.The failing-first test toggles the exact final4 failure class: a project .omo symlink to an outside directory containing omo.jsonc with task.default_concurrency: 9. The fix changes project discovery to inspect the .omo directory itself and ignore it when it is a symlink, so the outside target is not treated as trusted project state. The manual probe drives the exported loadOmoConfig() API with real filesystem fixtures and separately proves a legitimate project .omo still loads.
No OpenCode or Codex harness QA was run because this change is confined to the harness-neutral packages/omo-config-core loader surface and does not touch packages/omo-opencode or packages/omo-codex. No raw secret-bearing logs, auth headers, environment dumps, tokens, or private credentials were captured.