Skip to content

fix(audit-noise): under/at/on carry the same blanket-exemption weakness that in had, so conversational residue still escapes #3192

Description

@kyle-sexton

Summary

#3162 narrowed conversational-antecedent's in follower from a blanket exemption to a document-locator predicate, because as we discussed in yesterday's meeting was being silently suppressed. under, at, and on still have the identical weakness — they exempt unconditionally.

Same defect class, deliberately left out of that change so it could get its own corpus measurement.

What escapes today

Input Current Should be
As we agreed on Tuesday, the cap is 30s. not flagged flagged (T1)
As we decided at the standup, retry three times. not flagged flagged (T1)
As we agreed under time pressure, this is temporary. not flagged flagged (T1)
As we decided on the ADR's recommendation, … not flagged correctly not flagged

The referent in the first three is the conversation, not a written locus a reader can open — which is exactly the distinction audit_noise_follower_is_document_locator already encodes for in.

Why this was not folded into #3162

on in particular is high-traffic prose (based on, on the other hand, depends on, on disk), so narrowing it is a materially different false-positive risk from in. #3162's whole method was measuring each pattern change against the repo's 1136-file tracked-markdown corpus before shipping it; bolting three more followers on without that measurement would have undercut the standard the rest of that change was held to.

Suggested approach

The predicate already exists — audit_noise_follower_is_document_locator in plugins/docs-hygiene/skills/audit-noise/scripts/lib/noise-shapes.sh. The work is deciding, per follower, whether it should defer to that predicate or keep exempting unconditionally, and proving each choice against the corpus:

  • Baseline the corpus sweep first (detect.sh --paths-file over git ls-files '*.md' minus **/evals/fixtures/** and CHANGELOG.md).
  • Adjudicate every added finding as true or false positive — this change raises recall, so a non-zero delta is expected and each one needs a ruling.
  • on may warrant a tighter locator set than in, or may not be worth narrowing at all. That is a finding, not a failure.

Acceptance criteria

  • Each of under, at, on either defers to the locator predicate or keeps its blanket exemption, with the choice justified against corpus evidence.
  • Positive tests: as we agreed on Tuesday and as we decided at the standup flag.
  • Negative tests prove no new false positives on the high-traffic on idioms.
  • The existing above/below/earlier/later/previously/elsewhere stop-words keep working unchanged.
  • SKILL.md's conversational-antecedent treatment row stays true after the change.

Related

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions