erdos-problems 0.2.10 → 0.3.0

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.
Files changed (73) hide show
  1. package/README.md +45 -21
  2. package/data/upstream/erdosproblems/SYNC_MANIFEST.json +4 -4
  3. package/docs/CANONICAL_REPO_MIGRATION_PLAN.md +279 -0
  4. package/docs/DEEP_RESEARCH_BUNDLE_SPEC.md +129 -0
  5. package/docs/ERDOS_PROBLEMS_PROBLEM_SCHEMA.md +27 -20
  6. package/docs/ERDOS_PROBLEMS_REPO_SPEC.md +22 -13
  7. package/docs/PAPER_WRITER_MODE.md +118 -0
  8. package/package.json +1 -1
  9. package/problems/1/AGENT_START.md +1 -1
  10. package/problems/1/EVIDENCE.md +1 -1
  11. package/problems/1/FORMALIZATION.md +2 -2
  12. package/problems/1/problem.yaml +6 -6
  13. package/problems/1008/problem.yaml +5 -5
  14. package/problems/18/problem.yaml +5 -5
  15. package/problems/19/AGENT_START.md +1 -1
  16. package/problems/19/EVIDENCE.md +1 -1
  17. package/problems/19/FORMALIZATION.md +2 -2
  18. package/problems/19/problem.yaml +6 -6
  19. package/problems/2/AGENT_START.md +1 -1
  20. package/problems/2/EVIDENCE.md +1 -1
  21. package/problems/2/FORMALIZATION.md +2 -2
  22. package/problems/2/problem.yaml +6 -6
  23. package/problems/20/problem.yaml +5 -5
  24. package/problems/21/AGENT_START.md +1 -1
  25. package/problems/21/EVIDENCE.md +1 -1
  26. package/problems/21/FORMALIZATION.md +2 -2
  27. package/problems/21/problem.yaml +6 -6
  28. package/problems/22/AGENT_START.md +1 -1
  29. package/problems/22/EVIDENCE.md +1 -1
  30. package/problems/22/FORMALIZATION.md +2 -2
  31. package/problems/22/problem.yaml +6 -6
  32. package/problems/3/AGENT_START.md +1 -1
  33. package/problems/3/EVIDENCE.md +1 -1
  34. package/problems/3/FORMALIZATION.md +2 -2
  35. package/problems/3/problem.yaml +6 -6
  36. package/problems/4/AGENT_START.md +1 -1
  37. package/problems/4/EVIDENCE.md +1 -1
  38. package/problems/4/FORMALIZATION.md +2 -2
  39. package/problems/4/problem.yaml +6 -6
  40. package/problems/5/AGENT_START.md +1 -1
  41. package/problems/5/EVIDENCE.md +1 -1
  42. package/problems/5/FORMALIZATION.md +2 -2
  43. package/problems/5/problem.yaml +6 -6
  44. package/problems/536/problem.yaml +5 -5
  45. package/problems/542/problem.yaml +5 -5
  46. package/problems/6/AGENT_START.md +1 -1
  47. package/problems/6/EVIDENCE.md +1 -1
  48. package/problems/6/FORMALIZATION.md +2 -2
  49. package/problems/6/problem.yaml +6 -6
  50. package/problems/7/AGENT_START.md +1 -1
  51. package/problems/7/EVIDENCE.md +1 -1
  52. package/problems/7/FORMALIZATION.md +2 -2
  53. package/problems/7/problem.yaml +6 -6
  54. package/problems/856/problem.yaml +5 -5
  55. package/problems/857/problem.yaml +5 -5
  56. package/problems/89/problem.yaml +5 -5
  57. package/src/atlas/catalog.js +6 -5
  58. package/src/cli/index.js +10 -5
  59. package/src/commands/bootstrap.js +1 -1
  60. package/src/commands/dossier.js +1 -1
  61. package/src/commands/maintainer.js +2 -2
  62. package/src/commands/paper.js +147 -0
  63. package/src/commands/problem.js +9 -9
  64. package/src/commands/pull.js +8 -8
  65. package/src/commands/scaffold.js +1 -1
  66. package/src/commands/seed.js +1 -1
  67. package/src/commands/upstream.js +27 -24
  68. package/src/runtime/maintainer-seed.js +12 -12
  69. package/src/runtime/paper.js +720 -0
  70. package/src/runtime/paths.js +16 -0
  71. package/src/runtime/problem-artifacts.js +2 -2
  72. package/src/runtime/state.js +1 -1
  73. package/src/upstream/sync.js +18 -18
package/README.md CHANGED
@@ -33,21 +33,24 @@ A short example from the first minute:
33
33
 
34
34
  ## What It Includes
35
35
 
36
- - a bundled snapshot of the Erdős problem atlas
36
+ - a bundled external atlas import snapshot for provenance and seeding
37
37
  - local dossiers and workspace bundles
38
38
  - separate surfaces for public status, local route state, and verification records
39
39
  - pack-specific views where this repo already has enough structure to support them
40
40
  - an ORP-based workflow for claims, checkpoints, and run artifacts
41
+ - a paper writer bundle mode for public-safe, citation-safe, agent-friendly drafting
41
42
 
42
- ## Repo, npm, and Upstream
43
+ ## Repo, npm, and External Imports
43
44
 
44
- - the npm package is the installable CLI plus the bundled atlas snapshot, packaged dossiers, and pack assets
45
- - the GitHub repo is the central collaboration space for dossiers, pack packets, docs, issues, discussions, and pull requests
46
- - `.erdos/` is local workspace state created by the CLI; it is not the canonical public collaboration surface
47
- - `erdos upstream show` tells you whether you are currently using the bundled package snapshot or a workspace-local refreshed snapshot
48
- - `erdos upstream sync` refreshes a workspace-local snapshot from `teorth/erdosproblems` without mutating the packaged bundle
49
- - `erdos upstream sync --write-package-snapshot` is the maintainer path for intentionally updating the bundled snapshot in this repo
50
- - repo-only collaboration files can live in the public repo without shipping in the npm tarball; see the GitHub contribution guide: https://github.com/SproutSeeds/erdos-problems/blob/main/CONTRIBUTING.md
45
+ - `SproutSeeds/erdos-problems` is the canonical public home for this project's atlas, dossiers, packs, and contribution workflow
46
+ - the npm package is the installable CLI plus the bundled import snapshot, packaged dossiers, and packaged pack assets
47
+ - the GitHub repo is the broader public collaboration space for dossiers, pack packets, docs, issues, discussions, PRs, and future deep research bundles
48
+ - `.erdos/` is local workspace state created by the CLI; it is not canonical repo truth
49
+ - `erdos import show` reports whether you are using the bundled import snapshot or a workspace-local refreshed import snapshot
50
+ - `erdos import sync` currently refreshes an external atlas import snapshot from `teorth/erdosproblems` without mutating the canonical local dossier layer
51
+ - `erdos import sync --write-package-snapshot` is the maintainer path for intentionally updating the bundled import snapshot in this repo
52
+ - repo-only deep-research directories such as `research/`, `formal/`, `paper/`, `imports/`, and `analysis/` are intentionally kept out of npm by staying outside the `package.json` `files` list
53
+ - repo-only public research can live in this GitHub repo without shipping in the npm tarball; see the contribution guide: https://github.com/SproutSeeds/erdos-problems/blob/main/CONTRIBUTING.md
51
54
 
52
55
  ## Start In 60 Seconds
53
56
 
@@ -74,6 +77,13 @@ erdos problem show 25
74
77
  erdos checkpoints sync
75
78
  ```
76
79
 
80
+ Initialize or resume a paper bundle:
81
+
82
+ ```bash
83
+ erdos paper init 857
84
+ erdos paper show 857
85
+ ```
86
+
77
87
  Archive a solved problem:
78
88
 
79
89
  ```bash
@@ -85,7 +95,7 @@ erdos archive scaffold 1008 --json
85
95
 
86
96
  | Surface | Coverage |
87
97
  | --- | --- |
88
- | Bundled upstream atlas | `1183` problems |
98
+ | Bundled external atlas snapshot | `1183` problems |
89
99
  | Native packaged dossiers | `18` |
90
100
  | Sunflower pack | `20`, `536`, `856`, `857` |
91
101
  | Number-theory pack | `1`, `2` |
@@ -140,7 +150,7 @@ erdos seed problem 25 --cluster number-theory
140
150
  ```
141
151
 
142
152
  What this does:
143
- - pulls upstream public metadata into a workspace bundle
153
+ - pulls external public metadata into a workspace bundle
144
154
  - includes live site review and an agent websearch brief by default
145
155
  - seeds a local dossier into `.erdos/seeded-problems/<id>/`
146
156
  - syncs state, checkpoints, and ORP automatically
@@ -161,6 +171,19 @@ erdos maintainer review problem 25 --from-pull .erdos/pulls/25
161
171
  erdos maintainer seed problem 25 --from-pull .erdos/pulls/25 --cluster number-theory
162
172
  ```
163
173
 
174
+ ### 5. Initialize a paper writer bundle
175
+
176
+ ```bash
177
+ erdos paper init 857
178
+ erdos paper show 857
179
+ ```
180
+
181
+ What this does:
182
+ - creates or resumes a paper bundle for the problem
183
+ - writes machine-readable public evidence and section indexes
184
+ - scaffolds claim-safe section drafts, a citation ledger, and a privacy review
185
+ - defaults to `paper/problems/<id>/` when run inside this repo and to `.erdos/papers/<id>/` elsewhere
186
+
164
187
  ## Packs
165
188
 
166
189
  ### Sunflower Pack
@@ -233,7 +256,7 @@ Design rule:
233
256
 
234
257
  If you are using Codex, Claude Code, or another coding agent, the package provides:
235
258
  - canonical dossier files
236
- - upstream provenance
259
+ - external import provenance when available
237
260
  - pack-aware context where it exists
238
261
  - `.erdos/` workspace state
239
262
  - ORP templates and protocol guidance
@@ -247,7 +270,7 @@ Useful commands for agent workflows:
247
270
  erdos problem artifacts 857 --json
248
271
  erdos workspace show --json
249
272
  erdos pull literature 857 --include-crossref --include-openalex --json
250
- erdos upstream drift 857 --json
273
+ erdos import drift 857 --json
251
274
  ```
252
275
 
253
276
  ## ORP And Truth Hygiene
@@ -260,8 +283,8 @@ erdos upstream drift 857 --json
260
283
  - `templates/FAILED_TOPIC.md`
261
284
 
262
285
  The package keeps these layers separate:
263
- - upstream public truth
264
- - local canonical dossier truth
286
+ - canonical repo truth
287
+ - external imported public truth
265
288
  - workspace bundle truth
266
289
  - pack-specific route / checkpoint / run truth
267
290
 
@@ -294,13 +317,14 @@ erdos maintainer review problem 25 --from-pull .erdos/pulls/25
294
317
  erdos archive scaffold 1008 --json
295
318
  ```
296
319
 
297
- ## Canonical Sources
320
+ ## Canonical Home And External Inputs
298
321
 
322
+ - canonical repo: <https://github.com/SproutSeeds/erdos-problems>
299
323
  - local dossier truth: `problems/<id>/problem.yaml`
300
- - bundled upstream snapshot: `data/upstream/erdosproblems/`
301
- - workspace upstream snapshot: `.erdos/upstream/erdosproblems/`
302
- - live upstream repo: <https://github.com/teorth/erdosproblems>
303
- - live public site: <https://www.erdosproblems.com/>
324
+ - bundled external import snapshot: `data/upstream/erdosproblems/`
325
+ - workspace external import snapshot: `.erdos/upstream/erdosproblems/`
326
+ - external atlas import repo: <https://github.com/teorth/erdosproblems>
327
+ - external public site: <https://www.erdosproblems.com/>
304
328
 
305
329
  ## Docs
306
330
 
@@ -321,7 +345,7 @@ If you are preparing a public post, start here:
321
345
 
322
346
  ### What is the difference between this and erdosproblems.com?
323
347
 
324
- `erdosproblems.com` is a public problem atlas. `erdos-problems` uses that public record, but adds local dossiers, workspace scaffolding, checkpoints, and pack-specific views for the problems that already have more structure here.
348
+ `erdosproblems.com` is an external public problem source. `erdos-problems` imports from public sources when helpful, but keeps its canonical dossiers, packs, workflow, and contribution surface in this repo.
325
349
 
326
350
  ### Can I use this with Codex, Claude Code, or another agent?
327
351
 
@@ -1,9 +1,9 @@
1
1
  {
2
- "upstream_repo": "https://github.com/teorth/erdosproblems",
3
- "source_url": "https://raw.githubusercontent.com/teorth/erdosproblems/master/data/problems.yaml",
4
- "source_file": "data/problems.yaml",
2
+ "external_repo": "https://github.com/teorth/erdosproblems",
3
+ "external_source_url": "https://raw.githubusercontent.com/teorth/erdosproblems/master/data/problems.yaml",
4
+ "external_source_file": "data/problems.yaml",
5
+ "imported_commit": "cd91711d143184e090e5336e3165be50abfaaaf3",
5
6
  "fetched_at": "2026-03-25T19:24:57.377Z",
6
- "upstream_commit": "cd91711d143184e090e5336e3165be50abfaaaf3",
7
7
  "raw_sha256": "e2d161ffe3866275704bb18a268f9417f32d8a92a0af19fa119a856445cd2021",
8
8
  "entry_count": 1183
9
9
  }
