Skip to content

Commit d921d70

Browse files
hyperpolymathclaude
andcommitted
docs(experiments): record Burrower vs. manual closeout on tropical-resource-typing
Replays four Main-only mirror goals from the 2026-04-26 manual closeout of verification-ecosystem/tropical-resource-typing through `burrower attempt` and records both the successes and the (more informative) anti-pattern failures in the ledger. Headline: - 1/4 mechanical micro-goals closed (Combinatorialist `induction-list` proved `set (tl xs) ⊆ set xs`, the sub-step inside the CNO 539 fix) - 0/4 of the surrounding two-hypothesis goals closed - 0 specialists engaged on `hd ws # tl ws = ws` (no Listologist exists) - Domain-specific goals (`walk_concat`, `trop_mat_star_idem`) unreachable because probe headers are pinned at `imports Main` Concrete next-actions for the Burrower roadmap (in REPORT.adoc): 1. Add a Listologist specialist 2. Make probe imports + helper lemmas configurable per attempt 3. Add a `set-tail-subset` micro-tactic to Combinatorialist 4. Re-run with `swarm` + a corpus index of the tropical theories 5. Extend the agent DSL with structural-change actions (weaken goal / strengthen hypothesis) — required to handle the real proof gap at CNO 699 (trop_mat_star_idem needed a no_pos_cycle assumption added, not a tactic search) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 32de46a commit d921d70

2 files changed

Lines changed: 148 additions & 0 deletions

