Corpus gates grade stale package pins (csharp 0.1.4 vs shipped 0.1.11, js 0.1.3 vs 0.1.6, …), hiding the C# csharp_partial bind withdrawal #534

Closed
opened 2026-11-09 08:35:47 +01:00 by buildagent · 7 comments
Member

Consolidated scope (triage 2026-11-09)

Priority: Critical: every corpus gate (baseline, stage, cost, tier-3) measures packages that do not ship, so the shipped extractors are ungraded; and a real C# withdrawal of correct binds is hidden.

This issue is now the canonical tracker for:

  • Gate population (new, verified): frozen::pin(name) (crates/test-support/src/frozen.rs pin) returns the FIRST PINS row with that name, and shipped.rs uses it. tests/host-fixtures/packages/PINS therefore makes the corpus grade csharp 0.1.4 (shipped 0.1.11; no newer pin exists at all), javascript 0.1.3 (0.1.5 is pinned but never selected; shipped 0.1.6), typescript 0.1.4 (0.1.6 pinned; shipped 0.1.7), rust 0.1.5 (shipped 0.1.7) and python 0.1.4 (shipped 0.1.5). Fix: the corpus selects the version that ships (the bundled package set), with a registry test asserting that it equals the release bundle
  • The cost gate prices the same stale pins (from #198's triage)

Original report

Summary

In C#, the namespace stage (csharp_partial) withdraws correct inherited-member binds whenever it runs. On cs-dapper it hides this only because its cost estimate is about 190× its budget, so it never runs there. Each defect hides the other, and the corpus gate measures neither.

A. When the stage runs, it removes correct binds

  • Re-indexing a fresh cs-dapper copy with CODE_INDEX_CSHARP_PARTIAL_WORK_BUDGET=9500000000 loses 162 binds and gains 4.
  • 153 of the lost binds are inherited members (53 Step, 37 i, 19 BaseSetup, 16 GetClosedConnection, …), made by name tiers 10/12/120 and checked correct against the source. Example: benchmarks/Dapper.Tests.Performance/Benchmarks.Belgrade.cs:17 BaseSetup() → Benchmarks.cs:17 BenchmarkBase.BaseSetup.
  • The minimal repro is three files (lang-out/csharp/min/z2). Removing an #if !NET4X … #endif wrapper around one file's body makes the binds come back (min/z5).
  • Measured mechanism: using directives inside #if get no namespace_import_facts rows. In namespace_imports (crates/guest/csharp/src/csharp.rs:2985-3014), the preproc_if condition counts as an earlier sibling and falls into _ => false.
  • Inferred mechanism: that one file's missing proof leaves the base type unproven in temp.proven_type_bases (index/inherited_members.rs:759), which member_lookup.rs:741 then uses in place of the name-tier target, also for other files.
  • The withdrawal is not disclosed. Whole-file #if is everyday multi-targeting C#.

B. The cost estimate is ~190× too high, and the gate is blind to it

  • On the shipped package, cs-dapper (157 files) logs resolver stage SKIPPED … stage="csharp_partial" estimate=9488891035 budget=50000000 23 times in one run, and stages_skipped lists it three times.
  • Enabled, the whole index takes 9.9 s, the same as with the stage skipped.
  • work_estimate (inherited_members.rs:48-109) multiplies five worst-case maxima: groups × owners × parts × (imports+32) × 32.
  • tests/corpus/stage-baseline.json records cs-dapper "stage.csharp_partial.degraded": 0, so the gate's extractor is not the shipped one. The likely cause is that the corpus harness extracts with the frozen builtin (see #515).
  • Consequence: every C# user gets recall reported as a floor, and A stays invisible.

Proposal

  1. Guest: using directives inside preproc_if/preproc_else count as imports, as a union over branches, each marked conditional.
  2. Resolver: missing proof in one file makes that file's lookups fail closed. It must never cancel a name-tier bind in another file. That is a general rule for every "proof replaces name tier" stage.
  3. Estimate from measured per-group products (dot-product histograms, as CSHARP_PARTIAL_ESTIMATE_SQL already does for part of it). De-duplicate stages_skipped and the WARN.
  4. The corpus stage and recall gates must run on package output. This is the same population problem as precision_gate (#188).

Acceptance

  • On cs-dapper with the default budget, the stage runs, and the bind diff against today shows no removed correct bind; sample the unchanged ones too.
  • stage-baseline.json is measured on the shipped package.
  • A fixture of the z2 shape gives the same binds with and without the #if wrapper.
  • Mutation: restore _ => false and the fixture goes red.

Evidence: lang-out/csharp/runs/lost_binds.tsv, po.err, min/z2, min/z5.


Filed from the per-language review on 2026-11-09: 8 agents, one per language plus one for Vue/Svelte/XAML/timeline, run against copies of the pinned corpus repos (tests/corpus/corpus.toml) using installed build 2dcfc615, which differs from master only by XAML/CI commits. The top claim of every issue was spot-checked in the main session. Artifacts live under the review session's scratchpad lang-out/<lang>/ and are available on request.

## Consolidated scope (triage 2026-11-09) **Priority: Critical**: every corpus gate (baseline, stage, cost, tier-3) measures packages that do not ship, so the shipped extractors are ungraded; and a real C# withdrawal of correct binds is hidden. This issue is now the canonical tracker for: - [ ] **Gate population (new, verified):** `frozen::pin(name)` (`crates/test-support/src/frozen.rs` `pin`) returns the FIRST `PINS` row with that name, and `shipped.rs` uses it. `tests/host-fixtures/packages/PINS` therefore makes the corpus grade csharp **0.1.4** (shipped 0.1.11; no newer pin exists at all), javascript 0.1.3 (0.1.5 is pinned but never selected; shipped 0.1.6), typescript 0.1.4 (0.1.6 pinned; shipped 0.1.7), rust 0.1.5 (shipped 0.1.7) and python 0.1.4 (shipped 0.1.5). Fix: the corpus selects the version that ships (the bundled package set), with a registry test asserting that it equals the release bundle - [ ] The cost gate prices the same stale pins (from #198's triage) --- ## Original report ## Summary In C#, the namespace stage (`csharp_partial`) **withdraws correct inherited-member binds** whenever it runs. On cs-dapper it hides this only because its cost estimate is about 190× its budget, so it never runs there. Each defect hides the other, and the corpus gate measures neither. ### A. When the stage runs, it removes correct binds - Re-indexing a fresh cs-dapper copy with `CODE_INDEX_CSHARP_PARTIAL_WORK_BUDGET=9500000000` **loses 162 binds and gains 4**. - 153 of the lost binds are inherited members (53 `Step`, 37 `i`, 19 `BaseSetup`, 16 `GetClosedConnection`, …), made by name tiers 10/12/120 and checked correct against the source. Example: `benchmarks/Dapper.Tests.Performance/Benchmarks.Belgrade.cs:17 BaseSetup()` → `Benchmarks.cs:17 BenchmarkBase.BaseSetup`. - The minimal repro is three files (`lang-out/csharp/min/z2`). Removing an `#if !NET4X … #endif` wrapper around one file's body makes the binds come back (`min/z5`). - **Measured mechanism:** `using` directives inside `#if` get no `namespace_import_facts` rows. In `namespace_imports` (`crates/guest/csharp/src/csharp.rs:2985-3014`), the `preproc_if` condition counts as an earlier sibling and falls into `_ => false`. - **Inferred mechanism:** that one file's missing proof leaves the base type unproven in `temp.proven_type_bases` (`index/inherited_members.rs:759`), which `member_lookup.rs:741` then uses in place of the name-tier target, also for **other** files. - The withdrawal is not disclosed. Whole-file `#if` is everyday multi-targeting C#. ### B. The cost estimate is ~190× too high, and the gate is blind to it - On the shipped package, cs-dapper (157 files) logs `resolver stage SKIPPED … stage="csharp_partial" estimate=9488891035 budget=50000000` **23 times** in one run, and `stages_skipped` lists it three times. - Enabled, the whole index takes 9.9 s, the same as with the stage skipped. - `work_estimate` (`inherited_members.rs:48-109`) multiplies five worst-case maxima: groups × owners × parts × (imports+32) × 32. - `tests/corpus/stage-baseline.json` records `cs-dapper "stage.csharp_partial.degraded": 0`, so **the gate's extractor is not the shipped one**. The likely cause is that the corpus harness extracts with the frozen builtin (see #515). - Consequence: every C# user gets recall reported as a floor, and A stays invisible. ## Proposal 1. Guest: `using` directives inside `preproc_if`/`preproc_else` count as imports, as a union over branches, each marked conditional. 2. Resolver: missing proof in **one file** makes that file's lookups fail closed. It must never cancel a name-tier bind in another file. That is a general rule for every "proof replaces name tier" stage. 3. Estimate from measured per-group products (dot-product histograms, as `CSHARP_PARTIAL_ESTIMATE_SQL` already does for part of it). De-duplicate `stages_skipped` and the WARN. 4. The corpus stage and recall gates must run on **package** output. This is the same population problem as `precision_gate` (#188). ## Acceptance - On cs-dapper with the default budget, the stage runs, and the bind diff against today shows **no** removed correct bind; sample the unchanged ones too. - `stage-baseline.json` is measured on the shipped package. - A fixture of the z2 shape gives the same binds with and without the `#if` wrapper. - Mutation: restore `_ => false` and the fixture goes red. Evidence: `lang-out/csharp/runs/lost_binds.tsv`, `po.err`, `min/z2`, `min/z5`. --- _Filed from the per-language review on 2026-11-09: 8 agents, one per language plus one for Vue/Svelte/XAML/timeline, run against copies of the pinned corpus repos (`tests/corpus/corpus.toml`) using installed build `2dcfc615`, which differs from master only by XAML/CI commits. The top claim of every issue was spot-checked in the main session. Artifacts live under the review session's scratchpad `lang-out/<lang>/` and are available on request._
buildagent changed title from C# csharp_partial stage withdraws correct inherited-member binds when it runs (#if-wrapped using), and its ~190x cost estimate hides it from the gate to Corpus gates grade stale package pins (csharp 0.1.4 vs shipped 0.1.11, js 0.1.3 vs 0.1.6, …), hiding the C# csharp_partial bind withdrawal 2026-11-09 09:20:56 +01:00
Author
Member

Progress 2026-11-09: gate population fixed on branch codex-534, movement measured, bind account in progress

Step 1, done (commit 65d4218c, reviewed by the lead):

  • The corpus gates (ratchet, stage, tier3, cost, cost_attribution, metamorphic, watcher_replay, scale) and precision_gate now install the live tests/packages/<lang>/, the exact bytes recorded in tests/packages/<lang>.digest, through the existing shipped::install(..., dir_of).
  • Frozen snapshots and PINS are unchanged and remain for host tests only (#318). install_shipped has one caller, the corpus harness.
  • A registry test checks the gate set against the .digest records: package id, version and packed digest. Its mutation was run: C# pointed at its frozen dir goes red with csharp: package digest differs.
  • Finding: PHP 0.1.4 and Ruby 0.10.2 ship different bytes under the same version as their frozen pins.

Movement on first measurement (corpus_ratchet, release, clean corpus; no baseline touched):

cs-dapper:    resolved +604 (call +205, type +270, read +89, write +32, member_access +12, method_call -4), refs +857
rust-ripgrep: resolved +34  (call +31, method_call -30, member_access +33), refs +1249
ts-zod:       resolved -191 (call -62, type -77, member_access -50, import -2)
js-express:   resolved -42  (member_access -42)

The shipped JS/TS packages resolve FEWER refs than the old pins. That is either a shipped recall regression or wrong binds the old pins made. Totals cannot say which, so no bless yet. In progress: a reusable #[ignore] bind-diff suite, joined on (path, line, col, kind, occurrence) and split by resolved_by, with hand-checked samples of added, removed and unchanged binds for all four repos.

Housekeeping: three corpus checkouts held stale .code-index/ first-contact state from 2026-10-20. That made the harness refuse correctly. They were backed up and removed (noted in #546).

## Progress 2026-11-09: gate population fixed on branch `codex-534`, movement measured, bind account in progress **Step 1, done (commit `65d4218c`, reviewed by the lead):** - The corpus gates (ratchet, stage, tier3, cost, cost_attribution, metamorphic, watcher_replay, scale) and `precision_gate` now install the live `tests/packages/<lang>/`, the exact bytes recorded in `tests/packages/<lang>.digest`, through the existing `shipped::install(..., dir_of)`. - Frozen snapshots and `PINS` are unchanged and remain for host tests only (#318). `install_shipped` has one caller, the corpus harness. - A registry test checks the gate set against the `.digest` records: package id, version and packed digest. Its mutation was run: C# pointed at its frozen dir goes red with `csharp: package digest differs`. - Finding: PHP 0.1.4 and Ruby 0.10.2 ship **different bytes under the same version** as their frozen pins. **Movement on first measurement** (corpus_ratchet, release, clean corpus; no baseline touched): ``` cs-dapper: resolved +604 (call +205, type +270, read +89, write +32, member_access +12, method_call -4), refs +857 rust-ripgrep: resolved +34 (call +31, method_call -30, member_access +33), refs +1249 ts-zod: resolved -191 (call -62, type -77, member_access -50, import -2) js-express: resolved -42 (member_access -42) ``` The shipped JS/TS packages resolve FEWER refs than the old pins. That is either a shipped recall regression or wrong binds the old pins made. Totals cannot say which, so no bless yet. In progress: a reusable `#[ignore]` bind-diff suite, joined on (path, line, col, kind, occurrence) and split by `resolved_by`, with hand-checked samples of added, removed and unchanged binds for all four repos. Housekeeping: three corpus checkouts held stale `.code-index/` first-contact state from 2026-10-20. That made the harness refuse correctly. They were backed up and removed (noted in #546).
Author
Member

Bind account: the gate switch exposes two SHIPPED defects; no bless until both are fixed

The reusable suite crates/indexer/tests/corpus_bind_diff.rs (#[ignore]) is on branch codex-534 (18cfce62).

  • Env vars: COSI_BIND_DIFF_REPO, COSI_BIND_DIFF_BASE/HEAD (frozen|shipped), COSI_BIND_DIFF_OUT.
  • It joins on (path, line, col, kind, occurrence) and splits by resolved_by.
  • Self-check mutation: dropping kind from the join goes red.
Repo Added Removed Retargeted Unchanged resolved Verdict (hand-checked samples)
ts-zod 47 238 0 8999 Improvement. 20/20 sampled removals were WRONG binds of the old pin (84 constructor-param Class → util.Class, 36 enum members → classes, callbacks → unrelated locals). The 10 sampled additions are correct.
js-express 0 42 0 3253 Improvement. 10/10 removals were wrong (params/properties bound to unrelated locals). Lexical-scope verdicts in the guest (6c6ca5de) explain it.
cs-dapper 609 5 32 4120 Mixed. Most additions are correct, but 26 new WRONG tier1r_receiver writes in benchmarks/Dapper.Tests.Performance/LegacyTests.cs bind post.Id/post.Text/… to Dashing.Post instead of Performance.Post. The file is in namespace Dapper.Tests.Performance and has using Dapper.Tests.Performance.Dashing;. In C#, the enclosing namespace's Post takes precedence over the using-imported one (verified by the lead). Also 2 correct inherited calls lost.
rust-ripgrep 66 32 0 16899 Recall regression. 30 CORRECT binds lost: msgs[0].unwrap_begin() (tests/json.rs:162 → Message::unwrap_begin, verified by the lead), 26 Message.unwrap_* + 4 IncrementalIgnore.root/normalize. The shipped rust package records no qualifier for index-expression receivers.

Unchanged-bind samples were correct in all four repos. The full sampled rows are in the account.

Decision (lead): the gate switch (65d4218c) is correct and stays. baseline.json is NOT re-blessed until the C# enclosing-namespace precedence (#541) and the Rust index-receiver qualifier regression (#540) are fixed in the same train. Then the bless reason cites this account.

## Bind account: the gate switch exposes two SHIPPED defects; no bless until both are fixed The reusable suite `crates/indexer/tests/corpus_bind_diff.rs` (`#[ignore]`) is on branch `codex-534` (`18cfce62`). - Env vars: `COSI_BIND_DIFF_REPO`, `COSI_BIND_DIFF_BASE`/`HEAD` (`frozen`|`shipped`), `COSI_BIND_DIFF_OUT`. - It joins on (path, line, col, kind, occurrence) and splits by `resolved_by`. - Self-check mutation: dropping `kind` from the join goes red. | Repo | Added | Removed | Retargeted | Unchanged resolved | Verdict (hand-checked samples) | |---|---:|---:|---:|---:|---| | ts-zod | 47 | 238 | 0 | 8999 | **Improvement.** 20/20 sampled removals were WRONG binds of the old pin (84 constructor-param `Class` → `util.Class`, 36 enum members → classes, callbacks → unrelated locals). The 10 sampled additions are correct. | | js-express | 0 | 42 | 0 | 3253 | **Improvement.** 10/10 removals were wrong (params/properties bound to unrelated locals). Lexical-scope verdicts in the guest (`6c6ca5de`) explain it. | | cs-dapper | 609 | 5 | 32 | 4120 | **Mixed.** Most additions are correct, but **26 new WRONG `tier1r_receiver` writes** in `benchmarks/Dapper.Tests.Performance/LegacyTests.cs` bind `post.Id`/`post.Text`/… to `Dashing.Post` instead of `Performance.Post`. The file is in `namespace Dapper.Tests.Performance` and has `using Dapper.Tests.Performance.Dashing;`. In C#, the enclosing namespace's `Post` takes precedence over the using-imported one (verified by the lead). Also 2 correct inherited calls lost. | | rust-ripgrep | 66 | 32 | 0 | 16899 | **Recall regression.** 30 CORRECT binds lost: `msgs[0].unwrap_begin()` (`tests/json.rs:162` → `Message::unwrap_begin`, verified by the lead), 26 `Message.unwrap_*` + 4 `IncrementalIgnore.root/normalize`. The shipped rust package records no qualifier for index-expression receivers. | Unchanged-bind samples were correct in all four repos. The full sampled rows are in the account. Decision (lead): the gate switch (`65d4218c`) is correct and stays. `baseline.json` is NOT re-blessed until the C# enclosing-namespace precedence (#541) and the Rust index-receiver qualifier regression (#540) are fixed in the same train. Then the bless reason cites this account.
Author
Member

Bind account for the re-bless on integration-1109 (e1420994) against the master-blessed baseline, all four moved repos, joined on (path, line, col, kind, occurrence).

Repo Δ resolved Added (audited: correct/wrong) Removed (audited)
rust-ripgrep +52 35/0 (tier1q_pass1 +51 is the largest bucket) 14 wrong
ts-zod −207 20/0 20 wrong
js-express −42 none 20 wrong
cs-dapper +1678 ~140, stratified per resolved_by bucket: all correct 3 wrong, 2 correct

Dapper +1678:

  • about 960 from #541: namespace-aware simple types (Person, CommandDefinition) and their typed receiver members (type_fqn, tier1r_receiver);
  • about 715 from the switch to the shipped C# package: generic calls and types, member refs such as QueryImpl<T> and cache.Deserializer.

All 32 retargets are correct. Each one adds the namespace to the target identity; the target location does not change.

Blocker, two correct binds lost under the shipped C# package:

  • Dapper/SqlMapper.Identity.cs:51: base.GetType(index) → Identity.GetType;
  • Dapper.Rainbow/SqlCompactDatabase.cs:38: inherited GetParamNames(o) → Database.GetParamNames.

Both are inherited-member calls. The shipped package marks the base ref DIRECT_SUPERTYPE, and the proven-base path then fails to bind. A fix is in progress; the bless waits for it and for a re-measure.

Bind account for the re-bless on `integration-1109` (`e1420994`) against the master-blessed baseline, all four moved repos, joined on `(path, line, col, kind, occurrence)`. | Repo | Δ resolved | Added (audited: correct/wrong) | Removed (audited) | |---|---:|---|---| | rust-ripgrep | +52 | 35/0 (tier1q_pass1 +51 is the largest bucket) | 14 wrong | | ts-zod | −207 | 20/0 | 20 wrong | | js-express | −42 | none | 20 wrong | | cs-dapper | +1678 | ~140, stratified per resolved_by bucket: all correct | 3 wrong, **2 correct** | **Dapper +1678:** - about 960 from #541: namespace-aware simple types (`Person`, `CommandDefinition`) and their typed receiver members (`type_fqn`, `tier1r_receiver`); - about 715 from the switch to the shipped C# package: generic calls and types, member refs such as `QueryImpl<T>` and `cache.Deserializer`. All 32 retargets are correct. Each one adds the namespace to the target identity; the target location does not change. **Blocker, two correct binds lost under the shipped C# package:** - `Dapper/SqlMapper.Identity.cs:51`: `base.GetType(index)` → `Identity.GetType`; - `Dapper.Rainbow/SqlCompactDatabase.cs:38`: inherited `GetParamNames(o)` → `Database.GetParamNames`. Both are inherited-member calls. The shipped package marks the base ref `DIRECT_SUPERTYPE`, and the proven-base path then fails to bind. A fix is in progress; the bless waits for it and for a re-measure.
Author
Member

C# items done, and the corpus baseline is re-blessed on integration-1109 (eefa9b6f). Nothing is pushed yet.

The degraded csharp_partial stage (codex-partial, c3b85b39):

  • The worst-case work_estimate product (cs-dapper: 9,488,891,035 against a budget of 50,000,000) is replaced by pricing over the actual candidate keys (file/language/FQN and import-key histograms): 2,100,513. The budget is unchanged.
  • tier3 and the partial scopes use the same mechanism.
  • stages_skipped and the WARN are deduplicated, and the WARN fires on the degradation transition.
  • All six stages are non-degraded on all nine pins.
  • cs-dapper cost: +2.18% VM steps.

The withdrawal (173fbbbf): running the stage to completion exposed 163 correct dapper binds withdrawn.

  • Cause: 67 imports in 11 files lack namespace-import semantics. inherited_members.rs then withheld project-wide proof and replaced earlier base proofs with NULL, and member_lookup.rs substituted that NULL for the base ref's existing target. That reached BenchmarkBase, TestBase, the factories and Identity.GetType through their base chains.
  • Fix: base targets fall back to the existing bind unless there is positive proof for the same ref. Missing proof yields Unknown, never a refusal.
  • A test for "missing proof in file A must not clear a bind in file B" was mutation-checked red.

The direct-base proof (codex-base, 9e410c1c): arity and the inherited nested scope now restore base.GetType(index) and the inherited GetParamNames/TableName.

Bless:

Repo Δ resolved
cs-dapper +1685
rust-ripgrep +52
ts-zod −207
js-express −42
  • The final bind diff against the pre-fix integration binary (all 9 repos): +4 audited correct, 0 removed.
  • The account against master is in the comment above: every audited removal is wrong, ~175 additions and all 32 retargets are correct.
  • The bless reason in baseline.json cites this account.

Next: the single full gate run on the integration tree, including every corpus suite in ci.yml and the nightly jobs, then CI.

C# items done, and the corpus baseline is re-blessed on `integration-1109` (`eefa9b6f`). Nothing is pushed yet. **The degraded `csharp_partial` stage** (codex-partial, `c3b85b39`): - The worst-case `work_estimate` product (cs-dapper: 9,488,891,035 against a budget of 50,000,000) is replaced by pricing over the actual candidate keys (file/language/FQN and import-key histograms): 2,100,513. The budget is unchanged. - tier3 and the partial scopes use the same mechanism. - `stages_skipped` and the WARN are deduplicated, and the WARN fires on the degradation transition. - All six stages are non-degraded on all nine pins. - cs-dapper cost: +2.18% VM steps. **The withdrawal** (`173fbbbf`): running the stage to completion exposed **163 correct dapper binds withdrawn**. - Cause: 67 imports in 11 files lack namespace-import semantics. `inherited_members.rs` then withheld project-wide proof and replaced earlier base proofs with NULL, and `member_lookup.rs` substituted that NULL for the base ref's existing target. That reached BenchmarkBase, TestBase, the factories and `Identity.GetType` through their base chains. - Fix: base targets fall back to the existing bind unless there is positive proof for the same ref. Missing proof yields Unknown, never a refusal. - A test for "missing proof in file A must not clear a bind in file B" was mutation-checked red. **The direct-base proof** (codex-base, `9e410c1c`): arity and the inherited nested scope now restore `base.GetType(index)` and the inherited `GetParamNames`/`TableName`. **Bless:** | Repo | Δ resolved | |---|---:| | cs-dapper | +1685 | | rust-ripgrep | +52 | | ts-zod | −207 | | js-express | −42 | - The final bind diff against the pre-fix integration binary (all 9 repos): +4 audited correct, 0 removed. - The account against master is in the comment above: every audited removal is wrong, ~175 additions and all 32 retargets are correct. - The bless reason in `baseline.json` cites this account. **Next:** the single full gate run on the integration tree, including every corpus suite in ci.yml and the nightly jobs, then CI.
Author
Member

Status (local integration branch integration-1109 @ 60368c0d, not pushed):

  • C# fixes (codex-f3, 2 rounds): namespace_type provenance replaces type_fqn on unqualified refs, with an arity check. A failed linearization now returns Search::Refused. The COALESCE fallback that bypassed base proof is removed (member_lookup.rs, inherited_members.rs), and the alias veto is shared. Package readiness is 28/28 and the bind diff is zero.
  • Cost (codex-f4): schema 93 adds covering/partial indexes, a keyed directory histogram and indexed type-position seeks. Every pinned repo is below its old band except cs-dapper at +6.6% over master. That +6.6% was attributed statement by statement to this issue's C# proofs.
  • Records re-recorded in 60368c0d, each with its reason: the stage, cost, tier-3, host-package-lifecycle and ruby_package_cost records, plus the agent bench, where cs-dapper correct_via_fallback went 25→15. The whole bench move is who_calls.SetupCommand, whose 10 callers now resolve; recall is unchanged. baseline.json moved only in the audited bind-account re-bless, eefa9b6f.
  • Second full gate run on 60368c0d, on an idle machine: all 44 legs rc=0. That includes corpus, all package legs, tier3, agent_bench, plugin_path_cost and mixed_load. precision_gate is 7/7 with phantoms=0.
  • Next: CI, after the push is approved.
Status (local integration branch `integration-1109` @ 60368c0d, not pushed): - C# fixes (codex-f3, 2 rounds): `namespace_type` provenance replaces `type_fqn` on unqualified refs, with an arity check. A failed linearization now returns `Search::Refused`. The COALESCE fallback that bypassed base proof is removed (`member_lookup.rs`, `inherited_members.rs`), and the alias veto is shared. Package readiness is 28/28 and the bind diff is zero. - Cost (codex-f4): schema 93 adds covering/partial indexes, a keyed directory histogram and indexed type-position seeks. Every pinned repo is below its old band except cs-dapper at +6.6% over master. That +6.6% was attributed statement by statement to this issue's C# proofs. - Records re-recorded in 60368c0d, each with its reason: the stage, cost, tier-3, host-package-lifecycle and ruby_package_cost records, plus the agent bench, where cs-dapper `correct_via_fallback` went 25→15. The whole bench move is `who_calls.SetupCommand`, whose 10 callers now resolve; recall is unchanged. `baseline.json` moved only in the audited bind-account re-bless, eefa9b6f. - Second full gate run on 60368c0d, on an idle machine: all 44 legs rc=0. That includes corpus, all package legs, tier3, agent_bench, plugin_path_cost and mixed_load. precision_gate is 7/7 with phantoms=0. - Next: CI, after the push is approved.
Author
Member

Released in v0.41.48 (source PR #564, version PR #565). The C# bind account and the audited baseline re-bless are in this release; the corpus movement is listed in the release notes.

🤖 Generated with Claude Code

Released in [v0.41.48](https://git.h-dv.de/h-dv/code-index/releases/tag/v0.41.48) (source PR #564, version PR #565). The C# bind account and the audited baseline re-bless are in this release; the corpus movement is listed in the release notes. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Author
Member

Merged into #540.
Shipped identity is graded by shipped.rs::gate_packages_match_checkout_records; resolver_cost_model.rs grades actual-key pricing.
Withdrawal/base fixes and the audited baseline shipped; evidence is in #540 Done.
Remaining: Conditional imports (branch-union facts and exact z2/mutation acceptance).

Merged into #540. Shipped identity is graded by shipped.rs::gate_packages_match_checkout_records; resolver_cost_model.rs grades actual-key pricing. Withdrawal/base fixes and the audited baseline shipped; evidence is in #540 Done. Remaining: Conditional imports (branch-union facts and exact z2/mutation acceptance).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
h-dv/code-index#534
No description provided.