refactor(tooling): T-1293 — atlas map, and the generator that must not run
The star-map family was the last unported part of the tree, and it never had a ticket. Two of its scripts become `reach atlas map` verbs, nested under atlas like planet (D-243: the Reach map is the ladder's top rung): - `reach atlas map data [--check]` regenerates client/data/star_map_data.json. The regenerated file differs by one line: `_meta.note`, which named the old script's path. - `reach atlas map svg` renders the concentric SVG (+ PNG), byte-identical to the old script's output on the same data. make check-star-map and star-map-data stay as one-line delegates, because pre-pr-client and pre-pr-validate depend on check-star-map. generate-star-map.py, its seed, sculpt-star-map.py and tune-star-map-topology.py are archived, not ported. The generator rewrites docs/design/star-map.json unconditionally from an S-NNN-keyed seed, so re-running it would erase the GJ migration and every hand edit since; sculpt and tune only understand S-NNN edges. .claude/rules/diagrams.md was telling agents to "edit the generator and re-run it". It now distinguishes the live concentric render, the seven frozen S-keyed sector .d2 files (T-1294), and the two SVGs that never had a generator in the repo. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -542,3 +542,14 @@ PROGRESS 2026-09-23 — wiki half done (commit to follow): reach wiki stats + gt
|
||||
|
||||
DONE 2026-09-23. Three commits: wiki (reach wiki stats/gttr-hook; renderer not exposed -> T-1292), assets (reach assets audio/image/trellis/synth-ui; OFF-vs-rejected classification; test_assets.py fake Gradio), character (reach character logo/strip-glb/qa/qa-analyze; test_character.py). Parity evidence per domain in the commit messages: every byte-comparable output (stats, 301 gttr hooks, 4 UI WAVs, harmonic WAVs, pipeline decoded PCM, logo PNG, stripped GLB, QA report.json) identical before/after. Map corrections: 6 of the 10 ''character'' files import bpy -> blender_* payloads (carve-out now 41); setup_clothing_metadata + wipe-bodies.sh archived (dead bootstrap / destructive DB patch). Behaviour changes, all failures-that-read-as-success: audio batch, trellis batch and the garment-QA analyzer exited 0 with failures; trellis generate crashed (TypeError) on a missing image; glb strip re-reported orphaned nodes as stripped on every re-run. Removed functions (noted because the rule is to ask): common.ensure_venv (an os.execv re-exec D-263 forbids) and audio_post.check_ffmpeg (replaced by process.run''s missing-binary remedy). Known quirk left alone: every qa_configs/*.json hardcodes out_dir to the main checkout''s .cache, so a worktree QA run writes into main.', NULL, '2026-09-23 17:55:35', '2026-09-23 17:55:35.868', '2026-09-23 17:55:35.868', NULL, '4c4c046c858168a23f2de7d1cdd53dba', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06G65TC359QGCVBEPXHJ4N0MRG', 'status', 'backlog', 'done', NULL, '2026-09-23 17:55:36', '2026-09-23 17:55:36.277', '2026-09-23 17:55:36.277', NULL, '164508550dfd263ddbc7f21928baec26', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06GCYTXYFNTZ828SM7KEREGHK0', 'description', 'Found in T-1293. docs/diagrams/design/star-map-*.d2 (x7) were written 2026-03-13 by tooling/generate-star-map.py (now tooling/archive/map-bootstrap/). They still carry S-NNN ids from before the GJ migration, so they no longer match docs/design/star-map.json (GJ-keyed, hand-maintained since). They cannot be regenerated: that generator rewrites star-map.json unconditionally from an S-keyed seed. Also: the committed star-map-concentric.svg no longer matches a fresh {"svg": "/var/mnt/data/projects/settled-reach/docs/diagrams/design/star-map-concentric.svg", "png": "/var/mnt/data/projects/settled-reach/docs/diagrams/design/star-map-concentric.png", "nodes": 301, "edges": 335} (data drifted since it was last rendered) — a one-command refresh, but it rewrites a committed PNG, so do it deliberately. Fix: a small verb that renders the seven sector diagrams FROM star-map.json + systems.db (the sector/topology logic is in the archived generator''s d2 emit functions), then regenerate. .claude/rules/diagrams.md now documents the frozen state.', 'Found in T-1293. docs/diagrams/design/star-map-*.d2 (x7) were written 2026-03-13 by tooling/generate-star-map.py (now tooling/archive/map-bootstrap/). They still carry S-NNN ids from before the GJ migration, so they no longer match docs/design/star-map.json (GJ-keyed, hand-maintained since). They cannot be regenerated: that generator rewrites star-map.json unconditionally from an S-keyed seed.
|
||||
|
||||
Also: the committed star-map-concentric.svg no longer matches a fresh render by the atlas map svg verb (the data drifted since it was last rendered). Refreshing it is one command, but it rewrites a committed PNG as well, so do it deliberately.
|
||||
|
||||
Fix: a small atlas map d2 verb that renders the seven sector diagrams FROM star-map.json + systems.db (the sector and topology logic is in the archived generator''s d2 emit functions), then regenerate. .claude/rules/diagrams.md now documents the frozen state.', NULL, '2026-09-23 17:59:13', '2026-09-23 17:59:13.666', '2026-09-23 17:59:13.666', NULL, 'c1c14d18ddfa2799f7e09b5ee921ce19', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06GCYT8JBRCX13ZD51SY4SX1WW', 'description', 'The last unported family, never ticketed (T-1285 named ''reach atlas map'' as a separate ticket; none was filed). Five scripts + a seed: generate-star-map.py, generate-star-map-svg.py, generate-star-map-data.py, sculpt-star-map.py, tune-star-map-topology.py, star-map-seed.json. Per .claude/rules/diagrams.md, generate-star-map.py WRITES docs/diagrams/design/star-map-*.d2 (x7) + docs/design/star-map.json, and generate-star-map-svg.py writes the concentric/realcoords/topology SVGs; the Makefile has star-map-data / check-star-map targets (client/data/star_map_data.json). Decide per file live verb vs provenance (sculpt/tune may be one-shot topology authoring now that star-map.json is canonical and GJ-keyed). Standard port acceptance; generated outputs must come back byte-identical.', 'The last unported family, never ticketed (T-1285 named ''reach atlas map'' as a separate ticket; none was filed). Five scripts + a seed: generate-star-map.py, generate-star-map-svg.py, generate-star-map-data.py, sculpt-star-map.py, tune-star-map-topology.py, star-map-seed.json. Per .claude/rules/diagrams.md, generate-star-map.py WRITES docs/diagrams/design/star-map-*.d2 (x7) + docs/design/star-map.json, and generate-star-map-svg.py writes the concentric/realcoords/topology SVGs; the Makefile has star-map-data / check-star-map targets (client/data/star_map_data.json). Decide per file live verb vs provenance (sculpt/tune may be one-shot topology authoring now that star-map.json is canonical and GJ-keyed). Standard port acceptance; generated outputs must come back byte-identical.
|
||||
|
||||
DONE 2026-09-23. reach atlas map data [--check] + reach atlas map svg, nested under atlas like planet. Parity: star_map_data.json regenerates with a ONE-LINE diff, the _meta.note that named the old script path; the SVG is byte-identical to the old script''s output on the same data (the committed SVG itself is stale vs current data, T-1294). make check-star-map / star-map-data kept as one-line delegates because pre-pr-client and pre-pr-validate depend on check-star-map.
|
||||
|
||||
ARCHIVED, NOT PORTED: generate-star-map.py + star-map-seed.json + sculpt + tune (tooling/archive/map-bootstrap/). The generator unconditionally rewrites docs/design/star-map.json from an S-NNN-keyed seed, so re-running it would erase the GJ migration and every hand edit since. sculpt and tune operate only on S-NNN edges. .claude/rules/diagrams.md used to tell agents to "edit the generator and re-run it"; it now documents three cases: concentric SVG is a live render, the 7 sector d2 files are frozen S-keyed output (T-1294), and realcoords/topology SVGs have no generator at all.', NULL, '2026-09-23 17:59:58', '2026-09-23 17:59:58.221', '2026-09-23 17:59:58.221', NULL, 'fa1c80235ce06db1f459dae246ba37dc', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06GCYT8JBRCX13ZD51SY4SX1WW', 'status', 'backlog', 'done', NULL, '2026-09-23 17:59:58', '2026-09-23 17:59:58.641', '2026-09-23 17:59:58.641', NULL, '410fcc34e85dc80deb099cf6cb59a31f', 2) ON CONFLICT(hash) DO NOTHING;
|
||||
|
||||
@@ -7,3 +7,5 @@ INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_
|
||||
INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06G65TC359QGCVBEPXHJ4N0MRG', 'T-1290', '2026-09-02 16:17:45.770', '2026-09-02 16:17:45.770', NULL, '748d7ed02f4821a7ee5059a76d2fd3fe', 2) ON CONFLICT(record_id) DO UPDATE SET ticket_id=excluded.ticket_id, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at >= ticket_idmap.updated_at;
|
||||
INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06GCX60QRMD7KJ1TVWTR7FWK28', 'T-1291', '2026-09-23 14:07:49.190', '2026-09-23 14:07:49.190', NULL, '20abfe457c23ea4e00d3c8109f2e39f2', 2) ON CONFLICT(record_id) DO UPDATE SET ticket_id=excluded.ticket_id, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at >= ticket_idmap.updated_at;
|
||||
INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06GCX9TTBJW4NPECEN6JM0V4HM', 'T-1292', '2026-09-23 14:24:29.282', '2026-09-23 14:24:29.282', NULL, '45174fb519d2deed098a244229d543e1', 2) ON CONFLICT(record_id) DO UPDATE SET ticket_id=excluded.ticket_id, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at >= ticket_idmap.updated_at;
|
||||
INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06GCYT8JBRCX13ZD51SY4SX1WW', 'T-1293', '2026-09-23 17:56:04.830', '2026-09-23 17:56:04.830', NULL, '5d8ca375541decd04d46a9932f80e2c8', 2) ON CONFLICT(record_id) DO UPDATE SET ticket_id=excluded.ticket_id, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at >= ticket_idmap.updated_at;
|
||||
INSERT INTO ticket_idmap (record_id, ticket_id, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06GCYTXYFNTZ828SM7KEREGHK0', 'T-1294', '2026-09-23 17:58:59.966', '2026-09-23 17:58:59.966', NULL, 'bcabb81af3c53e6d6f879da79ce6e627', 2) ON CONFLICT(record_id) DO UPDATE SET ticket_id=excluded.ticket_id, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at >= ticket_idmap.updated_at;
|
||||
|
||||
@@ -671,3 +671,20 @@ before moving anything — five silent failures so far.
|
||||
PROGRESS 2026-09-23 — wiki half done (commit to follow): reach wiki stats + gttr-hook, both output-identical to the originals (stats byte-identical; all 301 gttr hooks identical). wiki_sync.generate_wiki/import_from_wiki moved but NOT exposed: a pre-port run of the old --generate deleted ~10,700 lines of committed pages -> T-1292. Archive: tooling/archive/{pql-migrate,wiki-bootstrap}/ with a README (one-shots + the destructive process-wiki-system-changes + backfill_cultural_corridor, a raw DB patch script outside D-262). find-stubs archived too: it finds 0 stubs, Phase-1 job done. Side fix: tooling/godot-cold-parse + godot-parse-sweep were never retired after T-1283 and pr-process still told agents to run them — removed, skill repointed. Remaining: assets, character.
|
||||
|
||||
DONE 2026-09-23. Three commits: wiki (reach wiki stats/gttr-hook; renderer not exposed -> T-1292), assets (reach assets audio/image/trellis/synth-ui; OFF-vs-rejected classification; test_assets.py fake Gradio), character (reach character logo/strip-glb/qa/qa-analyze; test_character.py). Parity evidence per domain in the commit messages: every byte-comparable output (stats, 301 gttr hooks, 4 UI WAVs, harmonic WAVs, pipeline decoded PCM, logo PNG, stripped GLB, QA report.json) identical before/after. Map corrections: 6 of the 10 ''character'' files import bpy -> blender_* payloads (carve-out now 41); setup_clothing_metadata + wipe-bodies.sh archived (dead bootstrap / destructive DB patch). Behaviour changes, all failures-that-read-as-success: audio batch, trellis batch and the garment-QA analyzer exited 0 with failures; trellis generate crashed (TypeError) on a missing image; glb strip re-reported orphaned nodes as stripped on every re-run. Removed functions (noted because the rule is to ask): common.ensure_venv (an os.execv re-exec D-263 forbids) and audio_post.check_ffmpeg (replaced by process.run''s missing-binary remedy). Known quirk left alone: every qa_configs/*.json hardcodes out_dir to the main checkout''s .cache, so a worktree QA run writes into main.', 'done', 'medium', NULL, 'tooling', 'D-263', '2026-09-02 16:17:45.770', '2026-09-23 17:55:36.277', NULL, '231af57682599f487ebd3fb0d396870c', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at >= tickets.updated_at;
|
||||
INSERT INTO tickets (record_id, type, parent_record_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06GCYT8JBRCX13ZD51SY4SX1WW', 'task', '06G1S3D0M1TQW0GMFBBPQZG3ZM', 'Port atlas map — the star-map generator family', 'The last unported family, never ticketed (T-1285 named ''reach atlas map'' as a separate ticket; none was filed). Five scripts + a seed: generate-star-map.py, generate-star-map-svg.py, generate-star-map-data.py, sculpt-star-map.py, tune-star-map-topology.py, star-map-seed.json. Per .claude/rules/diagrams.md, generate-star-map.py WRITES docs/diagrams/design/star-map-*.d2 (x7) + docs/design/star-map.json, and generate-star-map-svg.py writes the concentric/realcoords/topology SVGs; the Makefile has star-map-data / check-star-map targets (client/data/star_map_data.json). Decide per file live verb vs provenance (sculpt/tune may be one-shot topology authoring now that star-map.json is canonical and GJ-keyed). Standard port acceptance; generated outputs must come back byte-identical.', 'backlog', 'medium', NULL, 'tooling', 'D-263', '2026-09-23 17:56:04.830', '2026-09-23 17:56:04.830', NULL, 'c8ca6ea28c74f204db2ca8874a5d2ecc', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at >= tickets.updated_at;
|
||||
INSERT INTO tickets (record_id, type, parent_record_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06GCYTXYFNTZ828SM7KEREGHK0', 'task', '06FBPPMZNNEV052DBYYY3A897C', 'Star-map d2 diagrams are frozen S-keyed output of an archived generator — replace with a renderer over star-map.json', 'Found in T-1293. docs/diagrams/design/star-map-*.d2 (x7) were written 2026-03-13 by tooling/generate-star-map.py (now tooling/archive/map-bootstrap/). They still carry S-NNN ids from before the GJ migration, so they no longer match docs/design/star-map.json (GJ-keyed, hand-maintained since). They cannot be regenerated: that generator rewrites star-map.json unconditionally from an S-keyed seed. Also: the committed star-map-concentric.svg no longer matches a fresh {"svg": "/var/mnt/data/projects/settled-reach/docs/diagrams/design/star-map-concentric.svg", "png": "/var/mnt/data/projects/settled-reach/docs/diagrams/design/star-map-concentric.png", "nodes": 301, "edges": 335} (data drifted since it was last rendered) — a one-command refresh, but it rewrites a committed PNG, so do it deliberately. Fix: a small verb that renders the seven sector diagrams FROM star-map.json + systems.db (the sector/topology logic is in the archived generator''s d2 emit functions), then regenerate. .claude/rules/diagrams.md now documents the frozen state.', 'backlog', 'low', NULL, 'tooling', NULL, '2026-09-23 17:58:59.965', '2026-09-23 17:58:59.965', NULL, '87ad08cf609c3ea01aa4176c9574b4b0', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at >= tickets.updated_at;
|
||||
INSERT INTO tickets (record_id, type, parent_record_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06GCYTXYFNTZ828SM7KEREGHK0', 'task', '06FBPPMZNNEV052DBYYY3A897C', 'Star-map d2 diagrams are frozen S-keyed output of an archived generator — replace with a renderer over star-map.json', 'Found in T-1293. docs/diagrams/design/star-map-*.d2 (x7) were written 2026-03-13 by tooling/generate-star-map.py (now tooling/archive/map-bootstrap/). They still carry S-NNN ids from before the GJ migration, so they no longer match docs/design/star-map.json (GJ-keyed, hand-maintained since). They cannot be regenerated: that generator rewrites star-map.json unconditionally from an S-keyed seed.
|
||||
|
||||
Also: the committed star-map-concentric.svg no longer matches a fresh render by the atlas map svg verb (the data drifted since it was last rendered). Refreshing it is one command, but it rewrites a committed PNG as well, so do it deliberately.
|
||||
|
||||
Fix: a small atlas map d2 verb that renders the seven sector diagrams FROM star-map.json + systems.db (the sector and topology logic is in the archived generator''s d2 emit functions), then regenerate. .claude/rules/diagrams.md now documents the frozen state.', 'backlog', 'low', NULL, 'tooling', NULL, '2026-09-23 17:58:59.965', '2026-09-23 17:59:13.666', NULL, '4b6231d4ea712465ac090135482c63db', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at >= tickets.updated_at;
|
||||
INSERT INTO tickets (record_id, type, parent_record_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06GCYT8JBRCX13ZD51SY4SX1WW', 'task', '06G1S3D0M1TQW0GMFBBPQZG3ZM', 'Port atlas map — the star-map generator family', 'The last unported family, never ticketed (T-1285 named ''reach atlas map'' as a separate ticket; none was filed). Five scripts + a seed: generate-star-map.py, generate-star-map-svg.py, generate-star-map-data.py, sculpt-star-map.py, tune-star-map-topology.py, star-map-seed.json. Per .claude/rules/diagrams.md, generate-star-map.py WRITES docs/diagrams/design/star-map-*.d2 (x7) + docs/design/star-map.json, and generate-star-map-svg.py writes the concentric/realcoords/topology SVGs; the Makefile has star-map-data / check-star-map targets (client/data/star_map_data.json). Decide per file live verb vs provenance (sculpt/tune may be one-shot topology authoring now that star-map.json is canonical and GJ-keyed). Standard port acceptance; generated outputs must come back byte-identical.
|
||||
|
||||
DONE 2026-09-23. reach atlas map data [--check] + reach atlas map svg, nested under atlas like planet. Parity: star_map_data.json regenerates with a ONE-LINE diff, the _meta.note that named the old script path; the SVG is byte-identical to the old script''s output on the same data (the committed SVG itself is stale vs current data, T-1294). make check-star-map / star-map-data kept as one-line delegates because pre-pr-client and pre-pr-validate depend on check-star-map.
|
||||
|
||||
ARCHIVED, NOT PORTED: generate-star-map.py + star-map-seed.json + sculpt + tune (tooling/archive/map-bootstrap/). The generator unconditionally rewrites docs/design/star-map.json from an S-NNN-keyed seed, so re-running it would erase the GJ migration and every hand edit since. sculpt and tune operate only on S-NNN edges. .claude/rules/diagrams.md used to tell agents to "edit the generator and re-run it"; it now documents three cases: concentric SVG is a live render, the 7 sector d2 files are frozen S-keyed output (T-1294), and realcoords/topology SVGs have no generator at all.', 'backlog', 'medium', NULL, 'tooling', 'D-263', '2026-09-23 17:56:04.830', '2026-09-23 17:59:58.221', NULL, '1492a8466ccc6a7af5bd79028b0d055b', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at >= tickets.updated_at;
|
||||
INSERT INTO tickets (record_id, type, parent_record_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06GCYT8JBRCX13ZD51SY4SX1WW', 'task', '06G1S3D0M1TQW0GMFBBPQZG3ZM', 'Port atlas map — the star-map generator family', 'The last unported family, never ticketed (T-1285 named ''reach atlas map'' as a separate ticket; none was filed). Five scripts + a seed: generate-star-map.py, generate-star-map-svg.py, generate-star-map-data.py, sculpt-star-map.py, tune-star-map-topology.py, star-map-seed.json. Per .claude/rules/diagrams.md, generate-star-map.py WRITES docs/diagrams/design/star-map-*.d2 (x7) + docs/design/star-map.json, and generate-star-map-svg.py writes the concentric/realcoords/topology SVGs; the Makefile has star-map-data / check-star-map targets (client/data/star_map_data.json). Decide per file live verb vs provenance (sculpt/tune may be one-shot topology authoring now that star-map.json is canonical and GJ-keyed). Standard port acceptance; generated outputs must come back byte-identical.
|
||||
|
||||
DONE 2026-09-23. reach atlas map data [--check] + reach atlas map svg, nested under atlas like planet. Parity: star_map_data.json regenerates with a ONE-LINE diff, the _meta.note that named the old script path; the SVG is byte-identical to the old script''s output on the same data (the committed SVG itself is stale vs current data, T-1294). make check-star-map / star-map-data kept as one-line delegates because pre-pr-client and pre-pr-validate depend on check-star-map.
|
||||
|
||||
ARCHIVED, NOT PORTED: generate-star-map.py + star-map-seed.json + sculpt + tune (tooling/archive/map-bootstrap/). The generator unconditionally rewrites docs/design/star-map.json from an S-NNN-keyed seed, so re-running it would erase the GJ migration and every hand edit since. sculpt and tune operate only on S-NNN edges. .claude/rules/diagrams.md used to tell agents to "edit the generator and re-run it"; it now documents three cases: concentric SVG is a live render, the 7 sector d2 files are frozen S-keyed output (T-1294), and realcoords/topology SVGs have no generator at all.', 'done', 'medium', NULL, 'tooling', 'D-263', '2026-09-23 17:56:04.830', '2026-09-23 17:59:58.640', NULL, '030333d5dbd367b41dd9429c17ca3ac2', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at >= tickets.updated_at;
|
||||
|
||||
Reference in New Issue
Block a user