Refs #4374
Keep canonical cursor validation, source rewrite completion and cancellation
on the admission path, but do not dispatch Git scope resolution when no
native frame can consume its result. Do not retain an empty-page verdict.
Add real JSONL/project/profile regressions for cold and warm re-offers,
resolution work counts, unchanged accepted identities, later cwd changes,
appended records and cancellation. Add a dedicated scope-resolution span.
Bazel execution is pending hosted CI; no local Rust pass is claimed.
Scope — Refs #4374
Partial, issue-specific removal of unnecessary unchanged-rollout work. This is not a claim that the original 2,010-rollout / 28 ms-per-file incident is fully resolved; keep #4374 open until comparable measurements and all acceptance are proven on master.
Root cause and source fix
admit_jsonl_observationsinitializes provider state even after the authoritative source cursor and validated JSONL scan have produced an empty native-frame page. Codex's initializer then dispatched a blocking task, constructed project/profile matchers and resolved/revalidated the session cwd against Git, despite having no frame that could consume the result. Cold caches can invoke Git identity discovery; warm caches still pay task dispatch and topology revalidation.CodexObservationAdmission::resolve_scopenow returns frame-local empty verdict state before cloning roots or dispatching that work when the scan has no native frames. It does not return early from canonical admission: cursor validation, skipped-range coverage, pending source-rewrite completion and cancellation stay on the existing path. No negative scope verdict is cached, so later appended frames still resolve live scope. A dedicatedsessions.observation.codex.resolve_scopetracing span supportsTRACEDECAY_SPAN_TIMINGS=1comparison.Behavioral and performance regressions
Two new tests in the existing sessions unit-test target use real Git repositories and native JSONL files through the production Codex/JSONL admission path, with the existing
MemoryHostAdmissionstorage fixture:These are new regression assertions, not executed benchmark results. The memory fixture does not establish SQLite restart/durability or affected-host end-to-end performance. Existing metadata-fill, same-size rewrite, pending-rewrite and discovery-restart tests remain unchanged and must also pass.
Verification and merge hold
Published commit:
408fdb7ec143e31e6ced01b75a2bcff1eca847ed, one parent at master91c72aba7750a398dd28e83d64bf0c6d6fef4172. GitHub compare confirms exactly two files, 20 production/module-wiring lines plus the focused regression module. Published via an exact expected-old-head nonforce fast-forward. No existing branch was overwritten. The generated Bazel source glob already includes the test module.The authoring environment has no supplied checkout or Bazel executable, and cannot resolve GitHub from its shell; no local Rust/Bazel pass or measured speedup is claimed. This ordinary non-model PR is ready for review to allow normal hosted Bazel CI, not to waive validation. Require nonzero execution of:
Inspect exact-head CI, native macOS qualification and independent review before merging. Do not treat a queued or skipped job as a pass. Cargo was not used; CI and budgets were not changed.
Coordination / remaining acceptance
No file overlap with #4756's current #4793 projection-queue work. No code was copied from held mixed DRAFT #4776, and no Kev/decision-model work was included, moved, merged or auto-merged. Those PRs remain under their draft/merge hold. Release #4763, production, infrastructure, tags, credentials and other task schedules are untouched.
Still required: comparable full affected-host before/after project/profile traces for the original corpus, attribution of remaining cursor/store and metadata/provenance costs, exact-head Bazel/native execution and master-proven acceptance. Refs #4374 only; do not close the issue on publication or on this partial fix alone.