erdos-problems 0.2.9 → 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 (74) hide show
  1. package/README.md +47 -13
  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 +35 -11
  7. package/docs/PAPER_WRITER_MODE.md +118 -0
  8. package/package.json +1 -1
  9. package/packs/sunflower/compute/20/u3_uniform_transfer_window_v0.yaml +2 -1
  10. package/problems/1/AGENT_START.md +1 -1
  11. package/problems/1/EVIDENCE.md +1 -1
  12. package/problems/1/FORMALIZATION.md +2 -2
  13. package/problems/1/problem.yaml +6 -6
  14. package/problems/1008/problem.yaml +5 -5
  15. package/problems/18/problem.yaml +5 -5
  16. package/problems/19/AGENT_START.md +1 -1
  17. package/problems/19/EVIDENCE.md +1 -1
  18. package/problems/19/FORMALIZATION.md +2 -2
  19. package/problems/19/problem.yaml +6 -6
  20. package/problems/2/AGENT_START.md +1 -1
  21. package/problems/2/EVIDENCE.md +1 -1
  22. package/problems/2/FORMALIZATION.md +2 -2
  23. package/problems/2/problem.yaml +6 -6
  24. package/problems/20/problem.yaml +5 -5
  25. package/problems/21/AGENT_START.md +1 -1
  26. package/problems/21/EVIDENCE.md +1 -1
  27. package/problems/21/FORMALIZATION.md +2 -2
  28. package/problems/21/problem.yaml +6 -6
  29. package/problems/22/AGENT_START.md +1 -1
  30. package/problems/22/EVIDENCE.md +1 -1
  31. package/problems/22/FORMALIZATION.md +2 -2
  32. package/problems/22/problem.yaml +6 -6
  33. package/problems/3/AGENT_START.md +1 -1
  34. package/problems/3/EVIDENCE.md +1 -1
  35. package/problems/3/FORMALIZATION.md +2 -2
  36. package/problems/3/problem.yaml +6 -6
  37. package/problems/4/AGENT_START.md +1 -1
  38. package/problems/4/EVIDENCE.md +1 -1
  39. package/problems/4/FORMALIZATION.md +2 -2
  40. package/problems/4/problem.yaml +6 -6
  41. package/problems/5/AGENT_START.md +1 -1
  42. package/problems/5/EVIDENCE.md +1 -1
  43. package/problems/5/FORMALIZATION.md +2 -2
  44. package/problems/5/problem.yaml +6 -6
  45. package/problems/536/problem.yaml +5 -5
  46. package/problems/542/problem.yaml +5 -5
  47. package/problems/6/AGENT_START.md +1 -1
  48. package/problems/6/EVIDENCE.md +1 -1
  49. package/problems/6/FORMALIZATION.md +2 -2
  50. package/problems/6/problem.yaml +6 -6
  51. package/problems/7/AGENT_START.md +1 -1
  52. package/problems/7/EVIDENCE.md +1 -1
  53. package/problems/7/FORMALIZATION.md +2 -2
  54. package/problems/7/problem.yaml +6 -6
  55. package/problems/856/problem.yaml +5 -5
  56. package/problems/857/problem.yaml +5 -5
  57. package/problems/89/problem.yaml +5 -5
  58. package/src/atlas/catalog.js +6 -5
  59. package/src/cli/index.js +10 -5
  60. package/src/commands/bootstrap.js +1 -1
  61. package/src/commands/dossier.js +1 -1
  62. package/src/commands/maintainer.js +2 -2
  63. package/src/commands/paper.js +147 -0
  64. package/src/commands/problem.js +9 -9
  65. package/src/commands/pull.js +8 -8
  66. package/src/commands/scaffold.js +1 -1
  67. package/src/commands/seed.js +1 -1
  68. package/src/commands/upstream.js +33 -21
  69. package/src/runtime/maintainer-seed.js +12 -12
  70. package/src/runtime/paper.js +720 -0
  71. package/src/runtime/paths.js +16 -0
  72. package/src/runtime/problem-artifacts.js +2 -2
  73. package/src/runtime/state.js +1 -1
  74. package/src/upstream/sync.js +18 -18
package/README.md CHANGED
@@ -33,11 +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
42
+
43
+ ## Repo, npm, and External Imports
44
+
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
41
54
 
42
55
  ## Start In 60 Seconds
43
56
 
@@ -64,6 +77,13 @@ erdos problem show 25
64
77
  erdos checkpoints sync
65
78
  ```
66
79
 
80
+ Initialize or resume a paper bundle:
81
+
82
+ ```bash
83
+ erdos paper init 857
84
+ erdos paper show 857
85
+ ```
86
+
67
87
  Archive a solved problem:
68
88
 
69
89
  ```bash
