|
| 1 | +# SPDX-License-Identifier: PMPL-1.0-or-later |
| 2 | +# SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
| 3 | +# |
| 4 | +# AGENTIC.a2ml — Comprehensive Example with All Sections |
| 5 | +# enterprise-platform |
| 6 | +# |
| 7 | +# Full-featured AGENTIC demonstrating all sections and capabilities. |
| 8 | +# This is the current (A2ML) format. Supersedes comprehensive.scm. |
| 9 | + |
| 10 | +[metadata] |
| 11 | +version = "1.0.0" |
| 12 | +last-updated = "2026-04-12" |
| 13 | + |
| 14 | +[agent-permissions] |
| 15 | +can-edit-source = true |
| 16 | +can-edit-tests = true |
| 17 | +can-edit-docs = true |
| 18 | +can-edit-config = true |
| 19 | +can-create-files = true |
| 20 | + |
| 21 | +[agent-constraints] |
| 22 | +# What AI agents must NOT do: |
| 23 | +# - Never use banned language patterns (believe_me, unsafeCoerce, Obj.magic, etc.) |
| 24 | +# - Never commit secrets or credentials |
| 25 | +# - Never use banned languages (TypeScript, Python, Go, V-lang, ATS2, etc.) |
| 26 | +# - Never place state files in repository root (must be in .machine_readable/6a2/) |
| 27 | +# - Never use AGPL license (use PMPL-1.0-or-later) |
| 28 | +# - Never push to mirrors directly (GitHub is the only push target) |
| 29 | + |
| 30 | +# ============================================================== |
| 31 | +# GATING POLICIES |
| 32 | +# ============================================================== |
| 33 | + |
| 34 | +[gating-policies.default] |
| 35 | +mode = "strict" |
| 36 | +require-explicit-intent = true |
| 37 | +log-all-decisions = true |
| 38 | +subordinate-to = "META.a2ml" |
| 39 | + |
| 40 | +[gating-policies.file-operations] |
| 41 | +read-source = "auto" |
| 42 | +write-source = "requires-intent" |
| 43 | +delete = "requires-explicit-confirmation" |
| 44 | +create-new-file = "requires-intent" |
| 45 | + |
| 46 | +[gating-policies.git-operations] |
| 47 | +commit = "requires-panic-attack-assail-pass" |
| 48 | +push = "requires-explicit-intent" |
| 49 | +force-push = "never" |
| 50 | +branch-delete = "requires-explicit-confirmation" |
| 51 | + |
| 52 | +[gating-policies.network] |
| 53 | +external-requests = "never-without-explicit-intent" |
| 54 | +credential-use = "never-store-credentials" |
| 55 | + |
| 56 | +[gating-policies.infrastructure] |
| 57 | +deploy = "requires-explicit-confirmation" |
| 58 | +modify-ci = "requires-intent" |
| 59 | +modify-branch-protection = "requires-explicit-confirmation" |
| 60 | + |
| 61 | +# ============================================================== |
| 62 | +# ENTROPY BUDGETS |
| 63 | +# ============================================================== |
| 64 | +# Higher entropy = more dangerous / irreversible operation |
| 65 | + |
| 66 | +[entropy-budgets] |
| 67 | +max-per-session = 100 |
| 68 | +warn-threshold = 80 |
| 69 | + |
| 70 | +[entropy-budgets.operations] |
| 71 | +file-read = 1 |
| 72 | +file-write = 5 |
| 73 | +file-delete = 20 |
| 74 | +git-commit = 10 |
| 75 | +git-push = 15 |
| 76 | +external-api-call = 10 |
| 77 | +infrastructure-change = 30 |
| 78 | +data-migration = 40 |
| 79 | + |
| 80 | +# ============================================================== |
| 81 | +# RISK THRESHOLDS |
| 82 | +# ============================================================== |
| 83 | + |
| 84 | +[risk-thresholds] |
| 85 | +low = "0-20" |
| 86 | +medium = "21-50" |
| 87 | +high = "51-80" |
| 88 | +critical = "81-100" |
| 89 | + |
| 90 | +[risk-thresholds.auto-approve] |
| 91 | +max-entropy = 20 |
| 92 | + |
| 93 | +[risk-thresholds.require-confirmation] |
| 94 | +min-entropy = 21 |
| 95 | + |
| 96 | +[risk-thresholds.require-explicit-human] |
| 97 | +min-entropy = 51 |
| 98 | + |
| 99 | +# ============================================================== |
| 100 | +# MAINTENANCE INTEGRITY |
| 101 | +# ============================================================== |
| 102 | + |
| 103 | +[maintenance-integrity] |
| 104 | +fail-closed = true |
| 105 | +require-evidence-per-step = true |
| 106 | +allow-silent-skip = false |
| 107 | +require-rerun-after-fix = true |
| 108 | +release-claim-requires-hard-pass = true |
| 109 | + |
| 110 | +# ============================================================== |
| 111 | +# AUTOMATION HOOKS |
| 112 | +# ============================================================== |
| 113 | + |
| 114 | +[automation-hooks] |
| 115 | +# on-enter: Read 0-AI-MANIFEST.a2ml, then .machine_readable/6a2/STATE.a2ml |
| 116 | +# on-exit: Update .machine_readable/6a2/STATE.a2ml with session outcomes |
| 117 | +# on-commit: Run panic-attack assail . before staging |
| 118 | +# on-create-file: Verify SPDX header present |
| 119 | +# on-write: Verify file is within approved paths |
| 120 | + |
| 121 | +# ============================================================== |
| 122 | +# DECISION RECORDING |
| 123 | +# ============================================================== |
| 124 | + |
| 125 | +[decision-recording] |
| 126 | +record-all-decisions = true |
| 127 | +format = "a2ml" |
| 128 | +location = ".machine_readable/6a2/STATE.a2ml" |
| 129 | +include-rationale = true |
| 130 | +include-alternatives-considered = true |
0 commit comments