@@ -0,0 +1,279 @@
1
+ # Canonical Repo Migration Plan
2
+
3
+ Last updated: 2026-03-30
4
+
5
+ ## Decision
6
+
7
+ `SproutSeeds/erdos-problems` becomes the canonical public home for:
8
+
9
+ - the Erdős problem atlas as presented by this project
10
+ - canonical seeded dossiers
11
+ - pack-specific route, board, and compute packets
12
+ - formal artifacts, papers, and deeper research files that are intentionally public
13
+ - contribution, issue, and pull-request workflow
14
+
15
+ External sources remain valuable, but they are inputs, not authorities:
16
+
17
+ - `erdosproblems.com` remains a public source surface
18
+ - `teorth/erdosproblems` remains an import and comparison source when useful
19
+ - `sunflower-coda` is treated as a migration source and lab origin, not the long-term public home
20
+
21
+ ## Why
22
+
23
+ The current architecture mixes two different ownership stories:
24
+
25
+ - the package, CLI, and curated public harness live in `SproutSeeds/erdos-problems`
26
+ - the bundled atlas snapshot and several provenance fields still point at `teorth/erdosproblems` as "upstream truth"
27
+
28
+ That split is workable for importing data, but confusing for users. It leaves the project with two competing authority stories:
29
+
30
+ - "this repo is the home"
31
+ - "another repo is the truth"
32
+
33
+ The migration resolves that by keeping one canonical owner and treating outside sources as import feeds with explicit provenance.
34
+
35
+ ## Product Model After Migration
36
+
37
+ ### Canonical public home
38
+
39
+ - GitHub repo: `SproutSeeds/erdos-problems`
40
+ - npm package: installable CLI and packaged public harness assets
41
+ - canonical problem records: `problems/<id>/`
42
+ - canonical pack context: `packs/<family>/`
43
+ - canonical public docs: `docs/`
44
+
45
+ ### External imports
46
+
47
+ - imported public site snapshots
48
+ - imported external atlas snapshots
49
+ - imported public literature adapters
50
+
51
+ These stay visible as provenance, but never outrank the canonical local record.
52
+
53
+ ### Packaging split
54
+
55
+ The GitHub repo may contain much more than the npm tarball.
56
+
57
+ GitHub can hold:
58
+
59
+ - deep research notes
60
+ - paper drafts and public reference bundles
61
+ - Lean and formalization source
62
+ - board JSON exports
63
+ - long-form analysis artifacts
64
+
65
+ The npm package should ship only what is needed for:
66
+
67
+ - the CLI
68
+ - canonical dossiers
69
+ - pack packets
70
+ - packaged compute packets
71
+ - essential docs and templates
72
+
73
+ ## Current State
74
+
75
+ Today the repo already behaves partly like the canonical home:
76
+
77
+ - `erdos problem list` and `erdos problem show` are driven by local seeded dossiers under `problems/`
78
+ - the public deep harness for `20` and `857` is already expressed in local pack files under `packs/sunflower/`
79
+ - the GitHub repo is already the collaboration surface for issues and PRs
80
+
81
+ But these parts still reflect the old authority model:
82
+
83
+ - `src/upstream/sync.js` fetches and labels `teorth/erdosproblems` as the upstream repo
84
+ - bundled manifest files record that external repo as the source of truth
85
+ - dossier `upstream.repo` fields and references point at `teorth/erdosproblems`
86
+ - docs describe that external repo as the upstream truth layer
87
+ - package shipping boundaries are still broad enough that repo-only deep research would accidentally ship if dropped into currently published directories
88
+
89
+ ## Migration Principles
90
+
91
+ 1. One canonical owner
92
+ `SproutSeeds/erdos-problems` is the only authority users should need to trust.
93
+
94
+ 2. Provenance without ambiguity
95
+ External records stay cited, but only as imported evidence.
96
+
97
+ 3. Fast install, deep repo
98
+ npm stays lean enough for CLI installs, while GitHub can hold the full public research archive.
99
+
100
+ 4. Public handoff first
101
+ A new user should be able to pick up `20` or `857` and immediately see the live route posture, active files, and next honest move.
102
+
103
+ 5. Deep material on demand
104
+ Users should be able to pull or inspect fuller problem bundles from the repo without shipping all of that by default in npm.
105
+
106
+ ## Rollout Phases
107
+
108
+ ## Phase 1: Ownership And Provenance Cleanup
109
+
110
+ Goal:
111
+ - make the docs and metadata say what the product now means
112
+
113
+ Changes:
114
+ - rewrite docs so `SproutSeeds/erdos-problems` is described as canonical
115
+ - replace "upstream truth" wording with "external import source" wording
116
+ - update dossier schema language to distinguish:
117
+ - canonical local record
118
+ - imported external sources
119
+ - public site snapshots
120
+ - update any visible README/help text that suggests the external repo is authoritative
121
+
122
+ Acceptance:
123
+ - a user reading the README should understand there is one canonical repo
124
+ - no user-facing docs should describe `teorth/erdosproblems` as the authoritative owner of this package's atlas
125
+
126
+ ## Phase 2: Package Boundary Split
127
+
128
+ Goal:
129
+ - let GitHub hold the full public archive without forcing it into npm
130
+
131
+ Changes:
132
+ - define repo-only directories for deep research
133
+ - tighten `package.json` `files` handling or segregate content so deep research is excluded from the tarball
134
+ - document which directories are:
135
+ - canonical and shipped
136
+ - canonical but repo-only
137
+ - generated workspace state
138
+
139
+ Candidate repo-only directories:
140
+ - `research/`
141
+ - `formal/lean/`
142
+ - `paper/`
143
+ - `imports/`
144
+ - `analysis/`
145
+
146
+ Acceptance:
147
+ - `npm pack --dry-run` excludes repo-only deep research
148
+ - GitHub still exposes the full public archive
149
+
150
+ ## Phase 3: Repo Structure For Full Public Research
151
+
152
+ Goal:
153
+ - move the public-facing deep material into this repo in an orderly way
154
+
155
+ Changes:
156
+ - create canonical directories for:
157
+ - problem-deep research bundles
158
+ - Lean / formal source
159
+ - paper drafts and publication support
160
+ - imported external snapshots and reconciliations
161
+ - preserve a clear distinction between:
162
+ - concise user-facing handoff packets
163
+ - deeper research inventory
164
+
165
+ Suggested layout:
166
+
167
+ ```text
168
+ erdos-problems/
169
+ problems/<id>/
170
+ packs/<family>/
171
+ research/problems/<id>/
172
+ formal/lean/
173
+ paper/
174
+ imports/
175
+ ```
176
+
177
+ Acceptance:
178
+ - the repo can absorb public material from `sunflower-coda` without collapsing the package structure
179
+
180
+ ## Phase 4: CLI Surface For Deep Problem Bundles
181
+
182
+ Goal:
183
+ - let users access the deeper repo-held material intentionally
184
+
185
+ Changes:
186
+ - add documented repo-backed bundle concepts, for example:
187
+ - deep research bundle
188
+ - formalization bundle
189
+ - paper/reference bundle
190
+ - expose them either as:
191
+ - repo file paths in scaffold outputs
192
+ - new CLI commands
193
+ - both
194
+
195
+ Possible commands:
196
+ - `erdos problem deep 857`
197
+ - `erdos problem formal 857`
198
+ - `erdos pull repo-bundle 857`
199
+
200
+ Acceptance:
201
+ - a user can start with the lightweight public packet
202
+ - then intentionally step into the deeper public archive without guessing where things live
203
+
204
+ ## Phase 5: External Import And Reconciliation Workflow
205
+
206
+ Goal:
207
+ - retain harmony with outside sources without giving away canonical ownership
208
+
209
+ Changes:
210
+ - rename the current "upstream" semantics toward import/reconcile language
211
+ - preserve diff tooling, but point it at external comparisons rather than canonical truth
212
+ - store imported manifests under an explicitly non-canonical namespace
213
+
214
+ Possible wording shift:
215
+ - current: "upstream snapshot"
216
+ - target: "import snapshot" or "external atlas snapshot"
217
+
218
+ Acceptance:
219
+ - a mismatch between an external source and the canonical local record is legible as a reconciliation task, not a contradiction in authority
220
+
221
+ ## Phase 6: Flagship Problem Migration
222
+
223
+ Goal:
224
+ - make `20` and `857` the model examples of the full system
225
+
226
+ Changes:
227
+ - migrate the public `sunflower-coda` materials for those problems into this repo
228
+ - replace `sunflower-coda/repo/...` path references with repo-local paths
229
+ - ensure the public packet plus deep bundle plus formal bundle line up cleanly
230
+
231
+ Acceptance:
232
+ - a new user can pick up `20` or `857` from this repo alone
233
+ - no crucial public handoff step depends on another repo existing
234
+
235
+ ## Risks
236
+
237
+ ### Risk: accidental npm bloat
238
+
239
+ If deep research lands under currently shipped directories, npm installs become heavier and noisier.
240
+
241
+ Mitigation:
242
+ - separate repo-only directories
243
+ - verify with `npm pack --dry-run`
244
+
245
+ ### Risk: provenance confusion
246
+
247
+ If external import fields disappear entirely, users may lose track of where records originated.
248
+
249
+ Mitigation:
250
+ - keep provenance blocks, but label them as imported or external
251
+
252
+ ### Risk: partial migration
253
+
254
+ If docs are updated before structure and commands are ready, users may expect deeper repo-backed pulls that do not exist yet.
255
+
256
+ Mitigation:
257
+ - roll out phase by phase
258
+ - clearly document what exists now versus what is planned
259
+
260
+ ## Initial Implementation Slice
261
+
262
+ This change series should start with the smallest durable slice:
263
+
264
+ 1. store this migration plan in the repo
265
+ 2. update ownership/provenance docs so the repo is described as canonical
266
+ 3. create the repo-only directory contract and npm boundary rules
267
+ 4. add minimal scaffolding docs for deep research bundles
268
+
269
+ That gives the project a correct public model before the larger content migration begins.
270
+
271
+ ## Definition Of Done
272
+
273
+ The migration is complete when:
274
+
275
+ - `SproutSeeds/erdos-problems` is clearly the canonical public home in docs, metadata, and CLI wording
276
+ - external sources are treated as imports and reconciliation inputs
277
+ - the repo can hold public Lean, paper, and deep research artifacts without shipping all of them to npm
278
+ - flagship problems like `20` and `857` can be followed from this repo alone
279
+ - contributors can update dossiers, packs, and deep research in one place
@@ -0,0 +1,129 @@
1
+ # Deep Research Bundle Spec
2
+
3
+ Last updated: 2026-03-30
4
+
5
+ ## Purpose
6
+
7
+ This document defines how `SproutSeeds/erdos-problems` can hold the full public research archive without forcing all of it into the npm package.
8
+
9
+ The package should keep a two-speed model:
10
+
11
+ - fast install and immediate dossier/pack handoff through npm
12
+ - deeper public research bundles through the GitHub repo
13
+
14
+ ## Repo-only directories
15
+
16
+ These directories are intended to live in the GitHub repo but stay out of the npm tarball:
17
+
18
+ - `research/`
19
+ - `formal/`
20
+ - `paper/`
21
+ - `imports/`
22
+ - `analysis/`
23
+
24
+ They remain repo-only by staying outside the `package.json` `files` list.
25
+
26
+ ## Recommended layout
27
+
28
+ ```text
29
+ research/
30
+ problems/<id>/
31
+ README.md
32
+ boards/
33
+ checkpoints/
34
+ notes/
35
+ wave-history/
36
+
37
+ formal/
38
+ lean/
39
+ README.md
40
+ SunflowerLean/
41
+
42
+ paper/
43
+ README.md
44
+ problems/<id>/
45
+ references/
46
+
47
+ imports/
48
+ README.md
49
+ external-atlas/
50
+ public-site/
51
+
52
+ analysis/
53
+ README.md
54
+ problem20/
55
+ problem857/
56
+ ```
57
+
58
+ ## Problem handoff model
59
+
60
+ Every serious problem should eventually have three public layers:
61
+
62
+ ### 1. Canonical dossier
63
+
64
+ Lives in `problems/<id>/`.
65
+
66
+ Use for:
67
+ - source page
68
+ - canonical local status
69
+ - short statement
70
+ - references
71
+ - evidence ledger
72
+ - formalization posture
73
+
74
+ ### 2. Public pack packet
75
+
76
+ Lives in `packs/<family>/problems/<id>/`.
77
+
78
+ Use for:
79
+ - active route
80
+ - current frontier
81
+ - ready queue
82
+ - checkpoint/report templates
83
+ - concise operational handoff
84
+
85
+ ### 3. Deep research bundle
86
+
87
+ Lives in `research/problems/<id>/`.
88
+
89
+ Use for:
90
+ - long-form notes
91
+ - board exports
92
+ - route decompositions
93
+ - wave histories
94
+ - intermediate artifacts
95
+ - deeper public context not needed in the npm install
96
+
97
+ ## Formal bundle
98
+
99
+ Formalization source should live under `formal/lean/` or another clearly scoped formal directory inside this repo.
100
+
101
+ Pack packets may point into those repo-local formal files, but should not point back out to `sunflower-coda` once the migration is complete.
102
+
103
+ ## Paper bundle
104
+
105
+ Paper drafts, publication notes, and public reference-reading order should live under `paper/`.
106
+
107
+ The npm install does not need all of this by default, but the repo should be able to present it as part of the canonical public archive.
108
+
109
+ For problem-specific writing, prefer `paper/problems/<id>/` bundles created by `erdos paper init <id>`.
110
+
111
+ ## Import bundle
112
+
113
+ External imports should live under `imports/` when they are intentionally retained in the repo.
114
+
115
+ These are not canonical dossier truth. They are imported provenance and reconciliation material.
116
+
117
+ ## Migration order
118
+
119
+ 1. store this directory contract in the repo
120
+ 2. create the repo-only directories with READMEs
121
+ 3. migrate flagship public materials for `20` and `857`
122
+ 4. update pack references from `sunflower-coda/...` to repo-local paths
123
+ 5. add CLI affordances for pointing users at the deeper repo-held bundles
124
+
125
+ ## Success criteria
126
+
127
+ - the GitHub repo can hold the full public archive
128
+ - npm remains focused on install-critical assets
129
+ - a user can understand the shallow-to-deep handoff without guessing