Skip to content

fix(search): refuse only when no identifier occurs (E73) - merge paused by review - #113

Merged
ManSio merged 5 commits into
mainfrom
fix/false-abstain
Nov 11, 2026
Merged

ManSio merged 5 commits into
mainfrom
fix/false-abstain

Conversation

@ManSio

@ManSio ManSio commented Nov 10, 2026

Copy link
Copy Markdown
Owner

fix(search): refuse only when no identifier occurs (E73) - merge paused by review

_abstains decided "the subject does not occur" from the FIRST extracted
identifier. On commit prose that token is a dotted annotation or a type name, so
the answer was emptied while a later name occurred hundreds of times:

_orm.registry=0                  Declarative=785
Databricks=0                     TypeError=290
_orm.relationship.primaryjoin=0  omit_join=47

On the 40 solvable sqlalchemy commits 13 answered nothing this way (32.5%).

Gates (frozen spec in experiments/false_abstain_2026_11/frozen/PLAN.md):

P1  sqlalchemy tool hit@5   >= 15/40   PASS  11 -> 17
P2  B1 dev tool hit@5       >= 19/71   PASS  19, unchanged
P3  44 negative tasks       0 leaks    PASS  44/44 silent
P4  13 formerly-empty       >= 8/13    FAIL  6/13 (bar derived from a
                                           bypass run; P4 stays FAIL, the
                                           bar was not edited)
P5  requests tool hit@5     >= 10/25   PASS  10 -> 12

Independent review: PASS with remarks, two major findings.

  1. The "neighbours, not matches" warning stays tied to the first identifier and
    is now false on the recovered answers - but a test
    (test_no_exact_hits_says_the_results_are_neighbours) pins that wording, so
    fixing it changes a test contract: owner decision.
  2. per counts only the first two identifiers while four are extracted, so
    "no identifier occurs" is stronger than the code; fixing it changes the grep
    channel's coverage and needs a re-measure of P1/P5.

Conversion rule applied -> merge paused, recorded in AGENT_DIARY.md, owner
decides in the morning. Nits from the review that were safe (None/negative
counters fail-open, dead branch removed) are fixed in the same pass.

@coderabbitai

coderabbitai Bot commented Nov 10, 2026 •

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 5a056d32-cf16-4a51-bb5c-fd92c9bd13d2
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

MSCodeBase Agent added 3 commits November 11, 2026 01:27
`_abstains` decided "the subject does not occur" from the FIRST extracted
identifier. On commit prose that token is a dotted annotation or a type name, so
the answer was emptied while a later name occurred hundreds of times:

    _orm.registry=0            Declarative=785
    Databricks=0               TypeError=290
    _orm.relationship.primaryjoin=0   omit_join=47

On the 40 solvable sqlalchemy commits 13 answered nothing this way (32.5%), and
with the rows shown the gold was in the top-5 for 8 of them.

The fix abstains only when NO identifier occurs. The policy is untouched: an
answer whose tokens are all absent is still withheld (2 of the 13 stay refused).

    sqlalchemy, 40 commits   hit@5  11 -> 17        (bar >= 15)
    B1 dev, 71 commits       19/71 unchanged        (bar 19)
    44 negative tasks        44/44 silent           (bar 0 leaks)
    13 formerly-empty        6/13 recovered         (bar 8 - FAILED)

P4 was miscalibrated in the frozen spec: the bar came from an
include_neighbours=true run, which bypasses the refusal, while the change keeps
it; the two remaining refusals are the all-zero case, so the maximum is 11/13.
The gate is recorded as failed and not edited afterwards; the frozen decision
rule ("P4 < 8 -> revert") and the measurement (P1 +6, no leak) disagree, so the
ship decision is with the owner.

Frozen spec and full numbers: experiments/false_abstain_2026_11/.
…fect

Two follow-ups demanded by the ship procedure:

1. The E73 frozen spec gets a dated postscriptum: the P4 bar (>= 8/13) was
   derived from an include_neighbours=true run, which bypasses the refusal the
   change keeps; two of the thirteen commits have every identifier at zero and
   must stay refused, so the reachable maximum is 11/13. P4 stays FAIL in the
   run log; the bar is not re-edited and the number is not re-derived.

2. A regression test for the case the policy exists for: when every identifier
   is absent, the answer has no rows, says abstain, and hands back the exact
   `next: investigate(...)` call. The stub fails `has_symbol`, so the fail-open
   rule does not apply.

Red on sabotage: with `_abstains` forced to return False, 3 of 8 tests fail,
including this one.
@ManSio
ManSio merged commit 100cd18 into main Nov 11, 2026
13 checks passed
@ManSio

ManSio commented Nov 11, 2026

Copy link
Copy Markdown
Owner Author

Owner approved the merge (2026-11-11). Merged as 100cd18 after the conversion rule had been applied (review verdict collected, P5 recorded, both majors documented) and CI was CLEAN on eb84ad0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant