Skip to content

Commit e14fdcf

Browse files
committed
chore(governance): 2026-06-12 checkpoint — 6a2 refresh, repo-true flat contractiles, bot_directives trio, doc currency
1 parent 1421a42 commit e14fdcf

17 files changed

Lines changed: 733 additions & 393 deletions

.machine_readable/6a2/META.a2ml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,14 @@ project = "maa-framework"
77
author = "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>"
88
license = "MPL-2.0"
99
standard = "RSR 2026"
10+
last-updated = "2026-06-12"
11+
12+
[architecture-decisions]
13+
# ADR-001 (2026-04-18): K9 self-validation lives outside contractiles/ so the
14+
# contractile directory stays a pure verb set. Location updated by the
15+
# 2026-06 estate standardization: .machine_readable/self-validating/
16+
# (formerly .machine_readable/svc/k9/).
17+
# 2026-06 estate wave: Guix manifest.scm is the package entrypoint
18+
# (flake.nix removed in the estate-standardization merge).
19+
adr-001 = "K9 self-validation outside contractiles/; now at .machine_readable/self-validating/ per estate standardization"
20+
packaging = "Guix (guix.scm + manifest.scm); flake.nix removed in estate wave 2026-06"

.machine_readable/6a2/PLAYBOOK.a2ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66

77
[metadata]
88
version = "0.1.0"
9-
last-updated = "2026-03-16"
9+
last-updated = "2026-06-12"
1010

1111
[deployment]
1212
# method = "gitops"
1313
# target = "container"
1414

1515
[incident-response]
16-
# 1. Check .machine_readable/STATE.a2ml for current status
16+
# 1. Check .machine_readable/6a2/STATE.a2ml for current status
1717
# 2. Review recent commits and CI results
1818
# 3. Run just validate to check compliance
1919

.machine_readable/6a2/STATE.a2ml

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,50 @@
11
# SPDX-License-Identifier: MPL-2.0
22
# STATE.a2ml — Project state checkpoint
3-
# Last updated: 2026-04-04 (CRG C Testing & Benchmarking Phase Complete)
3+
# Last updated: 2026-06-12 (governance checkpoint; previous: 2026-04-04 CRG C complete)
44

55
[metadata]
66
project = "maa-framework"
77
version = "0.1.0"
8-
last-updated = "2026-04-04"
9-
status = "CRG C Compliance Achieved"
8+
last-updated = "2026-06-12"
9+
status = "CRG C compliance achieved; estate-standardized governance layer landed"
1010

1111
[project-context]
1212
name = "maa-framework"
1313
completion-percentage = 50
14-
phase = "Testing & Benchmarking Complete"
14+
phase = "Governance & estate standardization (post-CRG-C; spec/implementation phases per ROADMAP.adoc still open)"
1515

1616
[testing-status]
1717
unit-tests = "26 in aletheia + 13 in brainfuck + 5 in whitespace = 44 total"
1818
e2e-tests = "10 brainfuck interpreter E2E tests"
1919
property-tests = "11 property-based tests (determinism, equivalence, reversibility)"
2020
security-tests = "11 aspect tests (bounds, memory safety, input validation)"
2121
benchmarks = "criterion-based (absolute-zero/benches/cno_benchmarks.rs)"
22-
test-result = "ALL PASS: 39 tests absolute-zero + 26 unit tests aletheia"
22+
test-result = "ALL PASS as of 2026-04-04 CRG C checkpoint: 39 tests absolute-zero + 26 unit tests aletheia"
23+
note = "absolute-zero/ is a git submodule since PR #89; its tests run in the upstream repo"
2324

