Generate a byte-stable preview PNG for every docs snippet, as the visual- regression oracle foundation of #381. A changed image means the snippet's behaviour changed and wants review. Pipeline (no C++ change; existing headless build suffices): - _seed.py: chained as the FIRST --exec so random.seed(42) governs the snippet's RNG before it draws (snippets draw at import; seeding after is too late). Shared-interpreter seeding covers all 25 random-module snippets. - _screenshot.py: chained as the LAST --exec; steps setup frames then automation.screenshot(). Kept separate from _harness.py so the pass/fail suite stays fast and untouched. - tools/generate_snippet_shots.py: orchestrator; runs seed->snippet->shot, writes gitignored snippet-shots/ (images belong in the doc-site repo, which pulls them from here). Per-snippet capture params live in a sidecar OVERRIDES table, not the mcrf: header (which would fight stamp_snippets and can't hold Phase-3 interaction scripts). - make snippet-shots target; snippet-shots/ gitignored. The 4 BSP snippets that needed deterministic pixels (060, 102, 224, 243) now pass seed=42 — libtcod's global RNG is time(0)-seeded and unreachable from Python, and seed= also documents reproducible generation for readers. Validated: 272 captured, 10 skipped (noshot opt-outs), 0 failed; all 272 byte-identical across two full runs (~49s). Addresses #381. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LTh2ZW7bd3XSd9qK86Z2CE
89 lines
1.9 KiB
Text
89 lines
1.9 KiB
Text
*.swp
|
|
*.swo
|
|
bin
|
|
.msvc-intermediate/
|
|
*.bak*
|
|
PCbuild
|
|
.vs
|
|
obj
|
|
build
|
|
/lib
|
|
__pycache__
|
|
|
|
# unimportant files that won't pass clean dir check
|
|
build*
|
|
docs
|
|
.claude
|
|
my_games
|
|
|
|
# images are produced by many tests
|
|
*.png
|
|
|
|
# generated snippet preview screenshots (#381); consumed/committed by the doc-site repo
|
|
snippet-shots/
|
|
|
|
# WASM stdlib for Emscripten build
|
|
!wasm_stdlib/
|
|
|
|
.cache/
|
|
7DRL2025 Release/
|
|
CMakeFiles/
|
|
Makefile
|
|
*.zip
|
|
__lib/
|
|
__lib_debug/
|
|
__lib_windows/
|
|
build-windows/
|
|
build_windows/
|
|
_oldscripts/
|
|
|
|
# Audit tooling virtualenv (tools/audit_pymethoddef.py)
|
|
.venv-audit/
|
|
assets/
|
|
cellular_automata_fire/
|
|
deps/
|
|
fetch_issues_txt.py
|
|
forest_fire_CA.py
|
|
mcrogueface.github.io
|
|
scripts/
|
|
tcod_reference
|
|
.archive
|
|
.mcp.json
|
|
dist/
|
|
|
|
# Keep important documentation and tests
|
|
!CLAUDE.md
|
|
!README.md
|
|
!tests/
|
|
|
|
# Fuzzing build artifacts and runtime data (build-fuzz matched by build* above)
|
|
tests/fuzz/corpora/
|
|
tests/fuzz/crashes/
|
|
|
|
# >>> generated-docs (untrack via tools/untrack_generated_docs.sh) >>>
|
|
# Rendered/generated documentation is regenerated by the pre-commit hook and
|
|
# shipped inside release artifacts -- it no longer lives in git. The compact
|
|
# api/manifest.json is the exception: it STAYS committed (refreshed by the hook).
|
|
# Personal-notes docs (plans, triage, research) are also untracked here.
|
|
# tools/untrack_generated_docs.sh reads exactly this block to migrate the
|
|
# currently-tracked copies out of the index.
|
|
docs/API_REFERENCE_DYNAMIC.md
|
|
docs/api_reference_dynamic.html
|
|
docs/mcrfpy.3
|
|
stubs/mcrfpy.pyi
|
|
docs/generated/
|
|
docs/API_REFERENCE_COMPLETE.md
|
|
docs/api_reference_complete.html
|
|
docs/VISION.md
|
|
docs/GAMES.md
|
|
docs/plan-*.md
|
|
docs/api-audit-*.md
|
|
docs/ISSUE_TRIAGE_*.md
|
|
docs/GRID_ENTITY_OVERHAUL_ROADMAP.md
|
|
docs/sprint-*.md
|
|
docs/EMSCRIPTEN_RESEARCH.md
|
|
docs/WASM_TROUBLESHOOTING.md
|
|
docs/MCROGUFACE_LITE_PICOCALC_RESEARCH.md
|
|
docs/3D_SYSTEM_GUIDE.md
|
|
docs/PROCEDURAL_GENERATION_SPEC.md
|
|
# <<< generated-docs <<<
|