diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml index 31fa011..1fa5cea 100644 --- a/.github/workflows/dogfood-gate.yml +++ b/.github/workflows/dogfood-gate.yml @@ -261,31 +261,17 @@ jobs: echo "has_manifest=true" >> "$GITHUB_OUTPUT" - # Validate TOML structure using Python 3.11+ tomllib - python3 -c " -import tomllib, sys -with open('eclexiaiser.toml', 'rb') as f: - data = tomllib.load(f) -project = data.get('project', {}) -if not project.get('name', '').strip(): - print('ERROR: project.name is required', file=sys.stderr) - sys.exit(1) -functions = data.get('functions', []) -if not functions: - print('ERROR: at least one [[functions]] entry is required', file=sys.stderr) - sys.exit(1) -for fn in functions: - if not fn.get('name', '').strip(): - print('ERROR: function name cannot be empty', file=sys.stderr) - sys.exit(1) - if not fn.get('source', '').strip(): - print(f'ERROR: function {fn[\"name\"]} has no source path', file=sys.stderr) - sys.exit(1) -print(f'Valid: {project[\"name\"]} ({len(functions)} function(s))') -" || { - echo "::error file=eclexiaiser.toml::Invalid eclexiaiser.toml — see step output for details" + # Validate eclexiaiser.toml structure (bash + grep; NO Python per estate policy). + # Structural presence checks only — deep schema validation is eclexiaiser's own job. + err=0 + grep -qE '^[[:space:]]*\[project\]' eclexiaiser.toml || { echo "::error file=eclexiaiser.toml::[project] section is required"; err=1; } + grep -qE '^[[:space:]]*name[[:space:]]*=[[:space:]]*"[^"]+"' eclexiaiser.toml || { echo "::error file=eclexiaiser.toml::a non-empty name is required"; err=1; } + grep -qE '^[[:space:]]*\[\[functions\]\]' eclexiaiser.toml || { echo "::error file=eclexiaiser.toml::at least one [[functions]] entry is required"; err=1; } + if [ "$err" -ne 0 ]; then exit 1 - } + fi + fns=$(grep -cE '^[[:space:]]*\[\[functions\]\]' eclexiaiser.toml) + echo "Valid: eclexiaiser.toml structure present (${fns} function block(s))" - name: Write summary run: | diff --git a/.github/workflows/rsr-antipattern.yml b/.github/workflows/rsr-antipattern.yml deleted file mode 100644 index 194949e..0000000 --- a/.github/workflows/rsr-antipattern.yml +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# RSR Anti-Pattern Check - Uses reusable workflow from standards - -name: RSR Anti-Pattern Check -on: - push: - branches: [main, master, develop] - pull_request: - branches: [main, master, develop] -permissions: - contents: read -jobs: - antipattern-check: - uses: hyperpolymath/standards/.github/workflows/rsr-antipattern-reusable.yml@main diff --git a/docs/tech-debt-2026-05-26.adoc b/docs/tech-debt-2026-05-26.adoc new file mode 100644 index 0000000..42e9044 --- /dev/null +++ b/docs/tech-debt-2026-05-26.adoc @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: CC-BY-SA-4.0 +// Copyright (c) Jonathan D.A. Jewell += Tech-Debt Audit — scaffoldia — 2026-05-26 + +// Historical snapshot: this audit predates the scaffoldia identity split +// (this repo was still the rsr-template-repo scaffold when scanned on +// 2026-05-26). Retained verbatim as a dated record; findings below describe +// the tree as it stood then. + +*Source:* estate-wide automated scan 2026-05-26. + +*Companion:* https://github.com/hyperpolymath/standards/tree/main/docs/audits[`hyperpolymath/standards` 2026-05-26-estate-*-debt audits]. + +*Combined severity:* `LOW`. + +This file records the _raw findings_ — it does not by itself fix the debt. +Each section ends with a 'Recommended next move' line; closing the debt is +follow-up work. + +== 1. Proof debt + +Scanner counted the following markers in proof-bearing files of this repo: + +---- +files= 13 | Coq-Axm/Adm= 0 | Lean-srry/ax= 0 | Agda-pst= 0 | Idr-blv= 6 | Idr-prtl= 0 | Fstr-asm= 0 | TODO= 0 | Unsafe= 0 +---- + +*Total markers:* 6. *Severity:* `>06`. + +*Marker types* (any non-zero counts above): + +* Coq `Axiom`/`Admitted` — unconditional proof escapes. +* Lean `sorry`/`axiom` — Lean's equivalent. +* Agda `postulate` — accepted axiomatically. +* Idris2 `believe_me`/`assert_total` — runtime-safe coercion / totality assumption. +* Idris2 top-level `partial` — totality-check waived. +* F* `assume val`/`admit_p` — F* admit. +* `TODO PROOF` / `OWED:` — self-documented debt markers. +* `unsafePerformIO`/`unsafeCoerce` — soundness-relevant escape hatches in Haskell/Rust source. + +*Recommended next move:* triage each finding into one of: (a) discharge by +proof, (b) cover with property-tests + a documented refutation budget, or +(c) annotate as a known/necessary axiom (e.g. `funExt`) in +`docs/proof-debt.adoc`. + +== 2. Licence debt + +[cols="1,1"] +|=== +| Field | Value + +| LICENSE file | `LICENSE` +| SPDX header | `MPL-2.0` +| Manifest licence | `NONE` +| Body classifier | `Palimp-MPL-2.0` +| Severity | `ok` +|=== + +*Recommended next move:* none for licence. + +== 3. Documentation debt + +[cols="1,1"] +|=== +| Field | Value + +| README lines | 186 +| `docs/` files | 70 +| `docs/` LoC | 4218 +| CHANGELOG.md | Y +| CONTRIBUTING.md | N +| CODE_OF_CONDUCT.md | N +| SECURITY.md | N +| Severity | `OK` +|=== + +*Recommended next move:* none for docs. + +== Cross-references + +* Estate proof-debt audit: `hyperpolymath/standards/docs/audits/2026-05-26-estate-proof-debt.md` +* Estate licence-debt audit: `hyperpolymath/standards/docs/audits/2026-05-26-estate-licence-debt.md` +* Estate documentation-debt audit: `hyperpolymath/standards/docs/audits/2026-05-26-estate-documentation-debt.md` + +''' + +🤖 Generated by Claude Code estate-wide tech-debt scan (2026-05-26). This file +is informational — closing the debt is follow-up work owned by the maintainer. diff --git a/docs/tech-debt-2026-05-26.md b/docs/tech-debt-2026-05-26.md deleted file mode 100644 index 27b8c59..0000000 --- a/docs/tech-debt-2026-05-26.md +++ /dev/null @@ -1,70 +0,0 @@ - -# Tech-Debt Audit — rsr-template-repo — 2026-05-26 - -**Source:** estate-wide automated scan 2026-05-26. -**Companion:** [`hyperpolymath/standards` 2026-05-26-estate-*-debt audits](https://github.com/hyperpolymath/standards/tree/main/docs/audits). -**Combined severity:** `LOW`. - -This file records the *raw findings* — it does not by itself fix the debt. Each section ends with a 'Recommended next move' line; closing the debt is follow-up work. - -## 1. Proof debt - -Scanner counted the following markers in proof-bearing files of this repo: - -``` -files= 13 | Coq-Axm/Adm= 0 | Lean-srry/ax= 0 | Agda-pst= 0 | Idr-blv= 6 | Idr-prtl= 0 | Fstr-asm= 0 | TODO= 0 | Unsafe= 0 -``` - -**Total markers:** 6. **Severity:** `>06`. - -**Marker types** (any non-zero counts above): -- Coq `Axiom`/`Admitted` — unconditional proof escapes. -- Lean `sorry`/`axiom` — Lean's equivalent. -- Agda `postulate` — accepted axiomatically. -- Idris2 `believe_me`/`assert_total` — runtime-safe coercion / totality assumption. -- Idris2 top-level `partial` — totality-check waived. -- F\* `assume val`/`admit_p` — F\* admit. -- `TODO PROOF` / `OWED:` — self-documented debt markers. -- `unsafePerformIO`/`unsafeCoerce` — soundness-relevant escape hatches in Haskell/Rust source. - -**Recommended next move:** triage each finding into one of: (a) discharge by proof, (b) cover with property-tests + a documented refutation budget, or (c) annotate as a known/necessary axiom (e.g. `funExt`) in `docs/proof-debt.md`. - -## 2. Licence debt - -| Field | Value | -|---|---| -| LICENSE file | `LICENSE` | -| SPDX header | `MPL-2.0` | -| Manifest licence | `NONE` | -| Body classifier | `Palimp-MPL-2.0` | -| Severity | `ok` | - -**Recommended next move:** none for licence. - -## 3. Documentation debt - -| Field | Value | -|---|---| -| README lines | 186 | -| `docs/` files | 70 | -| `docs/` LoC | 4218 | -| CHANGELOG.md | Y | -| CONTRIBUTING.md | N | -| CODE_OF_CONDUCT.md | N | -| SECURITY.md | N | -| Severity | `OK` | - -**Recommended next move:** none for docs. - -## Cross-references - -- Estate proof-debt audit: `hyperpolymath/standards/docs/audits/2026-05-26-estate-proof-debt.md` -- Estate licence-debt audit: `hyperpolymath/standards/docs/audits/2026-05-26-estate-licence-debt.md` -- Estate documentation-debt audit: `hyperpolymath/standards/docs/audits/2026-05-26-estate-documentation-debt.md` - ---- - -🤖 Generated by Claude Code estate-wide tech-debt scan (2026-05-26). This file is informational — closing the debt is follow-up work owned by the maintainer.