2425
[crg-compliance]
2526
tier = "C"
2627
requirements = "unit + smoke + build + P2P + E2E + reflexive + contract + aspect + benchmarks"
2728
status = "COMPLETE"
2829
notes = "Zero-dependency aletheia (RSR Bronze), no unsafe code, criterion benchmarks established"
30+
31+
[recent-work]
32+
# Summarized from `git log --since=2026-04-04 origin/main` (51 commits, 2026-05-13..2026-06-04)
33+
# plus the 2026-06-12 estate-standardization merge.
34+
license-migration = "PMPL-1.0-or-later -> MPL-2.0 estate-wide sweep (commit e4e3db0)"
35+
ci-canonicalization = "hypatia-scan/mirror/secret-scanner/scorecard converted to thin wrappers of hyperpolymath/standards reusables (PRs #52, #54, #73, #76, #77, #80); concurrency-cancel guards (#56, #58); scorecard-enforcer OSSF run-step fix (#87); scorecard job-level permissions (#90); CI/CD fix campaigns C001-C005"
36+
absolute-zero-submodule = "re-vendored subtree to upstream HEAD (#83), then converted absolute-zero/ to a git submodule pinned to upstream (#89, closes #84)"
37+
language-policy = "ReScript guidance retired -> AffineScript (#53 Item 9); stale SafeDOMExample.res fixture deleted (#74); CLAUDE.md flip per 2026-05-25 estate policy (#88)"
38+
docs = "CHANGELOG.md seeded, Keep-a-Changelog format (#81); docs-template/ skeleton adopted (#79); tech-debt audit recorded 2026-05-26 (#75); proof-debt.md seeded per standards#203 (#82)"
39+
dependabot = "actions bumps #59-#69, #92-#96 (checkout, artifacts, codeql-action, rust-toolchain, trufflehog, cache, pages)"
40+
estate-standardization = "2026-06-12: merged estate-standardization-20260607 — 6a2 manifest + README, anchors/ -> 6a2/anchor/, agent_instructions/ -> bot_directives/, flat contractiles, svc/k9 -> self-validating/, GOVERNANCE.adoc, Guix manifest.scm replaces flake.nix; codeql cron weekly -> monthly cherry-picked (standards#288)"
41+
42+
[blockers]
43+
spec-uploads = "ROADMAP Phase 1 (specification documents for framework, Oblibeny, Aletheia) not yet uploaded"
44+
proof-debt = "upstream proof debt recorded in docs/proof-debt.md and docs/tech-debt-2026-05-26.md (80 Coq Axiom/Admitted + 54 Lean sorry/axiom markers across 25 files, all vendored/submodule scope)"
45+
root-justfile = "root Justfile build/test/fmt/lint recipes are placeholders; real builds live in aletheia/ (cargo)"
46+
47+
[next-actions]
48+
changelog-automation = "adopt changelog-reusable.yml (standards#206) so CHANGELOG.md stays in sync"
49+
hypatia-ignore-prune = "drop stale aletheia/examples/SafeDOMExample.res entry (file deleted in #74); migrate demo exemptions per .hypatia-ignore TODO 2026-Q3"
50+
submodule-docs = "document `git submodule update --init` for absolute-zero/ in QUICKSTART-DEV"
Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,28 @@
1-
# ⚓ ANCHOR: maa-framework
1+
# SPDX-License-Identifier: MPL-2.0
2+
# ANCHOR: maa-framework
23
# This is the canonical authority for the maa-framework repository.
4+
# Converted from the YAML-style authority record to TOML-A2ML on 2026-06-12
5+
# (field content preserved); realignment entries follow estate convention.
36

4-
id: "org.hyperpolymath.maa-framework"
5-
version: "1.0.0"
6-
clade: "unknown"
7-
status: "active"
7+
[metadata]
8+
id = "org.hyperpolymath.maa-framework"
9+
version = "1.0.0"
10+
clade = "unknown"
11+
status = "active"
12+
last-updated = "2026-06-12"
813

914
# SSG Configuration (Unified boj-server build)
10-
ssg:
11-
engine: "casket"
12-
output_dir: "public"
13-
boj_trigger: true
14-
cartridge: "ssg-mcp"
15+
[ssg]
16+
engine = "casket"
17+
output_dir = "public"
18+
boj_trigger = true
19+
cartridge = "ssg-mcp"
1520

16-
# Relationships
17-
parents:
18-
- "org.hyperpolymath.boj-server"
21+
[relationships]
22+
parents = ["org.hyperpolymath.boj-server"]
23+
24+
[[realignments]]
25+
date = "2026-06-12"
26+
what = "Estate standardization + governance checkpoint: merged estate-standardization-20260607 (6a2 manifest/README, anchors/ -> 6a2/anchor/, agent_instructions/ -> bot_directives/, flat contractiles, svc/k9 -> self-validating/, GOVERNANCE.adoc, Guix manifest.scm replacing flake.nix); cherry-picked codeql cron weekly -> monthly (standards#288); refreshed 6a2 STATE/META; wrote repo-true flat Mustfile/Trustfile/Adjustfile/Intentfile and ported nested dust/bust into flat Dustfile/Bustfile; added bot_directives trio (hypatia, gitbot-fleet, git-private-farm)."
27+
why = "Adopt the newer estate standard (landed in echo-types main via PR #185) and bring machine-readable metadata current with the 2026-04-04..2026-06-04 work (PRs #48-#96)."
28+
evidence = "merge of origin/estate-standardization-20260607; cherry-pick of origin/cicd/codeql-cron-monthly; git log --since=2026-04-04"

