Skip to content

Commit 3e90c49

Browse files
hyperpolymathclaude
andcommitted
docs(bot-directives): add echidnabot mode directive (Phase 7)
Echidnabot's mode resolver cascade reads target-repo directives at .machine_readable/bot_directives/echidnabot.a2ml and overrides the DB column. Echidna's directive declares Regulator mode with a 90% coverage threshold: - Mode = regulator (echidna's proof contracts are downstream-binding — proven-servers, vcl-ut, echidnabot itself depend on them). - Threshold = 90 (per repository.regulator_coverage_threshold) leaves a small flake budget. With 113 prover backends in the matrix, a single prover-binary install hiccup or transient ECHIDNA unavailability shouldn't block the merge gate when the rest is solid. Implemented directive surface: - [bot] mode = "regulator" - [regulator] coverage-threshold = 90 - [notes] documenting the directive's role + sunset condition. This is read by echidnabot/src/modes/directives.rs::parse_a2ml_directive + resolve_mode (commit 1b86ed5 in echidnabot). Pre-cascade, echidna implicitly used echidnabot's daemon-wide default; post-cascade, this directive takes precedence. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent ca7a606 commit 3e90c49

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
# Copyright (c) 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
#
4+
# echidnabot directive for the echidna repo.
5+
#
6+
# Read by echidnabot's mode-resolver cascade
7+
# (see echidnabot/src/modes/directives.rs::resolve_mode):
8+
# 1. this file (target-repo override) ← canonical
9+
# 2. .machine_readable/bot_directives/all.a2ml (fleet-wide fallback)
10+
# 3. echidnabot's `repositories.mode` DB column
11+
# 4. BotMode::default() = Verifier
12+
13+
[metadata]
14+
version = "1.0.0"
15+
last-updated = "2026-04-25"
16+
17+
[bot]
18+
# echidna ships proof contracts that downstream consumers depend on
19+
# (proven-servers, vcl-ut, echidnabot itself). A failing proof is a
20+
# correctness regression — Regulator-mode block on the merge gate.
21+
mode = "regulator"
22+
23+
[regulator]
24+
# Threshold leaves a small flake budget. echidna's CI exercises 113
25+
# prover backends; transient ECHIDNA-binary unavailability or upstream
26+
# prover-binary install hiccups should not block the entire merge gate
27+
# when the rest of the matrix is solid.
28+
coverage-threshold = 90 # percent; merge releases at 90/100 provers passing
29+
30+
[notes]
31+
# - Echidnabot reads this directive at job-finalize time. Cascade is
32+
# directive > DB column > daemon default.
33+
# - When BoJ revives and supports the double-loop feedback protocol,
34+
# echidnabot-mcp folds back into the BoJ cartridge per echidnabot's
35+
# AGENTIC.a2ml [exceptions.boj-only-mcp] sunset clause; this directive
36+
# stays in place — only the transport changes.
37+
# - Directive format is A2ML (TOML-flavoured); legacy Scheme directives
38+
# at `.bot_directives/echidnabot.scm` are deprecated estate-wide
39+
# per the 2026-04-12 .scm→.a2ml migration.

0 commit comments

Comments
 (0)