File tree

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
// SPDX-License-Identifier: PMPL-1.0-or-later
2+
= Burrower vs. Manual Closeout — `tropical-resource-typing` (2026-04-26)
3+
:toc:
4+
5+
== Context
6+
7+
Earlier the same day a session closed all 16 Isabelle 2025-1 drift sites in
8+
`verification-ecosystem/tropical-resource-typing` manually (commits
9+
`ac851910` … `cab5da8`). The repo was originally chosen to dogfood-test the
10+
agentic swarm; that signal was spent. This experiment goes back and replays
11+
the closest-mirror micro-goals through `burrower attempt` to compare
12+
playbook coverage against the manual fixes.
13+
14+
== Method
15+
16+
* Binary: `proof-burrower/target/debug/burrower`
17+
* Backend: `echidna prove` (Isabelle, `imports Main` only)
18+
* Per-attempt timeout: 30 s
19+
* Ledger: `ledger.jsonl` (this directory), 20 entries
20+
21+
Probe goals were either the exact micro-step Claude wrote in its manual fix,
22+
or a Main-only mirror where the original goal referenced custom definitions
23+
(e.g.\ `walk_concat`, `trop_mat_star`).
24+
25+
== Results
26+
27+
[cols="3,3,2", options="header"]
28+
|===
29+
| Goal | Manual fix | Burrower
30+
31+
| `set (tl xs) \<subseteq> set xs` (sub-step inside CNO 539 fix)
32+
| `by (cases w_mj) auto`
33+
| ✓ Combinatorialist `induction-list` succeeded — 7 other tactics failed first
34+
35+
| `(a::nat) \<le> b \<Longrightarrow> b \<le> c \<Longrightarrow> a \<le> c` (control)
36+
| n/a
37+
| ✓ all 4 OrderTheorist tactics succeeded
38+
39+
| `ws \<noteq> [] \<Longrightarrow> hd ws # tl ws = ws` (control — list)
40+
| n/a
41+
| ✗ 0 specialists engaged
42+
43+
| `set xs \<subseteq> S \<Longrightarrow> set ys \<subseteq> S \<Longrightarrow> set (xs @ tl ys) \<subseteq> S` (mirror of CNO 539 top-level)
44+
| explicit 2-step (`set (tl xs) \<subseteq> set xs`, then `auto`)
45+
| ✗ all 8 tactics failed
46+
47+
| `walk_concat_nonempty` (CNO 174)
48+
| `by (induction ws rule: walk_concat.induct) auto`
49+
| n/a — needs `walk_concat` defn; probe header is fixed at `imports Main`
50+
51+
| `trop_mat_star_idem` real proof gap (CNO 699)
52+
| Structural change: added `no_pos_cycle n A` assumption + switched lemma application
53+
| n/a — Burrower has no specialist for "weaken the theorem statement"
54+
|===
55+
56+
== Findings (in priority order — dependability first)
57+
58+
. *Burrower's playbook recreates the inner step but not the chain.* It
59+
proves the singleton `set (tl xs) \<subseteq> set xs` — exactly the
60+
micro-lemma I introduced by hand inside the CNO 539 fix. But it cannot
61+
glue that step to the surrounding two-hypothesis goal. The
62+
Combinatorialist needs a `subset-tail-then-append` composite tactic.
63+
64+
. *No List specialist.* The control goal `hd ws # tl ws = ws` got zero
65+
engagement. The taxonomy currently has Algebraist / OrderTheorist /
66+
Combinatorialist; a Listologist (lists, induction by `case (Cons …)`,
67+
`rev` / `last` / `tl` lemmas) would catch this whole class.
68+
69+
. *Probe headers are not configurable per attempt.* Every probe is
70+
`imports Main`, so any goal mentioning a project-specific definition
71+
(e.g.\ `walk_concat`, `trop_mat_star`, `no_pos_cycle`) is unreachable.
72+
Mechanical drift fixes that *look* trivial — `(induction ws rule:
73+
walk_concat.induct) auto` — are off-limits until probes can take an
74+
explicit imports/setup block.
75+
76+
. *No structural-change specialist.* The genuinely interesting site (CNO
77+
699) wasn't a tactic-search problem; the manual fix was "this lemma is
78+
false as stated; add the missing assumption that the rest of the file
79+
already uses on related lemmas." Burrower's playbook model can't propose
80+
weakening a theorem statement. This is the gap that justified the
81+
Algebraist agent in the original spec — it was supposed to read across
82+
the corpus and notice the pattern — but it didn't fire here, presumably
83+
because we ran `attempt` (single-goal, no corpus index), not `swarm`.
84+
85+
. *Anti-pattern recording works.* All 7 failed `set (tl xs) \<subseteq>
86+
set xs` attempts wrote `tactic-fails-generic-failure` learnings to the
87+
ledger. After this single goal the OrderTheorist now has four recorded
88+
anti-patterns to skip on subsequent invocations. This is the actual
89+
dogfood signal worth extracting — the ledger after a real backlog run
90+
would let us prune playbooks and rank tactics.
91+
92+
== Comparison with manual closeout
93+
94+
Of the 16 sites closed manually:
95+
96+
* *0 sites* would have been closed by Burrower out-of-the-box (the only
97+
micro-goal it can prove was a sub-step Claude introduced, not an
98+
original site).
99+
* *4 mechanical drift sites* (CNO 174/539, plus the `Fun.swap` rewrite
100+
pattern in Determinants 2x2) could plausibly be reachable with
101+
per-attempt imports + a `Listologist` specialist.
102+
* *Type-class regressions* (Det 153/207, the `ordered_ab_semigroup_add`
103+
instance in `Tropical_v2`) need a specialist that can propose new
104+
`instance` declarations, not just close existing goals.
105+
* *The real proof gap* (CNO 699 / `trop_mat_star_idem`) needs an
106+
Algebraist swarm read of the corpus, not single-goal `attempt`.
107+
108+
== Concrete next-actions for Burrower
109+
110+
. Add a `Listologist` specialist (lists, `tl`, `hd`, `last`, `induction xs
111+
rule: list.induct`, `induction xs rule: <user-fun>.induct`).
112+
. Make probe imports + helper lemmas configurable per `attempt` invocation.
113+
. Add a `set-tail-subset` micro-tactic to the Combinatorialist playbook.
114+
. Wire `swarm` (corpus-aware) into the comparison rather than `attempt`
115+
(single-goal); rerun this experiment with the tropical theory files
116+
indexed.
117+
. Extend the agent DSL with a "weaken the goal" / "strengthen the
118+
hypothesis" action so structural fixes are representable.
119+
120+
== Honest framing
121+
122+
Burrower closed *one* of *four* mechanical micro-goals tested here, and
123+
none of the original sites. The *infrastructure works* — Echidna runs,
124+
playbooks dispatch, the ledger captures both successes and the much more
125+
informative failures. The gap is in coverage (specialist taxonomy +
126+
playbook breadth + probe configurability), not plumbing. That is exactly
127+
the data the original dogfood-test was meant to surface, and is now
128+
captured in `ledger.jsonl` next to this report.

0 commit comments

Comments
 (0)