Skip to content

Commit 53b5f4e

Browse files
docs: ochrance optional checkpoint items — clade, debt, coverage, EXPLAINME (#37)
ANCHOR clade=fv; populate agent_instructions/debt.a2ml with carried debt; refresh coverage.a2ml; strip leaked /var/mnt/eclipse paths and fix Merkle path in EXPLAINME.adoc.
1 parent 19c158a commit 53b5f4e

4 files changed

Lines changed: 67 additions & 84 deletions

File tree

.machine_readable/agent_instructions/coverage.a2ml

Lines changed: 17 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2,60 +2,30 @@
22
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
33
#
44
# coverage.a2ml — Session coverage tracking
5-
# Updated at the end of each AI agent session.
6-
# Persists what was visited, what was skipped, and what has MUSTs.
7-
#
8-
# Reference: ADR-002 in standards/agentic-a2ml/docs/
5+
# Updated at the end of each AI agent session: what was visited, skipped, and
6+
# which components have known MUSTs. Reference: ADR-002 in standards/agentic-a2ml/docs/
97

108
[metadata]
11-
version = "1.0.0"
12-
last-updated = "2026-03-24"
13-
14-
# ============================================================================
15-
# COVERAGE STATE
16-
# ============================================================================
17-
# Updated by agents at session end. Tracks which components have been
18-
# visited and which have known MUSTs that were skipped.
9+
version = "1.1.0"
10+
last-updated = "2026-06-05"
1911

2012
[coverage]
13+
# The proof-campaign coverage is tracked authoritatively in docs/PROOFS.adoc
14+
# (Stage 0 done; Stages 1–4 open). This file tracks agent-session visits.
2115
total-components = 0
2216
visited-components = 0
2317
coverage-percent = 0
18+
authoritative-campaign-state = "docs/PROOFS.adoc"
2419

25-
# ============================================================================
26-
# VISITED COMPONENTS
27-
# ============================================================================
28-
# Component → session date + ring reached
29-
# Agents add entries as they work through components.
30-
#
31-
# Example:
32-
# [coverage.visited.emergency-room]
33-
# date = "2026-03-23"
34-
# ring = 2
35-
# fixes = 3
36-
# notes = "boot-guardian built, shutdown-marshal built"
20+
[coverage.visited.proof-campaign-stage-0]
21+
date = "2026-06-05"
22+
ring = 0
23+
notes = "Parser totality + Merkle combiner generalization + manifest round-trip + progressive assurance landed (PR #32). See docs/PROOFS.adoc."
3724

38-
# ============================================================================
39-
# SKIPPED COMPONENTS WITH MUSTS
40-
# ============================================================================
41-
# Components with known MUSTs that were not visited in the most recent session.
42-
# These become P1 inputs for the next session's Phase 0.
43-
#
44-
# Example:
45-
# [coverage.skipped-musts.session-sentinel]
46-
# priority = "P0"
47-
# issue = "56 SIGABRTs in 4 days, D-Bus race condition"
48-
# discovered = "2026-03-23"
25+
[coverage.visited.machine-readable-checkpoint]
26+
date = "2026-06-05"
27+
ring = 1
28+
fixes = 7
29+
notes = "Refreshed 6a2 (all six) + ANCHOR from the March .scm stubs; recorded D1/D2/D3, proven surface, honest bounds, runbooks; reconciled all open branches into one main."
4930

50-
# ============================================================================
51-
# CHERRY-PICKING AUDIT
52-
# ============================================================================
53-
# At session end, agents report whether they chose easy work over hard work.
54-
# This is the accountability mechanism for the weighted priority system.
55-
#
56-
# [coverage.cherry-picking]
57-
# easy-high-completed = 3
58-
# hard-high-completed = 1
59-
# easy-low-completed = 2
60-
# hard-low-deferred = 4
61-
# assessment = "Correctly prioritised — all MUST items addressed before COULDs"
31+
# Skipped MUSTs / cherry-picking audit: none recorded this session.

.machine_readable/agent_instructions/debt.a2ml

Lines changed: 47 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,61 @@
22
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
33
#
44
# debt.a2ml — Meander debt list
5-
# Things found but not fixed. Carried between sessions.
6-
# Becomes the next session's Phase 0 input.
7-
#
5+
# Things found but not fixed. Carried between sessions; becomes the next
6+
# session's Phase 0 input. Items are consumed (removed) when fixed.
7+
# Each item: component, issue, effort (easy|medium|hard), impact (high|medium|low), discovered.
88
# Reference: ADR-002 in standards/agentic-a2ml/docs/
99

1010
[metadata]
11-
version = "1.0.0"
12-
last-updated = "2026-03-24"
13-
14-
# ============================================================================
15-
# DEBT ITEMS
16-
# ============================================================================
17-
# Each item has: component, issue, effort (easy|medium|hard), impact (high|medium|low),
18-
# priority (should|could), and discovered date.
19-
#
20-
# Items are consumed (removed) when fixed. New items are added at session end.
21-
# The debt list prevents the "one more wave" loop — found things are persisted,
22-
# not forgotten, and not used as justification for infinite meandering.
11+
version = "1.1.0"
12+
last-updated = "2026-06-05"
2313

2414
# ============================================================================
2515
# SHOULD — would fix next wave
2616
# ============================================================================
27-
# These are inputs for the next session if the user says "keep going".
28-
#
29-
# Example:
30-
# [[debt.should]]
31-
# component = "system-tools/monitoring/observatory"
32-
# issue = "Stale duplicate of root observatory/"
33-
# effort = "easy"
34-
# impact = "medium"
35-
# discovered = "2026-03-23"
17+
18+
[[debt.should]]
19+
component = "ochrance-core/Ochrance/FFI/Crypto.idr"
20+
issue = "Idris stub fallbacks (hashPairStub / blake3Stub / ed25519VerifyStub) remain in the verification flow and libochrance.so is not yet built+linked — so no cryptographic-integrity claim can be made (CLAUDE.md rule 4)."
21+
effort = "hard"
22+
impact = "high"
23+
discovered = "2026-06-05"
24+
25+
[[debt.should]]
26+
component = "ochrance-core/Ochrance/Filesystem/Repair.idr"
27+
issue = "Repair idempotence is property-tested only, not proven (proof campaign Stage 3)."
28+
effort = "hard"
29+
impact = "high"
30+
discovered = "2026-06-05"
31+
32+
[[debt.should]]
33+
component = "ochrance-core/Ochrance/FFI/Echidna.idr"
34+
issue = "ECHIDNA FFI is stubbed — echidnaProve returns 'FFI not yet implemented'."
35+
effort = "hard"
36+
impact = "medium"
37+
discovered = "2026-06-05"
3638

3739
# ============================================================================
3840
# COULD — would fix eventually
3941
# ============================================================================
40-
# These are low-priority items that don't justify a session on their own.
41-
# They get picked up when an agent is in the area for other reasons.
42-
#
43-
# Example:
44-
# [[debt.could]]
45-
# component = "cicada"
46-
# issue = "RSR_OUTLINE.adoc references banned AGPL-3.0"
47-
# effort = "easy"
48-
# impact = "low"
49-
# discovered = "2026-03-23"
42+
43+
[[debt.could]]
44+
component = ".machine_readable/"
45+
issue = "Behind the rsr-template scaffold: missing ai/, compliance/, configs/, policies/, scripts/, 0.1-AI-MANIFEST.a2ml, ENSAID_CONFIG.a2ml, root README.adoc, root-allow.txt. Needs template sync (Track B) — blocked on rsr-template/standards access."
46+
effort = "medium"
47+
impact = "medium"
48+
discovered = "2026-06-05"
49+
50+
[[debt.could]]
51+
component = ".machine_readable/6a2/ (estate-wide)"
52+
issue = "phase vocabulary is not pinned by an enforced standard (svalinn 'crg-c-testing' vs ochrance 'implementation') — possible standards↔rsr-template divergence (Flag A); confirm against the canonical standards spec."
53+
effort = "medium"
54+
impact = "medium"
55+
discovered = "2026-06-05"
56+
57+
[[debt.could]]
58+
component = ".github/workflows (ECHIDNA validation)"
59+
issue = "Dangerous-pattern scan greps literal strings including inside comments, so legitimate documentation can trip it (false positives)."
60+
effort = "easy"
61+
impact = "low"
62+
discovered = "2026-06-04"

.machine_readable/anchors/ANCHOR.a2ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
id: "org.hyperpolymath.ochrance"
55
version: "1.0.0"
6-
clade: "unknown"
6+
clade: "fv"
77
status: "active"
88

99
# SSG Configuration (Unified boj-server build)

EXPLAINME.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ Three components orchestrate this: A2ML parser/validator (parses filesystem mani
1616

1717
=== Claim 1: A2ML Lexer and Parser Are Structurally Recursive and Total
1818

19-
**Location**: `/var/mnt/eclipse/repos/ochrance/ochrance-core/A2ML/Lexer.idr` and `/var/mnt/eclipse/repos/ochrance/ochrance-core/A2ML/Parser.idr` (Idris2 modules)
19+
**Location**: `ochrance-core/A2ML/Lexer.idr` and `ochrance-core/A2ML/Parser.idr` (Idris2 modules)
2020

2121
**How verified**: Both modules use the `%default total` directive, requiring all functions to be total (no partial match, no undefined behavior). The lexer is structurally recursive: it tokenizes input by consuming characters and recursing on the remainder (proof: input size strictly decreases). The parser is similarly total: it parses tokens using sized types (`List (n : Nat)`) to guarantee termination (proof: token list shrinks). README (§Overview) claims "A2ML Parser/Validator" with compile-time structure proofs; this is verified by the Idris2 type checker itself — if either module had a partial function, `idris2 --check` would reject it with an error, not compile.
2222

2323
**Caveat**: Idris2 totality checking is a sound approximation but not perfect. Deeply nested mutual recursion can escape detection in rare cases, though practice shows this is extremely rare.
2424

2525
=== Claim 2: Verified Merkle Tree Size Guarantees Are Compile-Time Proofs
2626

27-
**Location**: `/var/mnt/eclipse/repos/ochrance/ochrance-core/Framework/Merkle.idr` (Idris2 Merkle tree with size-indexed types)
27+
**Location**: `ochrance-core/Filesystem/Merkle.idr` (Idris2 Merkle tree with size-indexed types)
2828

2929
**How verified**: The Merkle tree is defined as a size-indexed binary tree: `MerkleTree : (size : Nat) → Type`. At compile time, Idris2 verifies that all leaf nodes are at depth `log2(size)`. The tree operations (leaf insertion, hash computation, proof generation) take dependent proofs that structure is maintained. README (§Architecture) claims "Verified Merkle trees — Size-indexed binary trees with compile-time structure proofs." This is proven by the type signature itself: if you try to construct a tree of size 8 with only 7 leaves, the type checker rejects it because the dependent type `MerkleTree 8` requires exactly 8 leaves.
3030

0 commit comments

Comments
 (0)