@@ -75,7 +95,7 @@ erdos archive scaffold 1008 --json
75
95
 
76
96
  | Surface | Coverage |
77
97
  | --- | --- |
78
- | Bundled upstream atlas | `1183` problems |
98
+ | Bundled external atlas snapshot | `1183` problems |
79
99
  | Native packaged dossiers | `18` |
80
100
  | Sunflower pack | `20`, `536`, `856`, `857` |
81
101
  | Number-theory pack | `1`, `2` |
@@ -130,7 +150,7 @@ erdos seed problem 25 --cluster number-theory
130
150
  ```
131
151
 
132
152
  What this does:
133
- - pulls upstream public metadata into a workspace bundle
153
+ - pulls external public metadata into a workspace bundle
134
154
  - includes live site review and an agent websearch brief by default
135
155
  - seeds a local dossier into `.erdos/seeded-problems/<id>/`
136
156
  - syncs state, checkpoints, and ORP automatically
@@ -151,6 +171,19 @@ erdos maintainer review problem 25 --from-pull .erdos/pulls/25
151
171
  erdos maintainer seed problem 25 --from-pull .erdos/pulls/25 --cluster number-theory
152
172
  ```
153
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
+
154
187
  ## Packs
155
188
 
156
189
  ### Sunflower Pack
@@ -223,7 +256,7 @@ Design rule:
223
256
 
224
257
  If you are using Codex, Claude Code, or another coding agent, the package provides:
225
258
  - canonical dossier files
226
- - upstream provenance
259
+ - external import provenance when available
227
260
  - pack-aware context where it exists
228
261
  - `.erdos/` workspace state
229
262
  - ORP templates and protocol guidance
@@ -237,7 +270,7 @@ Useful commands for agent workflows:
237
270
  erdos problem artifacts 857 --json
238
271
  erdos workspace show --json
239
272
  erdos pull literature 857 --include-crossref --include-openalex --json
240
- erdos upstream drift 857 --json
273
+ erdos import drift 857 --json
241
274
  ```
242
275
 
243
276
  ## ORP And Truth Hygiene
@@ -250,8 +283,8 @@ erdos upstream drift 857 --json
250
283
  - `templates/FAILED_TOPIC.md`
251
284
 
252
285
  The package keeps these layers separate:
253
- - upstream public truth
254
- - local canonical dossier truth
286
+ - canonical repo truth
287
+ - external imported public truth
255
288
  - workspace bundle truth
256
289
  - pack-specific route / checkpoint / run truth
257
290
 
@@ -284,13 +317,14 @@ erdos maintainer review problem 25 --from-pull .erdos/pulls/25
284
317
  erdos archive scaffold 1008 --json
285
318
  ```
286
319
 
287
- ## Canonical Sources
320
+ ## Canonical Home And External Inputs
288
321
 
322
+ - canonical repo: <https://github.com/SproutSeeds/erdos-problems>
289
323
  - local dossier truth: `problems/<id>/problem.yaml`
290
- - bundled upstream snapshot: `data/upstream/erdosproblems/`
291
- - workspace upstream snapshot: `.erdos/upstream/erdosproblems/`
292
- - live upstream repo: <https://github.com/teorth/erdosproblems>
293
- - 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/>
294
328
 
295
329
  ## Docs
296
330
 
@@ -311,7 +345,7 @@ If you are preparing a public post, start here:
311
345
 
312
346
  ### What is the difference between this and erdosproblems.com?
313
347
 
