The skeleton the reach CLI hangs off. Nothing moves yet: this adds the package, the bounded core/, and explicit setuptools discovery. core/console.py is the single output path, and the split it enforces is the whole design — stdout carries the command's actual output so `reach ... | jq` keeps working, stderr carries the event stream as JSONL. Rendering happens at the sink: a terminal gets human text, anything else gets raw JSONL, so a live view and a job log are one artefact in two presentations. Emitting is optional — the gates emit nothing — and verdict() prints once, last, carrying its remedy as a structured field. core/config.py resolves the repo root from __file__ against a project.yaml sentinel, with an SR_REPO_ROOT override. No subprocess and no git call: this is on the gate path, and cwd is not a reliable signal anyway since a hook runs from the root and an agent call may not. Both paths are validated, because a silent fallback is how you end up editing one checkout and checking another. Discovery is configured explicitly rather than left to flat-layout auto-discovery, which would have had to choose between erroring on the ambiguity and quietly shipping client/ or docs/. Verified: top_level.txt contains exactly "tooling". Verified beyond the happy path — the sentinel rejects SR_REPO_ROOT=/tmp and names both remedies; debug events are suppressed at the default threshold while the verdict is not; stdout stays clean with stderr redirected away; and the three unconditional push-gate checks still pass now that tooling/ is a package, which was the real regression risk. Two findings recorded on the tickets. make setup-venv is stale — it calls .venv/bin/pip, but the venv was created by uv and has no pip, so the recorded procedure and the actual state have already diverged (T-1261 owns the fix). And settled-reach-tooling had never actually been installed: site-packages held the dependencies but no dist-info, which follows from there being no __init__.py to expose. This is the first commit where `import tooling` means anything. .venv/ was only ignored via .git/info/exclude, which is machine-local, so a fresh clone or a new worktree did not ignore it at all. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
136 lines
3.2 KiB
Plaintext
136 lines
3.2 KiB
Plaintext
# Secrets
|
|
.env
|
|
|
|
# Local-only settings DB and WAL/SHM sidecars of tracked DBs
|
|
# (root-level entries: servers spawned with cwd=repo root — e.g. the T-1120
|
|
# atlas capture harness — open settings.db relative to their cwd)
|
|
settings.db
|
|
settings.db-shm
|
|
settings.db-wal
|
|
server/settings.db
|
|
server/settings.db-shm
|
|
server/settings.db-wal
|
|
server/data/systems.db-shm
|
|
server/data/systems.db-wal
|
|
|
|
# Build and cache
|
|
.cache/
|
|
.tmp/
|
|
server/target/
|
|
server/sr-voice/target/
|
|
server/models/
|
|
tooling/content-converter/target/
|
|
tooling/econ-sim/target/
|
|
tooling/line-previewer/target/
|
|
tooling/test-client/target/
|
|
|
|
# Godot client
|
|
client/.godot/
|
|
client/export/
|
|
client/reports/
|
|
client/**/*.import
|
|
client/**/*.uid
|
|
|
|
# Renderer (separate Godot project for sprite pipeline)
|
|
renderer/.godot/
|
|
renderer/**/*.import
|
|
renderer/**/*.uid
|
|
renderer/output/*.png
|
|
|
|
# Spikes (Godot cache + import artifacts)
|
|
spikes/**/.godot/
|
|
spikes/**/*.import
|
|
spikes/**/*.uid
|
|
spikes/**/*.npy
|
|
spikes/**/*.npz
|
|
|
|
# Spike binary artifacts are local-only (D-241): models, textures, renders are
|
|
# reproducible from purchased packs (docs/assets/downloads/) + spike scripts.
|
|
# Verdict/review markdown and spike code stay tracked. Production assets live
|
|
# in client/assets/ after promotion, never in spikes/.
|
|
spikes/**/*.glb
|
|
spikes/**/*.gltf
|
|
spikes/**/*.bin
|
|
spikes/**/*.png
|
|
spikes/**/*.jpg
|
|
spikes/**/*.jpeg
|
|
spikes/**/*.webp
|
|
spikes/**/*.fbx
|
|
spikes/**/*.blend
|
|
spikes/**/*.exr
|
|
spikes/**/*.hdr
|
|
spikes/**/*.zip
|
|
# Extracted vendor payload (reproducible from docs/assets/downloads/ archives
|
|
# via the spike's own extraction script) — includes Unity .asset/.sk metadata.
|
|
spikes/**/raw/
|
|
|
|
# Planet generator intermediates
|
|
*.tmp.npz
|
|
|
|
# Generated terrain grids (large, regenerated from pipeline)
|
|
wiki/**/bodies/**/terrain.npz
|
|
|
|
# Asset downloads (vendor archives, not game content)
|
|
docs/assets/downloads/
|
|
|
|
# Reference repos for investigation
|
|
vendor/
|
|
|
|
# Frame0 ID mapping files (ephemeral, per-machine)
|
|
*.idmap.json
|
|
|
|
# Python
|
|
__pycache__/
|
|
*.pyc
|
|
*.pyo
|
|
# Editable-install metadata, regenerated by every `uv pip install -e .` (T-1258)
|
|
*.egg-info/
|
|
# Was only in .git/info/exclude, which is machine-local — so a fresh clone or a
|
|
# new worktree did not ignore it at all (T-1258)
|
|
.venv/
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# IDE
|
|
.idea/
|
|
.vscode/
|
|
.obsidian/
|
|
*.swp
|
|
*.swo
|
|
|
|
# Generated economics pipeline artifacts (re-created by make economy-db)
|
|
wiki/economics/corporations/generated_brands.toml
|
|
wiki/economics/corporations/generated_corporations.toml
|
|
|
|
# Git worktrees (per-machine, created under the repo root)
|
|
.worktrees/
|
|
|
|
# Claude Code internals (plans, session transcripts)
|
|
# Note: .claude/agents/, .claude/skills/, and .claude/settings.json ARE tracked
|
|
.claude/plans/
|
|
.claude/projects/
|
|
.claude/agent-memory/
|
|
.claude/scheduled_tasks.lock
|
|
.claude/scheduled_tasks.json
|
|
.tmp/
|
|
|
|
# Local agent tooling caches (per-machine, not shared)
|
|
.clide/
|
|
|
|
# pql: ignore the rebuildable local databases (index + planning DB + WAL/SHM
|
|
# sidecars), but TRACK .pql/config.yaml and .pql/changelog/ — the changelog is
|
|
# pql's durable, git-versioned planning state (LWW, idempotent replay).
|
|
.pql/*.db
|
|
.pql/*.db-*
|
|
|
|
# Client runtime artifacts (settings store written by e2e test runs)
|
|
client/settings.db
|
|
client/settings.db-shm
|
|
client/settings.db-wal
|
|
|
|
.claude/settings.local.json
|
|
.pql/*
|
|
!.pql/changelog/
|