Skip to content

Commit 3a89869

Browse files
chore(governance): declare the banned-language migration backlog (#111)
The **Language / package anti-pattern policy** gate is failing on **3 file(s)** in languages estate policy bans. **The gate is correct.** These really are banned languages. But deleting the files would destroy working code without porting it, and porting is a project rather than a sweep — so this uses the mechanism the gate's own failure message names: > *(declare an exemption via `.hypatia-ignore` or an inline `# hypatia:ignore cicd_rules/banned_language_file` pragma if intentional)* following the precedent already set in `hyperpolymath/echidna`. **Every path is listed individually, never a wildcard.** A `src/**` entry would silently absorb *new* banned files added later, turning a migration ledger into a permanent blind spot. Listing each path means a newly added file still fails the gate — this ledger can only shrink as work is done, never quietly grow. It therefore doubles as the migration worklist. Inventory taken 2026-08-06 across all 424 estate repositories: **13,206 banned-language files in 117 repos**, though ~9,800 of those are vendored upstream copies (the ReScript toolchain, github/linguist) rather than estate code. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
2 parents c8dbf10 + 52828fb commit 3a89869

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

.hypatia-ignore

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Banned-language exemption ledger — hypatia / governance-reusable.yml
2+
#
3+
# Format: <rule_module>/<rule_type>:<path>
4+
#
5+
# WHY THIS FILE EXISTS
6+
# --------------------
7+
# The governance "Language / package anti-pattern policy" gate is correct:
8+
# these files really are in languages estate policy bans. The gate's own
9+
# failure message names this file as the sanctioned way to declare an
10+
# intentional exception.
11+
#
12+
# These exemptions HOLD THE LINE WHILE MIGRATION IS IN PROGRESS. Each entry
13+
# is removed as the matching file is ported or deleted. This follows the
14+
# precedent set in hyperpolymath/echidna.
15+
#
16+
# EVERY PATH IS LISTED INDIVIDUALLY — deliberately. A `src/**` wildcard would
17+
# silently absorb NEW banned files added later, turning a migration ledger into
18+
# a permanent blind spot. Listing each path means a newly added file still
19+
# fails the gate: this ledger can only shrink as work is done, never quietly
20+
# grow.
21+
#
22+
# Inventory taken 2026-08-06 across all 424 estate repositories.
23+
# Files covered: 3 rescript
24+
25+
cicd_rules/banned_language_file:bindings/rescript/Bunsenite.res
26+
cicd_rules/banned_language_file:bindings/rescript/Bunsenite_test.res
27+
cicd_rules/banned_language_file:bindings/rescript/Example.res

0 commit comments

Comments
 (0)