Skip to content

Commit 1c74d0e

Browse files
hyperpolymathclaude
andcommitted
chore: remove template residue (affinescript bleed, eclexiaiser, PseudoScript refs)
- Remove `affinescript/` wholesale (entire AffineScript compiler tree dragged in from the rsr-template copy — not NatSci scope). - Remove `eclexiaiser.toml`, `selur-compose.toml`, `llm-warmup-*.md`, duplicate `.machine_readable/STATE.a2ml` (6a2/STATE.a2ml is canonical), `TEMPLATE-STANDARDS-AUDIT.adoc`, `scripts/validate-template.sh`. - Strip `eclexiaiser-validate` job + scorecard entry from `.github/workflows/dogfood-gate.yml`; `MAX` 6→5. - Rewrite `.machine_readable/6a2/{STATE,ECOSYSTEM}.a2ml` for NatSci Studio's actual scope (Haskell TUI, son-co-developed, AGPL). - Rewrite `TOPOLOGY.md` for the trident-first topology. - Trim two Eclexia-specific sections out of `docs/governance/MAINTENANCE-CHECKLIST.adoc`. - Bulk-rename `rsr-template-repo` → `natsci-studio` across docs, CI, state files, scripts. Known residual TODOs (deferred, not in scope): - `CLADE.a2ml` carries a UUID copied from template — needs fresh allocation from gv-clade-index before publish. - `LICENSE` is still the stub; swap in full AGPL-3.0 text pre-release. - `PROOF-NEEDS.md`, `PROOF-STATUS.md`, `READINESS.md`, the three `QUICKSTART-*.adoc` files, `AUDIT.adoc`, `CHANGELOG.md`, and `EXPLAINME.adoc` still carry template placeholder prose; rewrite when first real library lands. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent ac3f25d commit 1c74d0e

669 files changed

Lines changed: 116 additions & 97159 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/dogfood-gate.yml

