Skip to content

chore(meta+grades): fix .scm/.a2ml + .md/.adoc + 17/4 workflow-count drift#33

Merged
hyperpolymath merged 1 commit intomainfrom
chore/required-files-a2ml-extension
Apr 30, 2026
Merged

chore(meta+grades): fix .scm/.a2ml + .md/.adoc + 17/4 workflow-count drift#33
hyperpolymath merged 1 commit intomainfrom
chore/required-files-a2ml-extension

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Summary

Three doc-drift corrections across .meta/REQUIRED-FILES, the immaculate guide, and the readiness-grades suite — all aligning prose docs with the canonical machine-readable rules.

1. .scm.a2ml for the 6a2 metadata files

.meta/REQUIRED-FILES.md listed META.scm / STATE.scm / ECOSYSTEM.scm / PLAYBOOK.scm / AGENTIC.scm / NEUROSYM.scm under "Mandatory SCM Files." The actual canonical extension is .a2ml.

Confirmed by user 2026-04-30: "a2ml for sure scm is removed except for guix related."

Consistent with this repo's own .machine_readable/6a2/AGENTIC.a2ml etc. (which use .a2ml, contradicting the doc) and with hypatia-rules/rsr-self-compliance.a2ml @forbidden_files:

- glob: "STATE.a2ml"
  at: "/"
  reason: "A2ML files go in .machine_readable/ only"

.scm is now reserved exclusively for Guix-related files (guix.scm, .guix-channel).

2. .md.adoc for REQUIRED-FILES itself

