CANDIDATE lint rule: misaddressed-audience (Tier-2 prose smell) #135
Labels
No labels
P0
P1
P2
P3
bug
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#135
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
CANDIDATE lint rule -- NOT an approved catalog entry. Proposal only, gated
by catalog admission (
docs/adr/0060*, change-control banner inplugins/os-aidd-lint/references/tier2-charter.md). Derived by runningos-aidd-lint's own Tier-2 judge against its own
skills/dir, thenauditing what it missed.
Problem
tier2-charter.md's own top-of-file change-control banner is pastedverbatim into the live judge prompt: "Any edit requires: 1. Re-running the
eval fixtures... 3. Human review of the diff." Also, inside
misplaced-pre-emption: "Do not invest further tooling effort narrowingthis entry without a larger sample." Both address a human maintainer
editing the file, not the judge consuming it at inference time -- the
judge has no fixtures to run, no diff to review, no tooling to invest.
Detection (candidate, not finalized)
Flag second-person/imperative text addressed to a human editor role
(re-running fixtures, merging, reviewing diffs) inside a passage the
consuming model has no tool access or task scope to act on. Needs a human
call on how to state this deterministically, or whether it's judgment-only.
Correction
n/a -- not designed. Plausible shape: move human-editing instructions out
of the frozen prompt asset (e.g. into CLAUDE.md/CONTRIBUTING), leaving only
judge-facing content in the pasted text.
Pass/fail examples
the diff."
Provenance
2026-07-26,
/os-aidd-lint:checkself-run + miss audit. Single instance:tier2-charter.mdbanner +misplaced-pre-emptionclosing sentence.Open risk -- single-instance provenance
Exactly ONE source file. Two of the three EXISTING catalog smells were
also derived from thin single/narrow samples and remain
provisionalwithnear-zero confirmed recurrence. Do not promote without a broader sample.
Implementation plan
Not assigned. Needs human catalog-admission decision first.
ready-for-human, notready-for-agent.External review (Codex / GPT-5.6 tier), 2026-07-26 — reformulation proposed, not yet applied.
Codex judges the smell real but the name and boundary wrong. Proposed rename:
actor-incompatible-directive. Its objection: change-control language such as "requires human review" is NOT inherently a smell — the charter's own frozen-file banner is a legitimate use of it. The defect exists only when the directive reaches an actor incapable of executing it. Note that this sharpens the non-example boundary the ticket currently lacks.Codex independently agreed these three candidates should NOT be promoted to the live catalog yet, on the same single-instance-provenance grounds already recorded in each ticket. It proposed a three-state pipeline (candidate -> shadow -> confirmed) with a promotion threshold of: at least 5 confirmed positives across at least 3 files and at least 2 repos (no more than 2 from the originating file), at least 10 hard negatives, dual-reviewer agreement, roughly 90% precision / 80% recall on a held-out eval, and no regression on existing categories.
decision recorded — deferred as a candidate pending a second confirmed sample from a different repo; reframed per review as 'actor-incompatible-directive' (the smell is unexecutable-by-this-actor instructions, not change-control language); the sole known instance was fixed structurally by PromptTextFilter (commit
c41879e).Cross-repo sweep found one instance of the actor-incompatible-directive pattern: cc-plugins rails-ui-component references/tiers/tier-patterns.md:118 — 'test with screen readers' inside agent-executed guidance. That's sample 2 of the ≥5 bar. Still a candidate.
Frozen in the 2026-08-16 backlog reset — see #419 for the expiry procedure. Do not work unless a live run rediscovers this issue.