Lines changed: 5 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ jobs:
5252
5353
:warning: **No .a2ml files found.** Every RSR-compliant repo should have at least `0-AI-MANIFEST.a2ml`.
5454
55-
Create one with: `a2mliser init` or copy from [rsr-template-repo](https://github.com/hyperpolymath/rsr-template-repo).
55+
Create one with: `a2mliser init` or copy from [natsci-studio](https://github.com/hyperpolymath/natsci-studio).
5656
EOF
5757
else
5858
echo "## A2ML Validation" >> "$GITHUB_STEP_SUMMARY"
@@ -232,75 +232,12 @@ jobs:
232232
echo "| Has HTTP server code | ${{ steps.groove.outputs.has_server }} |" >> "$GITHUB_STEP_SUMMARY"
233233
234234
# ---------------------------------------------------------------------------
235-
# Job 5: eclexiaiser manifest validation
236-
# ---------------------------------------------------------------------------
237-
eclexiaiser-validate:
238-
name: Validate eclexiaiser manifest
239-
runs-on: ubuntu-latest
240-
241-
steps:
242-
- name: Checkout repository
243-
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
244-
245-
- name: Check and validate eclexiaiser manifest
246-
id: eclex
247-
run: |
248-
if [ ! -f "eclexiaiser.toml" ]; then
249-
# Check if repo has a Containerfile — if so, recommend eclexiaiser
250-
if [ -f "Containerfile" ]; then
251-
echo "::warning::Containerfile present but no eclexiaiser.toml. Run \`eclexiaiser init\` to scaffold energy/carbon budgets."
252-
fi
253-
echo "has_manifest=false" >> "$GITHUB_OUTPUT"
254-
exit 0
255-
fi
256-
257-
echo "has_manifest=true" >> "$GITHUB_OUTPUT"
258-
259-
# Validate TOML structure using Python 3.11+ tomllib
260-
python3 -c "
261-
import tomllib, sys
262-
with open('eclexiaiser.toml', 'rb') as f:
263-
data = tomllib.load(f)
264-
project = data.get('project', {})
265-
if not project.get('name', '').strip():
266-
print('ERROR: project.name is required', file=sys.stderr)
267-
sys.exit(1)
268-
functions = data.get('functions', [])
269-
if not functions:
270-
print('ERROR: at least one [[functions]] entry is required', file=sys.stderr)
271-
sys.exit(1)
272-
for fn in functions:
273-
if not fn.get('name', '').strip():
274-
print('ERROR: function name cannot be empty', file=sys.stderr)
275-
sys.exit(1)
276-
if not fn.get('source', '').strip():
277-
print(f'ERROR: function {fn[\"name\"]} has no source path', file=sys.stderr)
278-
sys.exit(1)
279-
print(f'Valid: {project[\"name\"]} ({len(functions)} function(s))')
280-
" || {
281-
echo "::error file=eclexiaiser.toml::Invalid eclexiaiser.toml — see step output for details"
282-
exit 1
283-
}
284-
285-
- name: Write summary
286-
run: |
287-
if [ "${{ steps.eclex.outputs.has_manifest }}" = "true" ]; then
288-
echo "## Eclexiaiser Manifest" >> "$GITHUB_STEP_SUMMARY"
289-
echo "" >> "$GITHUB_STEP_SUMMARY"
290-
echo ":white_check_mark: **eclexiaiser.toml** present and valid." >> "$GITHUB_STEP_SUMMARY"
291-
else
292-
echo "## Eclexiaiser Manifest" >> "$GITHUB_STEP_SUMMARY"
293-
echo "" >> "$GITHUB_STEP_SUMMARY"
294-
echo ":ballot_box_with_check: No eclexiaiser.toml. Add one with \`eclexiaiser init\` for energy/carbon tracking." >> "$GITHUB_STEP_SUMMARY"
295-
fi
296-
297-
# ---------------------------------------------------------------------------
298-
# Job 6: Dogfooding summary
235+
# Job 5: Dogfooding summary
299236
# ---------------------------------------------------------------------------
300237
dogfood-summary:
301238
name: Dogfooding compliance summary
302239
runs-on: ubuntu-latest
303-
needs: [a2ml-validate, k9-validate, empty-lint, groove-check, eclexiaiser-validate]
240+
needs: [a2ml-validate, k9-validate, empty-lint, groove-check]
304241
if: always()
305242

306243
steps:
@@ -310,7 +247,7 @@ print(f'Valid: {project[\"name\"]} ({len(functions)} function(s))')
310247
- name: Generate dogfooding scorecard
311248
run: |
312249
SCORE=0
313-
MAX=6
250+
MAX=5
314251
315252
# A2ML manifest present?
316253
if find . -name '*.a2ml' -not -path './.git/*' | head -1 | grep -q .; then
@@ -352,14 +289,6 @@ print(f'Valid: {project[\"name\"]} ({len(functions)} function(s))')
352289
VSDB_STATUS=":ballot_box_with_check:"
353290
fi
354291
355-
# eclexiaiser energy tracking?
356-
if [ -f "eclexiaiser.toml" ]; then
357-
SCORE=$((SCORE + 1))
358-
ECLEX_STATUS=":white_check_mark:"
359-
else
360-
ECLEX_STATUS=":ballot_box_with_check:"
361-
fi
362-
363292
cat <<EOF >> "$GITHUB_STEP_SUMMARY"
364293
## Dogfooding Scorecard
365294
@@ -372,9 +301,8 @@ print(f'Valid: {project[\"name\"]} ({len(functions)} function(s))')
372301
| .editorconfig | ${EC_STATUS} | Required for all repos |
373302
| Groove endpoint | ${GROOVE_STATUS} | Required for service repos |
374303
| VeriSimDB integration | ${VSDB_STATUS} | Required for stateful repos |
375-
| eclexiaiser | ${ECLEX_STATUS} | Energy/carbon budgets for container services |
376304
377305
---
378-
*Generated by the [Dogfood Gate](https://github.com/hyperpolymath/rsr-template-repo) workflow.*
306+
*Generated by the [Dogfood Gate](https://github.com/hyperpolymath/natsci-studio) workflow.*
379307
*Dogfooding is guinea pig fooding — we test our tools on ourselves.*
380308
EOF
Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,19 @@
1-
# SPDX-License-Identifier: PMPL-1.0-or-later
2-
# ECOSYSTEM.a2ml — Ecosystem position
3-
# Converted from ECOSYSTEM.scm on 2026-04-14
1+
# SPDX-License-Identifier: AGPL-3.0-or-later
2+
# SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
# ECOSYSTEM.a2ml — how natsci-studio sits in the hyperpolymath estate.
44

55
[metadata]
6-
project = "pseudoscript"
6+
project = "natsci-studio"
77
ecosystem = "hyperpolymath"
88

99
[position]
10-
type = "programming-language"
11-
purpose = "Pseudocode-syntax AffineScript. Write code that looks like pseudocode. Get affine resource guarantees and typed WASM out."
12-
13-
[pipeline]
14-
position = "co-product"
15-
chain = "katagoria → typell → typed-wasm → PanLL"
16-
notes = "PseudoScript compiles to typed WasmGC. TypeLL grounds its type system. typed-wasm provides the shared binary layout and ABI conventions."
17-
coordination = "nextgen-typing"
10+
type = "natural-sciences-monorepo"
11+
purpose = "Educational / research toolkit: standards-compliant natural-sciences libraries with a Haskell-backed TUI console (NatTrans Console) for minting, verifying, and observing scientific modules."
1812

1913
[related-projects]
2014
projects = [
21-
{ name = "typell", relationship = "type-theory-foundation", notes = "TypeLL's open-ended progressive framework grounds PseudoScript's type system. typell-pseudoscript bridge crate." },
22-
{ name = "typed-wasm", relationship = "aggregate-library", notes = "Shared binary layout conventions for WasmGC cross-language calls. PseudoScript Option[T]/Result[T,E]/String have agreed layouts here." },
23-
{ name = "nextgen-typing", relationship = "coordination-parent", notes = "Coordination monorepo for the type theory pipeline. Canonical architecture doc." },
24-
{ name = "affinescript", relationship = "foundation", notes = "PseudoScript is a syntactic face of AffineScript." },
25-
{ name = "rattlescript", relationship = "sibling", notes = "Both are syntactic faces of AffineScript." },
26-
{ name = "ephapax", relationship = "sibling-wasm-target", notes = "Both compile to typed WasmGC. Independent designs; converge at binary level via typed-wasm." },
27-
{ name = "katagoria", relationship = "research-upstream", notes = "Type theory research origination. Future PseudoScript type system extensions may originate there." },
28-
{ name = "panll", relationship = "consumer", notes = "PseudoScript is one of PanLL's development language targets." },
15+
{ name = "idaptik", relationship = "sibling-son-co-developed", notes = "Also AGPL-3.0-or-later; son-co-developed pattern (License Policy §Rule 3)." },
16+
{ name = "airborne-submarine-squadron", relationship = "sibling-son-co-developed", notes = "Same AGPL pattern." },
17+
{ name = "standards", relationship = "contractile-machinery-upstream", notes = "Trident verb machinery (intend / trust / must / bust / adjust / dust) copied in verbatim; updates flow from standards/." },
18+
{ name = "verisimdb", relationship = "potential-evidence-sink", notes = "Contractile drift events could emit to VeriSimDB once a NatSci instance is stood up." },
2919
]

.machine_readable/6a2/STATE.a2ml

Lines changed: 28 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,53 @@
1-
# SPDX-License-Identifier: PMPL-1.0-or-later
2-
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
1+
# SPDX-License-Identifier: AGPL-3.0-or-later
2+
# SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
33
#
4-
# STATE.a2ml — Project state checkpoint (META-TEMPLATE)
5-
#
6-
# This is the STATE file for rsr-template-repo itself.
7-
# When consumed by a new project, replace {{PLACEHOLDER}} tokens
8-
# and customize sections below for the target project.
4+
# STATE.a2ml — descriptive state of natsci-studio (the IS, not the OUGHT).
5+
# Normative obligations live under ../contractiles/; this file is 6a2.
96

107
[metadata]
11-
project = "rsr-template-repo"
12-
version = "0.2.0"
13-
last-updated = "2026-02-28"
8+
project = "natsci-studio"
9+
version = "0.1.0"
10+
last-updated = "2026-04-18"
1411
status = "active" # active | paused | archived
1512

1613
[project-context]
17-
name = "rsr-template-repo"
18-
purpose = "Canonical RSR-compliant repository template providing scaffolding for all hyperpolymath projects — including CI/CD, AI manifests, ABI/FFI standards, container ecosystem, and governance infrastructure."
19-
completion-percentage = 95
14+
name = "natsci-studio"
15+
purpose = "Monorepo of natural-sciences libraries with a Haskell-backed TUI console (NatTrans Console) for minting, verifying, and observing scientific modules."
16+
scope = "educational / research toolkit; son-co-developed"
17+
completion-percentage = 2
2018

2119
[position]
22-
phase = "maintenance" # design | implementation | testing | maintenance | archived
23-
maturity = "production" # experimental | alpha | beta | production | lts
20+
phase = "design" # design | implementation | testing | maintenance | archived
21+
maturity = "experimental" # experimental | alpha | beta | production | lts
2422

2523
[route-to-mvp]
2624
milestones = [
27-
{ name = "Phase 0: Core scaffolding (justfile, CI/CD, .machine_readable)", completion = 100 },
28-
{ name = "Phase 1: ABI/FFI standard (Idris2/Zig templates)", completion = 100 },
29-
{ name = "Phase 1b: AI Gatekeeper Protocol (0-AI-MANIFEST.a2ml)", completion = 100 },
30-
{ name = "Phase 1c: TOPOLOGY.md standard and guide", completion = 100 },
31-
{ name = "Phase 1d: Maintenance gate (axes, checklist, approach)", completion = 100 },
32-
{ name = "Phase 1e: Trustfile / contractiles", completion = 100 },
33-
{ name = "Phase 2: Container ecosystem templates (stapeln)", completion = 100 },
34-
{ name = "Phase 3: Multi-forge sync hardening", completion = 0 },
35-
{ name = "Phase 4: Nix/Guix reproducible shells", completion = 50 },
25+
{ name = "Phase 0: scaffold + contractile trident set", completion = 100 },
26+
{ name = "Phase 1: first library (candidate: Constants — CODATA/NIST)", completion = 0 },
27+
{ name = "Phase 2: NatTrans Console MVP (read-only lib browser)", completion = 0 },
28+
{ name = "Phase 3: mint workflow (contractile-checked new library)", completion = 0 },
29+
{ name = "Phase 4: verify workflow (invariant + citation probes)", completion = 0 },
30+
{ name = "Phase 5: observe workflow (runtime telemetry panel)", completion = 0 },
3631
]
3732

3833
[blockers-and-issues]
39-
# No active blockers
34+
# None at scaffold stage.
4035

4136
[critical-next-actions]
4237
actions = [
43-
"Container templates complete — test with `just container-init`",
44-
"Validate container templates across wolfi-base and static Chainguard images",
45-
"Harden multi-forge sync for GitLab/Bitbucket mirroring edge cases",
46-
"Expand Nix/Guix development shell templates",
38+
"Decide on first library (Constants vs. Units vs. Uncertainty) with son.",
39+
"Stand up Haskell cabal project under tools/console/ with one stub view.",
40+
"Write first [[intents]] entry into contractiles/intend/Intentfile.a2ml once scope is negotiated with son.",
4741
]
4842

4943
[maintenance-status]
5044
last-run-utc = "never"
51-
last-report = "docs/reports/maintenance/latest.json"
52-
last-result = "unknown" # unknown | pass | warn | fail
45+
last-report = ""
46+
last-result = "unknown"
5347
open-warnings = 0
5448
open-failures = 0
5549

5650
[ecosystem]
57-
part-of = ["RSR Framework", "stapeln ecosystem"]
58-
depends-on = ["stapeln", "selur-compose", "cerro-torre", "svalinn", "vordr", "k9-svc"]
59-
60-
# ---------------------------------------------------------------------------
61-
# NOTE FOR CONSUMERS: When using this template to create a new repo, reset
62-
# the fields above to your project's values and replace all {{PLACEHOLDER}}
63-
# tokens. The milestones above describe the TEMPLATE's evolution, not yours.
64-
# ---------------------------------------------------------------------------
51+
part-of = ["hyperpolymath estate (son-co-developed subset)"]
52+
depends-on = []
53+
sibling-projects = ["idaptik", "airborne-submarine-squadron"]

.machine_readable/CLADE.a2ml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
uuid = "a5ea1382-a34c-5334-8a46-a2ebe904c810"
77
primary-forge = "github"
88
primary-owner = "hyperpolymath"
9-
canonical-name = "rsr-template-repo"
10-
prefixed-name = "rm-rsr-template-repo"
9+
canonical-name = "natsci-studio"
10+
prefixed-name = "rm-natsci-studio"
1111

1212
[clade]
1313
primary = "rm"
@@ -16,9 +16,9 @@ assigned = "2026-03-16"
1616
rationale = ""
1717

1818
[forges]
19-
github = "hyperpolymath/rsr-template-repo"
20-
gitlab = "hyperpolymath/rsr-template-repo"
21-
bitbucket = "hyperpolymath/rsr-template-repo"
19+
github = "hyperpolymath/natsci-studio"
20+
gitlab = "hyperpolymath/natsci-studio"
21+
bitbucket = "hyperpolymath/natsci-studio"
2222

2323
[lineage]
2424
type = "standalone"

.machine_readable/STATE.a2ml

Lines changed: 0 additions & 27 deletions
This file was deleted.

.machine_readable/agent_instructions/methodology.a2ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ constraints = [
101101
# These rules detect corrupt/template/stale state files.
102102

103103
[methodology.state-validation]
104-
reject-if-contains = ["{{PLACEHOLDER}}", "{{PROJECT}}", "rsr-template-repo"]
104+
reject-if-contains = ["{{PLACEHOLDER}}", "{{PROJECT}}", "natsci-studio"]
105105
reject-if-project-name-mismatch = true
106106
staleness-threshold-days = 90
107107
fallback-files = ["TODO.md", "TODO.adoc", "ROADMAP.adoc", "README.adoc"]

.machine_readable/ai/AI.a2ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# AI Assistant Instructions
33

44
## Repository Focus
5-
- `rsr-template-repo` is treated as a Rhodium Standard Repository; obey the Rhodium policies and keep `.machine_readable/` authoritative.
5+
- `natsci-studio` is treated as a Rhodium Standard Repository; obey the Rhodium policies and keep `.machine_readable/` authoritative.
66
- All machine-readable content lives under `.machine_readable/` — state files (a2ml), bot directives, and contractiles.
77
- Prefer to keep generated files out of source control, and regenerate them with the documented commands before committing.
88

.machine_readable/contractiles/k9/examples/setup-repo.k9.ncl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ K9!
114114
description = "Add RSR-compliant workflows",
115115
commands = [
116116
# This would copy workflow templates
117-
# In a real implementation, would fetch from rsr-template-repo
117+
# In a real implementation, would fetch from natsci-studio
118118
"echo '✓ Workflows configured'",
119119
],
120120
},

Justfile

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -333,8 +333,8 @@ verify-template:
333333
fi
334334
335335
# Check for template defaults still present
336-
if grep -q 'rsr-template-repo' Justfile 2>/dev/null; then
337-
echo "⚠ Justfile still references 'rsr-template-repo' — update project name"
336+
if grep -q 'natsci-studio' Justfile 2>/dev/null; then
337+
echo "⚠ Justfile still references 'natsci-studio' — update project name"
338338
FOUND=1
339339
fi
340340
@@ -955,7 +955,7 @@ container-init:
955955
956956
if [ ! -d "container" ]; then
957957
echo "Error: container/ directory not found."
958-
echo "This repo may not have been created from rsr-template-repo."
958+
echo "This repo may not have been created from natsci-studio."
959959
exit 1
960960
fi
961961
@@ -1392,7 +1392,7 @@ assail:
13921392
13931393
# Self-diagnostic — checks dependencies, permissions, paths
13941394
doctor:
1395-
@echo "Running diagnostics for rsr-template-repo..."
1395+
@echo "Running diagnostics for natsci-studio..."
13961396
@echo "Checking required tools..."
13971397
@command -v just >/dev/null 2>&1 && echo " [OK] just" || echo " [FAIL] just not found"
13981398
@command -v git >/dev/null 2>&1 && echo " [OK] git" || echo " [FAIL] git not found"
@@ -1402,7 +1402,7 @@ doctor:
14021402
14031403
# Guided tour of key features
14041404
tour:
1405-
@echo "=== rsr-template-repo Tour ==="
1405+
@echo "=== natsci-studio Tour ==="
14061406
@echo ""
14071407
@echo "1. Project structure:"
14081408
@ls -la
@@ -1417,12 +1417,12 @@ tour:
14171417
14181418
# Open feedback channel with diagnostic context
14191419
help-me:
1420-
@echo "=== rsr-template-repo Help ==="
1420+
@echo "=== natsci-studio Help ==="
14211421
@echo "Platform: $(uname -s) $(uname -m)"
14221422
@echo "Shell: $SHELL"
14231423
@echo ""
14241424
@echo "To report an issue:"
1425-
@echo " https://github.com/hyperpolymath/rsr-template-repo/issues/new"
1425+
@echo " https://github.com/hyperpolymath/natsci-studio/issues/new"
14261426
@echo ""
14271427
@echo "Include the output of 'just doctor' in your report."
14281428

0 commit comments

Comments
 (0)