.machine_readable/bot_directives/README.adoc

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,21 @@
11
// SPDX-License-Identifier: MPL-2.0
22
// Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3-
= Agent Instructions
3+
= Bot Directives
44
:toc: preamble
55

6-
Methodology-aware configuration for AI agents. Read by any AI agent
7-
(Claude, Gemini, Copilot, etc.) at session start.
6+
Per-repo directives for automated agents, read at session start by any AI
7+
agent (Claude, Gemini, Copilot, etc.) and by the estate's automated bots.
8+
Renamed from `agent_instructions/` in the 2026-06 estate standardization.
9+
10+
== Purpose and Precedence
11+
12+
Purpose: per-repo directives for automated agents — both methodology
13+
(how to work) and bot-specific operating rules (what each bot may do).
14+
15+
Precedence: *maintainer > these directives > bot defaults.*
16+
17+
Scope: applies to the Hypatia scanner, the gitbot fleet, and
18+
`.git-private-farm` propagation.
819

920
== Files
1021

@@ -20,21 +31,30 @@ Methodology-aware configuration for AI agents. Read by any AI agent
2031

2132
| `debt.a2ml`
2233
| Meander debt — things found but not fixed, carried between sessions
34+
35+
| `hypatia.a2ml`
36+
| Hypatia scanner directives: ignore-file, workflow, accepted findings, prohibited actions
37+
38+
| `gitbot-fleet.a2ml`
39+
| Fleet roster (rhodibot, echidnabot, sustainabot, glambot, seambot, finishbot), branch policy, per-bot allow/deny
40+
41+
| `git-private-farm.a2ml`
42+
| Propagation to `hyperpolymath/.git-private-farm` via `instant-sync.yml`; token-rotation runbook
2343
|===
2444

2545
== How Agents Use These
2646

2747
1. Read `methodology.a2ml` at session start — know mode, invariants, ceiling
2848
2. Read `coverage.a2ml` — know what was visited last time, what was skipped
2949
3. Read `debt.a2ml` — know what's outstanding from previous sessions
30-
4. At session end, update `coverage.a2ml` and `debt.a2ml`
50+
4. Read your bot-specific file (`hypatia.a2ml` / `gitbot-fleet.a2ml` / `git-private-farm.a2ml`) — know your allow/deny boundaries
51+
5. At session end, update `coverage.a2ml` and `debt.a2ml`
3152

3253
== Relationship to Other Files
3354

34-
* `AGENTIC.a2ml` says WHAT agents can do (permissions, gating)
35-
* `bot_directives/` says HOW agents should work (methodology)
36-
* `bot_directives/` says what the gitbot-fleet does (fleet-specific)
37-
* `CLAUDE.md` says how Claude specifically should work (Claude-specific)
55+
* `../6a2/AGENTIC.a2ml` says WHAT agents can do (permissions, gating)
56+
* `bot_directives/` says HOW agents should work (methodology) and what each bot may do (fleet-specific)
57+
* `.claude/CLAUDE.md` says how Claude specifically should work (Claude-specific)
3858

