Skip to content

Commit 413580a

Browse files
committed
Apply estate standardization: governance docs, contractiles, CI/CD cleanup
1 parent bbcfb35 commit 413580a

25 files changed

Lines changed: 2624 additions & 7 deletions

.github/CODEOWNERS

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# CODEOWNERS - Define code review assignments for GitHub
3+
# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
4+
5+
# Default: sole maintainer for all files
6+
* @hyperpolymath
7+
8+
# Security-sensitive files require explicit ownership
9+
SECURITY.md @hyperpolymath
10+
.github/workflows/ @hyperpolymath
11+
.machine_readable/ @hyperpolymath
12+
contractiles/ @hyperpolymath
13+
14+
# License files
15+
LICENSE @hyperpolymath
16+
LICENSES/ @hyperpolymath
17+
18+
# Configuration
19+
.gitignore @hyperpolymath
20+
.github/ @hyperpolymath
21+
22+
# Documentation
23+
README* @hyperpolymath
24+
CONTRIBUTING* @hyperpolymath
25+
CODE_OF_CONDUCT* @hyperpolymath
26+
GOVERNANCE* @hyperpolymath
27+
MAINTAINERS* @hyperpolymath
28+
CHANGELOG* @hyperpolymath
29+
ROADMAP* @hyperpolymath
30+
31+
# Build and CI
32+
Justfile @hyperpolymath
33+
Makefile @hyperpolymath
34+
*.sh @hyperpolymath

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<!--
2+
SPDX-License-Identifier: MPL-2.0
3+
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
15
---
26
name: Bug report
37
about: Create a report to help us improve

.github/ISSUE_TEMPLATE/custom.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<!--
2+
SPDX-License-Identifier: MPL-2.0
3+
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
15
---
26
name: Custom issue template
37
about: Describe this issue template's purpose here.

.github/ISSUE_TEMPLATE/feature_request.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<!--
2+
SPDX-License-Identifier: MPL-2.0
3+
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
15
---
26
name: Feature request
37
about: Suggest an idea for this project

.github/workflows/governance.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,4 @@ permissions:
3232
jobs:
3333
governance:
3434
uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@861b5e911d9e5dcfb3c0ab3dd2a9a3c8fd0a1613
35+
timeout-minutes: 10

.machine_readable/6a2/AGENTIC.a2ml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
#
4+
# AGENTIC.a2ml — AI agent constraints and capabilities
5+
# Defines what AI agents can and cannot do in this repository.
6+
7+
[metadata]
8+
version = "0.1.0"
9+
last-updated = "2026-04-11"
10+
11+
[agent-permissions]
12+
can-edit-source = true
13+
can-edit-tests = true
14+
can-edit-docs = true
15+
can-edit-config = true
16+
can-create-files = true
17+
18+
[agent-constraints]
19+
# What AI agents must NOT do:
20+
# - Never use banned language patterns (believe_me, unsafeCoerce, etc.)
21+
# - Never commit secrets or credentials
22+
# - Never use banned languages (TypeScript, Python, Go, etc.)
23+
# - Never place state files in repository root (must be in .machine_readable/)
24+
# - Never use AGPL license (use MPL-2.0)
25+
26+
[maintenance-integrity]
27+
fail-closed = true
28+
require-evidence-per-step = true
29+
allow-silent-skip = false
30+
require-rerun-after-fix = true
31+
release-claim-requires-hard-pass = true
32+
33+
# ============================================================================
34+
# METHODOLOGY (ADR-002)
35+
# ============================================================================
36+
# Detailed methodology configuration lives in:
37+
# .machine_readable/bot_directives/methodology.a2ml
38+
# .machine_readable/bot_directives/coverage.a2ml
39+
# .machine_readable/bot_directives/debt.a2ml
40+
#
41+
# AGENTIC.a2ml declares WHAT agents can do (permissions, gating).
42+
# bot_directives/ declares HOW agents should work (methodology).
43+
44+
[methodology]
45+
instructions-dir = ".machine_readable/bot_directives/"
46+
default-mode = "hybrid"
47+
48+
[automation-hooks]
49+
# on-enter: Read 0-AI-MANIFEST.a2ml, then STATE.a2ml, then bot_directives/
50+
# on-exit: Update STATE.a2ml, coverage.a2ml, and debt.a2ml with session outcomes
51+
# on-commit: Run just validate-rsr
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# ECOSYSTEM.a2ml — Ecosystem position
3+
# Converted from ECOSYSTEM.scm on 2026-04-14
4+
5+
[metadata]
6+
project = "pseudoscript"
7+
ecosystem = "hyperpolymath"
8+
9+
[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"
18+
19+
[related-projects]
20+
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." },
29+
]

