|
| 1 | +# SPDX-License-Identifier: PMPL-1.0-or-later |
| 2 | +# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk> |
| 3 | +# |
| 4 | +# methodology.a2ml — AI agent methodology configuration |
| 5 | +# Declares how agents should approach work in this repository. |
| 6 | +# Read at session start by any AI agent (Claude, Gemini, Copilot, etc.) |
| 7 | +# |
| 8 | +# Reference: ADR-002 in standards/agentic-a2ml/docs/ |
| 9 | + |
| 10 | +[metadata] |
| 11 | +version = "1.0.0" |
| 12 | +last-updated = "2026-03-24" |
| 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 (default for ops/infra) |
| 19 | +# divergent: find what's strongest, push it further (for research/creative) |
| 20 | +# hybrid: audit 20% of budget, then focus 80% on top MUSTs (default for most) |
| 21 | + |
| 22 | +[methodology] |
| 23 | +default-mode = "hybrid" |
| 24 | +ring-ceiling = 2 # Hard ceiling for ring expansion (0-3) |
| 25 | +wave-cap = 2 # Max waves before requiring user "keep going" |
| 26 | +spike-required = true # Every session must ship code, not just designs |
| 27 | + |
| 28 | +# ============================================================================ |
| 29 | +# PRIORITY WEIGHTS |
| 30 | +# ============================================================================ |
| 31 | +# MUST (3x): Blocking the current work → fix immediately |
| 32 | +# SHOULD (2x): Degrading quality of current work → fix if in zone |
| 33 | +# COULD (1x): Improving quality of adjacent work → add to debt list |
| 34 | + |
| 35 | +[methodology.priority-weights] |
| 36 | +must = 3 |
| 37 | +should = 2 |
| 38 | +could = 1 |
| 39 | + |
| 40 | +# ============================================================================ |
| 41 | +# CONVERGENT BUDGET (when mode = convergent or hybrid) |
| 42 | +# ============================================================================ |
| 43 | +# How to allocate effort across work types. |
| 44 | +# Prevents over-polishing docs while structural work waits. |
| 45 | + |
| 46 | +[methodology.convergent-budget] |
| 47 | +structural = 70 # % for new modules, compilation fixes, wiring, integration |
| 48 | +corrective = 20 # % for bugs found, broken imports, stale references |
| 49 | +perfective = 10 # % for SPDX headers, doc updates, formatting, style |
| 50 | + |
| 51 | +# ============================================================================ |
| 52 | +# UNIQUE STRENGTH (when mode = divergent) |
| 53 | +# ============================================================================ |
| 54 | +# What makes this project special. Agents should DEEPEN this, not broaden it. |
| 55 | +# Customise this per project — the template default is generic. |
| 56 | + |
| 57 | +[methodology.unique-strength] |
| 58 | +description = "{{PROJECT_UNIQUE_STRENGTH}}" |
| 59 | +deepen-not-broaden = true |
| 60 | + |
| 61 | +# ============================================================================ |
| 62 | +# DIVERGENT INVARIANTS |
| 63 | +# ============================================================================ |
| 64 | +# Constraints that divergent mode must NOT violate. |
| 65 | +# These are the riverbanks — diverge within them, not across. |
| 66 | +# "Amplify uniqueness" means deepen, not broaden. |
| 67 | +# |
| 68 | +# Test before any divergent action: |
| 69 | +# "Does this deepen the existing strength, or add a parallel strength?" |
| 70 | +# If parallel → stop. Note as cross-project insight. |
| 71 | + |
| 72 | +[methodology.divergent-invariants] |
| 73 | +rules = [ |
| 74 | + # Customise per project. Examples: |
| 75 | + # "Idris2 only for formal verification — no Lean4, Coq, Agda", |
| 76 | + # "believe_me count must remain zero", |
| 77 | + # "FFI architecture: Idris2 → RefC → Zig → C ABI (no shortcuts)", |
| 78 | +] |
| 79 | + |
| 80 | +# Optional: language invariant for the core strength |
| 81 | +# If set, divergent mode will not introduce other languages for this purpose |
| 82 | +# language-invariant = "idris2" |
| 83 | + |
| 84 | +# ============================================================================ |
| 85 | +# CONSTRAINT HINTS |
| 86 | +# ============================================================================ |
| 87 | +# Help Phase 0 find the critical chain faster. |
| 88 | +# Updated at session end with newly discovered constraints. |
| 89 | + |
| 90 | +[methodology.known-constraints] |
| 91 | +constraints = [ |
| 92 | + # Customise per project. Examples: |
| 93 | + # "End-to-end build has never been verified", |
| 94 | + # "libproject.so does not exist yet — all bindings call stubs", |
| 95 | +] |
| 96 | + |
| 97 | +# ============================================================================ |
| 98 | +# STATE FILE VALIDATION |
| 99 | +# ============================================================================ |
| 100 | +# Phase 0 reads STATE.a2ml first but it may be broken. |
| 101 | +# These rules detect corrupt/template/stale state files. |
| 102 | + |
| 103 | +[methodology.state-validation] |
| 104 | +reject-if-contains = ["{{PLACEHOLDER}}", "{{PROJECT}}", "rsr-template-repo"] |
| 105 | +reject-if-project-name-mismatch = true |
| 106 | +staleness-threshold-days = 90 |
| 107 | +fallback-files = ["TODO.md", "TODO.adoc", "ROADMAP.adoc", "README.adoc"] |
0 commit comments