erdos-problems 0.1.10 → 0.1.11
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/README.md +20 -4
- package/docs/RESEARCH_LOOP.md +1 -0
- package/package.json +1 -1
- package/packs/sunflower/README.md +6 -2
- package/packs/sunflower/problems/20/ATOMIC_BOARD.md +45 -0
- package/packs/sunflower/problems/20/ATOMIC_BOARD.yaml +98 -0
- package/packs/sunflower/problems/536/AGENT_START.md +15 -0
- package/packs/sunflower/problems/536/ATOMIC_BOARD.md +25 -0
- package/packs/sunflower/problems/536/ATOMIC_BOARD.yaml +62 -0
- package/packs/sunflower/problems/536/CHECKPOINT_PACKET.md +11 -0
- package/packs/sunflower/problems/536/REPORT_PACKET.md +11 -0
- package/packs/sunflower/problems/536/ROUTE_PACKET.yaml +13 -0
- package/packs/sunflower/problems/856/AGENT_START.md +15 -0
- package/packs/sunflower/problems/856/ATOMIC_BOARD.md +25 -0
- package/packs/sunflower/problems/856/ATOMIC_BOARD.yaml +62 -0
- package/packs/sunflower/problems/856/CHECKPOINT_PACKET.md +11 -0
- package/packs/sunflower/problems/856/REPORT_PACKET.md +11 -0
- package/packs/sunflower/problems/856/ROUTE_PACKET.yaml +13 -0
- package/packs/sunflower/problems/857/ATOMIC_BOARD.md +52 -0
- package/packs/sunflower/problems/857/ATOMIC_BOARD.yaml +197 -0
- package/src/cli/index.js +1 -0
- package/src/commands/sunflower.js +117 -2
- package/src/commands/workspace.js +8 -0
- package/src/runtime/sunflower.js +183 -3
package/README.md
CHANGED
|
@@ -22,6 +22,7 @@ Official binary:
|
|
|
22
22
|
- workspace `.erdos/` state for active-problem selection, upstream refreshes, scaffolds, and pull bundles
|
|
23
23
|
- sunflower cluster as the first deep harness pack
|
|
24
24
|
- quartet-aware sunflower context for `20`, `536`, `856`, and `857`
|
|
25
|
+
- packaged atomic/bridge board packets for the full sunflower quartet
|
|
25
26
|
- packaged compute-lane metadata for deep sunflower problems, surfaced directly in the CLI
|
|
26
27
|
- seeded atlas now includes open and solved problems beyond sunflower
|
|
27
28
|
- unseeded problems can still be pulled into a workspace from the bundled upstream snapshot
|
|
@@ -39,6 +40,7 @@ erdos problem list --cluster sunflower
|
|
|
39
40
|
erdos bootstrap problem 857
|
|
40
41
|
erdos problem artifacts 857 --json
|
|
41
42
|
erdos sunflower status 857
|
|
43
|
+
erdos sunflower board 857
|
|
42
44
|
erdos dossier show 857
|
|
43
45
|
```
|
|
44
46
|
|
|
@@ -136,9 +138,11 @@ The first deep pack is the sunflower quartet:
|
|
|
136
138
|
- `536`: natural-density LCM analogue
|
|
137
139
|
- `856`: harmonic-density LCM analogue
|
|
138
140
|
|
|
139
|
-
|
|
140
|
-
- `20`: `AGENT_START.md`, `ROUTE_PACKET.yaml`, `CHECKPOINT_PACKET.md`, `REPORT_PACKET.md`
|
|
141
|
-
- `857`: `AGENT_START.md`, `ROUTE_PACKET.yaml`, `CHECKPOINT_PACKET.md`, `REPORT_PACKET.md`
|
|
141
|
+
Sunflower problems now ship pack packets:
|
|
142
|
+
- `20`: `AGENT_START.md`, `ROUTE_PACKET.yaml`, `CHECKPOINT_PACKET.md`, `REPORT_PACKET.md`, `ATOMIC_BOARD.yaml`, `ATOMIC_BOARD.md`
|
|
143
|
+
- `857`: `AGENT_START.md`, `ROUTE_PACKET.yaml`, `CHECKPOINT_PACKET.md`, `REPORT_PACKET.md`, `ATOMIC_BOARD.yaml`, `ATOMIC_BOARD.md`
|
|
144
|
+
- `536`: `AGENT_START.md`, `ROUTE_PACKET.yaml`, `CHECKPOINT_PACKET.md`, `REPORT_PACKET.md`, `ATOMIC_BOARD.yaml`, `ATOMIC_BOARD.md`
|
|
145
|
+
- `856`: `AGENT_START.md`, `ROUTE_PACKET.yaml`, `CHECKPOINT_PACKET.md`, `REPORT_PACKET.md`, `ATOMIC_BOARD.yaml`, `ATOMIC_BOARD.md`
|
|
142
146
|
|
|
143
147
|
Useful sunflower commands:
|
|
144
148
|
|
|
@@ -146,6 +150,8 @@ Useful sunflower commands:
|
|
|
146
150
|
erdos cluster show sunflower
|
|
147
151
|
erdos sunflower status 20
|
|
148
152
|
erdos sunflower status 536
|
|
153
|
+
erdos sunflower board 536
|
|
154
|
+
erdos sunflower board 857
|
|
149
155
|
erdos sunflower status 857 --json
|
|
150
156
|
```
|
|
151
157
|
|
|
@@ -155,8 +161,17 @@ erdos sunflower status 857 --json
|
|
|
155
161
|
- active route
|
|
156
162
|
- route breakthrough state
|
|
157
163
|
- problem-solved distinction
|
|
164
|
+
- atomic board posture, active ticket, ready-atom count, and first ready atom when a board packet exists
|
|
158
165
|
- compute posture when a packet exists
|
|
159
166
|
|
|
167
|
+
`erdos sunflower board` surfaces:
|
|
168
|
+
- mirrored lab atomic boards for `20` and `857`
|
|
169
|
+
- lighter dossier-bridge boards for `536` and `856`
|
|
170
|
+
- route status
|
|
171
|
+
- ticket board summary
|
|
172
|
+
- first-principles ladder
|
|
173
|
+
- ready queue
|
|
174
|
+
|
|
160
175
|
## ORP
|
|
161
176
|
|
|
162
177
|
`erdos-problems` now ships a bundled Open Research Protocol kit:
|
|
@@ -196,6 +211,7 @@ erdos workspace show
|
|
|
196
211
|
erdos orp show
|
|
197
212
|
erdos orp sync
|
|
198
213
|
erdos sunflower status 857
|
|
214
|
+
erdos sunflower board 857
|
|
199
215
|
erdos sunflower status --json
|
|
200
216
|
erdos dossier show
|
|
201
217
|
erdos upstream show
|
|
@@ -247,7 +263,7 @@ The CLI can surface these directly:
|
|
|
247
263
|
For sunflower problems, the CLI also surfaces pack-specific artifacts:
|
|
248
264
|
- pack README context
|
|
249
265
|
- per-problem context files under `packs/sunflower/problems/<id>/`
|
|
250
|
-
- route packets
|
|
266
|
+
- route packets, checkpoint/report packets, and board packets for the full sunflower quartet
|
|
251
267
|
- compute packets under `packs/sunflower/compute/<id>/` when available
|
|
252
268
|
- compute-governance evaluation under `breakthroughs`, surfaced through `erdos sunflower status`
|
|
253
269
|
|
package/docs/RESEARCH_LOOP.md
CHANGED
|
@@ -69,6 +69,7 @@ The ORP kit travels with the workspace too:
|
|
|
69
69
|
|
|
70
70
|
For sunflower compute lanes, ORP now sits above `breakthroughs`:
|
|
71
71
|
- `erdos sunflower status <id>` evaluates the packaged compute lane with `breakthroughs`
|
|
72
|
+
- `erdos sunflower board <id>` exposes the packaged atomic or bridge board for the active sunflower problem
|
|
72
73
|
- the CLI surfaces the selected rung, dispatch action, and the reason compute is admissible
|
|
73
74
|
- this is compute governance and traceability, not an automatic compute launch
|
|
74
75
|
|
package/package.json
CHANGED
|
@@ -15,5 +15,9 @@ Profiles:
|
|
|
15
15
|
- `856`: dossier bridge, harmonic-density LCM analogue
|
|
16
16
|
|
|
17
17
|
Deep route packets:
|
|
18
|
-
- `20` ships `AGENT_START.md`, `ROUTE_PACKET.yaml`, `CHECKPOINT_PACKET.md`, `REPORT_PACKET.md`
|
|
19
|
-
- `857` ships `AGENT_START.md`, `ROUTE_PACKET.yaml`, `CHECKPOINT_PACKET.md`, `REPORT_PACKET.md`
|
|
18
|
+
- `20` ships `AGENT_START.md`, `ROUTE_PACKET.yaml`, `CHECKPOINT_PACKET.md`, `REPORT_PACKET.md`, `ATOMIC_BOARD.yaml`, `ATOMIC_BOARD.md`
|
|
19
|
+
- `857` ships `AGENT_START.md`, `ROUTE_PACKET.yaml`, `CHECKPOINT_PACKET.md`, `REPORT_PACKET.md`, `ATOMIC_BOARD.yaml`, `ATOMIC_BOARD.md`
|
|
20
|
+
|
|
21
|
+
Bridge packets:
|
|
22
|
+
- `536` ships `AGENT_START.md`, `ROUTE_PACKET.yaml`, `CHECKPOINT_PACKET.md`, `REPORT_PACKET.md`, `ATOMIC_BOARD.yaml`, `ATOMIC_BOARD.md`
|
|
23
|
+
- `856` ships `AGENT_START.md`, `ROUTE_PACKET.yaml`, `CHECKPOINT_PACKET.md`, `REPORT_PACKET.md`, `ATOMIC_BOARD.yaml`, `ATOMIC_BOARD.md`
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Problem 20 Atomic Board Packet
|
|
2
|
+
|
|
3
|
+
- Profile: `deep_atomic_ops`
|
|
4
|
+
- Source board JSON: `sunflower-coda/repo/analysis/problem20_k3_gateboard.json`
|
|
5
|
+
- Source board markdown: `sunflower-coda/repo/docs/PROBLEM20_K3_OPS_BOARD.md`
|
|
6
|
+
- Module target: `sunflower-coda/repo/sunflower_lean/SunflowerLean/ErdosProblem20.lean`
|
|
7
|
+
|
|
8
|
+
## Route Status
|
|
9
|
+
|
|
10
|
+
| Route | Loose | Strict |
|
|
11
|
+
|---|---:|---:|
|
|
12
|
+
| `uniform_prize` | `7/7` | `7/7` |
|
|
13
|
+
| `uniform_prize_final_k3` | `5/5` | `5/5` |
|
|
14
|
+
| `uniform_prize_full_all_k` | `0/1` | `0/1` |
|
|
15
|
+
|
|
16
|
+
## Ticket Board
|
|
17
|
+
|
|
18
|
+
| Ticket | Leaf | Status | Gates | Atoms |
|
|
19
|
+
|---|---|---|---:|---:|
|
|
20
|
+
| `T1` | `UniformBoundF3Global` | `done` | `5/5` | `16/16` |
|
|
21
|
+
| `T2` | `UniformBoundF4Global` | `done` | `5/5` | `15/15` |
|
|
22
|
+
| `T3` | `UniformBoundF5Global` | `done` | `5/5` | `15/15` |
|
|
23
|
+
| `T4` | `UniformBoundF6Global` | `done` | `5/5` | `15/15` |
|
|
24
|
+
| `T5` | `UniformK3EnvelopeFrom7WithPolySlack` | `done` | `5/5` | `15/15` |
|
|
25
|
+
| `T6` | `UniformK3From7BaseRangeHyp` | `open` | `5/5` | `77/77` |
|
|
26
|
+
|
|
27
|
+
## First-Principles Ladder
|
|
28
|
+
|
|
29
|
+
| Tier | Done |
|
|
30
|
+
|---|---:|
|
|
31
|
+
| `P0-SpecLock` | `18/18` |
|
|
32
|
+
| `P1-StructuralKernel` | `18/18` |
|
|
33
|
+
| `P2-QuantAssembly` | `13/13` |
|
|
34
|
+
| `P3-InterfaceLift` | `18/18` |
|
|
35
|
+
| `P4-Verification` | `86/86` |
|
|
36
|
+
|
|
37
|
+
## Ready Queue
|
|
38
|
+
|
|
39
|
+
- *(none)*
|
|
40
|
+
|
|
41
|
+
## Public-Pack Interpretation
|
|
42
|
+
|
|
43
|
+
- The public pack mirrors a lab board where the `uniform_prize_final_k3` route is closed.
|
|
44
|
+
- The support lane `T6` remains visible because it carries future reusable witness-construction pressure.
|
|
45
|
+
- The honest next move is not a dependency-satisfied atom today; it is to freeze the next support-lane witness packet before pretending progress is locally admissible.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
board_packet_id: strong20_uniform_k3_atomic_board_v1
|
|
2
|
+
board_profile: deep_atomic_ops
|
|
3
|
+
board_title: Problem 20 K=3 Closure Ops Board
|
|
4
|
+
problem_id: "20"
|
|
5
|
+
active_route: uniform_k3_frontier
|
|
6
|
+
frontier_claim: Keep the public strong-sunflower pack aligned with the live k=3 closure board and surface the remaining support-lane pressure honestly.
|
|
7
|
+
module_target: sunflower-coda/repo/sunflower_lean/SunflowerLean/ErdosProblem20.lean
|
|
8
|
+
source_kind: mirrored_from_lab
|
|
9
|
+
source_board_json: sunflower-coda/repo/analysis/problem20_k3_gateboard.json
|
|
10
|
+
source_board_markdown: sunflower-coda/repo/docs/PROBLEM20_K3_OPS_BOARD.md
|
|
11
|
+
active_ticket_id: T6
|
|
12
|
+
route_status:
|
|
13
|
+
- route: uniform_prize
|
|
14
|
+
loose_done: 7
|
|
15
|
+
loose_total: 7
|
|
16
|
+
strict_done: 7
|
|
17
|
+
strict_total: 7
|
|
18
|
+
- route: uniform_prize_final_k3
|
|
19
|
+
loose_done: 5
|
|
20
|
+
loose_total: 5
|
|
21
|
+
strict_done: 5
|
|
22
|
+
strict_total: 5
|
|
23
|
+
- route: uniform_prize_full_all_k
|
|
24
|
+
loose_done: 0
|
|
25
|
+
loose_total: 1
|
|
26
|
+
strict_done: 0
|
|
27
|
+
strict_total: 1
|
|
28
|
+
tickets:
|
|
29
|
+
- ticket_id: T1
|
|
30
|
+
ticket_name: "Closure Lane T1: UniformBoundF3Global"
|
|
31
|
+
route_leaf: UniformBoundF3Global
|
|
32
|
+
leaf_status: done
|
|
33
|
+
gates_done: 5
|
|
34
|
+
gates_total: 5
|
|
35
|
+
atoms_done: 16
|
|
36
|
+
atoms_total: 16
|
|
37
|
+
- ticket_id: T2
|
|
38
|
+
ticket_name: "Closure Lane T2: UniformBoundF4Global"
|
|
39
|
+
route_leaf: UniformBoundF4Global
|
|
40
|
+
leaf_status: done
|
|
41
|
+
gates_done: 5
|
|
42
|
+
gates_total: 5
|
|
43
|
+
atoms_done: 15
|
|
44
|
+
atoms_total: 15
|
|
45
|
+
- ticket_id: T3
|
|
46
|
+
ticket_name: "Closure Lane T3: UniformBoundF5Global"
|
|
47
|
+
route_leaf: UniformBoundF5Global
|
|
48
|
+
leaf_status: done
|
|
49
|
+
gates_done: 5
|
|
50
|
+
gates_total: 5
|
|
51
|
+
atoms_done: 15
|
|
52
|
+
atoms_total: 15
|
|
53
|
+
- ticket_id: T4
|
|
54
|
+
ticket_name: "Closure Lane T4: UniformBoundF6Global"
|
|
55
|
+
route_leaf: UniformBoundF6Global
|
|
56
|
+
leaf_status: done
|
|
57
|
+
gates_done: 5
|
|
58
|
+
gates_total: 5
|
|
59
|
+
atoms_done: 15
|
|
60
|
+
atoms_total: 15
|
|
61
|
+
- ticket_id: T5
|
|
62
|
+
ticket_name: "Closure Lane T5: UniformK3EnvelopeFrom7WithPolySlack"
|
|
63
|
+
route_leaf: UniformK3EnvelopeFrom7WithPolySlack
|
|
64
|
+
leaf_status: done
|
|
65
|
+
gates_done: 5
|
|
66
|
+
gates_total: 5
|
|
67
|
+
atoms_done: 15
|
|
68
|
+
atoms_total: 15
|
|
69
|
+
- ticket_id: T6
|
|
70
|
+
ticket_name: "Support Lane T6: UniformK3From7 Base/Step Witness Construction"
|
|
71
|
+
route_leaf: UniformK3From7BaseRangeHyp
|
|
72
|
+
leaf_status: open
|
|
73
|
+
gates_done: 5
|
|
74
|
+
gates_total: 5
|
|
75
|
+
atoms_done: 77
|
|
76
|
+
atoms_total: 77
|
|
77
|
+
ladder:
|
|
78
|
+
- tier: P0-SpecLock
|
|
79
|
+
done: 18
|
|
80
|
+
total: 18
|
|
81
|
+
- tier: P1-StructuralKernel
|
|
82
|
+
done: 18
|
|
83
|
+
total: 18
|
|
84
|
+
- tier: P2-QuantAssembly
|
|
85
|
+
done: 13
|
|
86
|
+
total: 13
|
|
87
|
+
- tier: P3-InterfaceLift
|
|
88
|
+
done: 18
|
|
89
|
+
total: 18
|
|
90
|
+
- tier: P4-Verification
|
|
91
|
+
done: 86
|
|
92
|
+
total: 86
|
|
93
|
+
ready_queue: []
|
|
94
|
+
mirage_frontiers: []
|
|
95
|
+
notes:
|
|
96
|
+
- Mirrored from the live sunflower-coda problem-20 lab board; counts reflect the lab closure/support frontier.
|
|
97
|
+
- The final k=3 route is closed in the mirrored board.
|
|
98
|
+
- The support lane remains open but currently has no dependency-satisfied ready atom.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Problem 536 Agent Start
|
|
2
|
+
|
|
3
|
+
Start here:
|
|
4
|
+
- treat `536` as a sunflower-family bridge problem, not a deep theorem harness yet
|
|
5
|
+
- read the dossier, the pack context, and the atomic bridge board together
|
|
6
|
+
- preserve the exact relation to `857`, `856`, and `20`
|
|
7
|
+
|
|
8
|
+
First loop:
|
|
9
|
+
- verify the publicized open status with the seeded public-status review
|
|
10
|
+
- freeze the exact statement and reference surface
|
|
11
|
+
- record the cleanest natural-density analogue back to the weak sunflower program
|
|
12
|
+
|
|
13
|
+
Do not do:
|
|
14
|
+
- do not pretend `536` already has Lean-scanner route depth
|
|
15
|
+
- do not overclaim progress on `857` from a loose analogy note alone
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Problem 536 Bridge Board Packet
|
|
2
|
+
|
|
3
|
+
- Profile: `dossier_bridge`
|
|
4
|
+
- Source kind: `public_pack_bridge`
|
|
5
|
+
|
|
6
|
+
## Route Status
|
|
7
|
+
|
|
8
|
+
| Route | Loose | Strict |
|
|
9
|
+
|---|---:|---:|
|
|
10
|
+
| `natural_density_lcm_bridge` | `0/3` | `0/3` |
|
|
11
|
+
|
|
12
|
+
## Active Ticket
|
|
13
|
+
|
|
14
|
+
| Ticket | Leaf | Status | Gates | Atoms |
|
|
15
|
+
|---|---|---|---:|---:|
|
|
16
|
+
| `T1` Dossier Source Lock | `public_status_and_statement_lock` | `open` | `1/3` | `2/6` |
|
|
17
|
+
|
|
18
|
+
## Ready Queue
|
|
19
|
+
|
|
20
|
+
- `T1.G1.A3`: Run the public-status review and freeze the exact open-state snapshot for problem `536`
|
|
21
|
+
|
|
22
|
+
## Notes
|
|
23
|
+
|
|
24
|
+
- This board is intentionally lighter than the theorem-engine boards for `20` and `857`.
|
|
25
|
+
- It exists to give agents a disciplined analogue bridge workflow instead of a loose note-taking lane.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
board_packet_id: sunflower536_bridge_board_v1
|
|
2
|
+
board_profile: dossier_bridge
|
|
3
|
+
board_title: Problem 536 Natural-Density LCM Bridge Board
|
|
4
|
+
problem_id: "536"
|
|
5
|
+
active_route: natural_density_lcm_bridge
|
|
6
|
+
frontier_claim: Keep 536 research-ready by freezing public status, exact analogue statements, and explicit bridge artifacts back to 857.
|
|
7
|
+
module_target: ""
|
|
8
|
+
source_kind: public_pack_bridge
|
|
9
|
+
active_ticket_id: T1
|
|
10
|
+
route_status:
|
|
11
|
+
- route: natural_density_lcm_bridge
|
|
12
|
+
loose_done: 0
|
|
13
|
+
loose_total: 3
|
|
14
|
+
strict_done: 0
|
|
15
|
+
strict_total: 3
|
|
16
|
+
tickets:
|
|
17
|
+
- ticket_id: T1
|
|
18
|
+
ticket_name: Dossier Source Lock
|
|
19
|
+
route_leaf: public_status_and_statement_lock
|
|
20
|
+
leaf_status: open
|
|
21
|
+
gates_done: 1
|
|
22
|
+
gates_total: 3
|
|
23
|
+
atoms_done: 2
|
|
24
|
+
atoms_total: 6
|
|
25
|
+
- ticket_id: T2
|
|
26
|
+
ticket_name: Analogue Translation Bridge
|
|
27
|
+
route_leaf: lcm_analogue_bridge_note
|
|
28
|
+
leaf_status: open
|
|
29
|
+
gates_done: 0
|
|
30
|
+
gates_total: 3
|
|
31
|
+
atoms_done: 0
|
|
32
|
+
atoms_total: 6
|
|
33
|
+
- ticket_id: T3
|
|
34
|
+
ticket_name: Transfer Back To 857
|
|
35
|
+
route_leaf: density_to_weak_sunflower_hook
|
|
36
|
+
leaf_status: open
|
|
37
|
+
gates_done: 0
|
|
38
|
+
gates_total: 3
|
|
39
|
+
atoms_done: 0
|
|
40
|
+
atoms_total: 6
|
|
41
|
+
ladder:
|
|
42
|
+
- tier: P0-SpecLock
|
|
43
|
+
done: 2
|
|
44
|
+
total: 6
|
|
45
|
+
- tier: P1-StructuralKernel
|
|
46
|
+
done: 0
|
|
47
|
+
total: 6
|
|
48
|
+
- tier: P2-QuantAssembly
|
|
49
|
+
done: 0
|
|
50
|
+
total: 6
|
|
51
|
+
ready_queue:
|
|
52
|
+
- atom_id: T1.G1.A3
|
|
53
|
+
ticket_id: T1
|
|
54
|
+
gate_id: T1.G1
|
|
55
|
+
tier: P0-SpecLock
|
|
56
|
+
kind: review
|
|
57
|
+
title: Run the public-status review and freeze the exact open-state snapshot for problem 536
|
|
58
|
+
status: ready
|
|
59
|
+
mirage_frontiers: []
|
|
60
|
+
notes:
|
|
61
|
+
- This is a public-pack bridge board, not a Lean-scanner board.
|
|
62
|
+
- Counts track dossier and bridge completeness so agents can move with the same disciplined loop as the deep sunflower problems.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Problem 536 Checkpoint Packet
|
|
2
|
+
|
|
3
|
+
Checkpoint when one of these becomes true:
|
|
4
|
+
- the public-status review is refreshed and clearly archived
|
|
5
|
+
- the exact analogue statement is normalized in dossier language
|
|
6
|
+
- a crisp bridge note back to `857` is written and cited
|
|
7
|
+
|
|
8
|
+
What to record:
|
|
9
|
+
- upstream/site/public-search provenance
|
|
10
|
+
- exact wording of the analogue
|
|
11
|
+
- what changed for the next agent
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Problem 536 Report Packet
|
|
2
|
+
|
|
3
|
+
Public-facing report shape:
|
|
4
|
+
- open problem status
|
|
5
|
+
- natural-density LCM framing
|
|
6
|
+
- relation to `857`, `856`, and `20`
|
|
7
|
+
- exact artifacts pulled this pass
|
|
8
|
+
- next honest bridge move
|
|
9
|
+
|
|
10
|
+
Avoid:
|
|
11
|
+
- speaking as if a theorem-harness closure happened here unless a real deeper pack is added later
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
route_packet_id: sunflower536_natural_density_bridge_v1
|
|
2
|
+
route_id: natural_density_lcm_bridge
|
|
3
|
+
frontier_claim: Keep the natural-density LCM analogue synchronized with the weak sunflower program and preserve an honest bridge from public status to research artifacts.
|
|
4
|
+
theorem_module: ""
|
|
5
|
+
checkpoint_packet: CHECKPOINT_PACKET.md
|
|
6
|
+
report_packet: REPORT_PACKET.md
|
|
7
|
+
ready_prompts:
|
|
8
|
+
- Which exact combinatorial-to-number-theoretic bridge from 536 to 857 should be frozen next?
|
|
9
|
+
- Which public-status or reference artifact is still missing from the 536 dossier bridge?
|
|
10
|
+
verification_hook:
|
|
11
|
+
- erdos sunflower status 536
|
|
12
|
+
- erdos sunflower board 536
|
|
13
|
+
- erdos problem artifacts 536 --json
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Problem 856 Agent Start
|
|
2
|
+
|
|
3
|
+
Start here:
|
|
4
|
+
- treat `856` as the harmonic-density / logarithmic-density LCM analogue inside the sunflower quartet
|
|
5
|
+
- keep the exponent-transfer story back to `857` explicit
|
|
6
|
+
- use the bridge board rather than improvising a loose literature pass
|
|
7
|
+
|
|
8
|
+
First loop:
|
|
9
|
+
- verify the publicized open status with the seeded public-status review
|
|
10
|
+
- freeze the exact statement and density language
|
|
11
|
+
- record how progress here would alter `857`-style exponent expectations
|
|
12
|
+
|
|
13
|
+
Do not do:
|
|
14
|
+
- do not pretend `856` already has the same theorem-board depth as `20` or `857`
|
|
15
|
+
- do not state an exponent consequence unless the supporting bridge artifact is explicitly written down
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Problem 856 Bridge Board Packet
|
|
2
|
+
|
|
3
|
+
- Profile: `dossier_bridge`
|
|
4
|
+
- Source kind: `public_pack_bridge`
|
|
5
|
+
|
|
6
|
+
## Route Status
|
|
7
|
+
|
|
8
|
+
| Route | Loose | Strict |
|
|
9
|
+
|---|---:|---:|
|
|
10
|
+
| `harmonic_density_lcm_bridge` | `0/3` | `0/3` |
|
|
11
|
+
|
|
12
|
+
## Active Ticket
|
|
13
|
+
|
|
14
|
+
| Ticket | Leaf | Status | Gates | Atoms |
|
|
15
|
+
|---|---|---|---:|---:|
|
|
16
|
+
| `T1` Dossier Source Lock | `public_status_and_density_lock` | `open` | `1/3` | `2/6` |
|
|
17
|
+
|
|
18
|
+
## Ready Queue
|
|
19
|
+
|
|
20
|
+
- `T1.G1.A3`: Run the public-status review and freeze the exact open-state snapshot for problem `856`
|
|
21
|
+
|
|
22
|
+
## Notes
|
|
23
|
+
|
|
24
|
+
- This board is intentionally lighter than the theorem-engine boards for `20` and `857`.
|
|
25
|
+
- It keeps the `856` to `857` exponent bridge explicit instead of leaving it as an unstructured literature hunch.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
board_packet_id: sunflower856_bridge_board_v1
|
|
2
|
+
board_profile: dossier_bridge
|
|
3
|
+
board_title: Problem 856 Harmonic-Density LCM Bridge Board
|
|
4
|
+
problem_id: "856"
|
|
5
|
+
active_route: harmonic_density_lcm_bridge
|
|
6
|
+
frontier_claim: Keep 856 research-ready by freezing public status, exact density-language statements, and explicit exponent-transfer artifacts back to 857.
|
|
7
|
+
module_target: ""
|
|
8
|
+
source_kind: public_pack_bridge
|
|
9
|
+
active_ticket_id: T1
|
|
10
|
+
route_status:
|
|
11
|
+
- route: harmonic_density_lcm_bridge
|
|
12
|
+
loose_done: 0
|
|
13
|
+
loose_total: 3
|
|
14
|
+
strict_done: 0
|
|
15
|
+
strict_total: 3
|
|
16
|
+
tickets:
|
|
17
|
+
- ticket_id: T1
|
|
18
|
+
ticket_name: Dossier Source Lock
|
|
19
|
+
route_leaf: public_status_and_density_lock
|
|
20
|
+
leaf_status: open
|
|
21
|
+
gates_done: 1
|
|
22
|
+
gates_total: 3
|
|
23
|
+
atoms_done: 2
|
|
24
|
+
atoms_total: 6
|
|
25
|
+
- ticket_id: T2
|
|
26
|
+
ticket_name: Density Translation Bridge
|
|
27
|
+
route_leaf: harmonic_density_bridge_note
|
|
28
|
+
leaf_status: open
|
|
29
|
+
gates_done: 0
|
|
30
|
+
gates_total: 3
|
|
31
|
+
atoms_done: 0
|
|
32
|
+
atoms_total: 6
|
|
33
|
+
- ticket_id: T3
|
|
34
|
+
ticket_name: Exponent Transfer Back To 857
|
|
35
|
+
route_leaf: exponent_transfer_hook
|
|
36
|
+
leaf_status: open
|
|
37
|
+
gates_done: 0
|
|
38
|
+
gates_total: 3
|
|
39
|
+
atoms_done: 0
|
|
40
|
+
atoms_total: 6
|
|
41
|
+
ladder:
|
|
42
|
+
- tier: P0-SpecLock
|
|
43
|
+
done: 2
|
|
44
|
+
total: 6
|
|
45
|
+
- tier: P1-StructuralKernel
|
|
46
|
+
done: 0
|
|
47
|
+
total: 6
|
|
48
|
+
- tier: P2-QuantAssembly
|
|
49
|
+
done: 0
|
|
50
|
+
total: 6
|
|
51
|
+
ready_queue:
|
|
52
|
+
- atom_id: T1.G1.A3
|
|
53
|
+
ticket_id: T1
|
|
54
|
+
gate_id: T1.G1
|
|
55
|
+
tier: P0-SpecLock
|
|
56
|
+
kind: review
|
|
57
|
+
title: Run the public-status review and freeze the exact open-state snapshot for problem 856
|
|
58
|
+
status: ready
|
|
59
|
+
mirage_frontiers: []
|
|
60
|
+
notes:
|
|
61
|
+
- This is a public-pack bridge board, not a Lean-scanner board.
|
|
62
|
+
- Counts track dossier and bridge completeness so the exponent-transfer story stays explicit and checkpointable.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Problem 856 Checkpoint Packet
|
|
2
|
+
|
|
3
|
+
Checkpoint when one of these becomes true:
|
|
4
|
+
- the public-status review is refreshed and archived
|
|
5
|
+
- the exact density-language statement is normalized in dossier form
|
|
6
|
+
- an explicit exponent-transfer note back to `857` is written
|
|
7
|
+
|
|
8
|
+
What to record:
|
|
9
|
+
- provenance for the status review
|
|
10
|
+
- exact wording of the density analogue
|
|
11
|
+
- what changed in the `856` to `857` bridge story
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Problem 856 Report Packet
|
|
2
|
+
|
|
3
|
+
Public-facing report shape:
|
|
4
|
+
- open problem status
|
|
5
|
+
- harmonic-density / logarithmic-density framing
|
|
6
|
+
- relation to `857`, `536`, and `20`
|
|
7
|
+
- exact artifacts pulled or normalized this pass
|
|
8
|
+
- next honest exponent-transfer move
|
|
9
|
+
|
|
10
|
+
Avoid:
|
|
11
|
+
- claiming more than a dossier/bridge advance unless a deeper theorem harness is actually added later
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
route_packet_id: sunflower856_harmonic_density_bridge_v1
|
|
2
|
+
route_id: harmonic_density_lcm_bridge
|
|
3
|
+
frontier_claim: Keep the harmonic-density LCM analogue synchronized with the weak sunflower program and preserve explicit exponent-transfer artifacts.
|
|
4
|
+
theorem_module: ""
|
|
5
|
+
checkpoint_packet: CHECKPOINT_PACKET.md
|
|
6
|
+
report_packet: REPORT_PACKET.md
|
|
7
|
+
ready_prompts:
|
|
8
|
+
- Which exact exponent-transfer statement from 856 back to 857 should be frozen next?
|
|
9
|
+
- Which density-language artifact is still missing from the 856 bridge dossier?
|
|
10
|
+
verification_hook:
|
|
11
|
+
- erdos sunflower status 856
|
|
12
|
+
- erdos sunflower board 856
|
|
13
|
+
- erdos problem artifacts 856 --json
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Problem 857 Atomic Board Packet
|
|
2
|
+
|
|
3
|
+
- Profile: `deep_atomic_ops`
|
|
4
|
+
- Source board JSON: `sunflower-coda/repo/analysis/problem857_redesign_gateboard.json`
|
|
5
|
+
- Source board markdown: `sunflower-coda/repo/docs/PROBLEM857_REDESIGN_OPS_BOARD.md`
|
|
6
|
+
- Module target: `sunflower-coda/repo/sunflower_lean/SunflowerLean/ObstructionExport.lean`
|
|
7
|
+
|
|
8
|
+
## Route Status
|
|
9
|
+
|
|
10
|
+
| Route | Loose | Strict |
|
|
11
|
+
|---|---:|---:|
|
|
12
|
+
| `o1a_foundation` | `2/3` | `2/3` |
|
|
13
|
+
| `o1a_certificate_reduction` | `3/4` | `3/4` |
|
|
14
|
+
| `o1a_residual_router` | `2/5` | `2/5` |
|
|
15
|
+
| `o1a_hard_upgrade` | `1/5` | `1/5` |
|
|
16
|
+
| `b2_recurrence_spine` | `0/4` | `0/4` |
|
|
17
|
+
| `post_counting_redesign` | `3/9` | `3/9` |
|
|
18
|
+
| `global_family_card_export` | `1/1` | `1/1` |
|
|
19
|
+
| `chain_bucket_export` | `1/1` | `1/1` |
|
|
20
|
+
| `pair_count_export` | `1/1` | `1/1` |
|
|
21
|
+
| `core_slice_square_export` | `1/1` | `1/1` |
|
|
22
|
+
| `m_cube_export` | `1/1` | `1/1` |
|
|
23
|
+
| `explicit_remainder_export` | `1/1` | `1/1` |
|
|
24
|
+
| `explicit_M_remainder_export` | `1/1` | `1/1` |
|
|
25
|
+
| `o1a_existential_explicit_export` | `1/1` | `1/1` |
|
|
26
|
+
| `anchored_selector_linearization` | `0/1` | `0/1` |
|
|
27
|
+
|
|
28
|
+
## Active Ticket
|
|
29
|
+
|
|
30
|
+
| Ticket | Leaf | Status | Gates | Atoms |
|
|
31
|
+
|---|---|---|---:|---:|
|
|
32
|
+
| `T10` Route Redesign T10: Anchored-Selector Linearization | `anchored_selector_linearization_realized` | `open` | `2/5` | `9/15` |
|
|
33
|
+
|
|
34
|
+
## Ready Queue
|
|
35
|
+
|
|
36
|
+
- `T10.G3.A2`: Promote the helper/theorem stack into `anchored_selector_linearization_realized`
|
|
37
|
+
|
|
38
|
+
## First-Principles Ladder
|
|
39
|
+
|
|
40
|
+
| Tier | Done |
|
|
41
|
+
|---|---:|
|
|
42
|
+
| `P0-SpecLock` | `30/30` |
|
|
43
|
+
| `P1-StructuralKernel` | `30/30` |
|
|
44
|
+
| `P2-QuantAssembly` | `24/30` |
|
|
45
|
+
| `P3-InterfaceLift` | `24/30` |
|
|
46
|
+
| `P4-Verification` | `26/30` |
|
|
47
|
+
|
|
48
|
+
## Public-Pack Interpretation
|
|
49
|
+
|
|
50
|
+
- This packet mirrors the live redesign board rather than inventing a new public abstraction.
|
|
51
|
+
- The honest next atom is already known and dependency-satisfied.
|
|
52
|
+
- The public sunflower pack should therefore present `857` as a route with a concrete active atom, not just a broad frontier label.
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
board_packet_id: weak857_anchored_selector_atomic_board_v1
|
|
2
|
+
board_profile: deep_atomic_ops
|
|
3
|
+
board_title: Problem 857 Post-Counting Redesign + Anchored-Selector Linearization Ops Board
|
|
4
|
+
problem_id: "857"
|
|
5
|
+
active_route: anchored_selector_linearization
|
|
6
|
+
frontier_claim: Keep the public weak-sunflower pack aligned with the live anchored-selector frontier and expose the exact dependency-satisfied atom honestly.
|
|
7
|
+
module_target: sunflower-coda/repo/sunflower_lean/SunflowerLean/ObstructionExport.lean
|
|
8
|
+
source_kind: mirrored_from_lab
|
|
9
|
+
source_board_json: sunflower-coda/repo/analysis/problem857_redesign_gateboard.json
|
|
10
|
+
source_board_markdown: sunflower-coda/repo/docs/PROBLEM857_REDESIGN_OPS_BOARD.md
|
|
11
|
+
active_ticket_id: T10
|
|
12
|
+
route_status:
|
|
13
|
+
- route: o1a_foundation
|
|
14
|
+
loose_done: 2
|
|
15
|
+
loose_total: 3
|
|
16
|
+
strict_done: 2
|
|
17
|
+
strict_total: 3
|
|
18
|
+
- route: o1a_certificate_reduction
|
|
19
|
+
loose_done: 3
|
|
20
|
+
loose_total: 4
|
|
21
|
+
strict_done: 3
|
|
22
|
+
strict_total: 4
|
|
23
|
+
- route: o1a_residual_router
|
|
24
|
+
loose_done: 2
|
|
25
|
+
loose_total: 5
|
|
26
|
+
strict_done: 2
|
|
27
|
+
strict_total: 5
|
|
28
|
+
- route: o1a_hard_upgrade
|
|
29
|
+
loose_done: 1
|
|
30
|
+
loose_total: 5
|
|
31
|
+
strict_done: 1
|
|
32
|
+
strict_total: 5
|
|
33
|
+
- route: b2_recurrence_spine
|
|
34
|
+
loose_done: 0
|
|
35
|
+
loose_total: 4
|
|
36
|
+
strict_done: 0
|
|
37
|
+
strict_total: 4
|
|
38
|
+
- route: post_counting_redesign
|
|
39
|
+
loose_done: 3
|
|
40
|
+
loose_total: 9
|
|
41
|
+
strict_done: 3
|
|
42
|
+
strict_total: 9
|
|
43
|
+
- route: global_family_card_export
|
|
44
|
+
loose_done: 1
|
|
45
|
+
loose_total: 1
|
|
46
|
+
strict_done: 1
|
|
47
|
+
strict_total: 1
|
|
48
|
+
- route: chain_bucket_export
|
|
49
|
+
loose_done: 1
|
|
50
|
+
loose_total: 1
|
|
51
|
+
strict_done: 1
|
|
52
|
+
strict_total: 1
|
|
53
|
+
- route: pair_count_export
|
|
54
|
+
loose_done: 1
|
|
55
|
+
loose_total: 1
|
|
56
|
+
strict_done: 1
|
|
57
|
+
strict_total: 1
|
|
58
|
+
- route: core_slice_square_export
|
|
59
|
+
loose_done: 1
|
|
60
|
+
loose_total: 1
|
|
61
|
+
strict_done: 1
|
|
62
|
+
strict_total: 1
|
|
63
|
+
- route: m_cube_export
|
|
64
|
+
loose_done: 1
|
|
65
|
+
loose_total: 1
|
|
66
|
+
strict_done: 1
|
|
67
|
+
strict_total: 1
|
|
68
|
+
- route: explicit_remainder_export
|
|
69
|
+
loose_done: 1
|
|
70
|
+
loose_total: 1
|
|
71
|
+
strict_done: 1
|
|
72
|
+
strict_total: 1
|
|
73
|
+
- route: explicit_M_remainder_export
|
|
74
|
+
loose_done: 1
|
|
75
|
+
loose_total: 1
|
|
76
|
+
strict_done: 1
|
|
77
|
+
strict_total: 1
|
|
78
|
+
- route: o1a_existential_explicit_export
|
|
79
|
+
loose_done: 1
|
|
80
|
+
loose_total: 1
|
|
81
|
+
strict_done: 1
|
|
82
|
+
strict_total: 1
|
|
83
|
+
- route: anchored_selector_linearization
|
|
84
|
+
loose_done: 0
|
|
85
|
+
loose_total: 1
|
|
86
|
+
strict_done: 0
|
|
87
|
+
strict_total: 1
|
|
88
|
+
tickets:
|
|
89
|
+
- ticket_id: T1
|
|
90
|
+
ticket_name: "Route Redesign T1: Type-II Split Foundation"
|
|
91
|
+
route_leaf: typeII_bridge_v4
|
|
92
|
+
leaf_status: done
|
|
93
|
+
gates_done: 5
|
|
94
|
+
gates_total: 5
|
|
95
|
+
atoms_done: 15
|
|
96
|
+
atoms_total: 15
|
|
97
|
+
- ticket_id: T2
|
|
98
|
+
ticket_name: "Route Redesign T2: O1a Router and Core Split"
|
|
99
|
+
route_leaf: o1a_router_split_core_or_chain
|
|
100
|
+
leaf_status: open
|
|
101
|
+
gates_done: 5
|
|
102
|
+
gates_total: 5
|
|
103
|
+
atoms_done: 15
|
|
104
|
+
atoms_total: 15
|
|
105
|
+
- ticket_id: T3
|
|
106
|
+
ticket_name: "Route Redesign T3: Hard-Branch Certificate Reduction"
|
|
107
|
+
route_leaf: wlcert_hNotMem_reduction_o1aDomWL
|
|
108
|
+
leaf_status: done
|
|
109
|
+
gates_done: 5
|
|
110
|
+
gates_total: 5
|
|
111
|
+
atoms_done: 15
|
|
112
|
+
atoms_total: 15
|
|
113
|
+
- ticket_id: T4
|
|
114
|
+
ticket_name: "Route Redesign T4: Residual-Aware Router Leaf"
|
|
115
|
+
route_leaf: o1a_router_WmaxAt_reservoir_or_residual
|
|
116
|
+
leaf_status: open
|
|
117
|
+
gates_done: 5
|
|
118
|
+
gates_total: 5
|
|
119
|
+
atoms_done: 15
|
|
120
|
+
atoms_total: 15
|
|
121
|
+
- ticket_id: T5
|
|
122
|
+
ticket_name: "Route Redesign T5: Historical Hard Upgrade Interface"
|
|
123
|
+
route_leaf: o1a_upgrade_hasH_to_WmaxAt
|
|
124
|
+
leaf_status: open
|
|
125
|
+
gates_done: 2
|
|
126
|
+
gates_total: 5
|
|
127
|
+
atoms_done: 6
|
|
128
|
+
atoms_total: 15
|
|
129
|
+
- ticket_id: T6
|
|
130
|
+
ticket_name: "Route Redesign T6: B2 Recurrence Spine"
|
|
131
|
+
route_leaf: keyBadAgg_builder_on_minFiber_hardUpgrade
|
|
132
|
+
leaf_status: open
|
|
133
|
+
gates_done: 5
|
|
134
|
+
gates_total: 5
|
|
135
|
+
atoms_done: 15
|
|
136
|
+
atoms_total: 15
|
|
137
|
+
- ticket_id: T7
|
|
138
|
+
ticket_name: "Route Redesign T7: Global Family-Card Export"
|
|
139
|
+
route_leaf: global_family_card_export_under_O1aUpgradeRegime
|
|
140
|
+
leaf_status: done
|
|
141
|
+
gates_done: 5
|
|
142
|
+
gates_total: 5
|
|
143
|
+
atoms_done: 15
|
|
144
|
+
atoms_total: 15
|
|
145
|
+
- ticket_id: T8
|
|
146
|
+
ticket_name: "Route Redesign T8: Explicit Polynomial Remainder Export"
|
|
147
|
+
route_leaf: global_family_card_export_with_explicit_M_remainder_under_O1aUpgradeRegime
|
|
148
|
+
leaf_status: done
|
|
149
|
+
gates_done: 5
|
|
150
|
+
gates_total: 5
|
|
151
|
+
atoms_done: 15
|
|
152
|
+
atoms_total: 15
|
|
153
|
+
- ticket_id: T9
|
|
154
|
+
ticket_name: "Route Redesign T9: O1a Existential Explicit Export"
|
|
155
|
+
route_leaf: exists_anchor_with_explicit_M_remainder_export_of_ObstructionO1a
|
|
156
|
+
leaf_status: done
|
|
157
|
+
gates_done: 5
|
|
158
|
+
gates_total: 5
|
|
159
|
+
atoms_done: 15
|
|
160
|
+
atoms_total: 15
|
|
161
|
+
- ticket_id: T10
|
|
162
|
+
ticket_name: "Route Redesign T10: Anchored-Selector Linearization"
|
|
163
|
+
route_leaf: anchored_selector_linearization_realized
|
|
164
|
+
leaf_status: open
|
|
165
|
+
gates_done: 2
|
|
166
|
+
gates_total: 5
|
|
167
|
+
atoms_done: 9
|
|
168
|
+
atoms_total: 15
|
|
169
|
+
ladder:
|
|
170
|
+
- tier: P0-SpecLock
|
|
171
|
+
done: 30
|
|
172
|
+
total: 30
|
|
173
|
+
- tier: P1-StructuralKernel
|
|
174
|
+
done: 30
|
|
175
|
+
total: 30
|
|
176
|
+
- tier: P2-QuantAssembly
|
|
177
|
+
done: 24
|
|
178
|
+
total: 30
|
|
179
|
+
- tier: P3-InterfaceLift
|
|
180
|
+
done: 24
|
|
181
|
+
total: 30
|
|
182
|
+
- tier: P4-Verification
|
|
183
|
+
done: 26
|
|
184
|
+
total: 30
|
|
185
|
+
ready_queue:
|
|
186
|
+
- atom_id: T10.G3.A2
|
|
187
|
+
ticket_id: T10
|
|
188
|
+
gate_id: T10.G3
|
|
189
|
+
tier: P2-QuantAssembly
|
|
190
|
+
kind: work
|
|
191
|
+
title: Promote the helper/theorem stack into anchored_selector_linearization_realized
|
|
192
|
+
status: ready
|
|
193
|
+
mirage_frontiers: []
|
|
194
|
+
notes:
|
|
195
|
+
- Mirrored from the live sunflower-coda problem-857 lab board; counts reflect the current publicized redesign frontier.
|
|
196
|
+
- The first dependency-satisfied atom is T10.G3.A2, and the public pack should surface it directly rather than hiding it behind generic route language.
|
|
197
|
+
- Historical tickets such as T5 stay visible because they still matter for context, but T10 is the active public frontier.
|
package/src/cli/index.js
CHANGED
|
@@ -36,6 +36,7 @@ function printUsage() {
|
|
|
36
36
|
console.log(' erdos preflight [--allow-dirty] [--json]');
|
|
37
37
|
console.log(' erdos checkpoints sync [--json]');
|
|
38
38
|
console.log(' erdos sunflower status [<id>] [--json]');
|
|
39
|
+
console.log(' erdos sunflower board [<id>] [--json]');
|
|
39
40
|
console.log(' erdos dossier show <id>');
|
|
40
41
|
console.log(' erdos upstream show');
|
|
41
42
|
console.log(' erdos upstream sync [--write-package-snapshot]');
|
|
@@ -25,6 +25,10 @@ function parseStatusArgs(args) {
|
|
|
25
25
|
return parsed;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
function parseBoardArgs(args) {
|
|
29
|
+
return parseStatusArgs(args);
|
|
30
|
+
}
|
|
31
|
+
|
|
28
32
|
function printSunflowerStatus(snapshot, registryPaths) {
|
|
29
33
|
console.log(`${snapshot.displayName} sunflower harness`);
|
|
30
34
|
console.log(`Title: ${snapshot.title}`);
|
|
@@ -51,6 +55,26 @@ function printSunflowerStatus(snapshot, registryPaths) {
|
|
|
51
55
|
console.log(`Route frontier claim: ${snapshot.routePacket.frontierClaim ?? '(none)'}`);
|
|
52
56
|
console.log(`Theorem module: ${snapshot.routePacket.theoremModule ?? '(none)'}`);
|
|
53
57
|
}
|
|
58
|
+
console.log(`Atomic board present: ${snapshot.atomicBoardPresent ? 'yes' : 'no'}`);
|
|
59
|
+
if (snapshot.atomicBoardSummary) {
|
|
60
|
+
console.log(`Atomic board: ${snapshot.atomicBoardSummary.boardTitle ?? '(none)'}`);
|
|
61
|
+
console.log(`Atomic board profile: ${snapshot.atomicBoardSummary.boardProfile ?? '(none)'}`);
|
|
62
|
+
console.log(`Atomic board route: ${snapshot.atomicBoardSummary.activeRoute ?? '(none)'}`);
|
|
63
|
+
console.log(`Atomic board claim: ${snapshot.atomicBoardSummary.frontierClaim ?? '(none)'}`);
|
|
64
|
+
console.log(`Atomic board module: ${snapshot.atomicBoardSummary.moduleTarget ?? '(none)'}`);
|
|
65
|
+
if (snapshot.activeTicket) {
|
|
66
|
+
console.log(
|
|
67
|
+
`Atomic board active ticket: ${snapshot.activeTicket.ticketId} ${snapshot.activeTicket.ticketName} `
|
|
68
|
+
+ `[${snapshot.activeTicket.gatesDone}/${snapshot.activeTicket.gatesTotal} gates, `
|
|
69
|
+
+ `${snapshot.activeTicket.atomsDone}/${snapshot.activeTicket.atomsTotal} atoms]`,
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
console.log(`Atomic board ready atoms: ${snapshot.readyAtomCount}`);
|
|
73
|
+
console.log(`Atomic board mirage frontiers: ${snapshot.mirageFrontierCount}`);
|
|
74
|
+
if (snapshot.firstReadyAtom) {
|
|
75
|
+
console.log(`Atomic board first ready atom: ${snapshot.firstReadyAtom.atomId} — ${snapshot.firstReadyAtom.title}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
54
78
|
console.log(`Agent start packet: ${snapshot.agentStartPresent ? snapshot.agentStartPath : '(missing)'}`);
|
|
55
79
|
console.log(`Checkpoint packet: ${snapshot.checkpointPacketPresent ? snapshot.checkpointPacketPath : '(missing)'}`);
|
|
56
80
|
console.log(`Report packet: ${snapshot.reportPacketPresent ? snapshot.reportPacketPath : '(missing)'}`);
|
|
@@ -76,21 +100,107 @@ function printSunflowerStatus(snapshot, registryPaths) {
|
|
|
76
100
|
console.log(`Registry record: ${registryPaths.latestPath}`);
|
|
77
101
|
}
|
|
78
102
|
|
|
103
|
+
function printSunflowerBoard(snapshot) {
|
|
104
|
+
const board = snapshot.atomicBoardSummary;
|
|
105
|
+
if (!board) {
|
|
106
|
+
console.log(`${snapshot.displayName} has no packaged sunflower board yet.`);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
console.log(`${snapshot.displayName} sunflower board`);
|
|
111
|
+
console.log(`Title: ${board.boardTitle}`);
|
|
112
|
+
console.log(`Profile: ${board.boardProfile ?? '(none)'}`);
|
|
113
|
+
console.log(`Active route: ${board.activeRoute ?? '(none)'}`);
|
|
114
|
+
console.log(`Frontier claim: ${board.frontierClaim ?? '(none)'}`);
|
|
115
|
+
console.log(`Module target: ${board.moduleTarget ?? '(none)'}`);
|
|
116
|
+
console.log(`Source kind: ${board.sourceKind ?? '(none)'}`);
|
|
117
|
+
console.log(`Source board json: ${board.sourceBoardJson ?? '(none)'}`);
|
|
118
|
+
console.log(`Source board markdown: ${board.sourceBoardMarkdown ?? '(none)'}`);
|
|
119
|
+
console.log(`Board packet: ${board.atomicBoardPath}`);
|
|
120
|
+
console.log(`Board markdown: ${board.atomicBoardMarkdownPath ?? '(missing)'}`);
|
|
121
|
+
console.log(`Ready atoms: ${snapshot.readyAtomCount}`);
|
|
122
|
+
console.log(`Mirage frontiers: ${snapshot.mirageFrontierCount}`);
|
|
123
|
+
if (snapshot.activeTicket) {
|
|
124
|
+
console.log(
|
|
125
|
+
`Active ticket: ${snapshot.activeTicket.ticketId} ${snapshot.activeTicket.ticketName} `
|
|
126
|
+
+ `[leaf=${snapshot.activeTicket.routeLeaf ?? '(none)'}, `
|
|
127
|
+
+ `status=${snapshot.activeTicket.leafStatus ?? '(none)'}, `
|
|
128
|
+
+ `gates=${snapshot.activeTicket.gatesDone}/${snapshot.activeTicket.gatesTotal}, `
|
|
129
|
+
+ `atoms=${snapshot.activeTicket.atomsDone}/${snapshot.activeTicket.atomsTotal}]`,
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
console.log('Route status:');
|
|
134
|
+
if (board.routeStatus.length === 0) {
|
|
135
|
+
console.log(' (none)');
|
|
136
|
+
} else {
|
|
137
|
+
for (const route of board.routeStatus) {
|
|
138
|
+
console.log(
|
|
139
|
+
` - ${route.route}: loose ${route.looseDone}/${route.looseTotal}, `
|
|
140
|
+
+ `strict ${route.strictDone}/${route.strictTotal}`,
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
console.log('Ticket board:');
|
|
146
|
+
if (board.tickets.length === 0) {
|
|
147
|
+
console.log(' (none)');
|
|
148
|
+
} else {
|
|
149
|
+
for (const ticket of board.tickets) {
|
|
150
|
+
console.log(
|
|
151
|
+
` - ${ticket.ticketId} ${ticket.ticketName}: ${ticket.routeLeaf ?? '(none)'} `
|
|
152
|
+
+ `[leaf=${ticket.leafStatus ?? '(none)'}, gates=${ticket.gatesDone}/${ticket.gatesTotal}, `
|
|
153
|
+
+ `atoms=${ticket.atomsDone}/${ticket.atomsTotal}]`,
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
console.log('First-principles ladder:');
|
|
159
|
+
if (board.ladder.length === 0) {
|
|
160
|
+
console.log(' (none)');
|
|
161
|
+
} else {
|
|
162
|
+
for (const rung of board.ladder) {
|
|
163
|
+
console.log(` - ${rung.tier}: ${rung.done}/${rung.total}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
console.log('Ready queue:');
|
|
168
|
+
if (board.readyQueue.length === 0) {
|
|
169
|
+
console.log(' (none)');
|
|
170
|
+
} else {
|
|
171
|
+
for (const atom of board.readyQueue) {
|
|
172
|
+
console.log(
|
|
173
|
+
` - ${atom.atomId} (${atom.ticketId} / ${atom.gateId} / ${atom.tier ?? 'tier-unknown'}): ${atom.title}`,
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
console.log('Notes:');
|
|
179
|
+
if (board.notes.length === 0) {
|
|
180
|
+
console.log(' (none)');
|
|
181
|
+
} else {
|
|
182
|
+
for (const note of board.notes) {
|
|
183
|
+
console.log(` - ${note}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
79
188
|
export function runSunflowerCommand(args) {
|
|
80
189
|
const [subcommand, ...rest] = args;
|
|
81
190
|
|
|
82
191
|
if (!subcommand || subcommand === 'help' || subcommand === '--help') {
|
|
83
192
|
console.log('Usage:');
|
|
84
193
|
console.log(' erdos sunflower status [<id>] [--json]');
|
|
194
|
+
console.log(' erdos sunflower board [<id>] [--json]');
|
|
85
195
|
return 0;
|
|
86
196
|
}
|
|
87
197
|
|
|
88
|
-
if (subcommand !== 'status') {
|
|
198
|
+
if (subcommand !== 'status' && subcommand !== 'board') {
|
|
89
199
|
console.error(`Unknown sunflower subcommand: ${subcommand}`);
|
|
90
200
|
return 1;
|
|
91
201
|
}
|
|
92
202
|
|
|
93
|
-
const parsed = parseStatusArgs(rest);
|
|
203
|
+
const parsed = subcommand === 'board' ? parseBoardArgs(rest) : parseStatusArgs(rest);
|
|
94
204
|
if (parsed.error) {
|
|
95
205
|
console.error(parsed.error);
|
|
96
206
|
return 1;
|
|
@@ -121,6 +231,11 @@ export function runSunflowerCommand(args) {
|
|
|
121
231
|
return 0;
|
|
122
232
|
}
|
|
123
233
|
|
|
234
|
+
if (subcommand === 'board') {
|
|
235
|
+
printSunflowerBoard(snapshot);
|
|
236
|
+
return 0;
|
|
237
|
+
}
|
|
238
|
+
|
|
124
239
|
printSunflowerStatus(snapshot, registryPaths);
|
|
125
240
|
return 0;
|
|
126
241
|
}
|
|
@@ -58,6 +58,14 @@ export function runWorkspaceCommand(args) {
|
|
|
58
58
|
console.log(`Sunflower harness profile: ${sunflower.harnessProfile ?? '(none)'}`);
|
|
59
59
|
console.log(`Sunflower route: ${sunflower.activeRoute ?? '(none)'}`);
|
|
60
60
|
console.log(`Sunflower frontier: ${sunflower.frontierDetail ?? '(none)'}`);
|
|
61
|
+
console.log(`Sunflower board: ${sunflower.atomicBoardPresent ? 'yes' : 'no'}`);
|
|
62
|
+
if (sunflower.atomicBoardSummary) {
|
|
63
|
+
console.log(`Sunflower board title: ${sunflower.atomicBoardSummary.boardTitle ?? '(none)'}`);
|
|
64
|
+
console.log(`Sunflower board ready atoms: ${sunflower.readyAtomCount}`);
|
|
65
|
+
if (sunflower.firstReadyAtom) {
|
|
66
|
+
console.log(`Sunflower first ready atom: ${sunflower.firstReadyAtom.atomId} — ${sunflower.firstReadyAtom.title}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
61
69
|
console.log(`Sunflower compute: ${sunflower.computeLanePresent ? 'yes' : 'no'}`);
|
|
62
70
|
if (sunflower.activePacket) {
|
|
63
71
|
console.log(`Sunflower compute lane: ${sunflower.activePacket.laneId} [${sunflower.activePacket.status}]`);
|
package/src/runtime/sunflower.js
CHANGED
|
@@ -55,6 +55,14 @@ function getSunflowerReportPacketPath(problemId) {
|
|
|
55
55
|
return path.join(getSunflowerProblemDir(problemId), 'REPORT_PACKET.md');
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
function getSunflowerAtomicBoardPath(problemId) {
|
|
59
|
+
return path.join(getSunflowerProblemDir(problemId), 'ATOMIC_BOARD.yaml');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function getSunflowerAtomicBoardMarkdownPath(problemId) {
|
|
63
|
+
return path.join(getSunflowerProblemDir(problemId), 'ATOMIC_BOARD.md');
|
|
64
|
+
}
|
|
65
|
+
|
|
58
66
|
function parseStringList(value) {
|
|
59
67
|
if (!Array.isArray(value)) {
|
|
60
68
|
return [];
|
|
@@ -170,6 +178,129 @@ function readSunflowerRoutePacket(problemId) {
|
|
|
170
178
|
};
|
|
171
179
|
}
|
|
172
180
|
|
|
181
|
+
function parseBoardCountEntries(value) {
|
|
182
|
+
if (!Array.isArray(value)) {
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return value
|
|
187
|
+
.filter((entry) => entry && typeof entry === 'object')
|
|
188
|
+
.map((entry) => ({
|
|
189
|
+
route: compactText(entry.route),
|
|
190
|
+
tier: compactText(entry.tier),
|
|
191
|
+
looseDone: Number(entry.loose_done ?? 0),
|
|
192
|
+
looseTotal: Number(entry.loose_total ?? 0),
|
|
193
|
+
strictDone: Number(entry.strict_done ?? 0),
|
|
194
|
+
strictTotal: Number(entry.strict_total ?? 0),
|
|
195
|
+
done: Number(entry.done ?? 0),
|
|
196
|
+
total: Number(entry.total ?? 0),
|
|
197
|
+
}));
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function parseTicketEntries(value) {
|
|
201
|
+
if (!Array.isArray(value)) {
|
|
202
|
+
return [];
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return value
|
|
206
|
+
.filter((entry) => entry && typeof entry === 'object')
|
|
207
|
+
.map((entry) => ({
|
|
208
|
+
ticketId: compactText(entry.ticket_id),
|
|
209
|
+
ticketName: compactText(entry.ticket_name),
|
|
210
|
+
routeLeaf: compactText(entry.route_leaf),
|
|
211
|
+
leafStatus: compactText(entry.leaf_status),
|
|
212
|
+
gatesDone: Number(entry.gates_done ?? 0),
|
|
213
|
+
gatesTotal: Number(entry.gates_total ?? 0),
|
|
214
|
+
atomsDone: Number(entry.atoms_done ?? 0),
|
|
215
|
+
atomsTotal: Number(entry.atoms_total ?? 0),
|
|
216
|
+
}));
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
function parseReadyQueue(value) {
|
|
220
|
+
if (!Array.isArray(value)) {
|
|
221
|
+
return [];
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
return value
|
|
225
|
+
.filter((entry) => entry && typeof entry === 'object')
|
|
226
|
+
.map((entry) => ({
|
|
227
|
+
atomId: compactText(entry.atom_id),
|
|
228
|
+
ticketId: compactText(entry.ticket_id),
|
|
229
|
+
gateId: compactText(entry.gate_id),
|
|
230
|
+
tier: compactText(entry.tier),
|
|
231
|
+
kind: compactText(entry.kind),
|
|
232
|
+
title: compactText(entry.title),
|
|
233
|
+
status: compactText(entry.status),
|
|
234
|
+
}));
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
function parseMirageFrontiers(value) {
|
|
238
|
+
if (Array.isArray(value)) {
|
|
239
|
+
return value
|
|
240
|
+
.map((entry) => compactText(entry))
|
|
241
|
+
.filter(Boolean);
|
|
242
|
+
}
|
|
243
|
+
if (value === null || value === undefined) {
|
|
244
|
+
return [];
|
|
245
|
+
}
|
|
246
|
+
const text = compactText(value);
|
|
247
|
+
return text ? [text] : [];
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
function chooseActiveTicket(board) {
|
|
251
|
+
if (!board) {
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
if (board.activeTicketId) {
|
|
256
|
+
const explicit = board.tickets.find((ticket) => ticket.ticketId === board.activeTicketId);
|
|
257
|
+
if (explicit) {
|
|
258
|
+
return explicit;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return board.tickets.find((ticket) => ticket.leafStatus !== 'done')
|
|
263
|
+
?? board.tickets[0]
|
|
264
|
+
?? null;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
function readSunflowerAtomicBoard(problemId) {
|
|
268
|
+
const atomicBoardPath = getSunflowerAtomicBoardPath(problemId);
|
|
269
|
+
const atomicBoardMarkdownPath = getSunflowerAtomicBoardMarkdownPath(problemId);
|
|
270
|
+
if (!fs.existsSync(atomicBoardPath)) {
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
const parsed = parse(fs.readFileSync(atomicBoardPath, 'utf8')) ?? {};
|
|
275
|
+
const board = {
|
|
276
|
+
boardPacketId: compactText(parsed.board_packet_id),
|
|
277
|
+
boardProfile: compactText(parsed.board_profile),
|
|
278
|
+
boardTitle: compactText(parsed.board_title),
|
|
279
|
+
problemId: compactText(parsed.problem_id) ?? String(problemId),
|
|
280
|
+
activeRoute: compactText(parsed.active_route),
|
|
281
|
+
frontierClaim: compactText(parsed.frontier_claim),
|
|
282
|
+
moduleTarget: compactText(parsed.module_target),
|
|
283
|
+
sourceKind: compactText(parsed.source_kind),
|
|
284
|
+
sourceBoardJson: compactText(parsed.source_board_json),
|
|
285
|
+
sourceBoardMarkdown: compactText(parsed.source_board_markdown),
|
|
286
|
+
activeTicketId: compactText(parsed.active_ticket_id),
|
|
287
|
+
routeStatus: parseBoardCountEntries(parsed.route_status),
|
|
288
|
+
tickets: parseTicketEntries(parsed.tickets),
|
|
289
|
+
ladder: parseBoardCountEntries(parsed.ladder),
|
|
290
|
+
readyQueue: parseReadyQueue(parsed.ready_queue),
|
|
291
|
+
mirageFrontiers: parseMirageFrontiers(parsed.mirage_frontiers),
|
|
292
|
+
notes: parseStringList(parsed.notes),
|
|
293
|
+
atomicBoardPath,
|
|
294
|
+
atomicBoardMarkdownPath,
|
|
295
|
+
atomicBoardMarkdownExists: fs.existsSync(atomicBoardMarkdownPath),
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
return {
|
|
299
|
+
...board,
|
|
300
|
+
activeTicket: chooseActiveTicket(board),
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
|
|
173
304
|
function chooseActivePacket(packets) {
|
|
174
305
|
if (packets.length === 0) {
|
|
175
306
|
return null;
|
|
@@ -278,6 +409,33 @@ function compactPacket(packet) {
|
|
|
278
409
|
};
|
|
279
410
|
}
|
|
280
411
|
|
|
412
|
+
function compactAtomicBoard(board) {
|
|
413
|
+
if (!board) {
|
|
414
|
+
return null;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
return {
|
|
418
|
+
boardPacketId: board.boardPacketId,
|
|
419
|
+
boardProfile: board.boardProfile,
|
|
420
|
+
boardTitle: board.boardTitle,
|
|
421
|
+
activeRoute: board.activeRoute,
|
|
422
|
+
frontierClaim: board.frontierClaim,
|
|
423
|
+
moduleTarget: board.moduleTarget,
|
|
424
|
+
sourceKind: board.sourceKind,
|
|
425
|
+
sourceBoardJson: board.sourceBoardJson,
|
|
426
|
+
sourceBoardMarkdown: board.sourceBoardMarkdown,
|
|
427
|
+
atomicBoardPath: board.atomicBoardPath,
|
|
428
|
+
atomicBoardMarkdownPath: board.atomicBoardMarkdownExists ? board.atomicBoardMarkdownPath : null,
|
|
429
|
+
activeTicket: board.activeTicket,
|
|
430
|
+
routeStatus: board.routeStatus,
|
|
431
|
+
tickets: board.tickets,
|
|
432
|
+
ladder: board.ladder,
|
|
433
|
+
readyQueue: board.readyQueue,
|
|
434
|
+
mirageFrontiers: board.mirageFrontiers,
|
|
435
|
+
notes: board.notes,
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
|
|
281
439
|
function deriveRouteState(problem, context) {
|
|
282
440
|
const researchState = problem.researchState ?? {};
|
|
283
441
|
const solvedBySite = String(problem.siteStatus ?? '').toLowerCase() === 'solved';
|
|
@@ -311,6 +469,7 @@ function defaultQuestionLedger(problemId, routeState) {
|
|
|
311
469
|
export function buildSunflowerStatusSnapshot(problem) {
|
|
312
470
|
const context = readSunflowerContext(problem.problemId);
|
|
313
471
|
const routePacket = readSunflowerRoutePacket(problem.problemId);
|
|
472
|
+
const atomicBoard = readSunflowerAtomicBoard(problem.problemId);
|
|
314
473
|
const packets = listSunflowerComputePackets(problem.problemId);
|
|
315
474
|
const activePacket = chooseActivePacket(packets);
|
|
316
475
|
const summary = deriveSummary(activePacket);
|
|
@@ -320,6 +479,8 @@ export function buildSunflowerStatusSnapshot(problem) {
|
|
|
320
479
|
const checkpointPacketPath = getSunflowerCheckpointPacketPath(problem.problemId);
|
|
321
480
|
const reportPacketPath = getSunflowerReportPacketPath(problem.problemId);
|
|
322
481
|
|
|
482
|
+
const firstReadyAtom = atomicBoard?.readyQueue?.[0] ?? null;
|
|
483
|
+
|
|
323
484
|
return {
|
|
324
485
|
generatedAt: new Date().toISOString(),
|
|
325
486
|
problemId: problem.problemId,
|
|
@@ -334,10 +495,20 @@ export function buildSunflowerStatusSnapshot(problem) {
|
|
|
334
495
|
harnessProfile: context?.harnessProfile ?? null,
|
|
335
496
|
bootstrapFocus: context?.bootstrapFocus ?? null,
|
|
336
497
|
routeStory: context?.routeStory ?? null,
|
|
337
|
-
frontierLabel:
|
|
338
|
-
|
|
498
|
+
frontierLabel:
|
|
499
|
+
context?.frontierLabel
|
|
500
|
+
?? atomicBoard?.activeRoute
|
|
501
|
+
?? (activePacket?.question ? 'compute_packet' : null),
|
|
502
|
+
frontierDetail:
|
|
503
|
+
context?.frontierDetail
|
|
504
|
+
?? atomicBoard?.frontierClaim
|
|
505
|
+
?? activePacket?.question
|
|
506
|
+
?? summary.computeSummary,
|
|
339
507
|
checkpointFocus: context?.checkpointFocus ?? null,
|
|
340
|
-
nextHonestMove:
|
|
508
|
+
nextHonestMove:
|
|
509
|
+
firstReadyAtom
|
|
510
|
+
? `${firstReadyAtom.atomId} — ${firstReadyAtom.title}`
|
|
511
|
+
: context?.nextHonestMove ?? summary.computeNextAction,
|
|
341
512
|
relatedCoreProblems: context?.relatedCoreProblems ?? [],
|
|
342
513
|
literatureFocus: context?.literatureFocus ?? [],
|
|
343
514
|
artifactFocus: context?.artifactFocus ?? [],
|
|
@@ -353,6 +524,14 @@ export function buildSunflowerStatusSnapshot(problem) {
|
|
|
353
524
|
checkpointPacketPath: fs.existsSync(checkpointPacketPath) ? checkpointPacketPath : null,
|
|
354
525
|
reportPacketPresent: fs.existsSync(reportPacketPath),
|
|
355
526
|
reportPacketPath: fs.existsSync(reportPacketPath) ? reportPacketPath : null,
|
|
527
|
+
atomicBoardPresent: Boolean(atomicBoard),
|
|
528
|
+
atomicBoardPath: atomicBoard?.atomicBoardPath ?? null,
|
|
529
|
+
atomicBoardMarkdownPath: atomicBoard?.atomicBoardMarkdownExists ? atomicBoard.atomicBoardMarkdownPath : null,
|
|
530
|
+
atomicBoard,
|
|
531
|
+
activeTicket: atomicBoard?.activeTicket ?? null,
|
|
532
|
+
readyAtomCount: atomicBoard?.readyQueue?.length ?? 0,
|
|
533
|
+
firstReadyAtom,
|
|
534
|
+
mirageFrontierCount: atomicBoard?.mirageFrontiers?.length ?? 0,
|
|
356
535
|
computeLanePresent: Boolean(activePacket),
|
|
357
536
|
computeLaneCount: packets.length,
|
|
358
537
|
computeSummary: summary.computeSummary,
|
|
@@ -363,6 +542,7 @@ export function buildSunflowerStatusSnapshot(problem) {
|
|
|
363
542
|
computeGovernance,
|
|
364
543
|
activePacket: compactPacket(activePacket),
|
|
365
544
|
computePackets: packets.map((packet) => compactPacket(packet)),
|
|
545
|
+
atomicBoardSummary: compactAtomicBoard(atomicBoard),
|
|
366
546
|
};
|
|
367
547
|
}
|
|
368
548
|
|