3959
== Reference
4060

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# git-private-farm.a2ml — .git-private-farm propagation directives for maa-framework
3+
4+
[metadata]
5+
repo = "maa-framework"
6+
last-updated = "2026-06-12"
7+
owner = "hyperpolymath"
8+
9+
[propagation]
10+
enabled = true
11+
workflow = ".github/workflows/instant-sync.yml" # present; fires on push to main/master and on published releases
12+
target = "hyperpolymath/.git-private-farm"
13+
event-type = "propagate"
14+
secret = "FARM_DISPATCH_TOKEN" # secret NAME only — value lives in GitHub Actions secrets
15+
presence-gated = false # the dispatch step runs unconditionally; no `if:` presence gate on the secret in the current workflow
16+
17+
[never-propagate]
18+
items = ["secrets", "unmerged branches", "work-in-progress"]
19+
20+
[on-token-rotation]
21+
command = "gh secret set FARM_DISPATCH_TOKEN --repo hyperpolymath/maa-framework" # name only; paste the new value when prompted
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# gitbot-fleet.a2ml — gitbot fleet directives for maa-framework
3+
# Per-repo directives for the hyperpolymath gitbot fleet.
4+
5+
[metadata]
6+
repo = "maa-framework"
7+
last-updated = "2026-06-12"
8+
owner = "hyperpolymath"
9+
10+
[fleet]
11+
bots = ["rhodibot", "echidnabot", "sustainabot", "glambot", "seambot", "finishbot"]
12+
rhodibot = "git operations"
13+
echidnabot = "code quality"
14+
sustainabot = "dependency updates"
15+
glambot = "documentation"
16+
seambot = "integration"
17+
finishbot = "task completion"
18+
19+
[branch-policy]
20+
working-branch-pattern = "bot/<bot-name>/<topic>"
21+
draft-PRs-only = true
22+
ci-green-before-merge = true
23+
never-touch = [
24+
".claude/CLAUDE.md",
25+
".gitmodules",
26+
"absolute-zero", # submodule pointer — bumps are deliberate human acts (PR #89)
27+
".github/workflows/",
28+
"LICENSE",
29+
"LICENSES/",
30+
]
31+
32+
[per-bot.rhodibot]
33+
allow = ["branch create", "rebase of own bot branches"]
34+
deny = ["submodule pointer bumps", "force-push to shared branches"]
35+
36+
[per-bot.sustainabot]
37+
allow = ["dependency-update PRs for aletheia/Cargo.toml"]
38+
deny = ["GitHub Actions version bumps"]
39+
note = "Actions bumps are handled by dependabot in this repo (see PRs #59-#69, #92-#96); duplicating them creates conflicting PRs."
40+
41+
[per-bot.echidnabot]
42+
allow = ["lint/format suggestions on aletheia/ and tests/"]
43+
deny = ["edits under .machine_readable/ without maintainer review"]
44+
45+
[per-bot.glambot]
46+
allow = ["docs/ and README/EXPLAINME currency fixes as draft PRs"]
47+
deny = ["governance docs (GOVERNANCE.adoc, MAINTAINERS.adoc) edits"]
48+
49+
[per-bot.seambot]
50+
allow = ["integration metadata under .machine_readable/integrations/"]
51+
deny = ["workflow wiring changes"]
52+
53+
[per-bot.finishbot]
54+
allow = ["closing checklists, marking task completion in PR descriptions"]
55+
deny = ["merging PRs (humans merge after CI green)"]
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# hypatia.a2ml — Hypatia scanner directives for maa-framework
3+
# Per-repo directives for the Hypatia security/policy scanner.
4+
5+
[metadata]
6+
repo = "maa-framework"
7+
last-updated = "2026-06-12"
8+
owner = "hyperpolymath"
9+
10+
[scanner]
11+
ignore-file = ".hypatia-ignore" # present at repo root
12+
workflow = ".github/workflows/hypatia-scan.yml" # thin wrapper of hyperpolymath/standards hypatia-scan-reusable.yml (standards#191), weekly cron + push/PR
13+
report-format = "logtalk" # per 6a2/NEUROSYM.a2ml [hypatia-config]
14+
15+
[accepted-findings]
16+
# Known, deliberate exemptions — mirrored from .hypatia-ignore with reasons.
17+
banned-language-absolute-zero-demos = "cicd_rules/banned_language_file entries for absolute-zero/ (.res/.go/.java/.kt/.swift demo files): absolute-zero/ is a submodule pinned to hyperpolymath/absolute-zero; the entries mirror that repo's own .hypatia-ignore and are kept defensively in case hypatia scans through the submodule boundary. Demonstration scaffolds, not load-bearing code (see #71)."
18+
stale-aletheia-safedom-entry = "the aletheia/examples/SafeDOMExample.res entry is STALE — the file was deleted in PR #74; entry retained pending an ignore-file prune (TODO 2026-Q3 in .hypatia-ignore)."
19+
glob-collapse-pending = "per .hypatia-ignore: the per-file absolute-zero/examples/** entries will collapse to a single file_pattern entry once standards#180 (glob matching in in_baseline()) merges."
20+
21+
[prohibited-actions]
22+
auto-delete-branches = false
23+
auto-merge = false
24+
modify-workflows = false
25+
escalation = "open an issue, do not spam PR comments"

0 commit comments

Comments
 (0)