Skip to content

Commit 93827cd

Browse files
committed
Apply estate standardization: governance docs, contractiles, CI/CD cleanup
1 parent 12b9f71 commit 93827cd

13 files changed

Lines changed: 433 additions & 320 deletions

File tree

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Adjustfile — Drift-tolerance contract for rsr-template-repo
3+
# Author: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
#
5+
# Cumulative-drift catchment: tolerance bands + corrective actions.
6+
# Authority: advisory (Yard) — continue-with-warnings; auto_fix where deterministic.
7+
# Run with: adjust check
8+
# Fix with: adjust fix (applies deterministic patches; advisory otherwise)
9+
10+
@abstract:
11+
Drift tolerances and corrective actions for rsr-template-repo. Unlike
12+
MUST (hard gate), ADJUST tracks cumulative drift against tolerance bands
13+
and proposes corrective actions. Advisory — it warns and trends, it does
14+
not block.
15+
@end
16+
17+
## Template Drift
18+
19+
### placeholder-drift
20+
- description: Template placeholders should be replaced when copied
21+
- tolerance: 0 placeholder markers in copied repos
22+
- corrective: Search and replace all {{PLACEHOLDER}} markers
23+
- severity: advisory
24+
- notes: This check only applies to repos that copied from this template
25+
26+
### template-version-drift
27+
- description: Template version should match RSR spec version
28+
- tolerance: Template version matches current RSR spec
29+
- corrective: Update template to match latest RSR spec
30+
- severity: advisory
31+
32+
## Documentation Drift
33+
34+
### readme-completeness
35+
- description: README should document all template features
36+
- tolerance: README covers all contractiles and directory structure
37+
- corrective: Update README.adoc with missing sections
38+
- severity: advisory
39+
40+
### example-accuracy
41+
- description: Examples in documentation should match actual template content
42+
- tolerance: All code examples in docs are accurate
43+
- corrective: Audit and fix examples in documentation
44+
- severity: advisory
45+
46+
## Structural Drift
47+
48+
### contractile-sync
49+
- description: All contractiles should have matching a2ml and ncl implementations
50+
- tolerance: Every .a2ml has a corresponding .ncl
51+
- corrective: Generate missing .ncl files from .a2ml
52+
- severity: advisory
53+
54+
### no-broken-symlinks
55+
- description: No broken symbolic links in template structure
56+
- tolerance: 0 broken symlinks
57+
- corrective: Run symlink-check script
58+
- severity: advisory
59+
60+
## Accessibility Drift
61+
62+
### adoc-not-md
63+
- description: Template docs should prefer AsciiDoc
64+
- tolerance: New prose docs are *.adoc
65+
- corrective: Convert any new *.md to *.adoc
66+
- severity: advisory
67+
68+
### spdx-header-consistency
69+
- description: All template files have correct SPDX headers
70+
- tolerance: 0 files missing SPDX-License-Identifier
71+
- corrective: Add SPDX headers to files that need them
72+
- severity: advisory
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Intentfile (A2ML Canonical) — north-star contractile for rsr-template-repo
3+
# Author: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
#
5+
# Paired runner: intend.ncl
6+
# Verb: intend
7+
#
8+
# Semantics: North-star contractile. Declares BOTH concrete committed
9+
# next-actions AND horizon aspirations the project wishes to
10+
# become. Two sections share one file because they answer
11+
# the same question at different ranges:
12+
# [[intents]] — "we WILL do this; track progress"
13+
# status: declared → in_progress → done |
14+
# deferred | retired
15+
# [[wishes]] — "we WISH this were true; revisit later"
16+
# status: declared → in_progress → achieved |
17+
# abandoned
18+
# grouped by horizon: near / mid / far.
19+
# Non-gating — this is a report, not a gate. See the `must`
20+
# contractile for hard gates.
21+
22+
@abstract:
23+
North-star contractile for rsr-template-repo. This repository is the
24+
canonical template for Rhodium Standard Repository compliance. It provides
25+
the scaffold that all hyperpolymath repos should copy and customize.
26+
@end
27+
28+
## Purpose
29+
30+
The rsr-template-repo serves as the master template for all hyperpolymath
31+
repositories. It contains the complete set of contractile files, machine-readable
32+
specifications, and governance documentation that define the Rhodium Standard.
33+
34+
Every new repository in the hyperpolymath estate should be initialized by
35+
copying this template and substituting the placeholder values with
36+
repo-specific content.
37+
38+
## Anti-Purpose
39+
40+
This repository is NOT:
41+
- A general-purpose project scaffold for external use (hyperpolymath-only)
42+
- A replacement for per-repo customization (all files must be bespoke)
43+
- A static template that never changes (evolves with RSR spec)
44+
- A runtime library or framework (build-time only)
45+
46+
## If In Doubt
47+
48+
If you are unsure whether a change is in scope, ask. Sensitive areas:
49+
- .machine_readable/ contractile definitions
50+
- RSR specification files
51+
- Governance templates
52+
- License policy documents
53+
54+
## Committed Next-Actions
55+
56+
### repo-initialization
57+
- description: Provide just copy-and-substitute template for new repos
58+
- probe: test -f scripts/init-repo.sh
59+
- status: done
60+
- notes: Run with source scripts/init-repo.sh <new-repo-name>
61+
62+
### contractile-completeness
63+
- description: Every RSR contractile has an a2ml and ncl implementation
64+
- probe: ls .machine_readable/contractiles/*.a2ml | wc -l | grep -q "^6$"
65+
- status: in_progress
66+
- notes: Currently 6 contractile verbs: intend, must, trust, adjust, bust, dust
67+
68+
### automation-scripts
69+
- description: All repetitive tasks have just recipes
70+
- probe: grep -c "^# " Justfile | grep -q "^[6-9][0-9]*$"
71+
- status: in_progress
72+
73+
## Wishes
74+
75+
### Near Horizon
76+
77+
#### cross-repo-validation
78+
- description: Tooling to validate all repos against RSR spec
79+
- horizon: near
80+
- status: declared
81+
82+
#### automated-substitution
83+
- description: Script to automate repo-specific substitution in template
84+
- horizon: near
85+
- status: declared
86+
87+
### Mid Horizon
88+
89+
#### formal-verification
90+
- description: Idris2 proofs for all critical contractile invariants
91+
- horizon: mid
92+
- status: declared
93+
94+
### Far Horizon
95+
96+
#### ecosystem-visualization
97+
- description: Interactive graph of all hyperpolymath repos and dependencies
98+
- horizon: far
99+
- status: declared
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Justfile for polysafe-gitfixer
3+
4+
# Default recipe — list available commands
5+
import? "contractile.just"
6+
7+
default:
8+
@just --list
9+
10+
# Self-diagnostic — checks dependencies, permissions, paths
11+
doctor:
12+
@echo "Running diagnostics for polysafe-gitfixer..."
13+
@echo "Checking required tools..."
14+
@command -v just >/dev/null 2>&1 && echo " [OK] just" || echo " [FAIL] just not found"
15+
@command -v git >/dev/null 2>&1 && echo " [OK] git" || echo " [FAIL] git not found"
16+
@echo "Checking for hardcoded paths..."
17+
@grep -rn '/var/mnt/eclipse' --include='*.rs' --include='*.ex' --include='*.res' --include='*.gleam' --include='*.sh' --include='*.toml' . 2>/dev/null | grep -v 'Justfile' | head -5 || echo " [OK] No hardcoded paths in source"
18+
@echo "Diagnostics complete."
19+
20+
# Guided tour of key features
21+
tour:
22+
@echo "=== polysafe-gitfixer Tour ==="
23+
@echo ""
24+
@echo "1. Project structure:"
25+
@ls -la
26+
@echo ""
27+
@echo "2. Available commands: just --list"
28+
@echo ""
29+
@echo "3. Read README.adoc or README.md for full overview"
30+
@echo "4. Read EXPLAINME.adoc for architecture decisions"
31+
@echo "5. Run 'just doctor' to check your setup"
32+
@echo ""
33+
@echo "Tour complete! Try 'just --list' to see all available commands."
34+
35+
# Open feedback channel with diagnostic context
36+
help-me:
37+
@echo "=== polysafe-gitfixer Help ==="
38+
@echo "Platform: $(uname -s) $(uname -m)"
39+
@echo "Shell: $SHELL"
40+
@echo ""
41+
@echo "To report an issue:"
42+
@echo " https://github.com/hyperpolymath/polysafe-gitfixer/issues/new"
43+
@echo ""
44+
@echo "Include the output of 'just doctor' in your report."
45+
46+
# Run panic-attacker pre-commit scan
47+
assail:
48+
@command -v panic-attack >/dev/null 2>&1 && panic-attack assail . || echo "WARN: panic-attack not found — install from https://github.com/hyperpolymath/panic-attacker"
49+
50+
# LLM context dump
51+
llm-context:
52+
@echo "Project: polysafe-gitfixer"
53+
@echo "License: MPL-2.0"
54+
@test -f README.adoc && head -30 README.adoc || test -f README.md && head -30 README.md || echo "No README found"
55+
56+
57+
# Print the current CRG grade (reads from READINESS.md '**Current Grade:** X' line)
58+
crg-grade:
59+
@grade=$$(grep -oP '(?<=\*\*Current Grade:\*\* )[A-FX]' READINESS.md 2>/dev/null | head -1); \
60+
[ -z "$$grade" ] && grade="X"; \
61+
echo "$$grade"
62+
63+
# Generate a shields.io badge markdown for the current CRG grade
64+
# Looks for '**Current Grade:** X' in READINESS.md; falls back to X
65+
crg-badge:
66+
@grade=$$(grep -oP '(?<=\*\*Current Grade:\*\* )[A-FX]' READINESS.md 2>/dev/null | head -1); \
67+
[ -z "$$grade" ] && grade="X"; \
68+
case "$$grade" in \
69+
A) color="brightgreen" ;; B) color="green" ;; C) color="yellow" ;; \
70+
D) color="orange" ;; E) color="red" ;; F) color="critical" ;; \
71+
*) color="lightgrey" ;; esac; \
72+
echo "[![CRG $$grade](https://img.shields.io/badge/CRG-$$grade-$$color?style=flat-square)](https://github.com/hyperpolymath/standards/tree/main/component-readiness-grades)"
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Mustfile — Physical state contract for rsr-template-repo
3+
# Author: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
#
5+
# What MUST be true about this repository. Hard requirements.
6+
# Run with: must check
7+
# Fix with: must fix (where a deterministic fix exists)
8+
9+
@abstract:
10+
Physical-state invariants for rsr-template-repo. This is the canonical
11+
RSR template repository. These are hard requirements — CI and pre-commit
12+
hooks fail if any check fails.
13+
@end
14+
15+
## File Presence
16+
17+
### license-present
18+
- description: LICENSE file must exist
19+
- run: test -f LICENSE
20+
- severity: critical
21+
22+
### readme-present
23+
- description: README.adoc must exist
24+
- run: test -f README.adoc
25+
- severity: critical
26+
27+
### security-policy
28+
- description: SECURITY.md must exist
29+
- run: test -f SECURITY.md
30+
- severity: critical
31+
32+
### ai-manifest
33+
- description: 0-AI-MANIFEST.a2ml must exist
34+
- run: test -f 0-AI-MANIFEST.a2ml
35+
- severity: critical
36+
37+
### governance-docs
38+
- description: GOVERNANCE.adoc, MAINTAINERS.adoc, CODEOWNERS must exist
39+
- run: test -f GOVERNANCE.adoc && test -f MAINTAINERS.adoc && test -f .github/CODEOWNERS
40+
- severity: critical
41+
42+
### machine-readable-dir
43+
- description: .machine_readable/ directory must exist
44+
- run: test -d .machine_readable
45+
- severity: critical
46+
47+
## Directory Structure
48+
49+
### contractiles-complete
50+
- description: All required contractile directories exist
51+
- run: test -d .machine_readable/contractiles && test -d .machine_readable/contractiles/bust && test -d .machine_readable/contractiles/dust
52+
- severity: critical
53+
54+
### contractiles-files-present
55+
- description: All four primary contractile files exist
56+
- run: test -f .machine_readable/contractiles/Intentfile.a2ml && test -f .machine_readable/contractiles/Mustfile.a2ml && test -f .machine_readable/contractiles/Trustfile.a2ml && test -f .machine_readable/contractiles/Adjustfile.a2ml
57+
- severity: critical
58+
59+
### bust-dust-files-present
60+
- description: Bustfile and Dustfile exist in their directories
61+
- run: test -f .machine_readable/contractiles/bust/Bustfile.a2ml && test -f .machine_readable/contractiles/dust/Dustfile.a2ml
62+
- severity: critical
63+
64+
### six-directory-present
65+
- description: 6a2 directory exists with required files
66+
- run: test -d .machine_readable/6a2 && test -f .machine_readable/6a2/META.a2ml && test -f .machine_readable/6a2/ECOSYSTEM.a2ml && test -f .machine_readable/6a2/STATE.a2ml && test -f .machine_readable/6a2/PLAYBOOK.a2ml && test -f .machine_readable/6a2/AGENTIC.a2ml && test -f .machine_readable/6a2/NEUROSYM.a2ml
67+
- severity: critical
68+
69+
### anchors-directory
70+
- description: anchors directory exists in 6a2
71+
- run: test -d .machine_readable/6a2/anchors
72+
- severity: warning
73+
74+
### self-validating-structure
75+
- description: self-validating directory has k9-svc and examples
76+
- run: test -d .machine_readable/self-validating && test -d .machine_readable/self-validating/k9-svc && test -d .machine_readable/self-validating/examples
77+
- severity: warning
78+
79+
## Template Integrity
80+
81+
### no-placeholder-values
82+
- description: No placeholder values remain in template files
83+
- run: test -z "$(grep -r '{{' .machine_readable/contractiles/ 2>/dev/null)"
84+
- severity: critical
85+
- notes: All placeholders must be substituted when copying this template
86+
87+
### template-readonly
88+
- description: Template marker files are not modified
89+
- run: grep -q 'RSR_TEMPLATE_DO_NOT_EDIT' .machine_readable/0.1-AI-MANIFEST.a2ml
90+
- severity: warning
91+
92+
## Git State
93+
94+
### no-untracked-contractiles
95+
- description: All contractile files are tracked in git
96+
- run: test -z "$(git ls-files -o --exclude-standard .machine_readable/contractiles/ 2>/dev/null)"
97+
- severity: critical
98+
99+
### signed-commits
100+
- description: All commits must be signed
101+
- run: git verify-commit HEAD
102+
- severity: critical

0 commit comments

Comments
 (0)