Skip to content

Commit 19c158a

Browse files
docs(machine_readable): ochrance checkpoint — refresh 6a2 + ANCHOR (#35)
Refresh all six 6a2 files + ANCHOR from the March .scm-converted stubs to current content: proven surface, proof-campaign milestones, decisions D1/D2/D3, combiner generalization, honest proof bounds, build/verify runbooks, and a realignment record for the 2026-06-05 convergence.
1 parent 47ac3c9 commit 19c158a

7 files changed

Lines changed: 181 additions & 31 deletions

File tree

.machine_readable/6a2/AGENTIC.a2ml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
#
44
# AGENTIC.a2ml — AI agent constraints and capabilities
55
# Defines what AI agents can and cannot do in this repository.
6-
76
[metadata]
87
version = "0.1.0"
9-
last-updated = "2026-03-16"
8+
last-updated = "2026-06-05"
109

1110
[agent-permissions]
1211
can-edit-source = true
@@ -17,8 +16,16 @@ can-create-files = true
1716

1817
[agent-constraints]
1918
# What AI agents must NOT do:
20-
# - Never use banned language patterns (believe_me, unsafeCoerce, etc.)
19+
# - Never use banned proof escapes (believe_me, assert_total, postulate, unsafePerformIO, holes) on proof symbols
20+
# - Never weaken %default total, nor introduce `covering` / `partial` on verification code
2121
# - Never commit secrets or credentials
2222
# - 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)
23+
# - Never place state/meta files in repository root (must live under .machine_readable/)
24+
# - Never use AGPL (license is MPL-2.0)
25+
26+
[agent-workflow]
27+
# How AI agents should work here:
28+
proof-campaign = "resume from docs/PROOFS.adoc — the authoritative, dependency-sorted plan; it survives context compaction"
29+
post-migration = "on return from the svalinn → Ephapax track, follow docs/AFTER-MIGRATION.adoc before resuming"
30+
verification-gate = "idris2 --build ochrance.ipkg must stay clean and fully total"
31+
model-guidance = "Opus for proof discovery / structural walls; Sonnet for mechanisation, refactors, tests; Haiku for grunt sweeps"
Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,28 @@
11
# SPDX-License-Identifier: MPL-2.0
2+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
#
24
# ECOSYSTEM.a2ml — Ecosystem position
3-
# Converted from ECOSYSTEM.scm on 2026-03-15
4-
55
[metadata]
66
project = "ochrance"
77
ecosystem = "hyperpolymath"
8+
last-updated = "2026-06-05"
89

910
[position]
1011
type = "component"
12+
role = """Neurosymbolic filesystem-integrity verifier — the receipt/attestation layer for accountable state transitions."""
13+
14+
[related-projects]
15+
projects = [
16+
"echidna — Rust/Julia neurosymbolic prover (provides libechidna.so); Ochránce adds Idris2 as a backend",
17+
"idris2-echidna — Idris2 prover abstraction layer",
18+
"proven — Idris2 formally verified library",
19+
"ochrance-framework — architecture + docs; its duplicate core is retired (D1)",
20+
"svalinn — estate sibling, edge verification gateway; migrating ReScript → Ephapax (D3)",
21+
"valence-shell — consumes Ochránce receipts for accountable state transitions (see integrations/valence-shell-bridge.a2ml)",
22+
"echo-types — semantics of the residue/loss those transitions expose",
23+
"boj-server — SSG/build host (casket engine); ANCHOR parent (see anchors/ANCHOR.a2ml)",
24+
]
25+
26+
[integrations]
27+
# detail in .machine_readable/integrations/*.a2ml
28+
declared = [ "proven", "valence-shell-bridge", "verisimdb", "vexometer", "feedback-o-tron" ]

.machine_readable/6a2/META.a2ml

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,33 @@
11
# SPDX-License-Identifier: MPL-2.0
2-
# META.a2ml — Project meta-information
3-
# Converted from META.scm on 2026-03-15
4-
2+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
#
4+
# META.a2ml — Architecture decisions & development practices
55
[metadata]
66
project = "ochrance"
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-05"
11+
12+
[architecture]
13+
summary = """6-layer trust pyramid (L0 hardware root → L5 TUI/telemetry). Framework-first: a VerifiedSubsystem interface with pluggable modules; the filesystem is the reference subsystem. A2ML is the attestation/audit markup. A verified Merkle tree carries a combiner-generic soundness theorem. Crypto is provided by a thin Zig FFI over std.crypto."""
14+
core = "ochrance-core (Idris2) — single source of proof truth"
15+
ffi = "ffi/zig (BLAKE3 / SHA-256 / SHA3-256 / Ed25519); thin C NVMe syscall shims (L1)"
16+
languages = "Idris2 (proofs), Zig (FFI), C (syscall shims), Rust + Julia (ECHIDNA, future)"
17+
18+
[decisions]
19+
# architecture decisions on record (proof-side rationale in docs/PROOFS.adoc)
20+
records = [
21+
"D1 — single core: ochrance-core is the source of truth; ochrance-framework's duplicate core is retired, its mode-indexed VerifiedSubsystem Interface harvested.",
22+
"D2 — crypto binding as a typed interface: collision resistance modelled as an Idris hypothesis (CollisionResistant h); the binding theorem is discharged against it, not left as prose.",
23+
"D3 — svalinn migrates ReScript → Ephapax before proof (migrate-then-prove).",
24+
"Combiner generalization: Merkle construction/verification/soundness are parameterised over the hash combiner; XOR and BLAKE3 are instances of one universally-quantified theorem; cryptographic binding is the separate trust assumption.",
25+
]
26+
27+
[practices]
28+
totality = "every module carries %default total; structural recursion only; no believe_me / assert_* / postulate / unsafePerformIO / holes on proof symbols"
29+
idris = "Idris2 0.8.0+"
30+
progressive-strictness = "verification supports Lax / Checked / Attested modes"
31+
error-taxonomy = "q/ query · p/ proof · z/ zone"
32+
ci = "type-check + totality gate, A2ML/property/integration/e2e suites, Zig FFI build+test, CodeQL, secret scans, RSR antipattern / SPDX / workflow linters"
33+
docs = "AsciiDoc (.adoc) except GitHub-required files; the proof campaign is tracked in docs/PROOFS.adoc"

.machine_readable/6a2/NEUROSYM.a2ml

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,35 @@
33
#
44
# NEUROSYM.a2ml — Neurosymbolic integration metadata
55
# Configuration for Hypatia scanning and symbolic reasoning.
6-
76
[metadata]
87
version = "0.1.0"
9-
last-updated = "2026-03-16"
8+
last-updated = "2026-06-05"
109

1110
[hypatia-config]
1211
scan-enabled = true
1312
scan-depth = "standard"
1413
report-format = "logtalk"
14+
15+
[symbolic]
16+
prover = "Idris2 (dependent types)"
17+
neural-backend = "ECHIDNA (Rust/Julia) — FFI stubbed, integration pending"
18+
abstraction = "idris2-echidna prover layer (planned 13th ECHIDNA backend)"
19+
20+
[proof-obligations]
21+
# discharged — machine-checked, axiom-free
22+
discharged = [
23+
"merkleCorrectWith — combiner-generic inclusion soundness",
24+
"verifyProofReconstructsWith — verify ≡ root == reconstruct",
25+
"roundtripManifest — grammar invertibility over the reference token codec",
26+
"progressive assurance (SatisfiesMinimum / attestedSatisfiesLax)",
27+
]
28+
# open — see docs/PROOFS.adoc Stages 1–4
29+
open = [
30+
"buildMerkleTree correctness + IO↔pure bridge to the production crypto path",
31+
"CollisionResistant h + merkleBinding (D2)",
32+
"Verify / Validator soundness; repair correctness (L3 linear); Merkle completeness",
33+
]
34+
35+
[honest-bounds]
36+
# boundaries by design — documented, never faked
37+
notes = """The production parse∘lex∘serialize round-trip rests on primitive String operations (pack/unpack/parseInteger) with no equational theory; the honest guarantee is roundtripManifest over a reference token codec, complemented by a runtime round-trip property. The residual root==root Bool step in merkleCorrect is propositional digest equality — the strongest honest statement without an unsafe reflexivity axiom."""

.machine_readable/6a2/PLAYBOOK.a2ml

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,27 @@
22
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
33
#
44
# PLAYBOOK.a2ml — Operational playbook
5-
# Runbooks, incident response, deployment procedures.
6-
5+
# Runbooks, build/verify procedures, incident response.
76
[metadata]
87
version = "0.1.0"
9-
last-updated = "2026-03-16"
8+
last-updated = "2026-06-05"
109

11-
[deployment]
12-
# method = "gitops"
13-
# target = "container"
10+
[build-and-verify]
11+
typecheck = "idris2 --build ochrance.ipkg # must be clean and fully total"
12+
single-file = "idris2 --check ochrance-core/Ochrance/A2ML/Lexer.idr"
13+
ffi = "cd ffi/zig && zig build && zig build test # BLAKE3 / SHA-256 / SHA3-256 / Ed25519 KATs (Zig 0.11.0)"
14+
suites = "A2ML parser, property, integration, and tests/e2e_test.sh"
1415

1516
[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
17+
steps = [
18+
"Check .machine_readable/6a2/STATE.a2ml for current status, blockers, and next actions",
19+
"Review recent commits and CI results on main",
20+
"Re-run the proof build (idris2 --build ochrance.ipkg) and the affected suite",
21+
]
1922

2023
[release-process]
21-
# 1. Update version in STATE.a2ml, META.a2ml
22-
# 2. Run just quality (format, lint, test)
23-
# 3. Tag and push
24+
steps = [
25+
"Update version + last-updated in STATE.a2ml and META.a2ml",
26+
"Ensure CI is green (totality gate, suites, Zig FFI build+test, CodeQL, RSR linters)",
27+
"Tag and push",
28+
]

.machine_readable/6a2/STATE.a2ml

Lines changed: 67 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,74 @@
11
# SPDX-License-Identifier: MPL-2.0
2-
# STATE.a2ml — Project state checkpoint
3-
# Converted from STATE.scm on 2026-03-15
4-
2+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
#
4+
# STATE.a2ml — Ochránce project state checkpoint
55
[metadata]
66
project = "ochrance"
77
version = "0.1.0"
8-
last-updated = "2026-03-15"
8+
last-updated = "2026-06-05"
99
status = "active"
10+
session = "machine-readable checkpoint — 2026-06-05"
1011

1112
[project-context]
12-
name = "ochrance"
13-
completion-percentage = 0
14-
phase = "In development"
13+
name = "Ochránce"
14+
purpose = """Neurosymbolic filesystem verification framework in Idris2 dependent types: a pluggable VerifiedSubsystem interface, A2ML attestation/audit markup, a verified Merkle tree with a combiner-generic soundness theorem, and ECHIDNA integration."""
15+
completion-percentage = 40
16+
17+
[position]
18+
phase = "implementation" # design | implementation | testing | maintenance | archived
19+
maturity = "experimental" # experimental | alpha | beta | production | lts
20+
21+
[proven-surface]
22+
# machine-checked, axiom-free (no believe_me / assert_* / postulate / holes on proof symbols)
23+
theorems = [
24+
"merkleCorrect / merkleCorrectWith — inclusion-proof soundness, generic over the hash combiner (XOR & BLAKE3 are instances)",
25+
"verifyProofReconstructs(With) — verify ≡ (root == reconstruct leaf prf)",
26+
"roundtripManifest (+ algoRT/modeRT/refsRT/mpolRT codecs) — decodeManifest (encodeManifest m) = Just m",
27+
"SatisfiesMinimum / attestedSatisfiesLax — progressive-assurance threshold witness",
28+
"ABI Handle / createHandle — So (ptr /= 0) non-null invariant",
29+
"supporting lemmas: reconstructAppendWith, powerTwoSucc, justInj",
30+
]
31+
32+
[route-to-mvp]
33+
# the proof campaign — docs/PROOFS.adoc is the authoritative, dependency-sorted plan
34+
milestones = [
35+
"Stage 1 — Merkle closure (buildMerkleTree correctness, IO↔pure bridge) + crypto-binding interface (CollisionResistant)",
36+
"Stage 2 — Verify + Validator soundness; hex codec round-trip",
37+
"Stage 3 — Repair correctness (L3 linear types); harvest framework's mode-indexed Interface",
38+
"Stage 4 — Merkle completeness, binding discharge, progressive monotonicity, write-up",
39+
]
40+
41+
[blockers-and-issues]
42+
issues = [
43+
"No cryptographic-integrity claim yet: Idris stub fallbacks (hashPairStub / blake3Stub / ed25519VerifyStub in FFI/Crypto.idr) remain in the verification flow; libochrance.so not yet built + linked in",
44+
"Repair (L3) idempotence is property-tested only, not yet proven",
45+
"ECHIDNA FFI is stubbed (echidnaProve returns 'FFI not yet implemented')",
46+
"Production round-trip (parse∘lex∘serialize) is honestly bounded by primitive String ops — see docs/PROOFS.adoc",
47+
]
48+
49+
[critical-next-actions]
50+
actions = [
51+
"Stage 1 (Opus): buildMerkleTree index/root-fold laws; bridge verifyProofIO/rootHashBytesIO to the …With spec",
52+
"Introduce CollisionResistant h + merkleBinding interface (D2)",
53+
"Remove Idris-side crypto stubs and build + link libochrance.so into the flow (unblocks the crypto-integrity claim)",
54+
"Sync .machine_readable scaffold to rsr-template (ai/, compliance/, configs/, policies/, scripts/, 0.1-AI-MANIFEST, ENSAID_CONFIG, root README, root-allow) — pending template access",
55+
]
56+
57+
[recent-history]
58+
# 2026-06-05 reconciliation: main is now the single trunk
59+
merged = [
60+
"#31 — Zig crypto FFI (BLAKE3/SHA-256/SHA3-256/Ed25519) + zig-ffi.yml CI + Valence-Shell bridge docs",
61+
"#32 — A2ML parser totality + correctness, Merkle combiner generalization, proof ledger, post-migration re-entry runbook",
62+
"#33 — nixpkgs flake.lock bump",
63+
"#34 — CodeQL cron weekly→monthly",
64+
]
65+
decisions = [
66+
"D1 — converge on ochrance-core (ochrance-framework duplicate core retired; mode-indexed VerifiedSubsystem Interface harvested)",
67+
"D2 — crypto binding modelled as a typed CollisionResistant hypothesis, discharged not asserted",
68+
"D3 — svalinn migrates ReScript → Ephapax (migrate-then-prove)",
69+
]
70+
71+
[maintenance-status]
72+
last-run-utc = "2026-06-05T14:08:00Z"
73+
last-result = "pass" # unknown | pass | warn | fail
74+
notes = "CI green on main; core builds fully total. A2ML parser 16/16, property 47/47, e2e 22/22; integration suite and Zig FFI build+test green."

.machine_readable/anchors/ANCHOR.a2ml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,16 @@ ssg:
1616
# Relationships
1717
parents:
1818
- "org.hyperpolymath.boj-server"
19+
20+
# Realignments — significant repository realignments on record
21+
realignments:
22+
- date: "2026-06-05"
23+
kind: "convergence + proof-campaign"
24+
summary: >
25+
Converged on ochrance-core as the single source of proof truth (D1);
26+
retired the ochrance-framework duplicate core and harvested its
27+
mode-indexed VerifiedSubsystem interface. Generalised Merkle
28+
construction / verification / soundness over the hash combiner
29+
(XOR and BLAKE3 as instances of one theorem). Implemented the Zig
30+
crypto FFI. Reconciled all open branches into a single main.
31+
authority: "docs/PROOFS.adoc"

0 commit comments

Comments
 (0)