Commit Graph
2537 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Fable 5 4f52abd532 feat(simulation): wire region climate layer into the cascade + proxy (T-1113, D-243)
CascadeLayer::Region appended per the enum's append-only Ord rule (depends only on seed/body_params/heightmap dims — documented); BodyWorldState.regions BTreeMap per the districts precedent; RegionGridLayer dense row-major all-integer encoding (season/weather repr(u8) discriminants, mean_temp deci-degC i16 with i16::MIN airless sentinel, moisture_q u8); build_region_grid mirrors build_district_grid; protocol.gd region_grid passthrough (visual overlay deliberately out of scope); wire fixtures regenerated via make fixtures. atlas:: suite 507 green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 18:51:43 +02:00
jpmschweitzer c2f236e26e chore(meta): activate T-1112/T-1113 atlas-layer batch — Si refinement appended (both READY) 2026-07-16 18:29:37 +02:00
jpmschweitzer b8cc987e2c chore(meta): close road-hub batch — T-1076 done (PR #178 merged); D-242 triple complete 2026-07-16 17:15:31 +02:00
jpmschweitzer 04092df45c Merge remote-tracking branch 'origin/road-hub-refinement' 2026-07-16 17:15:07 +02:00
jpmschweitzer 322cf284fd chore(meta): file T-1117 — heavy_works vocabulary split (PR #178 re-review, Tyre) 2026-07-16 17:10:51 +02:00
jpmschweitzerandClaude Fable 5 d8f350c74a docs(meta): D-242 amendments — M1 re-tag rationale + heavy_works future-split note + T1 scale note (PR #178 review)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 17:04:12 +02:00
jpmschweitzerandClaude Fable 5 cd71d77284 fix(db): M1 — re-tag 5 steel-complex/shipyard corps to Standalone-shaped values; regen (PR #178 review)
cygni-combines -> shipbuilding; sova-station-works, stalownia-kowalski, westphalia-heavy-works -> military_industrial; sede-chemical-works -> fuel_production (closest call, flagged). Standalone 11->16, settlements 11->15, city rows 340->344, tenant links 129->125 (14 unmatched), 0 dupes, fixpoint immediate. Metropolis pin stays (yard is a place beside the city); sova emits nothing pending T-1054.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 17:03:54 +02:00
jpmschweitzerandClaude Fable 5 1fee6fd9da fix(simulation): PR #178 review round — H1-H4, T1, T2
H1: split_edge_at now splits length_cells geometric-distance proportionally (fixed-order f64 polyline sums, halves sum exactly to parent) — subsumes the 2-point-parent all-or-nothing bug. H2: chained-snap test (minor onto minor spur) + determinism assertion actually exercising attach_minors + direct 2-point split unit test. H3: cascade-level RailHeadFacing end-to-end assertion on a plus-shaped landmass fixture (2 deterministic degree-3 settlement junctions). H4+T2: STANDALONE_HQ_JOIN_SQL shared constant, both readers compose it; believability lockstep unit test. T1: HUB_SPACING_DIAG_PX doc cross-refs D-243 elastic seam.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 17:03:30 +02:00
jpmschweitzer e372a4b2de chore(meta): T-1076 to review — PR #178 up 2026-07-16 16:25:40 +02:00
jpmschweitzer 3efe5f6a56 chore(meta): file T-1116 — water-heavy bodies get 0 routable road edges (T-1076 finding) 2026-07-16 16:24:13 +02:00
jpmschweitzerandClaude Fable 5 5d37d205e1 docs(meta): D-242 placement-boundary amendment + D-213 RailHeadFacing amendment (T-1076)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 16:23:31 +02:00
jpmschweitzerandClaude Fable 5 98991284bf feat(simulation): road-graph hub refinement — scaled-cap hubs, co-location collapse, minor-attach edge split, RailHeadFacing (T-1076)
is_standalone_hq threaded through CityRecord/CityPlacement via corporations LEFT JOIN (both readers); hubs = top-cap by population among non-HQ settlements (HUB_SPACING_DIAG_PX=64, HUB_CAP_MIN=6); exact-name collapse keeping lowest city_id with loud warn; nearest-point-on-polyline snap (SNAP_MAX_PX=8) with Junction edge-split preserving from<to via norm_edge, else A*-spur to nearest hub; FoundingOrientation::RailHeadFacing{bearing_degrees} assigned at degree>=3 junctions (octant bearing toward dominant incident edge), consumed by skeleton_gen railhead_edge() through the D-234b flush-frontage machinery; believability reader now honours baked settlement_class (stale hardcode since T-1075). 11 new targeted tests; existing suites green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 16:23:07 +02:00
jpmschweitzerandClaude Fable 5 a0ebdbe6b8 feat(db): corp-HQ placement boundary re-tune — Standalone only for industrial-complex HQs (T-1076 item 0, D-242)
95->11 Standalone / 60->144 CityTenant per Jeroen's boundary ruling: only extraction/mining/quarrying, heavy vehicle+shipyard, heavy energy, gate infrastructure keep their own settlements; craft/consumer manufacturing, agriculture offices, high-tech fabs flip to CityTenant. Cygni pin moved to Metropolis (its HQ settlement vanishes under the flip). Regen systems.db: 340 city rows, 129 tenant links, fixpoint stable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 16:22:22 +02:00
jpmschweitzer f5bb71736b chore(meta): activate T-1076 road-hub batch — Si refinement + gap resolutions (incl. scope item 0: placement-map re-tune per Jeroen) 2026-07-16 15:35:04 +02:00
jpmschweitzer 9336209ea9 chore(meta): close settlement-dataset batch — T-1074/T-1075 done (PR #177 merged); T-1076 unblocked 2026-07-16 13:09:04 +02:00
jpmschweitzer 73ae4ee8cb Merge remote-tracking branch 'origin/settlement-dataset-d242' 2026-07-16 13:08:42 +02:00
jpmschweitzerandClaude Fable 5 9bb533a8b0 docs(meta): H3 — correct D-242 verification wording to recompute-every-run behavior
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 13:00:21 +02:00
jpmschweitzerandClaude Fable 5 e63caeb620 fix(db): PR #177 review round — H1/H2/T1/T2/M1
H1+H2: headquarters_body is reset+derived every run (DB is never source); optional authored frontmatter override, hard-validated; tiebreak now population DESC -> city-bearing body -> type rank -> body_id, preserving belt tenancies and fixing GJ702B to GJ702Bb. T2: NULL-reset pass for corp_specialization/hq_placement before authored re-apply (poison-tested). T1: wiki/corporations/*.md globbed into IMPORT_ECONOMICS_SOURCES. M1: licensed_clinical_services vocabulary value (31st, NonPhysical->CityTenant) + somatic-futures retag. Fixpoint verified stable across 4 consecutive regens (0 diffs); regen systems.db.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 13:00:03 +02:00
jpmschweitzer dc982d3c53 chore(meta): set team copy on T-1115 2026-07-16 12:16:30 +02:00
jpmschweitzer 6d97a3cafc chore(meta): T-1074/T-1075 to review — PR #177 up 2026-07-16 11:49:38 +02:00
jpmschweitzerandClaude Fable 5 0c8a270471 style(simulation): cargo fmt — test fixture tuple layout
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 11:45:57 +02:00
jpmschweitzer 8b50070cf3 chore(meta): file T-1115 — corp-placement wiki coverage gaps (T-1074 follow-up) 2026-07-16 10:30:33 +02:00
jpmschweitzerandClaude Fable 5 c0de8ce68c docs(meta): D-242 implementation status + derivation amendment; D-207/D-223 supersede notes (T-1074/T-1075)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 10:29:34 +02:00
jpmschweitzerandClaude Fable 5 314894d080 test(simulation): lock standalone-HQ-as-ordinary-settlement-row invariant (T-1074)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 10:29:17 +02:00
jpmschweitzerandClaude Fable 5 62bbf57009 feat(db): corp-HQ settlement model + per-settlement population/class bake (T-1074/T-1075, D-242)
Remove the reserved=1 corp-HQ city-pool cross-reference (duplicate co-named cities); corp_specialization keyed on the D-237 vocabulary extended 27->30; authored corp_hq_placement.toml {CityTenant,Standalone} map; headquarters_body backfill via lifted most-populated-body heuristic + body-type tiebreak; standalone HQs emitted as ordinary settlement rows; Zipf rank-size population spread from bodies.population at import; settlement_class defaults PopulationBudget + settlement_name_locked.toml hero pins; retire orphaned populate-corporations.sh; regen systems.db.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 10:29:00 +02:00
jpmschweitzerandClaude Fable 5 43a6d55180 feat(db): backfill corp_specialization frontmatter across 155 corp wiki pages (T-1074, D-242)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 10:28:36 +02:00
jpmschweitzer 27a78fad7f chore(meta): assign T-1074/T-1075 to dudley 2026-07-16 09:34:35 +02:00
jpmschweitzer 1f958962cc chore(meta): activate T-1074/T-1075 settlement-dataset batch — Si refinement + gap resolutions appended 2026-07-16 09:04:41 +02:00
jpmschweitzerandClaude Fable 5 4113107121 chore(meta): close Atlas-viewer batch — T-960/T-970/T-949 done (PR #176 merged)
Review round processed in full (12 findings + 2 recommendations, no retractions); merged and gate-verified on main; worktree + branch torn down.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 18:03:38 +02:00
jpmschweitzer aa27e8ce1f Merge remote-tracking branch 'origin/atlas-layer-viewer' 2026-07-14 17:49:06 +02:00
jpmschweitzerandClaude Fable 5 3304ee30da fix(simulation): PR #176 review round — all 12 findings + 2 recommendations addressed
H1 demux: ShapeProbe defensive multi-shape rejection (union frames now Err, not first-match; +2 tests) and doc claim made honest. H2/T1 SystemIndex.reset_test_state() folded into SimBridge.reset_test_state() (load() inline per autoload rule) + has_pending_request() accessor. H3 no-op tests now assert the replay flag both directions. H4 retry test actually ingests a failure and asserts the retry semantic. H5 error fixture uses the normalized status string. H6 bridge_tcp e2e sends all five frame shapes over real TCP (star-map + city-names buffers asserted). H7 positive replay-on-CONNECTED test via the test_local_bridge test-mode-flip precedent (stub bridge captures + decodes the request bytes). H8/T2 stale PLACEHOLDER doc replaced with the confirmed contract. H9 is_capital doc matches the COALESCE reality. T-r1 demux ceiling written down (next shape = tagged envelope). T-r2 AtlasLayerResponse governance ceiling comment. Lead item: the four cargo-fmt-formatted files from the gate round are now committed (layer_proxy/plugin/bridge-mod/main). H10 note for the record: the 13 snapshot_*.msgpack fixtures in commit 845737617 were regenerated because they were stale against their own generator (pre-existing version-key removal) — verified harmless, no client reads that key.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 17:31:15 +02:00
jpmschweitzerandClaude Fable 5 8016abe0c7 chore(meta): T-960/T-970/T-949 to review — PR #176 up; T-1114 gdlint-debt filed
Atlas-viewer batch shipped through the gate (2946/2946 gdUnit, full cargo suite, golden untouched). T-1114: 39 pre-existing client gdlint warnings tracked under T-1037.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 16:36:44 +02:00
jpmschweitzerandClaude Fable 5 9c990a0733 fix(tooling): cargo fmt + godot-cold-parse cache restore (gate round)
fmt: atlas_data_proxy.rs test code. godot-cold-parse: the cold parse re-seeds the class cache WITHOUT addon classes (gdUnit4's GdUnitTestCIRunner missing), leaving tests/run-godot unable to start (0 tests / 355ms — caught by the pre-push gate running the suite right after this script). The script now restores a full cache via a final --import pass before exiting; the cold verdict is unaffected.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 16:29:02 +02:00
jpmschweitzerandClaude Fable 5 845737617c feat(client): atlas roads/settlements overlays + legend + server-API data delivery (T-960, T-949)
T-960: gen_l2_roads (MaintenanceAuthority-colored polylines, rail styling, junction markers) + gen_l3_settlements (size-scaled markers, capital shape, name labels) overlays — cities render on generated bodies for the first time; left-side generation legend panel (D-226 item 3, data-driven per-overlay spec, implant component library); protocol.gd decodes road_graph/settlements + the two new response types. T-949: system_index/atlas_app/overview_screen migrated off the direct star_map_data.json read to StarMapRequest over the bridge (loading state + replay-on-connect, no silent file fallback); atlas_viewer _load_markers requests CityNamesResponse for non-Sol bodies; Sol keeps the legacy authored markers.json geometry read (D-236/T-1073, load-bearing guard). Lead fix: _send_star_map_request now carries the same guard as request_star_map — the autoload's _star_map_wanted leaked across gdUnit suites and the unguarded replay-on-CONNECTED crashed 8 pre-existing flow tests on a Nil bridge; reset_test_state clears the flag. Fixtures regenerated via gen_fixtures (road/settlement samples). Full suite 2946/2946.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 15:45:54 +02:00
jpmschweitzerandClaude Fable 5 37881acba0 feat(simulation): atlas proxy layers + data-delivery endpoints (T-960, T-949)
T-960: RoadGraphLayer (L2 edges/junctions, MaintenanceAuthority, rail flag, named routes) + SettlementLayer (name/position/size-class/is_capital/is_port from T-955 placements) as new Option fields on AtlasLayerResponse — T-1046 precedent; layer_proxy doc comment corrected (cascade runs through RoadGraph, client up_to ignored). T-949: new StarMapRequest/StarMapResponse (raw JSON passthrough of the star_map_data.json bake) + CityNamesRequest/CityNamesResponse (atlas_city_names via CityContextReader) with defense-in-depth Sol exclusion (GJ-0 system id OR settlement_wave='origin', D-236). Inbound demux extended with mandatory boolean discriminator fields (serde ignores unknown fields — optional-shape sniffing would be ambiguous); AtlasLayerRequest unchanged. SimBridge trait +2 methods, implemented on TcpBridge + LocalBridge. CityPlacement/CityRecord gained name/population/is_capital (BodyWorldState cache-hit path stays DB-free). ~30 new unit tests incl. demux disambiguation + Sol branches; gen_fixtures extended for road/settlement samples.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 15:45:25 +02:00
jpmschweitzerandClaude Fable 5 6bda9f1697 feat(simulation): auto-pause sim on implant-fullscreen — inspection substrate (T-970)
D-226 layer 1. World-advancing phases gated on pause: Movement/Storyteller/Knowledge/TickAdvance set-gated via sim_not_paused; Simulation + Economy gated per-system at their registration sites — collect_sound_events and serve_econ_state_query stay unconditioned (transient-buffer clear + paused-allowed query; set-gating Simulation leaked a stale tick-7 footstep into frozen snapshots — caught by golden_suite, fixed without touching the fixture; regression test encodes the bug shape). New PlayerAction::AutoPause/AutoResume + AutoPauseState resource implement Option A reconciliation: auto-resume only fires if auto-pause caused the pause; manual pause and Half rate survive implant open/close. PauseParams SystemParam bundle keeps process_player_input under the 16-param ceiling (BookmarkInputParams precedent). Client: HudGroups.gameplay_occluded now sends AutoPause/AutoResume via send_named_action; 5 gdUnit tests + 7 Rust tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 15:44:56 +02:00
jpmschweitzerandClaude Fable 5 672a583e64 docs(governance): Atlas-viewer batch refinement — D-226/D-191/D-236 amendments + ticket rescopes
Si audit rulings (Jeroen, 2026-07-13): D-226 amended (shipped always-toggleable overlay pattern ratified, gen_l0 dropped, legend stands, no tile-level Atlas map); D-191 + CLAUDE.md Phase-4 wording aligned; D-236 amended (Oort-cloud gateway station = concrete player-access cap; Sol never in deterministic runs). T-960 rescoped (L2 roads + L3 settlements + legend in; L4/climate/L5 out), T-949 scoped non-Sol + D-010 citation fix, T-970 refined (Paused gates only advance_tick; economy split; Option A manual-pause reconciliation). New: T-1112 (L4 coarse-footprint design), T-1113 (climate cascade wiring). D-254 claim unused (D-236 already covered Sol).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 23:53:59 +02:00
jpmschweitzerandClaude Fable 5 81e4cb25d0 chore(meta): close T-1099 estate-cleanup tree — PR #175 merged
Initiative + 5 epics + 3 tasks done. CLAUDE-CLEANUP.md brief executed in full and deleted; follow-ups live as T-1108-T-1111 under T-1037.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 22:52:45 +02:00
jpmschweitzer da0b140ae7 Merge remote-tracking branch 'origin/claude-estate-cleanup' 2026-07-13 22:47:04 +02:00
jpmschweitzerandClaude Fable 5 6c078fbec4 fix(meta): PR #175 review round — all 14 findings addressed
H1 godot-cold-parse exit-code guard (+bonus: import-pass for cold checkouts, found live); H2 pr-watchlist-diff loud registry failure; H3/T1 deny list :* normalization (add-only) + uniform allow syntax; H4/T7 helper-script allows; H5 get_api_key env-only (config.json is tracked — no secret fallback); H6 TEAM.md active/standby split; H7 troblum solo-profiling note; H8 pr-review frontmatter Task->Agent; H9 conventions doc taxonomies fixed vs real tree; T2 ask-gate leash files (settings/hooks) in tracked settings; T3 R-013 cross-reference; T4 governance README index regenerated (pql decisions sync); T5 dudley briefing ACTIVE; T6 pr-process step 7 run-from-main.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 22:11:36 +02:00
jpmschweitzerandClaude Fable 5 1e7aa8fe63 chore(meta): T-1099 tree to review — PR #175 up; follow-ups T-1108-T-1111 filed
Estate-cleanup epics T-1100-T-1104 (+tasks) moved to review with PR #175. Follow-ups under maintenance T-1037: T-1108 image-gen --aspect smoke test, T-1109 workshop scout-critic decision, T-1110 body-ID moon-suffix standard, T-1111 renderer/README staleness.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 17:18:14 +02:00
jpmschweitzerandClaude Fable 5 f2d1b2601a fix(tooling): tea-comment resolves tea from PATH or linuxbrew keg
Agent shells often miss the brew shellenv (clide FR-1), so bare 'tea' 127s. The wrapper now falls back to /home/linuxbrew/.linuxbrew/bin/tea.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 17:17:15 +02:00
jpmschweitzerandClaude Fable 5 c9d9b56933 docs(rules): tea pr create must omit --repo (T-1102)
An explicit --repo slug makes tea skip local-repo setup, but pr create unconditionally needs the local repo handle and dies with 'local repository required' — the documented 'all flags explicit' rule was the trap. Root-caused shipping PR #175. tea-cli.md + pr-process template fixed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 17:15:38 +02:00
jpmschweitzerandClaude Fable 5 9a0d42c5d3 chore(agents): roster sweep — arm discussion agents, integrate inigo, drop tiger (T-1104)
Cleared stale STANDBY markers, swept dead DISCUSSION.md pointers, disambiguated overlapping personas, corrected asset-gen paths. Armed 7 discussion agents (gestalt/gore/mellanie/miri/nigel/ozzie/paula) with Bash so they can run the pql preamble. Integrated inigo into the roster + briefing (audio, standby). Removed tiger — localization dropped from scope (R-013). Part of T-1099.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 12:17:08 +02:00
jpmschweitzerandClaude Fable 5 33c14531da chore(skills): asset/tooling skills sweep — atlas/glb-gen/image-gen/audio-gen/sprite-gen/bug-report/ticket (T-1103)
Live-command corrections (atlas corridor-status, real body-ID naming), failure-proofed glb-gen/sprite-gen render scripts, Trellis API reference extracted. image-gen: fixed the output-path bug and de-forked the local image_connector.py to the canonical tooling/db/ copy. ticket skill consolidated to point at ticket-cli.md (setparent-none fix applied there too). Part of T-1099.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 12:16:49 +02:00
jpmschweitzerandClaude Fable 5 32021bd550 chore(skills): workflow skills sweep — whats-next/workshop-start/pr-review/pr-process (T-1102)
De-sprint pr-review, dynamic repo-root paths, gate-aligned checks; workshop-start Agent-tool rename + roster fixes (IMPROVEMENTS.md folded in and removed); whats-next pql-durability notes; pr-process orphan-check + full-suite alignment. New helper scripts tooling/godot-cold-parse + tooling/pr-watchlist-diff (allowlist entries deferred to first-use per permission policy). Part of T-1099.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 12:16:34 +02:00
jpmschweitzerandClaude Fable 5 e6fd51161a chore(skills): refresh clide from canonical + preserve d2/frame0 tailoring (T-1101)
clide SKILL.md re-synced to the clide repo's canonical copy (picks up the dock/D-87 slot; de-forks). d2-diagram/frame0-wireframe/skill-create deletions landed in the prior commit; their repo-specific tailoring is preserved in docs/design/diagram-wireframe-conventions.md. Part of T-1099.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 12:16:20 +02:00
jpmschweitzerandClaude Fable 5 0a9b0d00a0 chore(config): settings.json + .gitignore hygiene (T-1100)
Remove dead docs-search allow; promote godot4/gdformat/atlas/validate-ron; add repo-tree Edit/Write + worktree-setup allows. .gitignore ignores .claude/scheduled_tasks.lock/.json. Part of T-1099 (Claude estate cleanup).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 12:14:27 +02:00
jpmschweitzerandClaude Fable 5 2a0ac54109 chore(meta): scaffold estate-cleanup initiative T-1099 + 5 epics (CLAUDE-CLEANUP.md)
T-1099 under T-1037; epics T-1100 (settings/security), T-1101 (skill
removals), T-1102 (workflow skills), T-1103 (asset/tooling skills),
T-1104 (agent roster). Executing the 2026-07-02 .claude review this session.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 15:44:46 +02:00
jpmschweitzerandClaude Fable 5 8b76d8c4a8 feat(config): worktree-setup helper + skill notes for worktree gotchas
tooling/worktree-setup <branch>: one command to create a usable worktree —
adds it under the gitignored .worktrees/, symlinks .venv (so make/python
tooling resolves .venv/bin/python), relies on the post-checkout hook for the
pql --vault rebuild, and prints the in-worktree reminders. Tested end-to-end
(venv linked, pql.db populated on create).

whats-next §3c now calls the helper and documents the three in-worktree
gotchas (pql --vault, tea-from-main, read-only content agents); tea-cli.md
notes tea must run from the main checkout.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 15:28:28 +02:00