314
- `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.
315
349
 
316
350
  ### Can I use this with Codex, Claude Code, or another agent?
317
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
@@ -1,6 +1,6 @@
1
1
  # Erdos Problems Problem Schema
2
2
 
3
- Last updated: 2026-03-25
3
+ Last updated: 2026-03-30
4
4
 
5
5
  ## Purpose
6
6
 
@@ -8,9 +8,9 @@ This schema defines the canonical local dossier record for each seeded problem i
8
8
 
9
9
  Goals:
10
10
  - every Erdős problem has a consistent local home
11
- - local dossier truth stays separate from upstream public truth
11
+ - local dossier truth stays separate from imported public truth
12
12
  - agents can bootstrap from canonical artifacts immediately after install
13
- - pulled upstream/site bundles can be promoted into canonical dossiers without losing provenance
13
+ - pulled import/site bundles can be promoted into canonical dossiers without losing provenance
14
14
 
15
15
  ## Canonical files
16
16
 
@@ -21,7 +21,7 @@ Each seeded problem should have:
21
21
  - `problems/<id>/EVIDENCE.md`
22
22
  - `problems/<id>/FORMALIZATION.md`
23
23
 
24
- Bundled upstream snapshot artifacts live in:
24
+ Bundled import snapshot artifacts live in:
25
25
  - `data/upstream/erdosproblems/problems.yaml`
26
26
  - `data/upstream/erdosproblems/PROBLEMS_INDEX.json`
27
27
  - `data/upstream/erdosproblems/SYNC_MANIFEST.json`
@@ -40,15 +40,16 @@ Workspace-generated artifacts may live in:
40
40
 
41
41
  ## Canonical truth split
42
42
 
43
- External public truth:
44
- - tracked, not rewritten
45
- - upstream structured repo: `teorth/erdosproblems`
46
- - public presentation site: `erdosproblems.com`
47
-
48
- Local atlas truth:
43
+ Canonical repo truth:
44
+ - `SproutSeeds/erdos-problems`
49
45
  - `problems/<id>/problem.yaml`
50
46
  - dossier markdown files beside it
51
47
 
48
+ External imported public truth:
49
+ - tracked, not silently rewritten
50
+ - external structured repo: `teorth/erdosproblems`
51
+ - public presentation site: `erdosproblems.com`
52
+
52
53
  Local harness truth:
53
54
  - route state
54
55
  - evidence notes
@@ -67,7 +68,7 @@ source:
67
68
  site: "erdosproblems.com"
68
69
  url: "https://www.erdosproblems.com/857"
69
70
  external_id: "857"
70
- upstream:
71
+ external_source:
71
72
  repo: "https://github.com/teorth/erdosproblems"
72
73
  data_file: "data/problems.yaml"
73
74
  number: "857"
@@ -75,8 +76,8 @@ status:
75
76
  site_status: "open"
76
77
  site_badge: "OPEN"
77
78
  repo_status: "active"
78
- upstream_status: "open"
79
- upstream_last_update: "2025-08-31"
79
+ imported_status: "open"
80
+ imported_last_update: "2025-08-31"
80
81
  cluster: "sunflower"
81
82
  prize:
82
83
  display: "no"
@@ -97,8 +98,8 @@ evidence_path: "EVIDENCE.md"
97
98
  formalization_path: "FORMALIZATION.md"
98
99
  formalization:
99
100
  status: "active"
100
- upstream_state: "no"
101
- upstream_last_update: "2025-08-31"
101
+ imported_state: "no"
102
+ imported_last_update: "2025-08-31"
102
103
  research_state:
103
104
  open_problem: true
104
105
  active_route: "anchored_selector_linearization"
@@ -115,7 +116,7 @@ provenance:
115
116
  seeded_at: "2026-03-25T..."
116
117
  seeded_from:
117
118
  kind: "pull_bundle"
118
- upstream_record_included: true
119
+ imported_record_included: true
119
120
  site_snapshot_included: false
120
121
  ```
121
122
 
@@ -125,7 +126,7 @@ provenance:
125
126
  - `display_name`
126
127
  - `title`
127
128
  - `source`
128
- - `upstream`
129
+ - `external_source`
129
130
  - `status`
130
131
  - `cluster`
131
132
  - `family_tags`
@@ -171,12 +172,18 @@ Repo-local examples:
171
172
  - `site-proved-lean`
172
173
  - `unstarted`
173
174
 
175
+ ## Legacy compatibility
176
+
177
+ During migration, older dossiers may still use an `upstream` block instead of `external_source`.
178
+
179
+ That legacy spelling should be treated as imported external provenance, not as a statement that another repo outranks the canonical local dossier.
180
+
174
181
  ## Scaffold contract
175
182
 
176
183
  `erdos scaffold problem <id>` should create a workspace-ready bundle containing:
177
184
  - copied canonical dossier files
178
185
  - `problem.yaml`
179
- - upstream record snapshot when available
186
+ - imported record snapshot when available
180
187
  - pack README context when available
181
188
  - per-problem pack context when available
182
189
  - compute packets when available
@@ -188,7 +195,7 @@ Repo-local examples:
188
195
  - a root pull manifest
189
196
  - an `artifacts/` lane
190
197
  - a `literature/` lane
191
- - upstream record snapshot when available
198
+ - imported record snapshot when available
192
199
  - local dossier artifacts when the problem is already seeded locally
193
200
  - optional live site snapshot and extracted text when `--include-site` is used
194
201
 
@@ -201,4 +208,4 @@ Repo-local examples:
201
208
  - `EVIDENCE.md`
202
209
  - `FORMALIZATION.md`
203
210
 
204
- The resulting dossier should preserve upstream/site provenance and be safe for later manual curation.
211
+ The resulting dossier should preserve imported provenance and site provenance and be safe for later manual curation.