Skip to content

Commit 9a28802

Browse files
chore: machine-readable + contractile currency checkpoint (#116)
## Machine-readable / contractile currency checkpoint Part of the estate-wide machine-readable currency pass. **High-confidence canonical fixes only**; template-shaped work deferred to a tracking issue. ### Changes - `agent_instructions/` → `bot_directives/` rename (root only); refs updated - Contractiles: added `INDEX.a2ml` + `_base.ncl` + the missing **adjust, bust, intend** verbs (6-verb set) with repo-specific xfiles + canonical `.ncl` runners - 6a2 STATE/META/ECOSYSTEM refreshed to current reality ### ⚠️ One license-adjacent change to review A 6a2 metadata field `license = "PMPL-1.0-or-later"` → `"MPL-2.0"` was synced to **match the repo's already-merged flip** (#103#107; the actual `LICENSE` is MPL-2.0). This is currency, not a new license decision — but flagging it since the broader AGPL/PMPL question is owner-level. Easy to revert if you'd rather keep it strictly flag-only. ### Validation (run, not eyeballed) - `nickel typecheck` clean on all 6 pure verb `.ncl` + `_base.ncl` - `just validate-rsr`: **PASS before and after** ### Deferred → tracking issue - **30+ satellite sub-trees** (`iser-tools/`, `rescript-ecosystem/`, `affinescript-ecosystem/` …) each have their own `agent_instructions/` — each needs its own targeted rename (scoped out here deliberately) - k9.ncl + manifest tridents (must/trust/bust/dust); ANCHOR normalization; per-bot `bot_directives/`; license review; wiki refresh; root `Mustfile` vs contractile `Mustfile.a2ml` decision (different consumers — can coexist) ### Root cause Frozen `RSR-SPEC.adoc` v1.0.0 (2025-12-27) never bumped for post-2026-04 policy → satellites are spec-conformant but policy-stale. Owner: cut RSR-SPEC v1.1/v2.0 + re-sync `rsr-template-repo`. https://claude.ai/code/session_01PhqGcxCqkMdJtR6NWq56Hx --- _Generated by [Claude Code](https://claude.ai/code/session_01PhqGcxCqkMdJtR6NWq56Hx)_ Signed-off-by: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
1 parent 89741d5 commit 9a28802

29 files changed

Lines changed: 992 additions & 36 deletions

File tree

.machine_readable/6a2/ECOSYSTEM.a2ml

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,37 @@
44

55
[metadata]
66
project = "developer-ecosystem"
7+
last-updated = "2026-06-05"
78
ecosystem = "hyperpolymath"
89

910
[position]
10-
type = "component"
11+
type = "monorepo"
12+
role = "central hub for developer workflow tools — git operations, repo management, scaffolding, developer UX"
13+
parent = "hyperpolymath estate"
14+
15+
[satellites]
16+
# Active satellite project areas within this monorepo
17+
git-tools = ["git-hud", "gitloom", "git-reunify", "git-seo", "polysafe-gitfixer", "vext"]
18+
repo-management = ["oikos", "robot-repo-automaton", "grim-repo", "robot-vacuum-cleaner"]
19+
scaffolding = ["scaffoldia"]
20+
developer-ux = ["rescript-evangeliser (→ nextgen-languages-evangeliser)", "recon-silly-ation", "nickel-config-reporter"]
21+
ecosystems = ["affinescript-ecosystem", "rescript-ecosystem", "zig-ecosystem", "v-ecosystem (legacy/community-handoff)", "deno-ecosystem", "julia-ecosystem", "coq-ecosystem", "idris2-ecosystem", "iser-tools"]
22+
cadre = ["cadre-router", "cadre-tea-router"]
23+
zig-api = ["zig-api (Phase 1+2 complete)"]
24+
25+
[compile-targets]
26+
affinescript = "hyperpolymath/affinescript (primary language compiler)"
27+
typed-wasm = "hyperpolymath/typed-wasm (AffineScript compile target)"
28+
29+
[shared-tools]
30+
standards = "hyperpolymath/standards (RSR, k9-svc, reusable workflows)"
31+
verisimdb = "hyperpolymath/verisimdb (panic-attack scan results, cross-repo analytics)"
32+
33+
[external-relationships]
34+
v-lang-handoff = "Community handoff to alex@vlang.io completed 2026-04-12 (TRANSFER.adoc)"
35+
affinescript-policy = "AffineScript is the go-forward primary language (2026-05-25 policy refresh)"
36+
37+
[status-as-of-2026-06-05]
38+
license-stamps = "MPL-2.0 (flipped from PMPL-1.0-or-later in phases #103-#107)"
39+
contractiles = "6 verbs (must/trust/bust/adjust/dust/intend) — Xfile.a2ml + .ncl for all; tridents deferred"
40+
bot-directives = "root .machine_readable/bot_directives/ correct; satellite sub-project dirs pending rename"

.machine_readable/6a2/META.a2ml

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,44 @@
44

55
[metadata]
66
project = "developer-ecosystem"
7+
last-updated = "2026-06-05"
78
author = "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>"
8-
license = "PMPL-1.0-or-later"
9+
license = "MPL-2.0"
910
standard = "RSR 2026"
11+
12+
[maintenance-axes]
13+
axis-1 = "must > intend > like"
14+
axis-2 = "corrective > adaptive > perfective"
15+
axis-3 = "systems > compliance > effects"
16+
scoping-first = true
17+
idris-unsound-scan = "believe_me/assert_total"
18+
audit-focus = "systems in place, documentation explains actual state, safety/security accounted for, observed effects reviewed"
19+
compliance-focus = "seams/compromises/exception register, bounded exceptions, anti-drift checks"
20+
effects-evidence = "benchmark execution/results and maintainer status dialogue/review"
21+
22+
[architecture]
23+
type = "monorepo"
24+
primary-language = "AffineScript (go-forward); ReScript (legacy migration source)"
25+
build-system = "Deno (JS), Cargo (Rust), Dune (OCaml)"
26+
package-management = "Guix (primary), Nix (fallback), Deno (JS deps)"
27+
container-runtime = "Podman (never Docker)"
28+
task-runner = "just"
29+
30+
[adr]
31+
# ADR entries for load-bearing architectural decisions
32+
# Format: id = "decision (status)"
33+
language-policy-2026-05-25 = "AffineScript as primary application language estate-wide; ReScript legacy until #488 migration (ACCEPTED)"
34+
ts-exemptions = "Three approved TS exemption paths in CLAUDE.md (ACCEPTED)"
35+
bot-directives-rename = "agent_instructions/ → bot_directives/ estate-wide rename (ACCEPTED 2026-06-05)"
36+
contractiles-schema-v2 = "6-verb contractile schema (must/trust/bust/adjust/dust/intend) — lust removed 2026-04-18 (ACCEPTED)"
37+
license-flip-mpl2 = "PMPL-1.0-or-later stamps flipped to MPL-2.0 across estate in phases (#103-#107) (ACCEPTED)"
38+
39+
[governance]
40+
code-review = "PR required; Hypatia reviews for language policy compliance"
41+
merge-bot = "gitbot-fleet (auto-merge on green CI)"
42+
security-scan = "Hypatia security bot; panic-attack assail"
43+
ci = "GitHub Actions; reusable workflows from hyperpolymath/standards"
44+
45+
[notes]
46+
v-lang-status = "Estate-wide V-lang carve-out documented in docs/v-ecosystem/. Community handoff to alex@vlang.io completed 2026-04-12 via TRANSFER.adoc."
47+
rescript-status = "ReScript demoted to legacy 2026-05-25. No new .res files. Existing .res stays until #488 migration assistant is available."

.machine_readable/6a2/STATE.a2ml

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@
55
[metadata]
66
project = "developer-ecosystem"
77
version = "0.1.0"
8-
last-updated = "2026-04-12"
8+
last-updated = "2026-06-05"
99
status = "active"
1010

1111
[project-context]
1212
name = "developer-ecosystem"
13-
completion-percentage = 45
14-
phase = "V-lang estate retired; zig-api Phase 1+2 complete; v-ecosystem connectors expanded for community handoff"
13+
completion-percentage = 55
14+
phase = "license-stamps-flipped-to-MPL-2.0; bot_directives-rename-done; contractiles-currency-pass-2026-06-05"
15+
16+
[session-2026-06-05-currency-checkpoint]
17+
summary = "Currency checkpoint (claude/zen-knuth-6hoEt branch). Tasks completed: (1) agent_instructions→bot_directives rename already done at root; external references fixed in 8 files across affinescript-ecosystem and rescript-ecosystem satellite subdirs. (2) Contractiles: INDEX.a2ml + _base.ncl added; missing verb dirs created (adjust/, bust/, intend/) each with Xfile.a2ml + canonical .ncl runner; must/trust/dust runners (must.ncl/trust.ncl/dust.ncl) added alongside existing Xfile.a2ml. (3) svc/k9 templates already present. (4) 6a2 files refreshed. (5) README/EXPLAINME currency-only fixes. (6) License scan flagged."
18+
files-changed = "~20 (currency + contractile files)"
19+
note = "k9.ncl + .manifest.a2ml tridents for must/trust/bust/dust deferred — see DEFERRED section in Intentfile.a2ml"
1520

1621
[session-2026-04-12-v-ecosystem-connectors]
1722
summary = "All 95 v-api-interfaces connectors expanded to ≥201 lines. 45 stubs (previously 100–185 lines) given protocol constants, 5–8 public methods, helpers, and 3–5 tests. Batches: network-protocols (14), app/infra (15), specialized/security (14), imap (1). Commit d98a18c. V-lang work complete for TRANSFER.adoc community handoff to alex@vlang.io."
@@ -22,3 +27,23 @@ insertions = 8426
2227
grade = "D"
2328
achieved-on = "2026-04-04"
2429
representative-crate = "opm-canonicalizer"
30+
note = "D is the baseline achieved; no regression. Upward movement blocked on test suite expansion and formal verification work."
31+
32+
[language-policy]
33+
status = "active-migration"
34+
primary-language = "AffineScript (go-forward, 2026-05-25 policy)"
35+
legacy-language = "ReScript (existing .res files, no new .res files permitted)"
36+
banned = ["TypeScript", "Python", "Go", "Node.js", "npm", "Bun"]
37+
approved-ts-exemptions = [
38+
"affinescript-ecosystem/affinescript-deno-test/**",
39+
"aggregate-library/src/test-runner.ts",
40+
"rescript-ecosystem/packages/core/runtime-tools/bin/rrt.ts"
41+
]
42+
43+
[contractiles]
44+
index-present = true
45+
_base-present = true
46+
verb-coverage = "must, trust, dust (Xfile.a2ml + .ncl); adjust, bust, intend (Xfile.a2ml + .ncl)"
47+
trident-coverage = "none (k9.ncl + manifest.a2ml deferred for all 6 verbs)"
48+
lust-present = false
49+
note = "All 6 verbs have minimum Xfile.a2ml + runner .ncl. Tridents (k9.ncl + manifest) are template-repo derived work — deferred."

.machine_readable/agent_instructions/README.adoc renamed to .machine_readable/bot_directives/README.adoc

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

66
Methodology-aware configuration for AI agents. Read by any AI agent
@@ -32,8 +32,7 @@ Methodology-aware configuration for AI agents. Read by any AI agent
3232
== Relationship to Other Files
3333

3434
* `AGENTIC.a2ml` says WHAT agents can do (permissions, gating)
35-
* `agent_instructions/` says HOW agents should work (methodology)
36-
* `bot_directives/` says what the gitbot-fleet does (fleet-specific)
35+
* `bot_directives/` says HOW agents should work (methodology)
3736
* `CLAUDE.md` says how Claude specifically should work (Claude-specific)
3837

3938
== Reference
File renamed without changes.
File renamed without changes.
File renamed without changes.
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# INDEX.a2ml — Contractile Registry
3+
# Author: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
#
5+
# Machine-readable catalogue of all contractile verbs in this template set.
6+
# Consumers (CI scripts, the contractile CLI, Hypatia rules) SHOULD read this
7+
# file to discover available verbs rather than hard-coding the list.
8+
#
9+
# See: docs/CONTRACTILE-SPEC.adoc §Registry
10+
11+
---
12+
id = "contractiles-registry"
13+
version = "2.0.0" # 2.0.0 (2026-04-18): all 6 verbs on trident shape; verb set complete.
14+
spec = "docs/CONTRACTILE-SPEC.adoc"
15+
last_updated = "2026-04-18"
16+
base_schema = ".machine_readable/contractiles/_base.ncl"
17+
meta_schema_status = "pending — see CONTRACTILE-SPEC §validator-meta-schema"
18+
19+
## Verbs
20+
21+
[[verbs]]
22+
name = "adjust"
23+
semantics = "drift tolerances + corrective actions"
24+
trident = [
25+
"adjust/Adjustfile.a2ml",
26+
"adjust/adjust.ncl",
27+
"adjust/adjust.k9.ncl",
28+
]
29+
manifest = "adjust/adjust.manifest.a2ml"
30+
status = "active"
31+
tier = "Yard"
32+
authority = "advisory"
33+
gating = "advisory (continue-with-warnings)"
34+
cardinality = "one per repo"
35+
notes = "Fifth trident instance (2026-04-18). First (Yard, advisory) authority pattern. Specialises in cumulative-drift catchment — tolerance bands + trend tracking across sessions. auto_fix_when_available applies deterministic patches; advisory otherwise."
36+
37+
[[verbs]]
38+
name = "bust"
39+
semantics = "hard-stop / expiry / must-not-run declarations"
40+
trident = [
41+
"bust/Bustfile.a2ml",
42+
"bust/bust.ncl",
43+
"bust/bust.k9.ncl",
44+
]
45+
manifest = "bust/bust.manifest.a2ml"
46+
status = "active"
47+
tier = "Hunt-read-only"
48+
authority = "blocking"
49+
gating = "hard (exit-nonzero)"
50+
cardinality = "one per repo"
51+
notes = "Fourth trident instance (2026-04-18). Completes the blocking-authority triple (must + trust + bust). Specialises in deprecated-path-reintroduction catchment. Injects failures via declared probes and verifies recovery paths."
52+
53+
[[verbs]]
54+
name = "dust"
55+
semantics = "rollback / recovery / deprecation / audit-trail preservation"
56+
trident = [
57+
"dust/Dustfile.a2ml",
58+
"dust/dust.ncl",
59+
"dust/dust.k9.ncl",
60+
]
61+
manifest = "dust/dust.manifest.a2ml"
62+
status = "active"
63+
tier = "Yard"
64+
authority = "advisory"
65+
gating = "advisory (continue-with-warnings)"
66+
cardinality = "one per repo"
67+
notes = "Sixth and FINAL trident instance (2026-04-18) — completes the full verb set. Specialises in audit-trail preservation + rollback-path verification. Destructive actions gated behind --apply flag + per-item approval; dry-run default."
68+
69+
[[verbs]]
70+
name = "intend"
71+
semantics = "north-star (commitments + aspirations)"
72+
trident = [
73+
"intend/Intentfile.a2ml",
74+
"intend/intend.ncl",
75+
"intend/intend.k9.ncl",
76+
]
77+
manifest = "intend/intend.manifest.a2ml"
78+
status = "active"
79+
tier = "Hunt"
80+
authority = "reporting"
81+
gating = "non-gating (continue)"
82+
cardinality = "one per repo"
83+
notes = "First trident instance in the estate (2026-04-18). Reports progress toward committed next-actions AND lists horizon aspirations. Absorbed the deprecated `lust` verb 2026-04-18. Never blocks. Remaining 5 verbs still on file_pair shape until tridents are built."
84+
85+
[[verbs]]
86+
name = "k9"
87+
semantics = "trust-tier templates (EXCEPTION to one-verbfile rule)"
88+
file_pair = [
89+
"k9/template-hunt.k9.ncl",
90+
"k9/template-kennel.k9.ncl",
91+
"k9/template-yard.k9.ncl",
92+
]
93+
status = "exception"
94+
gating = "not applicable"
95+
notes = "k9 is service-automation meta-infrastructure, not a verb contractile. Three trust-tier templates (Kennel/Yard/Hunt). Does not have a Verbfile.a2ml. See CONTRACTILE-SPEC §k9-exception."
96+
97+
# [[verbs]] lust REMOVED 2026-04-18 — name had unwanted associations;
98+
# the horizon/aspiration semantics were always meant to live inside `intend`
99+
# (the north-star verb). The [[wishes]] schema was absorbed into
100+
# intend/Intentfile.a2ml. Any `lust/` dir found in an estate repo is drift
101+
# and should be deleted.
102+
103+
[[verbs]]
104+
name = "must"
105+
semantics = "invariant assertion — release-blocking"
106+
trident = [
107+
"must/Mustfile.a2ml",
108+
"must/must.ncl",
109+
"must/must.k9.ncl",
110+
]
111+
manifest = "must/must.manifest.a2ml"
112+
status = "active"
113+
tier = "Hunt-read-only"
114+
authority = "blocking"
115+
gating = "hard (exit-nonzero)"
116+
cardinality = "one per repo"
117+
notes = "Third trident instance (2026-04-18). Completes the blocking-authority pair with trust: must = concrete + persistent invariants; trust = concrete + ephemeral transactions. Specialises in subtle invariant-erosion (tracking per-session trend; flagging silent regression). Single failure blocks merge. Simplest and most commonly populated verb."
118+
119+
[[verbs]]
120+
name = "trust"
121+
semantics = "security + provenance + safe-hacking"
122+
trident = [
123+
"trust/Trustfile.a2ml",
124+
"trust/trust.ncl",
125+
"trust/trust.k9.ncl",
126+
]
127+
manifest = "trust/trust.manifest.a2ml"
128+
status = "active"
129+
tier = "Hunt"
130+
authority = "blocking"
131+
gating = "hard (exit-nonzero)"
132+
cardinality = "one per repo"
133+
notes = "Second trident instance (2026-04-18). First (Hunt, blocking) verb — hard gate. Primary defense against threat-model misclassification (B1) and 'turn off the firewall' capability-collapse (C2). Inherits on_open negotiation+accountability+translation from intend.k9.ncl v2.0.0; adds threat_model_foregrounding + block_session_close_on_critical_drift."

0 commit comments

Comments
 (0)