Skip to content

ci(antipattern): TS check reads .claude/CLAUDE.md exemption table - #40

Merged
hyperpolymath merged 1 commit into
mainfrom
ci/antipattern-dynamic-exemptions
May 3, 2026
Merged

ci(antipattern): TS check reads .claude/CLAUDE.md exemption table#40
hyperpolymath merged 1 commit into
mainfrom
ci/antipattern-dynamic-exemptions

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Replaces the static grep-chain TS check with a python step that:

  • Applies the universal builtin allowlist (bindings/, tests/, scripts/, mcp-adapter/, vscode/, cli/, mod.ts, lsp-server.ts, deno-*/, etc.)
  • Reads the per-repo .claude/CLAUDE.md 'TypeScript Exemptions' table at CI time and treats each Path row as allowed.

Why: the previous static allowlist required editing the workflow whenever a legitimate per-repo exemption was needed. This made the per-repo .claude/CLAUDE.md exemption table (the documented source of truth) and the workflow drift apart. Now they're the same single source.

To exempt a path going forward: add one row to .claude/CLAUDE.md's 'TypeScript Exemptions' table — no workflow edit required.

To migrate off TS: see Human_Programming_Guide.adoc migration chapter (in affinescript repo).

@hyperpolymath
hyperpolymath merged commit aa1c1f3 into main May 3, 2026
6 checks passed
@hyperpolymath
hyperpolymath deleted the ci/antipattern-dynamic-exemptions branch May 3, 2026 20:41
Repository owner deleted a comment from chatgpt-codex-connector Bot May 13, 2026
hyperpolymath added a commit that referenced this pull request Aug 26, 2026
…#644)

Owner ruling **2026-08-26**. Projects that are *played* rather than
*built upon* are `AGPL-3.0-or-later` for code, `CC-BY-SA-4.0` for prose.

## Rationale, in the owner's terms

> If a thing is made to help the world practically → **MPL-2.0**, so it
spreads with minimal friction.
> If it's a game → **AGPL**.

That is coherent rather than arbitrary: MPL's copyleft triggers on
*distribution*, and games are the category most likely to be **run as a
hosted service** rather than shipped as a copy — so Rule 1's copyleft is
never reached. AGPL §13 is the only clause in the family that closes
that gap.

## This broadens Rule 3

| | Test | Applies to |
|---|---|---|
| **Rule 3** (existing) | *relationship* — co-developed with Joshua | 3
named repos |
| **Rule 5** (new) | *subject matter* — is it a game | any game,
regardless of co-developer |

Rule 3a is unchanged: owner-only components inside an AGPL work stay
MPL-2.0.

## Why it had to be written down before anything is flipped

`chronicles-of-slavia` and `688-attack-hub` are **already AGPL** but
appear in **no rule's named list** — so under the previous text they
read as *drift*. Sweep #40 did in fact flatten two AGPL games back
toward the default once already.

**A rule that exists only as an intention gets "corrected" by the next
automated pass.** This PR is what makes the ruling survive.

## Members

**Already AGPL (verified against each root LICENSE):**
`chronicles-of-slavia`, `688-attack-hub`, `IDApTIK`,
`airborne-submarine-squadron`, `f117a-stealth-glider`,
`f19-stealth-glider`, `the-nash-equilibrium`

**To flip (currently MPL):** `sr71-blackglider`, `proof-of-work`,
`road-skate`, `megadog`

**Needs verifying:** `paint-type` — Rule 3 names it AGPL but its root
`LICENSE` is not machine-readable

## Explicitly NOT in Rule 5

- **`knot-rider`** — owner ruling: despite the name, an *exploration of
knots*, not a game. Stays MPL-2.0.
- **`project-ovine`** — a herding game that exists as a **proving ground
for the enaction engine**. The game is the test harness, not the
product. **Not yet ruled**; stays MPL until it is.

## ⚠️ This PR does not authorise a sweep

Per **A2** — *"No automated or bulk SPDX/licence change (sed sweep,
script, agent pass) on any estate repo, ever"* — the four flips are
**manual, per-file, owner-only**.

This section records **what** should change and **why it is correct**.
The presence of a repo name in the members table must never be read as
authorisation to script it. The section says so in its own text, so a
future agent reading only the table cannot mistake it.

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

Co-authored-by: Claude Opus 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