Skip to content

Commit e5f751d

Browse files
committed
chore(governance): 2026-06-12 checkpoint — bot_directives, contractiles, STATE bump, doc currency
- bot_directives/: README.adoc + hypatia.a2ml + gitbot-fleet.a2ml + git-private-farm.a2ml (farm propagation disabled — no instant-sync workflow in this repo) - contractiles/: replace rsr-template-repo stubs with repo-true content (Mustfile, Trustfile, Adjustfile, Intentfile); add Dustfile.a2ml + Bustfile.a2ml porting the old nested bust/trust content; refresh stale proof-debt baselines (0 sorries / 0 Admitted, verified) - 6a2/STATE.a2ml: light-bump to 2026-06-12 with [recent-work] delta (PRs #68 #69 #71 #72 + estate merge); 6a2/anchor/ANCHOR.a2ml added - README dedup: README.adoc canonical (sponsor badge folded in); README.md replaced with a pointer - docs/archive/README.adoc: archive index added - wiki currency: MPL-2.0 license claims, 72-axiom triage figures, removed interpreters/ references, 6a2/META.a2ml links, AffineScript language-policy summary, 2026-06-12 status note https://claude.ai/code/session_01GJatEm2TVFSTBEkKXmserJ
1 parent bedb17a commit e5f751d

21 files changed

Lines changed: 835 additions & 761 deletions

.machine_readable/6a2/STATE.a2ml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ repo = "github.com/hyperpolymath/absolute-zero"
1111
version = "1.0.0-alpha"
1212
schema-version = "1.0"
1313
created = "2026-01-03"
14-
last-updated = "2026-05-27"
14+
last-updated = "2026-06-12"
1515
status = "active"
1616

1717
[project-context]
@@ -24,6 +24,21 @@ phase = "proof-completion"
2424
completion-percentage = 65
2525
maturity = "experimental"
2626

27+
[recent-work]
28+
# Delta since the previous STATE update (2026-05-27), from
29+
# `git log --since=2026-05-27 --oneline origin/main`.
30+
since = "2026-05-27"
31+
summary = "CI/governance work only — no proof-track changes since the Phase-1 axiom triage (PR #58)"
32+
items = [
33+
"PR #68 — ci(scorecard): add job-level permissions for reusable workflow",
34+
"PR #69 — ci: repin orphan reusable SHAs (97df7621/4fdf4314 → live)",
35+
"PR #71 — ci(codeql): cron weekly→monthly (cut 3, standards#233 Option B)",
36+
"PR #72 — chore(deps): bump the actions group with 2 updates",
37+
"README sponsor badge added (commit 4867f1f)",
38+
"2026-06-12 — estate-standardization-20260607 merged on the governance-checkpoint branch: flat .machine_readable/contractiles/, svc/k9 → self-validating/ rename, GOVERNANCE.adoc + MAINTAINERS.adoc + .github/CODEOWNERS, Guix manifest.scm, 6a2 manifest/README + anchor/, removal of the duplicate root .machine_readable/*.scm set and the root contractiles/ template dir, SPDX header normalization",
39+
"2026-06-12 — governance checkpoint: bot_directives/ trio, fully-populated flat contractiles (incl. new Dustfile/Bustfile), 6a2/anchor/ANCHOR.a2ml, README dedup (README.md → pointer), docs/archive/ index, wiki currency fixes",
40+
]
41+
2742
[components]
2843
# Format: name = [percentage, "notes"]
2944
coq-proofs = [90, "11/11 files compile (Coq 8.18.0+8.20.1); 0 Admitted (rescue 2026-05-18); 75→72 Axioms + 42 Parameters; Phase 1 triage 2026-05-27 (PR #58) classifies 72 Coq Axioms into §c TRUSTED-BASE (52) + §a DISCHARGE backlog (17) + §b PROPERTY-TEST (3); see docs/proof-debt-triage.md"]
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
#
4+
# ANCHOR.a2ml — realignment record for absolute-zero
5+
# Shape: [metadata] + dated [[realignments]] entries (what changed, why, evidence).
6+
# Spec: https://github.com/hyperpolymath/standards/tree/main/anchor-a2ml
7+
8+
[metadata]
9+
repo = "absolute-zero"
10+
owner = "hyperpolymath"
11+
id = "org.hyperpolymath.absolute-zero"
12+
created = "2026-06-12"
13+
last-updated = "2026-06-12"
14+
15+
[[realignments]]
16+
date = "2026-06-12"
17+
title = "Estate standardization + governance checkpoint"
18+
what-changed = [
19+
"Merged origin/estate-standardization-20260607: flat .machine_readable/contractiles/ layout, svc/k9 → self-validating/ rename, GOVERNANCE.adoc + MAINTAINERS.adoc + .github/CODEOWNERS, Guix manifest.scm, 6a2 0-AI-MANIFEST.a2ml + README.adoc + anchor/, removal of the duplicate root .machine_readable/*.scm set and the root contractiles/ template dir, SPDX header normalization",
20+
"Conflict resolution: .github/workflows/rust-ci.yml kept at origin/main's version; .claude/CLAUDE.md kept identical to origin/main",
21+
"Governance checkpoint layer: bot_directives/ (README.adoc, hypatia.a2ml, gitbot-fleet.a2ml, git-private-farm.a2ml); flat contractiles fully populated with repo-true content (template stubs replaced; old nested bust/trust content ported; new Dustfile.a2ml + Bustfile.a2ml); 6a2/STATE.a2ml light-bump to 2026-06-12 with [recent-work]; README.md pointer-ized to canonical README.adoc; docs/archive/ index README; wiki Home.md currency fixes (license MPL-2.0, axiom count 72, status note)",
22+
]
23+
why = "Per-repo governance refresh aligning absolute-zero with the estate standard fully landed in echo-types (PR #185 there); checkpoint of 2026-06-12"
24+
evidence = [
25+
"Merge of origin/estate-standardization-20260607 on branch claude/confident-shannon-xf0Td",
26+
"Upstream PRs since 2026-05-27: #68 (scorecard job-level permissions), #69 (reusable SHA repins), #71 (CodeQL cron monthly), #72 (actions bumps)",
27+
"Proof-track anchor unchanged: Phase-1 axiom triage PR #58 (2026-05-27), docs/proof-debt-triage.md",
28+
]
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// SPDX-License-Identifier: MPL-2.0
2+
// Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
= bot_directives — per-repo directives for automated agents
4+
:toc:
5+
6+
== Purpose
7+
8+
This directory holds the per-repo directives for automated agents operating on
9+
`absolute-zero`: the hypatia security scanner, the gitbot fleet (rhodibot,
10+
echidnabot, sustainabot, glambot, seambot, finishbot), and the
11+
`.git-private-farm` propagation machinery.
12+
13+
== Precedence
14+
15+
. Maintainer instruction (explicit, in-issue/in-PR or out-of-band)
16+
. These directives
17+
. Bot defaults
18+
19+
A bot encountering a conflict between its defaults and a file here follows the
20+
file. A bot encountering a conflict between a file here and a maintainer
21+
instruction follows the maintainer.
22+
23+
== Scope
24+
25+
[cols="1,2"]
26+
|===
27+
| File | Governs
28+
29+
| `hypatia.a2ml` | The hypatia scanner: ignore-file location, accepted findings, prohibited actions
30+
| `gitbot-fleet.a2ml` | The six-bot gitbot fleet: roles, branch policy, never-touch paths, per-bot allow/deny
31+
| `git-private-farm.a2ml` | Propagation to `hyperpolymath/.git-private-farm`: enablement, never-propagate list, token rotation
32+
|===
33+
34+
== Hard rules (all bots)
35+
36+
* Never modify `.claude/CLAUDE.md`, `proofs/`, `src/abi/`, or `.github/workflows/`.
37+
* Draft PRs only; never auto-merge; CI must be green before any merge a human approves.
38+
* Escalation channel is a GitHub issue — do not spam PR comment threads.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
#
4+
# git-private-farm.a2ml — .git-private-farm propagation directives for absolute-zero.
5+
6+
[metadata]
7+
repo = "absolute-zero"
8+
last-updated = "2026-06-12"
9+
owner = "hyperpolymath"
10+
11+
[propagation]
12+
enabled = false
13+
# This repo has NO .github/workflows/instant-sync.yml (checked 2026-06-12).
14+
# The existing .github/workflows/mirror.yml mirrors main to public git forges
15+
# via hyperpolymath/standards mirror-reusable.yml — that is forge mirroring,
16+
# not .git-private-farm propagation.
17+
workflow = ".github/workflows/instant-sync.yml"
18+
workflow-present = false
19+
target = "hyperpolymath/.git-private-farm"
20+
event-type = "propagate"
21+
secret = "FARM_DISPATCH_TOKEN" # secret NAME only — value lives in GitHub secrets
22+
presence-gated = false
23+
presence-gated-note = "not applicable — no instant-sync workflow present to gate"
24+
25+
[never-propagate]
26+
items = ["secrets", "unmerged branches", "work-in-progress"]
27+
28+
[on-token-rotation]
29+
command = "gh secret set FARM_DISPATCH_TOKEN --repo hyperpolymath/absolute-zero"
30+
note = "Name only; paste the new value interactively — never commit it."
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
#
4+
# gitbot-fleet.a2ml — directives for the gitbot fleet on absolute-zero.
5+
6+
[metadata]
7+
repo = "absolute-zero"
8+
last-updated = "2026-06-12"
9+
owner = "hyperpolymath"
10+
11+
[fleet]
12+
bots = ["rhodibot", "echidnabot", "sustainabot", "glambot", "seambot", "finishbot"]
13+
14+
[fleet.roles]
15+
rhodibot = "git operations"
16+
echidnabot = "code quality"
17+
sustainabot = "dependency updates"
18+
glambot = "documentation"
19+
seambot = "integration"
20+
finishbot = "task completion"
21+
22+
[branch-policy]
23+
working-branch-pattern = "bot/<botname>/<topic>"
24+
draft-PRs-only = true
25+
ci-green-before-merge = true
26+
never-touch = [
27+
".claude/CLAUDE.md",
28+
"proofs/",
29+
"src/abi/",
30+
".github/workflows/",
31+
"LICENSE",
32+
]
33+
# proofs/ spans six proof systems (coq, lean4, z3, agda, isabelle, mizar) and
34+
# src/abi/ is the Idris2 ABI proof surface — proof semantics are
35+
# maintainer-gated; bots must not edit them.
36+
37+
[per-bot.echidnabot]
38+
deny = ["proofs/", "src/abi/"]
39+
note = "Quality findings on proof code go to an issue, never an automated edit; proof-debt disposition is canonical in docs/proof-debt-triage.md."
40+
41+
[per-bot.sustainabot]
42+
allow = ["Cargo.toml", "Cargo.lock", "deno.json", "elm.json"]
43+
deny = [".github/workflows/"]
44+
note = "Workflow action pins are repinned by maintainer-reviewed PRs (cf. PR #69); dependency bumps for the actions group arrive via the existing dependabot grouping (cf. PR #72)."
45+
46+
[per-bot.glambot]
47+
allow = ["docs/", "docs/wiki/", "README.adoc"]
48+
deny = ["docs/archive/"]
49+
note = "docs/archive/ is append-only historical snapshots (see docs/archive/README.adoc); do not refresh archived files."
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
#
4+
# hypatia.a2ml — directives for the hypatia security scanner on absolute-zero.
5+
6+
[metadata]
7+
repo = "absolute-zero"
8+
last-updated = "2026-06-12"
9+
owner = "hyperpolymath"
10+
11+
[scanner]
12+
ignore-file = ".hypatia-ignore"
13+
ignore-file-present = true
14+
workflow = ".github/workflows/hypatia-scan.yml"
15+
# The workflow is a thin wrapper around
16+
# hyperpolymath/standards hypatia-scan-reusable.yml (see standards#191).
17+
18+
[[accepted-findings]]
19+
id = "banned-language-example-files"
20+
finding = "cicd_rules/banned_language_file hits under examples/ (go, java, kotlin, swift, ...) and legacy ReScript paths"
21+
reason = "absolute-zero is the canonical cross-language nop-semantics demonstration repo; example files in banned languages are the point, not load-bearing code. Each accepted path is enumerated in .hypatia-ignore. After standards#180 (file_pattern glob support) the per-file entries collapse to a single examples/** pattern."
22+
status = "accepted"
23+
24+
[[accepted-findings]]
25+
id = "reusable-caller-timeout-minutes"
26+
finding = "timeout-minutes flagged on jobs that call estate reusable workflows"
27+
reason = "hypatia-scan.yml, mirror.yml and scorecard.yml call hyperpolymath/standards reusable workflows; timeout-minutes is set at the caller job level (10 minutes), which the scanner does not always attribute to the reusable's jobs. False positive."
28+
status = "accepted"
29+
30+
[[accepted-findings]]
31+
id = "scorecard-token-permissions"
32+
finding = "token-permissions advisories on .github/workflows/scorecard.yml"
33+
reason = "Deliberate: top-level `permissions: read-all` with job-level `security-events: write` + `id-token: write` added in PR #68 for the reusable scorecard workflow. This is the intended least-privilege split."
34+
status = "accepted"
35+
36+
[[accepted-findings]]
37+
id = "stale-hypatia-ignore-rescript-entries"
38+
finding = ".hypatia-ignore lists ReScript paths (src/AuditTrail.res, interpreters/rescript/malbolgeInterpreter.res, examples/SafeDOMExample.res) that no longer exist in the tree"
39+
reason = "Harmless staleness — ignore entries for deleted files have no effect. Cleanup is proposed as a maintainer issue rather than bot-edited, since .hypatia-ignore is security policy."
40+
status = "accepted-pending-cleanup"
41+
42+
[prohibited-actions]
43+
auto-delete-branches = false
44+
auto-merge = false
45+
modify-workflows = false
46+
escalation = "open an issue, do not spam PR comments"
Lines changed: 55 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,67 @@
11
# 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>
2+
# Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
43
#
4+
# Adjustfile — Drift-tolerance contract for absolute-zero.
55
# Cumulative-drift catchment: tolerance bands + corrective actions.
66
# 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
7+
# Run with: adjust check
8+
# Fix with: adjust fix (applies deterministic patches; advisory otherwise)
9+
#
10+
# Populated 2026-06-12 (governance checkpoint): replaces the
11+
# rsr-template-repo stub with repo-true drift bands. Unlike MUST (hard gate),
12+
# ADJUST warns and trends — it does not block. A2ML here is TOML-flavoured.
3313

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
14+
[metadata]
15+
repo = "absolute-zero"
16+
contractile-verb = "adjust"
17+
last-updated = "2026-06-12"
18+
abstract = "Drift tolerances for absolute-zero's proof-debt figures, language-policy surface, and documentation sync. Advisory only."
3919

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
20+
[[tolerances]]
21+
id = "coq-axiom-count"
22+
description = "Coq Axiom count must not exceed the Phase-1 triage baseline"
23+
tolerance = "<= 72 Axioms (counting method = docs/proof-debt-triage.md, PR #58, 2026-05-27)"
24+
corrective = "Any NEW axiom requires a triage entry (TRUSTED-BASE / DISCHARGE / PROPERTY-TEST) in docs/proof-debt-triage.md before merge; trend the count DOWN by discharging the 17-item DISCHARGE backlog"
25+
severity = "advisory"
4526

46-
## Structural Drift
27+
[[tolerances]]
28+
id = "coq-parameter-count"
29+
description = "Coq Parameter count stays at the model-layer baseline"
30+
tolerance = "<= 42 Parameters (baseline of 2026-05-27)"
31+
corrective = "New Parameters need the same triage discipline as Axioms"
32+
severity = "advisory"
4733

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
34+
[[tolerances]]
35+
id = "escape-hatch-total"
36+
description = "Total escape hatches across all proof languages must not increase"
37+
tolerance = "<= 124 (canonical figure per the standards#195 counting method; was 129, reduced to 124 as of the 2026-05-27 STATE entry)"
38+
corrective = "Decrement by discharge; any increment needs a documented rationale in docs/proof-debt-triage.md"
39+
severity = "advisory"
5340

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
41+
[[tolerances]]
42+
id = "physics-constant-duplication"
43+
description = "Physics constants should be declared once, not per-file"
44+
tolerance = "Known duplication: kB_positive/temperature_positive declared 3x across QuantumCNO/StatMech/LandauerDerivation (surfaced by the Phase-1 triage)"
45+
corrective = "Deduplicate into a shared constants module — already on STATE this-week actions"
46+
severity = "advisory"
5947

60-
## Accessibility Drift
48+
[[tolerances]]
49+
id = "banned-language-surface"
50+
description = "Banned-language files stay confined to the demonstration surface"
51+
tolerance = "Banned-language files only under examples/ or enumerated in .hypatia-ignore; zero NEW banned-language files elsewhere"
52+
corrective = "Move demonstration files under examples/; anything load-bearing gets rewritten per the language policy (Python -> Julia/Rust, etc.)"
53+
severity = "advisory"
6154

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
55+
[[tolerances]]
56+
id = "wiki-sync-drift"
57+
description = "docs/wiki/ (canonical, in-repo) vs the GitHub Wiki copy"
58+
tolerance = "GitHub Wiki may lag docs/wiki/ between manual syncs (sync is a manual cp + push, see docs/wiki/README.md)"
59+
corrective = "Run the sync procedure in docs/wiki/README.md; automation (just wiki-sync + workflow) is a tracked TODO"
60+
severity = "advisory"
6761

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
62+
[[tolerances]]
63+
id = "stale-dated-docs"
64+
description = "Dated snapshots belong in docs/archive/"
65+
tolerance = "0 dated status/roadmap snapshots outside docs/archive/"
66+
corrective = "Move superseded dated documents into docs/archive/ and add them to docs/archive/README.adoc"
67+
severity = "advisory"

0 commit comments

Comments
 (0)