Skip to content

Estate drift: estate-rules content scanners false-positive on policy ADRs (check-no-vlang / check-no-project-identifiers) #84

Description

@hyperpolymath

Sub-issue of #66. Discovered 2026-05-17 while fixing #83 (root-allow.txt) — a separate, independent cause of the estate-rules job staying red.

Symptom

On rsr-template-repo (and any consumer carrying the doc), after #83's root-shape fix, the estate-rules job still fails at later steps:

  • No V-lang references (check-no-vlang.sh): 4 hits, all in docs/decisions/0002-estate-tech-debt-compounding-fixes.adoc.
  • Neutral template (no project identifiers) (check-no-project-identifiers.sh): hits at 0002-…adoc:114,136 (affinescript, "AffineScript, not ReScript").

Root cause

The scanners do substring/identifier matching with no exemption for governance decision-records that legitimately discuss banned tech / project policy. ADR 0002-estate-tech-debt-compounding-fixes.adoc documents the V-lang ban and the AffineScript-over-ReScript decision — citing those names is the content's purpose, not drift. The checks are therefore false-positive on policy docs. The hardcoded remediation pointer in check-no-project-identifiers.sh ("see hyperpolymath/rsr-template-repo#45") is stale#45 is CLOSED and was a different concern, so this is currently untracked.

Fix options (decide at source)

  • A. Exempt docs/decisions/** (ADRs) from check-no-vlang / check-no-project-identifiers (decision-records are meta-policy, not template body) — narrowest, principled.
  • B. Add justified rows to .machine_readable/identifier-allow.txt (+ a vlang equivalent) for ADR 0002 — per the checks' own escape hatch; more entries to maintain.
  • C. Reword ADR 0002 to avoid the literal tokens — rejected: mutilates a governance record to satisfy a scanner (anti-pattern; violates truth-in-tooling / Explicit-Escape).
  • Also: update the stale #45 pointer in check-no-project-identifiers.sh to this issue.

Recommend A (+ pointer fix). Canonical scripts live in rsr-template-repo scripts/; fix there + consumer sweep.

Refs #66

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions