Skip to content

Retire dead TS/RS carve-outs; reframe affinescript-cli as npm front door - #739

Merged
hyperpolymath merged 1 commit into
mainfrom
retire-ts-carveouts
Aug 31, 2026
Merged

Retire dead TS/RS carve-outs; reframe affinescript-cli as npm front door#739
hyperpolymath merged 1 commit into
mainfrom
retire-ts-carveouts

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

What

Removes three carve-out classes from cicd_rules.ex whose unblock conditions are now met, and reframes one:

Carve-out Rules it leaves Proof it's dead
avow-protocol/telegram-bot/avow-telegram-bot/ typescript, rescript, rescript_interface Bot rewritten in AffineScript — avow-protocol@main has 0 .ts, 0 .res under telegram-bot/
affinescript-deno-test/ all six rules 100% .affine on affinescript@main (PRs #735/#736); the developer-ecosystem mirror is also all-.affine; no rule-matching file exists under this substring anywhere in the estate
tsconfig.json typescript Unreachable: the rule's glob is *.ts, a .json path never reaches the allowlist
affinescript-cli/ typescript, rescript, rescript_interface, javascript_jsx — stays in nodejs + javascript Reframed from "bootstrap shim" to permanent npm front door (runtime-agnostic JS distribution shim: downloads the pinned native binary, SHA-256-verifies, execs). Its 4 JS files + lockfile are legitimately permanent; .ts/.res/.jsx there never is.

Because path_allow_prefixes matches with String.contains?/2 (substring, estate-wide), every removal was verified against every location tracking these paths, not just one repo.

Tests

Former exemption tests are flipped to flag tests — the flipped test is the gate that keeps the retirement from silently regressing. mix test test/rules/187 tests, 0 failures.

Companion

standards .claude/CLAUDE.md mirror tables (TS/ReScript/npm/JavaScript) updated in a companion PR, per the SSOT footer ("the detection rule … is the single source of truth; this table mirrors that").

🤖 Generated with Claude Code

… npm front door

Retires three carve-out classes whose unblock conditions are met, verified
estate-wide 2026-08-31:

- avow telegram-bot (typescript/rescript/rescript_interface rules): the bot
  was rewritten in AffineScript. avow-protocol main has zero .ts/.res under
  telegram-bot/ (36 files, 6 .affine), so removal is a behavioral no-op.
- affinescript-deno-test/ (all six rules): the harness self-hosted to 100%
  .affine (affinescript PRs #735/#736); the developer-ecosystem mirror is
  also all-.affine. No TS/JS/.res/lockfile exists under this path anywhere.
- tsconfig.json (typescript rule): dead entry. The rule's glob is *.ts, so
  a .json path can never reach the allowlist.

affinescript-cli/ is reframed, not retired: it leaves the TS/ReScript/JSX
rules (its 4 JS files are deliberately runtime-agnostic npm distribution
code; no .ts/.res/.jsx belongs there) and stays in nodejs_detected +
javascript_detected as the permanent npm front door (downloads the pinned
native binary, SHA-256-verifies, execs).

Former exemption tests are flipped to flag tests so a regression cannot
silently restore a retired carve-out. Mirrored in standards/.claude/CLAUDE.md
in a companion PR.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 50 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 66d448da-e6c7-4322-898d-6fe9169904e7

📥 Commits

Reviewing files that changed from the base of the PR and between 408339a and 74b672c.

📒 Files selected for processing (3)
  • lib/rules/cicd_rules.ex
  • test/rules/cicd_rules_rescript_npm_js_test.exs
  • test/rules/cicd_rules_typescript_test.exs

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

Comment @coderabbitai help to get the list of available commands.

@hyperpolymath
hyperpolymath merged commit 35db923 into main Aug 31, 2026
80 of 99 checks passed
@hyperpolymath
hyperpolymath deleted the retire-ts-carveouts branch August 31, 2026 12:44
hyperpolymath added a commit to hyperpolymath/standards that referenced this pull request Aug 31, 2026
…as npm front door (#699)

Mirror of the SSOT change in hyperpolymath/hypatia#739 (`cicd_rules`
`path_allow_prefixes`). Three retirements, each proven a no-op
estate-wide before removal:

| Retired entry | Proof it was dead |
|---|---|
| `avow-protocol/telegram-bot/**` (TS + RS tables) | Bot rewritten in
AffineScript — **zero** `.ts`/`.res` under `telegram-bot/` on
avow-protocol main (verified 2026-08-31). The "PERMANENT / no
AffineScript binding planned" rationale no longer described reality. |
| `affinescript-deno-test/**` (all four tables) | Harness self-hosted to
**100% `.affine`** (affinescript#735/#736) — the row's own unblock
condition ("When AffineScript self-hosts these") was met. Verified in
every location the hypatia substring match could touch, incl.
developer-ecosystem's mirror via the GitHub API. |
| `**/tsconfig.json` (TS tooling row) | Dead entry —
`typescript_detected` matches `*.ts`, so a `.json` path can never reach
the allowlist. |

`affinescript-cli/**` is **reframed, not retired**: it leaves the
TS/ReScript tables (it is JS-only) and stays in the npm + JavaScript
tables as *npm front door* — the permanent runtime-agnostic distribution
shim (downloads pinned native binary, SHA-256-verifies, caches, execs).
Per owner ruling 2026-08-31 it is a distribution boundary, not
scaffolding awaiting self-hosting.

Files:
- `.claude/CLAUDE.md` — the four exemption tables (Layer-2 gate parses
these headings; row-format untouched)
- `rhodium-standard-repositories/spec/LANGUAGE-POLICY.adoc` — same
retirements in the four language blocks, new **v1.5.0** amendment,
`:revnumber:`/`:revdate:`/Version-Status NOTE corrected (all stale at
1.2.2 since v1.3.0)
- `docs/EXEMPTION-MECHANISMS.adoc` — swapped the retired telegram
carve-out for a stable vscode example in the `.governance-allowlist`
illustration

The removed rows reference paths absent from this repo, so standards'
own runtime `check-ts-allowlist` gate is unaffected. Historical records
(dated migration inventories, changelog entries, the synthetic
parser-test fixture in `scripts/tests/check-ts-allowlist-test.sh`)
deliberately untouched.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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