|
| 1 | +# SPDX-License-Identifier: MPL-2.0 |
| 2 | +# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <6759885+hyperpolymath@users.noreply.github.com> |
| 3 | +# |
| 4 | +# methodology.a2ml — AI agent methodology configuration (echo-types) |
| 5 | +# Declares how agents should approach work in this Agda proof library. |
| 6 | +# Read at session start by any AI agent, alongside CLAUDE.md. |
| 7 | +# |
| 8 | +# Reference: ADR-002 in standards/agentic-a2ml/docs/ |
| 9 | + |
| 10 | +[metadata] |
| 11 | +version = "1.0.0" |
| 12 | +last-updated = "2026-06-12" |
| 13 | +spec = "https://github.com/hyperpolymath/standards/blob/main/agentic-a2ml/docs/ADR-002-methodology-layer.adoc" |
| 14 | + |
| 15 | +# ============================================================================ |
| 16 | +# MODE SELECTION |
| 17 | +# ============================================================================ |
| 18 | +# convergent: find gaps, fill them, build infrastructure |
| 19 | +# divergent: find what's strongest, push it further (research/proof) |
| 20 | +# hybrid: audit a slice of budget, then focus on top MUSTs |
| 21 | +# |
| 22 | +# echo-types is a research proof library: the default is divergent — deepen |
| 23 | +# the structured-loss identity (canonical-identity spine, ordinal milestone), |
| 24 | +# do not broaden into parallel formalisms. |
| 25 | + |
| 26 | +[methodology] |
| 27 | +default-mode = "divergent" |
| 28 | +ring-ceiling = 2 # Hard ceiling for ring expansion (0-3) |
| 29 | +wave-cap = 2 # Max waves before requiring user "keep going" |
| 30 | +spike-required = true # Every session must land verified Agda, not just designs |
| 31 | + |
| 32 | +# ============================================================================ |
| 33 | +# PROOF INVARIANTS (the riverbanks — non-negotiable) |
| 34 | +# ============================================================================ |
| 35 | + |
| 36 | +[methodology.proof-invariants] |
| 37 | +safe-without-k = true # --safe --without-K on every module |
| 38 | +postulate-ceiling = 0 # zero in load-bearing tracks (outside Ordinal/) |
| 39 | +believe-me-ceiling = 0 # no believe_me / primTrustMe / primEraseEquality |
| 40 | +escape-hatch-ceiling = 0 # no sorry / Admitted / unsafeCoerce / Obj.magic |
| 41 | +escape-pragma-ceiling = 0 # no TERMINATING / NON_TERMINATING / allow-unsolved-metas |
| 42 | +funext-policy = "explicit-parameter-only" # never a postulate; isolated from the trusted base |
| 43 | +pin-every-headline = true # each headline pinned in Smoke.agda via `using` |
| 44 | +wire-every-module = true # each module in All.agda; orphans are dead code |
| 45 | +kernel-cone-guard = "scripts/kernel-guard.sh" |
| 46 | + |
| 47 | +# ============================================================================ |
| 48 | +# PRIORITY WEIGHTS |
| 49 | +# ============================================================================ |
| 50 | +# MUST (3x): blocking current proof work → fix immediately |
| 51 | +# SHOULD (2x): degrading quality of current work → fix if in zone |
| 52 | +# COULD (1x): improving adjacent work → add to debt list |
| 53 | + |
| 54 | +[methodology.priority-weights] |
| 55 | +must = 3 |
| 56 | +should = 2 |
| 57 | +could = 1 |
| 58 | + |
| 59 | +# ============================================================================ |
| 60 | +# CONVERGENT BUDGET (when mode = convergent or hybrid) |
| 61 | +# ============================================================================ |
| 62 | + |
| 63 | +[methodology.convergent-budget] |
| 64 | +structural = 70 # new modules / proofs / wiring / Smoke pins |
| 65 | +corrective = 20 # broken imports, stale doc tags, drift |
| 66 | +perfective = 10 # SPDX headers, doc polish, formatting |
| 67 | + |
| 68 | +# ============================================================================ |
| 69 | +# UNIQUE STRENGTH (when mode = divergent) |
| 70 | +# ============================================================================ |
| 71 | + |
| 72 | +[methodology.unique-strength] |
| 73 | +description = "Echo as the proof-relevant fiber of structured loss: Echo f y := Σ (x : A) , (f x ≡ y), characterised as a reindexing modality (coeffect/quantitative lineage). The strength is the machine-checked, --safe --without-K, postulate-free identity claim plus its honest matched-negatives." |
| 74 | +deepen-not-broaden = true |
| 75 | + |
| 76 | +# ============================================================================ |
| 77 | +# DIVERGENT INVARIANTS |
| 78 | +# ============================================================================ |
| 79 | +# Test before any divergent action: |
| 80 | +# "Does this deepen the existing identity, or add a parallel strength?" |
| 81 | +# If parallel → stop. Note as cross-project insight. |
| 82 | + |
| 83 | +[methodology.divergent-invariants] |
| 84 | +rules = [ |
| 85 | + "Agda only for the formal core — no Lean4 / Coq / Idris2 inside this repo (cross-prover work is citation-level bridges only).", |
| 86 | + "Never weaken --safe or --without-K to land a proof.", |
| 87 | + "Never introduce a postulate in a load-bearing track; exploratory truncation postulates, if any, go in docs/proof-debt.md and stay out of All.agda's trusted closure.", |
| 88 | + "Honest scope: every identity claim ships with its matched-negatives; narrow-true beats broad-easy.", |
| 89 | + "Do not reopen retracted claims (R-2026-05-18) or closed gates (Pillars A-D, F1-F4, EI-2).", |
| 90 | +] |
| 91 | +language-invariant = "agda" |
| 92 | + |
| 93 | +# ============================================================================ |
| 94 | +# KNOWN CONSTRAINTS (help Phase 0 find the critical chain faster) |
| 95 | +# ============================================================================ |
| 96 | + |
| 97 | +[methodology.known-constraints] |
| 98 | +constraints = [ |
| 99 | + "stdlib >= 2.3 is required (apt's 1.7.3 lacks Data.Product.Base) — see CLAUDE.md § Build.", |
| 100 | + "The ordinal track is solo, not swarmable; the unbudgeted _<ᵇʳᶠ_ global WF is the named next bottleneck.", |
| 101 | + "Multiple Claude sessions may run concurrently — respect declared territory; use `--only <paths>` if both commit before sync.", |
| 102 | + "Pillar E paper [EXPAND] tags are author-driven; the ordinal consumer-evidence appendix is gated on the Bachmann-Howard milestone.", |
| 103 | +] |
| 104 | + |
| 105 | +# ============================================================================ |
| 106 | +# STATE FILE VALIDATION |
| 107 | +# ============================================================================ |
| 108 | + |
| 109 | +[methodology.state-validation] |
| 110 | +reject-if-contains = ["{{PLACEHOLDER}}", "rsr-template-repo"] |
| 111 | +reject-if-project-name-mismatch = true |
| 112 | +staleness-threshold-days = 120 |
| 113 | +authoritative-state = "CLAUDE.md (current-rung-state) + .machine_readable/6a2/STATE.a2ml (current-state block)" |
| 114 | +fallback-files = ["roadmap-gates.adoc", "roadmap.adoc", "docs/echo-types/MAP.adoc", "README.md"] |
0 commit comments