65 lines
2.1 KiB
Markdown
65 lines
2.1 KiB
Markdown
|
|
---
|
||
|
|
model: claude-fable-5[1m]
|
||
|
|
service: claude
|
||
|
|
session: 638d5a98-abd2-4217-a447-19f2330eb334
|
||
|
|
timestamp: 2026-06-25T23:25:06Z
|
||
|
|
git_ref: 3a5cfde0
|
||
|
|
scope: code
|
||
|
|
substantive: true
|
||
|
|
raw_file: 20260625T232506Z_3a5cfde0_prompt_io.raw.md
|
||
|
|
---
|
||
|
|
|
||
|
|
## Prompt
|
||
|
|
|
||
|
|
Follow-up to a `/code-review` of PR #460 (this branch) which
|
||
|
|
surfaced lower-severity findings in the `.. d2::` sphinx
|
||
|
|
directive. The user's driving instructions across the session,
|
||
|
|
|
||
|
|
> yup do both *at least*, then report back.
|
||
|
|
|
||
|
|
(re: "implement #7 (+ optionally #8) on the branch") and,
|
||
|
|
|
||
|
|
> well we're on a clean main so why not just do these now too?
|
||
|
|
|
||
|
|
(re: also doing #9). The three findings being addressed,
|
||
|
|
|
||
|
|
- #7: a `d2` render that is *attempted and fails* (binary
|
||
|
|
present but errors on the source) silently degraded to the
|
||
|
|
stale committed SVG and the build still exited 0,
|
||
|
|
- #8: `parallel_*_safe = True` was declared while `run()`
|
||
|
|
writes the shared output SVG during the read phase (torn
|
||
|
|
write under `sphinx-build -j`),
|
||
|
|
- #9: output keyed only by `src.stem` so two `.d2` sources
|
||
|
|
with the same stem collide.
|
||
|
|
|
||
|
|
## Response summary
|
||
|
|
|
||
|
|
Reworked `docs/_ext/d2diagrams.py`,
|
||
|
|
|
||
|
|
- `render_svg()` now returns a `RenderResult` tristate
|
||
|
|
(`OK` / `FELL_BACK` / `NO_OUTPUT` / `FAILED`) so `run()` can
|
||
|
|
distinguish a graceful no-binary fallback from a real render
|
||
|
|
failure; `FAILED` emits a `reporter.error` (build fails under
|
||
|
|
`-W`),
|
||
|
|
- the render writes into a sibling temp-file then `os.replace()`
|
||
|
|
(atomic) so a failed/torn render can never clobber a good
|
||
|
|
committed SVG,
|
||
|
|
- a per-build `_seen_outputs` map (reset on `builder-inited`)
|
||
|
|
errors on a same-stem output collision.
|
||
|
|
|
||
|
|
Verified: a corrupted `.d2` errors under `-W` (exit 1) with the
|
||
|
|
committed SVG byte-unchanged; the collision guard fires on a
|
||
|
|
duplicate stem; `nix run nixpkgs#d2` render path + atomic swap
|
||
|
|
leave no temp residue; `ruff` clean.
|
||
|
|
|
||
|
|
## Response summary (cont.) — Files changed
|
||
|
|
|
||
|
|
- `docs/_ext/d2diagrams.py` — tristate render result, atomic
|
||
|
|
temp-file render, output-collision guard, doc-string policy
|
||
|
|
update.
|
||
|
|
|
||
|
|
## Human edits
|
||
|
|
|
||
|
|
None — committed as generated (`3a5cfde0`). The user noted
|
||
|
|
follow-up refinements may come in later commits.
|