Per the hyperpolymath convention (AsciiDoc by default; Markdown only for files GitHub's community-health rules special-case by name), .meta/REQUIRED-FILES.md is internal documentation — it should be .adoc. Same syntax-conversion approach as PR hyperpolymath/rsr-template-repo#28.

3. "17 / 19 RSR workflows" → reference the canonical machine-readable rule

The actual machine-readable list of required workflows lives in hypatia-rules/rsr-self-compliance.a2ml @required_workflows and currently names 4 workflows:

@required_workflows:
- name: "hypatia-scan.yml"
  reason: "RSR R-050 (self-scan)"
- name: "mirror.yml"
  reason: "RSR R-051 (forge mirroring)"
- name: "scorecard.yml"
  reason: "RSR R-052 (OpenSSF Scorecard)"
- name: "rsr-antipattern.yml"
  reason: "RSR R-053 (antipattern check)"
@end

But several prose docs claimed "17 RSR workflows" (or "19 CI workflows"):

File Old claim Now
immaculate-guide/IMMACULATE-GUIDE.adoc:130 "17 required workflows" references @required_workflows (currently 4) + broader adoptable set
immaculate-guide/IMMACULATE-GUIDE.adoc:267 "17 required workflows from rsr-template-repo" enumerates the 4 mandated by name + notes broader optional set
toolchain-readiness-grades/TOOLCHAIN-READINESS-GRADES.adoc:228 "all 17 RSR workflows present" references @required_workflows
toolchain-readiness-grades/TOOLCHAIN-READINESS-GRADES.adoc:443 "All 17 RSR workflows present" references @required_workflows
toolchain-readiness-grades/TOOLCHAIN-READINESS-GRADES.a2ml:56 "RSR-FULL all 17 workflows green" "RSR-FULL all required workflows green (per …@required_workflows)"
toolchain-readiness-grades/SELF-ASSESSMENT.adoc:74 "all 17 RSR workflows present" references @required_workflows
component-readiness-grades/SELF-ASSESSMENT.adoc:32 "19 CI workflows" "RSR-required CI workflows (per …@required_workflows) + adopted optional set"

Replacing the hard count with a reference to the machine-readable rule makes the prose durable: if the canonical-required set changes from 4 to N tomorrow, the prose stays correct without further editing.

Why this matters

The numeric drift was visible to anyone reading: the prose docs claim 17 (or 19); the machine-readable rule says 4; this repo's own .github/workflows/ has 21; rsr-template-repo's has 25. None of the prose numbers matched the actual rule. With this PR, prose now points at the rule rather than restating an out-of-date count.

🤖 Generated with Claude Code

1. .meta/REQUIRED-FILES: .scm -> .a2ml for 6a2 metadata files.
   The 'Mandatory SCM Files' table listed META.scm/STATE.scm/etc., but
   the canonical extension is .a2ml. .scm is reserved for Guix-related
   files only (guix.scm, .guix-channel). Confirmed by user 2026-04-30
   and consistent with this repo's own .machine_readable/6a2/*.a2ml.

2. .meta/REQUIRED-FILES.md -> .adoc.
   Per the hyperpolymath convention (AsciiDoc by default, Markdown only
   for files GitHub's community-health rules special-case by name),
   internal documentation goes in .adoc.

3. 'all 17 RSR workflows' / '19 CI workflows' -> reference the canonical
   machine-readable @required_workflows rule.
   The actual list lives in hypatia-rules/rsr-self-compliance.a2ml and
   currently names 4 workflows (hypatia-scan, mirror, scorecard,
   rsr-antipattern). Several prose docs claimed 17 or 19. Replacing the
   hard count with a reference to the rule keeps the prose durable.

Affects:
  immaculate-guide/IMMACULATE-GUIDE.adoc (lines 130, 267)
  toolchain-readiness-grades/TOOLCHAIN-READINESS-GRADES.adoc (228, 443)
  toolchain-readiness-grades/TOOLCHAIN-READINESS-GRADES.a2ml (line 56)
  toolchain-readiness-grades/SELF-ASSESSMENT.adoc (line 74)
  component-readiness-grades/SELF-ASSESSMENT.adoc (line 32)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector
Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

@hyperpolymath hyperpolymath merged commit e87a048 into main Apr 30, 2026
16 of 19 checks passed
@hyperpolymath hyperpolymath deleted the chore/required-files-a2ml-extension branch April 30, 2026 17:02
hyperpolymath added a commit that referenced this pull request Apr 30, 2026
…ide (#35)

## Summary

Migrate the estate language policy from "TypeScript → ReScript" to
"TypeScript / ReScript → AffineScript → typed-wasm" across CI rules,
contractile rules, agent-facing policy docs, templates, and a stale
migration guide.

This is the wider sweep promised in PR #34's body, now landed.

## Per-user directive (2026-04-30)

> "yes 1 yes 2 yes 3 yes and drop 4 change .res is out all .ts to
.affine now 5 affinescript-config-present replaces"

## What changed

### CI rule workflows

| File | Change |
|---|---|
| `.github/workflows/ts-blocker.yml` | Renamed concept to "TypeScript /
JavaScript / ReScript Blocker"; added `.res` to forbidden patterns;
replaced "Use ReScript instead" / "ReScript policy enforced" with "Use
AffineScript instead" / "AffineScript policy enforced"; dropped the
`.res.js$` JS exclusion (no longer needed once `.res` is banned). |
| `.github/workflows/rsr-antipattern.yml` | Added a new "Check for
ReScript" step blocking `.res` files; added a new "Check for
rescript.json" step; updated all "use ReScript instead" messages to "use
AffineScript instead"; allowed-list now `AffineScript, Deno, WASM, Rust,
OCaml, Haskell, Guile/Scheme`. |
| `.github/workflows/language-policy.yml` | Added a new "Check for
ReScript files" step; updated "Use ReScript instead" / "Rewrite in
Rust/ReScript" → AffineScript; switched `.scm` references to `.a2ml` in
the Required Files check (per the `.a2ml`-canonical rule confirmed in PR
#33); added `affine` to SPDX-header file extensions. |
| `a2ml/actions/validate/.github/workflows/ts-blocker.yml` | Same shape
as top-level. |
| `a2ml/actions/validate/.github/workflows/rsr-antipattern.yml` | Same
shape as top-level. |
| `consent-aware-http/.github/workflows/ts-blocker.yml` | Same shape as
top-level. |

### Canonical machine-readable rule

| File | Change |
|---|---|
| `hypatia-rules/rsr-self-compliance.a2ml` | `@forbidden_files`: updated
`.ts` reason to point at AffineScript; added new `**/*.res` entry.
(Supersedes PR #34's narrower one-line fix; that PR can be closed in
favour of this one.) |

### Contractile rules

| File | Change |
|---|---|
| `.machine_readable/contractiles/must/Mustfile.a2ml` | Renamed
`rescript-json-present` → `affinescript-config-present` (checks for
`affinescript.toml` or `dune-project` instead of `rescript.json`);
updated `no-unsafe-coerce` to scan `.affine` (not `.res`) since `.res`
is now banned and AffineScript has no equivalent escape hatch by design;
added new `no-rescript` rule mirroring `no-typescript`; updated
`no-typescript` and `no-python` replacement messages to AffineScript. |

### Agent-facing policy

| File | Change |
|---|---|
| `.claude/CLAUDE.md` | Allowed-languages table: ReScript row →
AffineScript row; ReScript-as-fallback note in JS row →
AffineScript-as-fallback. Banned-languages table: TypeScript replacement
is now AffineScript; new ReScript row added (banned 2026-04-30). Mobile
section + enforcement rules updated. Note paragraph at end now mentions
four banned categories (Python, V-lang, ATS2, ReScript). |
| `consent-aware-http/.claude/CLAUDE.md` | Same shape (sub-project
copy). |
| `ai-instruction/sonnet.md` | Language-policy hard-rule line now lists
AffineScript first; ReScript added to no-list. |

### Tier / Replacement docs

| File | Change |
|---|---|
| `0-ai-gatekeeper-protocol/RSR_OUTLINE.adoc` | Tier-1 list: ReScript →
AffineScript; "TypeScript/JavaScript (use ReScript)" →
"TypeScript/JavaScript/ReScript (use AffineScript)". |
| `0-ai-gatekeeper-protocol/repo-guardian-fs/RSR_OUTLINE.adoc` | Same. |
| `consent-aware-http/RSR_OUTLINE.adoc` | Same. |

### Templates

| File | Change |
|---|---|
| `a2ml-templates/META.a2ml.template` | `code-style` common-values
comment: `rescript` → `affinescript`. |
| `a2ml-templates/AGENTIC.a2ml.template` | `languages` allowed list:
drop `rescript`, add `affinescript`. `banned` list: add `rescript`. |

### Roadmap / migration

| File | Change |
|---|---|
| `agentic-a2ml/docs/ROADMAP.adoc` | "ReScript template (Tier 1)" →
"AffineScript template (Tier 1)" in the templates phase. |
| `consent-aware-http/.migration/PYTHON_TO_RUST_RESCRIPT.md` | DELETED.
|
| `consent-aware-http/.migration/PYTHON_TO_RUST_AFFINESCRIPT.adoc` |
NEW. Rewritten content: Python → Rust(+SPARK) / AffineScript directly
(no ReScript hop); also converted from `.md` → `.adoc` per the
doc-format rule (PR `rsr-template-repo#28`). |

## Files deliberately *not* changed (legitimate ReScript references)

- `.machine_readable/bot_exclusion_registry.a2ml` — references
`hyperpolymath/rescript` (the ReScript compiler fork repo). Legitimate.
- `.gitignore` lines for ReScript build artifacts — kept as transitional
defence; existing repos still have `.res` build output to ignore until
migrations complete.
- `Dustfile.a2ml` `no-tracked-rescript-build` — language-agnostic build
hygiene rule.
- `consent-aware-http/SCOPE.adoc:54` — factual statement about an
existing impl.
- `0-ai-gatekeeper-protocol/repo-guardian-fs/README.adoc` — names of
real ReScript libraries that some downstream repos still consume.
- `agentic-a2ml/examples/web-project-deno.json` — example showing how to
set up ReScript+Deno; left as-is for transitional reference. Could add a
parallel AffineScript example in a follow-up if desired.

## Relationship to other open PRs

- **PR #33** (`.scm` → `.a2ml` + `17 → @required_workflows` + `.md` →
`.adoc` for REQUIRED-FILES) — independent doc-drift fixes. No conflict.
- **PR #34** (`.scm` → `.a2ml` + ReScript → AffineScript in
`@forbidden_files` reason) — *superseded by this PR*. Close #34 in
favour of this one. The `.ts` reason update is included here, plus the
`.res` ban it didn't have.

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

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit that referenced this pull request May 1, 2026
…idue formalism

Adds Agda to Tier-1 alongside the existing Tier-1 set in three
RSR_OUTLINE.adoc copies (with the ReScript -> AffineScript and
Rust -> Rust(+SPARK) updates from PR #35 inlined to avoid build
conflict).

Adds two new rows to .claude/CLAUDE.md:
  - Agda (formal verification, foundational/type-theoretic)
  - echo-types library (canonical loss-with-residue formalism;
    cite from hyperpolymath/echo-types rather than reinventing)

Reframes Idris2 row from 'sole option' to 'primary, ABI-style
proofs' since Agda now formally complements it.

Updates ai-instruction/sonnet.md hard-rules language-policy line
to list AffineScript first, include Agda explicitly, ban ReScript,
and reference RS/TS/JS -> AffineScript -> typed-wasm.

Coordinates with:
  hyperpolymath/echo-types#29 (.scm -> .a2ml + Justfile fix)
  hyperpolymath/echo-types#30 (RSR floor scaffolding)
  #33 (REQUIRED-FILES doc-drift fix)
  #35 (ReScript -> AffineScript sweep;
    line-overlap with this PR; mechanical rebase at merge)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit that referenced this pull request May 1, 2026
…idue formalism (#36)

## Summary

Recognise **Agda** as a Tier-1 language and
**`hyperpolymath/echo-types`** as the canonical loss-with-residue
formalism in the agent-facing policy and tier docs.

## What changed

### Tier-1 list (3 RSR_OUTLINE.adoc copies)

```diff
- * **Tier 1** (Gold): Rust, Elixir, Zig, Ada, Haskell, ReScript
+ * **Tier 1** (Gold): Rust(+SPARK), Elixir, Zig, Ada, Haskell, AffineScript, Agda
```

Adds Agda alongside the existing tier. Replaces ReScript with
AffineScript and qualifies Rust as Rust(+SPARK), tracking the broader
ReScript→AffineScript migration in PR #35 (this PR's diff includes those
updates so the file builds without conflict; #35 may need a rebase but
the resolutions are mechanical).

Files updated:
- `0-ai-gatekeeper-protocol/RSR_OUTLINE.adoc` line 149
- `0-ai-gatekeeper-protocol/repo-guardian-fs/RSR_OUTLINE.adoc` line 149
- `consent-aware-http/RSR_OUTLINE.adoc` line 149

### Agent-facing language policy (`.claude/CLAUDE.md`)

Adds two new rows to the allowed-languages table:

```
| **Agda**            | Formal verification (foundational / type-theoretic constructions) | Used by hyperpolymath/echo-types ... |
| **echo-types library** | Loss-with-residue formalism (Agda) | hyperpolymath/echo-types — canonical formalisation of Echo f y := Σ (x : A) , (f x ≡ y) ... |
```

Reframes Idris2 from "Formal verification (sole option)" to "Formal
verification (primary, ABI-style proofs)" since Agda now formally
complements it for foundational constructions where Idris2's specific
dependent-type idiom isn't the right tool.

### `ai-instruction/sonnet.md`

The hard-rules language-policy line now lists AffineScript first,
includes Agda explicitly, bans ReScript, and references the
AffineScript→typed-wasm direction:

```diff
- - <Language policy: ReScript / Rust / Deno / Zig / Idris2 / Gleam; no
-   TypeScript, Node, npm/bun/yarn, Go, general Python>
+ - <Language policy: AffineScript / Rust(+SPARK) / Deno / Zig / Idris2 / Agda / Gleam; no
+   TypeScript, ReScript, Node, npm/bun/yarn, Go, general Python (RS/TS/JS → AffineScript → typed-wasm; Agda for foundational proofs incl. echo-types)>
```

## Why

Echo-types (`hyperpolymath/echo-types`) is an active, well-developed
Agda formalisation that the `coord-mcp` TODO file already aspires to
dogfood. Until now, the standards' policy docs name only Idris2 as the
ecosystem's formal-verification language, which understates Agda's role
for the foundational-construction track. This PR makes the actual
two-prover posture explicit.

The echo-types row is added because the canonical fiber/echo
construction `Echo f y := Σ (x : A) , (f x ≡ y)` should not be
re-derived in downstream design docs and proofs — they should cite the
library. Naming it explicitly in CLAUDE.md prevents accidental
reinvention.

## Coordinated companion PRs

- `hyperpolymath/echo-types#29` — `.scm` → `.a2ml` 6a2 file rename +
Justfile `make` → `just`. (Bringing echo-types into compliance with the
canonical extension rule.)
- `hyperpolymath/echo-types#30` — RSR template floor (23 new files:
githealth + RSR docs + dotfiles + 4 mandatory workflows + contractiles +
stapeln). (Bringing echo-types to file-presence floor.)
- `#33` — `.scm` → `.a2ml` doc fix in
REQUIRED-FILES.adoc + workflow-count drift fix.
- `#35` — ReScript → AffineScript estate-wide
sweep. (Some line-overlap with this PR; mechanical rebase at merge.)

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

Co-authored-by: Claude Opus 4.7 (1M context) <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