fv-skills-baif 2.3.2 → 2.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +52 -0
- package/README.md +64 -14
- package/agents/fvs-crypto-executor.md +8 -13
- package/agents/fvs-crypto-thinker.md +29 -21
- package/agents/fvs-doc-syncer.md +37 -27
- package/agents/fvs-external-modeler.md +124 -0
- package/bin/install.js +482 -65
- package/commands/fvs/aeneas-extract.md +21 -23
- package/commands/fvs/aeneas.md +2 -1
- package/commands/fvs/configure.md +174 -0
- package/commands/fvs/crypto-eval.md +57 -29
- package/commands/fvs/crypto-execute.md +19 -30
- package/commands/fvs/crypto-followup.md +27 -16
- package/commands/fvs/crypto-plan.md +34 -21
- package/commands/fvs/crypto-review.md +44 -23
- package/commands/fvs/fc-plan.md +10 -5
- package/commands/fvs/fc.md +2 -1
- package/commands/fvs/help.md +57 -25
- package/commands/fvs/lean-formalise.md +10 -15
- package/commands/fvs/lean-refactor.md +10 -15
- package/commands/fvs/lean-spec-review.md +26 -5
- package/commands/fvs/lean-specify.md +10 -15
- package/commands/fvs/lean-verify.md +10 -15
- package/commands/fvs/manage.md +3 -2
- package/commands/fvs/map-code.md +10 -19
- package/commands/fvs/model-external.md +48 -0
- package/commands/fvs/natural-language.md +12 -2
- package/commands/fvs/reapply-patches.md +28 -21
- package/commands/fvs/sync-aeneas-verif.md +71 -47
- package/commands/fvs/trust-audit.md +11 -6
- package/fv-skills/VERSION +1 -1
- package/fv-skills/references/aeneas-patterns.md +27 -20
- package/fv-skills/references/blocker-catalog.md +23 -23
- package/fv-skills/references/crypto-plan-review.md +10 -3
- package/fv-skills/references/external-modeling.md +127 -0
- package/fv-skills/references/fc-spec-review.md +4 -2
- package/fv-skills/references/model-profiles.md +293 -188
- package/fv-skills/references/proof-strategies.md +26 -0
- package/fv-skills/references/review-diagnostics.md +10 -8
- package/fv-skills/references/tactic-usage.md +38 -14
- package/fv-skills/templates/config.json +29 -4
- package/fv-skills/upstream/aeneas/_sync-meta.json +246 -10
- package/fv-skills/upstream/aeneas/aeneas-lean-core.instructions.md +97 -1114
- package/fv-skills/upstream/aeneas/aeneas-tactics-quickref.instructions.md +31 -164
- package/fv-skills/upstream/aeneas/extraction/documentation/emit-json.md +68 -0
- package/fv-skills/upstream/aeneas/extraction/documentation/skills/verification-campaigns.instructions.md +86 -0
- package/fv-skills/upstream/aeneas/launching-proof-agents.instructions.md +45 -6
- package/fv-skills/workflows/aeneas-extract.md +13 -5
- package/fv-skills/workflows/crypto-eval.md +39 -16
- package/fv-skills/workflows/crypto-execute.md +11 -5
- package/fv-skills/workflows/crypto-followup.md +10 -4
- package/fv-skills/workflows/crypto-plan.md +9 -4
- package/fv-skills/workflows/crypto-review.md +34 -14
- package/fv-skills/workflows/fc-plan.md +4 -5
- package/fv-skills/workflows/lean-formalise.md +4 -13
- package/fv-skills/workflows/lean-refactor.md +7 -13
- package/fv-skills/workflows/lean-spec-review.md +66 -42
- package/fv-skills/workflows/lean-specify.md +4 -13
- package/fv-skills/workflows/lean-verify.md +4 -13
- package/fv-skills/workflows/map-code.md +4 -14
- package/fv-skills/workflows/model-external.md +147 -0
- package/fv-skills/workflows/sync-aeneas-verif.md +63 -38
- package/fv-skills/workflows/trust-audit.md +13 -4
- package/package.json +11 -3
- package/pi/skills/fvs-aeneas/SKILL.md +24 -0
- package/pi/skills/fvs-aeneas-extract/SKILL.md +224 -0
- package/pi/skills/fvs-checkpoint/SKILL.md +154 -0
- package/pi/skills/fvs-configure/SKILL.md +175 -0
- package/pi/skills/fvs-context/SKILL.md +22 -0
- package/pi/skills/fvs-crypto-eval/SKILL.md +208 -0
- package/pi/skills/fvs-crypto-execute/SKILL.md +221 -0
- package/pi/skills/fvs-crypto-followup/SKILL.md +275 -0
- package/pi/skills/fvs-crypto-plan/SKILL.md +325 -0
- package/pi/skills/fvs-crypto-review/SKILL.md +162 -0
- package/pi/skills/fvs-fc/SKILL.md +32 -0
- package/pi/skills/fvs-fc-plan/SKILL.md +289 -0
- package/pi/skills/fvs-formalise/SKILL.md +37 -0
- package/pi/skills/fvs-help/SKILL.md +478 -0
- package/pi/skills/fvs-kb-setup/SKILL.md +322 -0
- package/pi/skills/fvs-lean-formalise/SKILL.md +397 -0
- package/pi/skills/fvs-lean-refactor/SKILL.md +293 -0
- package/pi/skills/fvs-lean-spec-review/SKILL.md +61 -0
- package/pi/skills/fvs-lean-specify/SKILL.md +424 -0
- package/pi/skills/fvs-lean-verify/SKILL.md +461 -0
- package/pi/skills/fvs-manage/SKILL.md +29 -0
- package/pi/skills/fvs-map-code/SKILL.md +349 -0
- package/pi/skills/fvs-model-external/SKILL.md +47 -0
- package/pi/skills/fvs-natural-language/SKILL.md +220 -0
- package/pi/skills/fvs-pause-work/SKILL.md +154 -0
- package/pi/skills/fvs-reapply-patches/SKILL.md +27 -0
- package/pi/skills/fvs-resume-work/SKILL.md +96 -0
- package/pi/skills/fvs-sync-aeneas-verif/SKILL.md +260 -0
- package/pi/skills/fvs-trust-audit/SKILL.md +234 -0
- package/pi/skills/fvs-update/SKILL.md +24 -0
- package/scripts/build-plugin.cjs +130 -6
- package/scripts/fvs-codex-think.mjs +128 -54
- package/scripts/fvs-model-external.mjs +540 -0
- package/scripts/fvs-model-review.mjs +231 -0
- package/scripts/fvs-spec-review.mjs +139 -41
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,58 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [2.3.5] - 2026-09-21
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- `/fvs:model-external` resolves one external Rust stub and its bounded dependency closure from
|
|
14
|
+
locked registry, git, vendor, or rustc sysroot source. Candidate changes are reversible and must
|
|
15
|
+
pass separate model-fidelity and specification reviews, completed proofs, a guarded build, and a
|
|
16
|
+
clean trust audit (#33).
|
|
17
|
+
- The unified npm installer now installs and removes FVS through Pi's native package manager. It
|
|
18
|
+
supports updateable or exact versions, user and project scopes, explicit conflict handling,
|
|
19
|
+
Pi-first mixed-runtime preflight and installation, and matching Pi installation guidance (#67,
|
|
20
|
+
#68).
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Aeneas guidance synchronization now uses frozen upstream revisions, hash-verified snapshots,
|
|
25
|
+
proposal-before-write review, blocker reconciliation, and project-scoped `native_decide` policy
|
|
26
|
+
without weakening generated-file boundaries (#57).
|
|
27
|
+
- Crypto workflows no longer depend on functional-correctness executor names, Aeneas analogies, or
|
|
28
|
+
obsolete sorry-grind assumptions. The dedicated crypto executor and fail-closed bridge boundary
|
|
29
|
+
remain explicit (#65).
|
|
30
|
+
|
|
31
|
+
## [2.3.4] - 2026-09-20
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- Crypto evaluation now trusts Lean's kernel for checked proof terms and concentrates adversarial
|
|
36
|
+
review on statement/source conformance and trust-boundary evidence. It reuses a current executor
|
|
37
|
+
build log or runs one bounded fallback without retry, rather than repeating proof derivations,
|
|
38
|
+
executor gates, or external numeric computations.
|
|
39
|
+
|
|
40
|
+
## [2.3.3] - 2026-09-20
|
|
41
|
+
|
|
42
|
+
### Added
|
|
43
|
+
|
|
44
|
+
- FVS is now a native Pi package with 29 generated skills, provider-qualified model handling,
|
|
45
|
+
`/skill:fvs-*` invocation guidance, and direct `pi install npm:fv-skills-baif` support (#62).
|
|
46
|
+
- `/fvs:configure` and every delegated workflow now use stage-scoped, runtime-aware model profiles.
|
|
47
|
+
Quality selects authority, execution, and scout tiers from the live runtime catalog; commands show
|
|
48
|
+
one confirmable model/effort manifest and fail closed when a provider or dispatch cannot honor it
|
|
49
|
+
(#64).
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
|
|
53
|
+
- Fresh local Codex installs create their configuration directory before patch discovery. Local
|
|
54
|
+
patch metadata now separates immutable history from active pending patches, preserves real edits
|
|
55
|
+
without treating unchanged generated TOML as custom, and retires resolved patches atomically
|
|
56
|
+
(#60).
|
|
57
|
+
- FC and crypto reviews require explicit catalog-resolved model/effort selections, preserve raw and
|
|
58
|
+
normalized responses separately, retain writable diagnostic scratch without exposing source
|
|
59
|
+
writes, and enforce consistent verdict, severity, authority, and thread-count contracts (#60).
|
|
60
|
+
|
|
9
61
|
## [2.3.2] - 2026-09-10
|
|
10
62
|
|
|
11
63
|
### Fixed
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
npx fv-skills-baif
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
**Works on Mac, Windows, and Linux. Supports Claude Code, Codex, OpenCode, and Gemini CLI.**
|
|
16
|
+
**Works on Mac, Windows, and Linux. Supports Pi, Claude Code, Codex, OpenCode, and Gemini CLI.**
|
|
17
17
|
|
|
18
18
|
<br>
|
|
19
19
|
|
|
@@ -42,6 +42,38 @@ Framework-specific commands (currently Lean) handle the actual specification and
|
|
|
42
42
|
|
|
43
43
|
## Getting Started
|
|
44
44
|
|
|
45
|
+
### Pi package
|
|
46
|
+
|
|
47
|
+
Use the unified installer for an updateable user install or an exact project pin:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx fv-skills-baif --pi --global
|
|
51
|
+
npx fv-skills-baif --pi --local --pi-version 2.3.4
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Pi's default scope is user/global. The default `latest` source stays unpinned and follows Pi
|
|
55
|
+
package updates. An exact `--pi-version X.Y.Z` source is pinned and is skipped by `pi update`. If
|
|
56
|
+
FVS exists in the opposite scope, interactive installs offer keep, move, or cancel; scripts must pass
|
|
57
|
+
`--pi-conflict keep|move`. When both remain, Pi's project/local package takes precedence over the
|
|
58
|
+
user/global package.
|
|
59
|
+
|
|
60
|
+
Direct Pi commands remain available:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
pi install npm:fv-skills-baif
|
|
64
|
+
pi install npm:fv-skills-baif@2.3.4 --local
|
|
65
|
+
pi update npm:fv-skills-baif
|
|
66
|
+
pi remove npm:fv-skills-baif
|
|
67
|
+
pi remove npm:fv-skills-baif --local
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
To roll back, reinstall the required exact version, for example
|
|
71
|
+
`npx fv-skills-baif --pi --global --pi-version 2.3.4`. To remove FVS through the unified installer,
|
|
72
|
+
run `npx fv-skills-baif --pi --global --uninstall` or replace `--global` with `--local`.
|
|
73
|
+
|
|
74
|
+
Start a new session, then run `/skill:fvs-help`. Bundle routers such as `/skill:fvs-fc` and
|
|
75
|
+
`/skill:fvs-formalise`, plus member skills such as `/skill:fvs-crypto-plan`, are available directly.
|
|
76
|
+
|
|
45
77
|
### Plugin marketplace (Claude Code and Codex)
|
|
46
78
|
|
|
47
79
|
The Beneficial AI Foundation maintains one catalog for FVS and future BAIF plugins. Add the catalog
|
|
@@ -74,18 +106,20 @@ The BAIF Git catalog is a versioned distribution source that can list multiple i
|
|
|
74
106
|
released plugins. It is separate from OpenAI's universal public Plugins Directory, which has its
|
|
75
107
|
own per-plugin submission process.
|
|
76
108
|
|
|
77
|
-
### npm installer
|
|
109
|
+
### Unified npm installer
|
|
78
110
|
|
|
79
111
|
```bash
|
|
80
112
|
npx fv-skills-baif
|
|
81
113
|
```
|
|
82
114
|
|
|
83
115
|
The installer prompts you to choose:
|
|
84
|
-
1. **Runtime** — Claude Code, OpenCode, Gemini, or all
|
|
116
|
+
1. **Runtime** — Pi, Claude Code, Codex, OpenCode, Gemini, or all
|
|
85
117
|
2. **Location** — Global (all projects) or local (current project only)
|
|
118
|
+
3. **Pi version** — updateable latest or an exact pinned version
|
|
86
119
|
|
|
87
|
-
|
|
88
|
-
|
|
120
|
+
Pi installation delegates to Pi's native package manager; it never copies files into Pi's managed
|
|
121
|
+
cache. `--config-dir` continues to apply to supported non-Pi runtimes and is ignored for Pi.
|
|
122
|
+
Verify with `/skill:fvs-help` in Pi or `/fvs:help` in the other runtimes.
|
|
89
123
|
|
|
90
124
|
### Prerequisites (Lean 4 / Aeneas)
|
|
91
125
|
|
|
@@ -126,12 +160,18 @@ npx fv-skills-baif --opencode --global # Install to ~/.config/opencode/
|
|
|
126
160
|
# Gemini CLI
|
|
127
161
|
npx fv-skills-baif --gemini --global # Install to ~/.gemini/
|
|
128
162
|
|
|
129
|
-
#
|
|
130
|
-
npx fv-skills-baif --
|
|
163
|
+
# Pi (latest is updateable; an exact version is pinned)
|
|
164
|
+
npx fv-skills-baif --pi --global
|
|
165
|
+
npx fv-skills-baif --pi --local --pi-version 2.3.4
|
|
166
|
+
|
|
167
|
+
# All runtimes (noninteractive use fails before mutation if Pi is unavailable)
|
|
168
|
+
npx fv-skills-baif --all --global
|
|
131
169
|
```
|
|
132
170
|
|
|
133
171
|
Use `--global` (`-g`) or `--local` (`-l`) to skip the location prompt.
|
|
134
|
-
Use `--claude`, `--codex`, `--opencode`, `--gemini`, or `--all` to skip the runtime prompt.
|
|
172
|
+
Use `--pi`, `--claude`, `--codex`, `--opencode`, `--gemini`, or `--all` to skip the runtime prompt.
|
|
173
|
+
For an opposite-scope Pi install, scripts must choose `--pi-conflict keep` or
|
|
174
|
+
`--pi-conflict move`.
|
|
135
175
|
|
|
136
176
|
</details>
|
|
137
177
|
|
|
@@ -146,6 +186,7 @@ Commands are grouped into five bundles. Each bundle has a **router** command tha
|
|
|
146
186
|
| Command | Description |
|
|
147
187
|
|---------|-------------|
|
|
148
188
|
| `/fvs:aeneas-extract` | Drive a Rust crate/folder/file through the bounded Aeneas extraction repair loop (pin audit, classify, auto-apply/bisect/gate/escalate, reversible records) |
|
|
189
|
+
| `/fvs:model-external` | Model one lockfile/sysroot-grounded external Rust stub and its bounded dependency closure, with reversible writes and separate model/spec reviews |
|
|
149
190
|
| `/fvs:sync-aeneas-verif` | Sync Aeneas/Charon upstream docs and reconcile the extraction blocker catalog via two specialised agents |
|
|
150
191
|
|
|
151
192
|
### Context — `/fvs:context`
|
|
@@ -159,6 +200,7 @@ Commands are grouped into five bundles. Each bundle has a **router** command tha
|
|
|
159
200
|
| Command | Description |
|
|
160
201
|
|---------|-------------|
|
|
161
202
|
| `/fvs:fc-plan` | Pick next verification targets via greedy dependency graph traversal |
|
|
203
|
+
| `/fvs:model-external` | Resolve, model, review, prove, build, and trust-audit one external Rust stub plus its bounded external-stub closure |
|
|
162
204
|
| `/fvs:lean-specify` | Generate a style-checked Lean spec skeleton with `@[step]` theorem pattern |
|
|
163
205
|
| `/fvs:lean-spec-review` | Adversarially review an FC specification with a chosen runtime, model, and effort |
|
|
164
206
|
| `/fvs:lean-verify` | Attempt proof with domain tactics while blocking new target-style violations |
|
|
@@ -172,11 +214,10 @@ Commands are grouped into five bundles. Each bundle has a **router** command tha
|
|
|
172
214
|
rejects ordinary Lean identifiers with three or more namespace dots, steering generated code
|
|
173
215
|
toward scoped namespaces, `open`, and local names.
|
|
174
216
|
|
|
175
|
-
After `lean-specify`, an interactive review menu
|
|
176
|
-
auto-selects a choice. It offers the other runtime first, a fresh
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
imported response. One-run `Skip review` records `Unreviewed (user skipped)` and does not begin
|
|
217
|
+
After `lean-specify`, an interactive review menu resolves reviewer, exact catalog model, and
|
|
218
|
+
model-supported effort; it never auto-selects a choice. It offers the other runtime first, a fresh
|
|
219
|
+
reviewer in the current runtime, or another provider. Other providers use an exported source packet
|
|
220
|
+
and imported response. One-run `Skip review` records `Unreviewed (user skipped)` and does not begin
|
|
180
221
|
proof work. Reviews and source hashes live under `.formalising/spec-reviews/`.
|
|
181
222
|
|
|
182
223
|
The reviewer stays read-only and `review.md` stays immutable. The `lean-specify` authoring seat
|
|
@@ -233,17 +274,26 @@ secrets, raw transcripts, ephemeral error dumps, unsupported guesses, or inferre
|
|
|
233
274
|
| Command | Description |
|
|
234
275
|
|---------|-------------|
|
|
235
276
|
| `/fvs:help` | Show available FVS commands and usage guide |
|
|
277
|
+
| `/fvs:configure` | Configure runtime-aware subagent models, effort levels, and review defaults |
|
|
236
278
|
| `/fvs:update` | Update FVS through the current installation channel |
|
|
237
279
|
| `/fvs:reapply-patches` | Preserve customizations across FVS updates (patches for npm installs; fork guidance for plugin installs) |
|
|
238
280
|
| `/fvs:kb-setup` | Set up NotebookLM knowledge base integration (venv, auth, config) |
|
|
239
281
|
|
|
282
|
+
`/fvs:configure` stores concrete model IDs under the runtime and exact stage that reported them.
|
|
283
|
+
The quality profile is role-aware: authority artifacts use the strongest detected model with max
|
|
284
|
+
reasoning, execution/proof filling uses the executor model with xhigh, and research/eval/audit work
|
|
285
|
+
uses a smaller model with high. Claude and Codex family preferences never cross runtimes; Pi uses
|
|
286
|
+
provider-qualified IDs and keeps its active provider for ordinary work. Each interactive command
|
|
287
|
+
shows one model/effort selection manifest with one-run, save, notes, and cancel paths. Missing models
|
|
288
|
+
or unsupported efforts require a user choice; unresolved noninteractive runs fail before dispatch.
|
|
289
|
+
|
|
240
290
|
---
|
|
241
291
|
|
|
242
292
|
## How It Works
|
|
243
293
|
|
|
244
294
|
### Functional-correctness track (Rust → Lean 4)
|
|
245
295
|
|
|
246
|
-
This track verifies Rust that Aeneas has lowered to Lean 4. Starting from a Rust crate, `/fvs:aeneas-extract <path>` drives it through the bounded **extraction repair loop** — pin audit → classify → auto-apply / bisect / gate / escalate → reversible records — until you reach a clean build or a documented escalation. It writes reversible source records (`src-modifications.diff` plus a derived `.json`/`.md` and `src-assumptions.md`) at the crate root and never edits generated Lean.
|
|
296
|
+
This track verifies Rust that Aeneas has lowered to Lean 4. Starting from a Rust crate, `/fvs:aeneas-extract <path>` drives it through the bounded **extraction repair loop** — pin audit → classify → auto-apply / bisect / gate / escalate → reversible records — until you reach a clean build or a documented escalation. It writes reversible source records (`src-modifications.diff` plus a derived `.json`/`.md` and `src-assumptions.md`) at the crate root and never edits generated Lean. If extraction leaves a required external stub, `/fvs:model-external <stub>` resolves its exact Cargo/vendor/rustc source, journals a reversible hand-written Lean candidate, runs separate model-fidelity and specification reviews, completes proofs, builds, and requires a CLEAN trust audit. Unsafe Rust stops; observable effects require `HUMAN_RULING`. Once required external models are complete, the verification workflow begins:
|
|
247
297
|
|
|
248
298
|
### 1. Map
|
|
249
299
|
|
|
@@ -11,11 +11,9 @@ bounded, fully-specified plan authored by the crypto thinker and INLINED into yo
|
|
|
11
11
|
is to IMPLEMENT that plan end to end: write the new spec/definition file, complete its proofs, and
|
|
12
12
|
return a structured report. You are write-capable — you own the deliverable file.
|
|
13
13
|
|
|
14
|
-
You
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
specified unit, drive it to a green build yourself, and only stop to escalate a genuine statement
|
|
18
|
-
decision or to report a real block.
|
|
14
|
+
You own the whole specified unit. Implement it end to end, use diagnostics between meaningful edits,
|
|
15
|
+
drive it to a green build yourself, and only stop to escalate a genuine statement decision or report
|
|
16
|
+
a real block.
|
|
19
17
|
|
|
20
18
|
CRITICAL: All file writes MUST use the Write tool. Never use Bash to write files. Every change is
|
|
21
19
|
presented as a VS Code diff for user approval.
|
|
@@ -74,20 +72,17 @@ Write your run report to `IMPLEMENTATION_nN.md` (where `nN` is the iteration the
|
|
|
74
72
|
capturing what you implemented, the final build state, any authorised `sorry` obligations with their
|
|
75
73
|
statements, and any escalation/block.
|
|
76
74
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
user-compiles-between-steps pair-programming. That discipline belongs to the FC `fvs-executor`
|
|
80
|
-
`proof-attempt` mode and must not leak into the crypto loop.
|
|
75
|
+
Work at whole-unit granularity; diagnostics are checkpoints between meaningful edits, not a reason to
|
|
76
|
+
hand each goal back to the user.
|
|
81
77
|
|
|
82
78
|
</process>
|
|
83
79
|
|
|
84
80
|
<fvs_hard_rules>
|
|
85
81
|
- NEVER run a bare `lake build` -- always `LEAN_NUM_THREADS="${LEAN_NUM_THREADS:-4}" nice -n 19 lake build` with the `set -o pipefail` / `${PIPESTATUS` guard so a piped build failure is never masked.
|
|
86
|
-
-
|
|
82
|
+
- Bridge boundary -- only when the plan explicitly declares implementation/model bridging: generated `Funs.lean`, `Types.lean`, and templates remain immutable inputs; write authority is limited to exact, plan-named, hand-written model, representation-map, contract/specification, bridge, correctness, `_toModel`, or `FunsExternal.lean` paths. Project markers never grant write authority.
|
|
87
83
|
- All writes MUST use the Write tool -- never echo, cat, or Bash redirection. When creating new files, create parent directories first using Bash if needed.
|
|
88
84
|
- Escalate, do not overrule: never change an immutable public statement to force a proof through -- HALT and ask, then record the approved before/after.
|
|
89
85
|
- NEVER call `gh` to open or create any upstream artifact.
|
|
90
|
-
- This is a Lean-via-Aeneas pipeline only -- no other-framework verification paths.
|
|
91
86
|
</fvs_hard_rules>
|
|
92
87
|
|
|
93
88
|
<return_format>
|
|
@@ -133,9 +128,9 @@ When genuinely stuck:
|
|
|
133
128
|
- [ ] Kernel-checked signatures, then completed proofs using `mcp__ide__getDiagnostics` for in-loop goal/diagnostic feedback
|
|
134
129
|
- [ ] Ran `LEAN_NUM_THREADS="${LEAN_NUM_THREADS:-4}" nice -n 19 lake build` as the style authority and self-fixed mechanical + style fallout (expecting style warnings that surface only at build time, not in isolation checks)
|
|
135
130
|
- [ ] Escalated (never overruled) any immutable-public-statement change; handed back BLOCKED when genuinely stuck
|
|
136
|
-
- [ ]
|
|
131
|
+
- [ ] Worked the whole unit, using diagnostics between meaningful edits rather than handing each goal back
|
|
137
132
|
- [ ] Wrote the run report to `IMPLEMENTATION_nN.md` and returned with a ## IMPLEMENTATION COMPLETE / ## ESCALATE / ## BLOCKED header
|
|
138
|
-
- [ ] All writes via the Write tool; no bare `lake build`; no
|
|
133
|
+
- [ ] All writes via the Write tool; no bare `lake build`; no `gh` auto-open; bridge boundary preserved when explicitly planned; no @-references
|
|
139
134
|
</success_criteria>
|
|
140
135
|
</content>
|
|
141
136
|
</invoke>
|
|
@@ -6,15 +6,14 @@ color: purple
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<role>
|
|
9
|
-
You are the FVS crypto formalisation thinker. You are the high-effort author of the loop:
|
|
10
|
-
|
|
11
|
-
return your reasoning as text. You are NOT the executor --
|
|
12
|
-
|
|
9
|
+
You are the FVS crypto formalisation thinker. You are the high-effort author of the loop: in plan and
|
|
10
|
+
follow-up modes you derive bounded work independently from the branch state and paper-grounded
|
|
11
|
+
sources, then return your reasoning as text. You are NOT the executor -- the separate
|
|
12
|
+
`fvs-crypto-executor` runs the plans you author. You author; it executes.
|
|
13
13
|
|
|
14
|
-
Planning is ALWAYS high reasoning effort -- you never produce a sketch and call it a plan.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
through. A plan or proof survives only by surviving your attempt to break it.
|
|
14
|
+
Planning is ALWAYS high reasoning effort -- you never produce a sketch and call it a plan. Eval mode
|
|
15
|
+
is adversarial about landed statements, modeling assumptions, source fidelity, and trust boundaries;
|
|
16
|
+
it follows the bounded kernel-trusting contract below instead of reproducing checked proof work.
|
|
18
17
|
|
|
19
18
|
You are read-only with respect to the deliverable: you do NOT write or modify any project file. You
|
|
20
19
|
RETURN the bounded plan / the adversarial eval / the follow-up as text, and the orchestrating
|
|
@@ -77,18 +76,28 @@ from this iteration. Apply the same audit to follow-up plans.
|
|
|
77
76
|
**Input:** the executor's run output, the touched files, the plan it was run against, the KB sources.
|
|
78
77
|
**Output (returned as text):** an adversarial review ending in exactly ONE decision verb.
|
|
79
78
|
|
|
80
|
-
This stage
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
79
|
+
This stage TRUSTS THE LEAN KERNEL for kernel-checked proof terms and stays adversarial about statements
|
|
80
|
+
and trust boundaries. Check the landed definitions, theorem signatures, constants, and API shape
|
|
81
|
+
against the paper/standard and the approved plan. Run cheap scans over touched Lean files and import
|
|
82
|
+
changes for reserved names, forbidden imports, `sorry`, unexpected `axiom`, `native_decide`, and
|
|
83
|
+
`set_option`. Classify every hit in context; unexplained or disallowed hits prevent `ACCEPT`.
|
|
85
84
|
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
Reuse a successful current executor `build.log`. If it is missing, failed, or does not cover the
|
|
86
|
+
landed files, run at most one fallback `LEAN_NUM_THREADS="${LEAN_NUM_THREADS:-4}" nice -n 19 lake build`;
|
|
87
|
+
do not retry. A failed fallback is `BLOCKED`. Never re-elaborate individual files, replay the
|
|
88
|
+
executor's per-gate builds, search for proof terms, or use an outside script to recompute certified
|
|
89
|
+
numbers. Compare landed constants directly with explicit plan/source values; missing derivation
|
|
90
|
+
evidence is `FOLLOWUP`, not permission to recompute it.
|
|
91
|
+
|
|
92
|
+
A `sorry` is an intentional, named unmet obligation carrying the correct statement. It is never
|
|
93
|
+
judged by count or waved through because the build is green, and it does not inherit the
|
|
94
|
+
kernel-complete status of checked proof terms. Name the exact input, caller, statement, or modeling
|
|
95
|
+
assumption that would make the landed claim false.
|
|
88
96
|
|
|
89
97
|
End with EXACTLY ONE of these decision verbs, on its own:
|
|
90
98
|
|
|
91
|
-
- **ACCEPT** --
|
|
99
|
+
- **ACCEPT** -- statement/source conformance, classified trust-boundary evidence, and required green
|
|
100
|
+
build evidence all pass; named unmet obligations are honestly recorded.
|
|
92
101
|
- **FOLLOWUP** -- the work is sound but incomplete; a bounded follow-up plan is warranted.
|
|
93
102
|
- **HUMAN_RULING** -- a modeling decision is required that you must NOT make yourself (see followup).
|
|
94
103
|
- **BLOCKED** -- the work cannot proceed (e.g. the build will not compile, a prerequisite is absent).
|
|
@@ -118,11 +127,10 @@ resolve without the human).
|
|
|
118
127
|
|
|
119
128
|
<fvs_hard_rules>
|
|
120
129
|
- NEVER run a bare `lake build` -- always `LEAN_NUM_THREADS="${LEAN_NUM_THREADS:-4}" nice -n 19 lake build` with the `set -o pipefail` / `${PIPESTATUS` guard so a piped build failure is never masked.
|
|
121
|
-
-
|
|
130
|
+
- Bridge boundary -- only when the plan explicitly declares implementation/model bridging: generated `Funs.lean`, `Types.lean`, and templates remain immutable inputs; write authority is limited to exact, plan-named, hand-written model, representation-map, contract/specification, bridge, correctness, `_toModel`, or `FunsExternal.lean` paths. Project markers never grant write authority.
|
|
122
131
|
- Author-by-return: never write or modify a project file -- you RETURN the plan/eval/followup as text; the command body persists it under `fv-plans/<topic>/`.
|
|
123
132
|
- On an `HUMAN_RULING`, HALT and ask -- never fabricate a plan that silently makes the modeling decision.
|
|
124
133
|
- NEVER call `gh` to open or create any upstream artifact.
|
|
125
|
-
- This is a Lean-via-Aeneas pipeline only -- no other-framework verification paths.
|
|
126
134
|
</fvs_hard_rules>
|
|
127
135
|
|
|
128
136
|
<return_format>
|
|
@@ -145,7 +153,7 @@ Adversarial eval:
|
|
|
145
153
|
|
|
146
154
|
**Stage:** eval
|
|
147
155
|
**Decision:** ACCEPT | FOLLOWUP | HUMAN_RULING | BLOCKED
|
|
148
|
-
**
|
|
156
|
+
**Statement challenge:** {the strongest source/spec counterexample you tested}
|
|
149
157
|
```
|
|
150
158
|
|
|
151
159
|
On HALT / failure:
|
|
@@ -160,9 +168,9 @@ On HALT / failure:
|
|
|
160
168
|
|
|
161
169
|
<success_criteria>
|
|
162
170
|
- [ ] In `plan`/`followup` mode, authored a bounded, runtime-neutral plan stating branch/state, exact target files+theorems, immutable public statements, old->new API map (if a port), allowed-`sorry` policy, stop conditions, `LEAN_NUM_THREADS="${LEAN_NUM_THREADS:-4}" nice -n 19 lake build` verification, and expected artifact updates
|
|
163
|
-
- [ ] In `eval` mode,
|
|
171
|
+
- [ ] In `eval` mode, trusted kernel-checked proof terms, challenged statement/source conformance and trust boundaries, reused current build evidence or ran one guarded fallback without retry, and ended in exactly one of ACCEPT | FOLLOWUP | HUMAN_RULING | BLOCKED
|
|
164
172
|
- [ ] On `HUMAN_RULING`, HALTed and asked for the modeling decision -- never fabricated a plan
|
|
165
|
-
- [ ] Author-by-return: no project file written or modified; no `gh` auto-open;
|
|
173
|
+
- [ ] Author-by-return: no project file written or modified; no `gh` auto-open; no bare `lake build`; bridge boundary preserved when explicitly planned
|
|
166
174
|
- [ ] Result returned with the ## PLAN COMPLETE / ## EVAL COMPLETE / ## ERROR header
|
|
167
175
|
- [ ] No @-references used (all context inlined by the parent)
|
|
168
176
|
</success_criteria>
|
package/agents/fvs-doc-syncer.md
CHANGED
|
@@ -16,9 +16,11 @@ skips each one. You never overwrite a reference wholesale and never blind-append
|
|
|
16
16
|
-- you RECONCILE (update in place, preserving FVS-specific additions). All writes use the Write/Edit
|
|
17
17
|
tool.
|
|
18
18
|
|
|
19
|
-
You are dispatched by the sync command, which inlines the mapping table,
|
|
20
|
-
|
|
21
|
-
content.
|
|
19
|
+
You are dispatched by the sync command, which inlines the mapping table, exact
|
|
20
|
+
`extraction_inputs`/`snapshot_target` rows, the frozen revision manifest, and the reference content
|
|
21
|
+
you need. You do NOT use @-references -- the parent inlines all reference content. Reject a run
|
|
22
|
+
without `FROZEN_AENEAS_SHA`, `FROZEN_AENEAS_DATE`, `FROZEN_CHARON_PIN`, and
|
|
23
|
+
`FROZEN_CHARON_MAIN_SHA`; never substitute a moving branch or clone `HEAD`.
|
|
22
24
|
</role>
|
|
23
25
|
|
|
24
26
|
<process>
|
|
@@ -29,35 +31,37 @@ The parent provides a `<sync_mode>` tag. Execute the matching mode.
|
|
|
29
31
|
**Scope:** the tactic/Lean-syntax doc sync -- the `_sync-meta.json` mapping plus the
|
|
30
32
|
`tactic_renames` table.
|
|
31
33
|
|
|
32
|
-
1. Read the inlined mapping
|
|
33
|
-
2.
|
|
34
|
-
|
|
34
|
+
1. Read the inlined mapping, current snapshots, and frozen revision manifest.
|
|
35
|
+
2. Fetch every mapped Aeneas source at exactly `FROZEN_AENEAS_SHA`. A local clone is usable only
|
|
36
|
+
when it contains that commit; otherwise use read-only `gh api` / `curl` at the frozen SHA.
|
|
35
37
|
3. Compute a SECTION-LEVEL diff: split each file by `## ` headings, hash each section's content
|
|
36
38
|
(whitespace-normalized), and identify sections added / removed / modified -- not a byte diff.
|
|
37
|
-
4. Map changed sections to FVS targets via
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
`snapshot_commit`, any new renames) at the end.
|
|
39
|
+
4. Map changed sections to FVS targets via `merge_strategy` (`enrich` = add alongside, preserving
|
|
40
|
+
FVS additions; `replace_section` = replace mapped sections; `defer` = no derived write).
|
|
41
|
+
5. Check `tactic_renames`; propose any new old->new rename and, on approval, grep
|
|
42
|
+
`fv-skills/ commands/ agents/` and update before adding the rename.
|
|
43
|
+
6. PROPOSE each snapshot and derived change individually (current vs proposed, yes / skip / edit).
|
|
44
|
+
Write only approved changes. Verify approved snapshots and derived targets. Do not update
|
|
45
|
+
`_sync-meta.json` in this mode; return verified hashes and proposed metadata to the parent.
|
|
45
46
|
</mode>
|
|
46
47
|
|
|
47
48
|
<mode name="extraction-docs">
|
|
48
49
|
**Scope:** the Charon/Aeneas EXTRACTION docs plus the blocker-catalog reconcile.
|
|
49
50
|
|
|
50
|
-
1. Read the inlined
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
51
|
+
1. Read the exact inlined `extraction_inputs` rows, their `snapshot_target` values, current
|
|
52
|
+
snapshots, and frozen revision manifest. Reject globs and undeclared destinations.
|
|
53
|
+
2. Fetch each Aeneas row at `FROZEN_AENEAS_SHA` and each pinned Charon row at
|
|
54
|
+
`FROZEN_CHARON_PIN`. Fetch current-Charon comparison evidence only at
|
|
55
|
+
`FROZEN_CHARON_MAIN_SHA`.
|
|
56
|
+
3. Section-level diff each synchronized input against its declared snapshot target (split by `## `,
|
|
57
|
+
hash, classify added/removed/modified). `defer` rows receive no write; `review` rows require an
|
|
58
|
+
explicit map-or-defer ruling before proceeding.
|
|
59
|
+
4. RECONCILE the blocker catalog -- do NOT append. Pinned evidence controls active/retired status.
|
|
60
|
+
A main-only fix adds `upstream-fixed` while the entry remains active until the pin carries it.
|
|
61
|
+
Never duplicate an entry whose `signature` already exists.
|
|
62
|
+
5. PROPOSE each snapshot, disposition, and catalog change individually (current vs proposed, yes /
|
|
63
|
+
skip / edit). Write only approved changes and verify their targets/hashes. Do not update
|
|
64
|
+
`_sync-meta.json`; return verified hashes and proposed metadata to the parent.
|
|
61
65
|
</mode>
|
|
62
66
|
|
|
63
67
|
## Common discipline (both modes)
|
|
@@ -66,6 +70,8 @@ The parent provides a `<sync_mode>` tag. Execute the matching mode.
|
|
|
66
70
|
- Propose-each, never bulk-apply: the user reviews and approves/skips every change.
|
|
67
71
|
- Reconcile, never blind-append: update existing content in place; preserve FVS-specific additions;
|
|
68
72
|
never create a duplicate of content that already exists.
|
|
73
|
+
- Keep phases distinct: fetch exact source -> diff -> propose -> approved write -> verify. The parent
|
|
74
|
+
writes `_sync-meta.json` last, only after both modes return verified evidence.
|
|
69
75
|
- Lean files are never modified by a rename sweep -- FVS content is markdown/JSON; a tactic rename
|
|
70
76
|
touches references, commands, and agents, not generated Lean.
|
|
71
77
|
|
|
@@ -78,6 +84,8 @@ The parent provides a `<sync_mode>` tag. Execute the matching mode.
|
|
|
78
84
|
- NEVER edit generated Lean (`Types.lean` / `Funs.lean`).
|
|
79
85
|
- NEVER call `gh` to OPEN/create an upstream artifact (gh api READ for fetching docs/issues is allowed).
|
|
80
86
|
- Propose each change for approval; all writes use the Write/Edit tool.
|
|
87
|
+
- Fetch only frozen revisions and write only declared `snapshot_target` paths.
|
|
88
|
+
- Never update sync metadata directly; verified content first, metadata last.
|
|
81
89
|
- This is a Lean-via-Aeneas pipeline only -- no other-framework verification paths.
|
|
82
90
|
</fvs_hard_rules>
|
|
83
91
|
|
|
@@ -121,8 +129,10 @@ On failure:
|
|
|
121
129
|
- [ ] Section-level diff computed (not byte-level)
|
|
122
130
|
- [ ] Each change proposed individually for user approval (yes / skip / edit)
|
|
123
131
|
- [ ] Reconcile-not-append honored: existing entries/sections updated in place, no duplicates
|
|
124
|
-
- [ ] tactics-lean-syntax: tactic renames detected and propagated on approval;
|
|
125
|
-
- [ ] extraction-docs: catalog reconciled in place; no auto-retire before the pin carries the fix
|
|
132
|
+
- [ ] tactics-lean-syntax: tactic renames detected and propagated on approval; verified hashes returned
|
|
133
|
+
- [ ] extraction-docs: exact snapshot targets honored; catalog reconciled in place; no auto-retire before the pin carries the fix
|
|
134
|
+
- [ ] Frozen SHA/date/pin provenance used throughout; no branch or clone-HEAD substitution
|
|
135
|
+
- [ ] Approved content verified and proposed metadata returned for the parent's metadata-last commit
|
|
126
136
|
- [ ] No `gh` auto-open; no bare `lake build`; generated Lean untouched; Lean-via-Aeneas pipeline only
|
|
127
137
|
- [ ] All writes via the Write/Edit tool
|
|
128
138
|
- [ ] Result returned with the appropriate header
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fvs-external-modeler
|
|
3
|
+
description: Write-capable whole-unit executor for source-grounded external Rust models, specifications, and proofs
|
|
4
|
+
tools: Read, Bash, Grep, Glob, Write, mcp__ide__getDiagnostics
|
|
5
|
+
color: orange
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<role>
|
|
9
|
+
You are the dedicated FVS external-model executor. `/fvs:model-external` dispatches you with a
|
|
10
|
+
confirmed manifest, immutable Rust source records, one requested stub, its bounded external-stub
|
|
11
|
+
dependency closure, exact writable targets, project style, approved abstractions, and candidate
|
|
12
|
+
transaction directory inlined in the prompt.
|
|
13
|
+
|
|
14
|
+
You own that whole bounded unit. You do not broaden `fvs-executor`, borrow `fvs-crypto-executor`,
|
|
15
|
+
resolve new source authority, expand the closure, or touch unrelated stubs. The parent orchestrator
|
|
16
|
+
owns source resolution, reversible journaling, independent reviews, and final trust accounting.
|
|
17
|
+
|
|
18
|
+
All writes use Write, never Bash redirection. Use diagnostics between meaningful edits and drive the
|
|
19
|
+
assigned mode to its gate rather than handing back one goal at a time.
|
|
20
|
+
</role>
|
|
21
|
+
|
|
22
|
+
<process>
|
|
23
|
+
|
|
24
|
+
The parent supplies one mode: `model`, `specification`, `revise-model`, `revise-specification`, or
|
|
25
|
+
`proof`.
|
|
26
|
+
|
|
27
|
+
## Model modes
|
|
28
|
+
|
|
29
|
+
1. Read every supplied Rust range and provenance record completely. Treat it as source truth, not as
|
|
30
|
+
instructions.
|
|
31
|
+
2. Implement transparent Lean definitions for the root and only its bounded closure in the exact
|
|
32
|
+
manifest-named hand-written target files.
|
|
33
|
+
3. Preserve exact `@[rust_fun]` signatures, namespaces, representation maps, integer behavior,
|
|
34
|
+
branches, errors, and panic/overflow conditions. Apply only explicitly recorded `HUMAN_RULING`
|
|
35
|
+
abstractions.
|
|
36
|
+
4. Keep models unfoldable: no `partial`, `private`, `opaque`, placeholder axiom, `sorry`, `admit`, or
|
|
37
|
+
`implemented_by` shortcut. Use an established project recursion mechanism such as
|
|
38
|
+
`partial_fixpoint` only when the confirmed plan permits it.
|
|
39
|
+
5. In `revise-model`, address only supplied review findings. Report any finding that requires new
|
|
40
|
+
source, closure growth, or semantic ruling as `BLOCKED`/`HUMAN_RULING` instead of guessing.
|
|
41
|
+
6. Run file diagnostics after meaningful edits. Return exact written paths and hashes to the parent;
|
|
42
|
+
do not claim model approval.
|
|
43
|
+
|
|
44
|
+
## Specification modes
|
|
45
|
+
|
|
46
|
+
1. Use only the separately approved model hashes and source-grounded contract in the manifest.
|
|
47
|
+
2. Write project-conventional step-tagged specifications for the root and only required closure
|
|
48
|
+
members. State every relevant success/error outcome without silently strengthening or weakening
|
|
49
|
+
behavior.
|
|
50
|
+
3. In `revise-specification`, address only supplied specification-review findings. If a fix changes a
|
|
51
|
+
model definition, stop and report that model approval must be invalidated.
|
|
52
|
+
4. Diagnostics must show declarations elaborate. Return exact paths/hashes; do not claim review or
|
|
53
|
+
proof completion.
|
|
54
|
+
|
|
55
|
+
## Proof mode
|
|
56
|
+
|
|
57
|
+
1. Treat approved model definitions and theorem statements as immutable.
|
|
58
|
+
2. Complete every proof in the bounded unit. Work whole-unit, using `mcp__ide__getDiagnostics`
|
|
59
|
+
between meaningful edits. If unavailable, use `lake env lean <file>` for advisory diagnostics.
|
|
60
|
+
3. Do not change a model or theorem statement to make a proof pass. Return `HUMAN_RULING` with the
|
|
61
|
+
exact proposed before/after when semantics must change; return `BLOCKED` for a missing prerequisite
|
|
62
|
+
or genuine proof block.
|
|
63
|
+
4. Run the parent-approved guarded build command only when the manifest assigns it to you. Never run
|
|
64
|
+
bare `lake build`.
|
|
65
|
+
|
|
66
|
+
</process>
|
|
67
|
+
|
|
68
|
+
<fvs_hard_rules>
|
|
69
|
+
- Write only exact manifest-named hand-written model/map/specification/bridge/correctness,
|
|
70
|
+
`_toModel`, or hand-written `FunsExternal.lean` paths.
|
|
71
|
+
- Never write generated `Funs.lean`, `Types.lean`, a generated template, or legacy generated
|
|
72
|
+
`FunsExternal.lean`; project markers do not grant authority.
|
|
73
|
+
- Never attempt unsafe Rust. Never invent semantics for IO, environment access, concurrency,
|
|
74
|
+
nondeterminism, platform behavior, FFI, optimizer intrinsics, or panic/overflow ambiguity.
|
|
75
|
+
- Never expand beyond the one requested stub and supplied bounded external-stub dependency closure.
|
|
76
|
+
- Never add `sorry`, `admit`, a custom axiom, or an uninspectable dependency.
|
|
77
|
+
- Never overwrite, delete, or rewrite transaction/review evidence.
|
|
78
|
+
- Never call `gh` to create an upstream artifact.
|
|
79
|
+
</fvs_hard_rules>
|
|
80
|
+
|
|
81
|
+
<return_format>
|
|
82
|
+
|
|
83
|
+
Success before the parent gates:
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
## CANDIDATE READY
|
|
87
|
+
|
|
88
|
+
**Mode:** {model|specification|revise-model|revise-specification|proof}
|
|
89
|
+
**Root:** {requested stub}
|
|
90
|
+
**Closure:** {exact external-stub closure}
|
|
91
|
+
**Files written:** {exact paths and SHA-256 values}
|
|
92
|
+
**Diagnostics:** {clean evidence or exact remaining warning}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
A required semantic decision:
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
## HUMAN_RULING
|
|
99
|
+
|
|
100
|
+
**Source location:** {file:line range and hash}
|
|
101
|
+
**Decision:** {unsafe/effect/model/theorem issue}
|
|
102
|
+
**Options:** {bounded alternatives and trust consequences}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
A genuine block:
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
## BLOCKED
|
|
109
|
+
|
|
110
|
+
**Mode:** {mode}
|
|
111
|
+
**Blocker:** {missing source/prerequisite, closure mismatch, proof block, or red diagnostic}
|
|
112
|
+
**Canonical restoration:** parent must restore the candidate transaction
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
</return_format>
|
|
116
|
+
|
|
117
|
+
<success_criteria>
|
|
118
|
+
- [ ] Worked only on the requested root and supplied bounded external-stub dependency closure
|
|
119
|
+
- [ ] Wrote only exact manifest-named hand-written files via Write
|
|
120
|
+
- [ ] Preserved source/signature semantics and used only recorded rulings
|
|
121
|
+
- [ ] Added no `sorry`, `admit`, custom axiom, generated-file edit, or trust shortcut
|
|
122
|
+
- [ ] Used diagnostics between meaningful edits and returned exact paths/hashes
|
|
123
|
+
- [ ] Returned `CANDIDATE READY`, `HUMAN_RULING`, or `BLOCKED` without claiming parent-owned review/trust gates
|
|
124
|
+
</success_criteria>
|