.machine_readable/6a2/META.a2ml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
#
4+
# META.a2ml — Project meta-level information
5+
# Architecture decisions, design rationale, governance.
6+
7+
[metadata]
8+
version = "0.1.0"
9+
last-updated = "2026-04-11"
10+
11+
[project-info]
12+
type = "library" # TODO: update type (library|binary|service|website|monorepo) # library | binary | monorepo | service | website
13+
languages = [] # e.g. ["rust", "zig", "idris2"]
14+
license = "MPL-2.0"
15+
author = "Jonathan D.A. Jewell (hyperpolymath)"
16+
17+
[architecture-decisions]
18+
# ADR format: status = proposed | accepted | deprecated | superseded | rejected
19+
# - { id = "ADR-001", title = "Use Zig for FFI", status = "accepted", date = "2026-02-14" }
20+
21+
[development-practices]
22+
build-tool = "just"
23+
container-runtime = "podman"
24+
ci-platform = "github-actions"
25+
package-manager = "guix" # guix | nix | cargo | mix
26+
27+
[maintenance-axes]
28+
scoping-first = true
29+
execution-order = "axis-1 > axis-2 > axis-3"
30+
axis-1 = "must > intend > like"
31+
axis-2 = "corrective > adaptive > perfective"
32+
axis-3 = "systems > compliance > effects"
33+
34+
[scoping]
35+
sources = "README, roadmap, status docs, maintenance checklist, CI/security docs"
36+
marker-scan = "TODO/FIXME/XXX/HACK/STUB/PARTIAL"
37+
idris-unsound-scan = "believe_me/assert_total"
38+
39+
[axis-2-maintenance-rules]
40+
corrective-first = true
41+
adaptive-second = true
42+
adaptive-focus = "scope-change reconciliation, stale-reference removal, obsolete-work culling"
43+
perfective-third = true
44+
perfective-source = "axis-1 honest state after corrective/adaptive updates"
45+
46+
[axis-3-audit-rules]
47+
audit-focus = "systems in place, documentation explains actual state, safety/security accounted for, observed effects reviewed"
48+
compliance-focus = "seams/compromises/exception register, bounded exceptions, anti-drift checks"
49+
drift-risk-example = "single exception broadening into policy violation (e.g. ReScript->TypeScript spread)"
50+
effects-evidence = "benchmark execution/results and maintainer status dialogue/review"
51+
52+
[design-rationale]
53+
# Key design decisions and their reasoning
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
#
4+
# NEUROSYM.a2ml — Neurosymbolic integration metadata
5+
# Configuration for Hypatia scanning and symbolic reasoning.
6+
7+
[metadata]
8+
version = "0.1.0"
9+
last-updated = "2026-04-11"
10+
11+
[hypatia-config]
12+
scan-enabled = true
13+
scan-depth = "standard" # quick | standard | deep
14+
report-format = "logtalk"
15+
16+
[symbolic-rules]
17+
# Custom symbolic rules for this project
18+
# - { name = "no-unsafe-ffi", pattern = "believe_me|unsafeCoerce", severity = "critical" }
19+
20+
[neural-config]
21+
# Neural pattern detection settings
22+
# confidence-threshold = 0.85
23+
# model = "hypatia-v2"
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
#
4+
# PLAYBOOK.a2ml — Operational playbook
5+
# Runbooks, incident response, deployment procedures.
6+
7+
[metadata]
8+
version = "0.1.0"
9+
last-updated = "2026-04-11"
10+
11+
[deployment]
12+
# method = "gitops" # gitops | manual | ci-triggered
13+
# target = "container" # container | binary | library | wasm
14+
15+
[incident-response]
16+
# 1. Check .machine_readable/STATE.a2ml for current status
17+
# 2. Review recent commits and CI results
18+
# 3. Run `just validate` to check compliance
19+
# 4. Run `just security` to audit for vulnerabilities
20+
21+
[release-process]
22+
# 1. Update version in STATE.a2ml, META.a2ml, Justfile
23+
# 2. Run `just release-preflight` (validate + quality + security + maint-hard-pass)
24+
# 3. Optional local permission hardening: `just perms-snapshot && just perms-lock`
25+
# 4. Tag and push
26+
# 5. Restore local permissions if needed: `just perms-restore`
27+
# 6. Run `just container-push` if applicable
28+
29+
[maintenance-operations]
30+
# Baseline audit:
31+
# just maint-audit
32+
# Hard release gate:
33+
# just maint-hard-pass
34+
# Permission audit:
35+
# just perms-audit
36+
37+
[rsr-repo-skeleton]
38+
# Canonical organisation of any RSR-derived repository.
39+
# Used by tooling, human onboarding, and the scheduled downstream sweep agent.
40+
# The 5-PR cleanup pattern (below) brings a non-conforming repository into
41+
# compliance with this skeleton.
42+
#
43+
# This section is the single source of truth for "what does an RSR repo look
44+
# like?". Other docs (TOPOLOGY, AUDIT, etc.) describe the repo at hand;
45+
# this describes the canonical shape that all RSR repos share.
46+
47+
skeleton-version = "1.0"
48+
last-updated = "2026-04-30"
49+
authority-allowlist = ".machine_readable/root-allow.txt"
50+
enforcement-workflow = ".github/workflows/estate-rules.yml"
51+
52+
# === Required at root ===
53+
# README.adoc High-level pitch (project entry point)
54+
# AUDIT.adoc Local gate summary (release-readiness)
55+
# EXPLAINME.adoc Developer deep-dive (architecture & invariants)
56+
# 0-AI-MANIFEST.a2ml AI agent work-allocation policy
57+
# LICENSE Repo license (root-bound by convention)
58+
# CHANGELOG.md One of the recognised .md exceptions (see below)
59+
# Justfile Task runner — thin, imports per-section files from build/just/
60+
# coordination.k9 Repo-local session binding
61+
62+
# === Required directories ===
63+
# .github/ CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, workflows/
64+
# .machine_readable/ AI manifests (0.1-AI-MANIFEST.a2ml), 6a2/ checkpoints,
65+
# contractiles/, configs/, anchors/, policies/, scripts/, svc/
66+
# build/ contractile.just, flake.nix, guix.scm, Containerfile,
67+
# just/*.just (Justfile section imports)
68+
# docs/ onboarding/, status/, architecture/, governance/ (all .adoc)
69+
# session/ dispatch.sh, custom-checks.k9, local-hooks.sh
70+
# src/ Project source (Idris2 ABI under abi/, Zig FFI under ffi/)
71+
# tests/, benches/, examples/, features/, scripts/, verification/, container/
72+
73+
# === Documentation format rule ===
74+
# `.adoc` is the default for all general docs (TOPOLOGY, READINESS, ROADMAP,
75+
# TEST-NEEDS, PROOF-NEEDS, PROOF-STATUS, llm-warmup-*, etc.).
76+
#
77+
# `.md` is reserved ONLY for files GitHub's community-health rules
78+
# special-case by name:
79+
# CONTRIBUTING.md CODE_OF_CONDUCT.md SECURITY.md CHANGELOG.md
80+
#
81+
# Enforcement: `scripts/check-no-md-in-docs.sh` (fails if any *.md under docs/).
82+
83+
# === Banned: ziguage ===
84+
# V (vlang.io) is banned estate-wide. Replaced by `zig-unified-api-adapter`
85+
# (16 endpoints + transaction-based firewall gating). Do not introduce
86+
# zig code, scaffolders, or references. Note that Coq theorem files use
87+
# the same `.v` extension and are unaffected — the rule looks at content
88+
# patterns, not the extension.
89+
#
90+
# Enforcement: `scripts/check-no-vlang.sh`.
91+
92+
# === Justfile structure (post-split) ===
93+
# The root Justfile is thin — it holds `set` directives, project metadata
94+
# variables, and the `default`/`help`/`info` recipes. Each major section
95+
# lives in its own file under build/just/ and is brought in via `import?`.
96+
#
97+
# Imported sections (in the canonical split):
98+
# build/just/init.just INIT recipe (template bootstrap)
99+
# build/just/assess.just self-assess + verify (OpenSSF compliance)
100+
# build/just/validate.just validate-rsr/state/ai-install + aggregate
101+
# build/just/proofs.just proof-check-{all,idris2,lean4,agda,coq},
102+
# proof-scan-dangerous, proof-status
103+
# build/just/groove.just Groove protocol setup (after zig removed)
104+
#
105+
# Daily-use recipes (BUILD, TEST, LINT, RUN, DEPS, DOCS, CONTAINER, CI,
106+
# SECURITY, STATE, GUIX/NIX, MATRIX, VERSION CONTROL, UTILITIES, SESSION)
107+
# stay in the root Justfile where users expect to find them.
108+
109+
# === 5-PR cleanup pattern ===
110+
# Apply these branches (in order) to bring a non-conforming downstream repo
111+
# into compliance with this skeleton:
112+
#
113+
# 1. chore/root-cleanup Relocate root sprawl per root-allow.txt; add
114+
# scripts/check-root-shape.sh; remove stub
115+
# health files shadowed by .github/ versions.
116+
# 2. chore/remove-zig Purge zig remnants (gen-v-connector recipe,
117+
# "V-TRIPLE" section header, "V-triple
118+
# connectors" comment in groove.a2ml).
119+
# 3. chore/md-to-adoc Port general docs in docs/ from .md to .adoc;
120+
# update validate-template.sh to accept .adoc
121+
# fallbacks.
122+
# 4. chore/estate-rules-ci Add scripts/check-no-md-in-docs.sh + check-no-
123+
# vlang.sh + .github/workflows/estate-rules.yml.
124+
# 5. chore/<repo>-hygiene Repo-specific drift cleanup (case collisions,
125+
# template-derivation drift in titles, etc.).
126+
127+
# === Reference scripts ===
128+
# scripts/check-root-shape.sh Root allowlist validator
129+
# scripts/check-no-md-in-docs.sh AsciiDoc-by-default validator
130+
# scripts/check-no-vlang.sh zig ban validator
131+
# scripts/validate-template.sh Aggregate RSR compliance (workflows, SPDX, etc.)
132+
133+
# === Reference memory entries (for AI agents) ===
134+
# feedback_adoc_default_md_for_githealth AsciiDoc-by-default rule
135+
# feedback_v_lang_banned zig ban
136+
# project_zig_unified_api Replacement for v-triple/zig
137+
# feedback_gh_workflow_scope OAuth scope for workflow files

0 commit comments

Comments
 (0)