mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-10 10:06:15 -08:00
Seven defects found by an adversarial pass over the new tooling, each with a regression test: - `highlight:` was silently truncated at the first ` #`. The comment strip was written when every field was a slug, enum or number; it now applies only to those closed-vocabulary keys. `highlight: Sources #N chip` kept parsing as "Sources" and shipped that to all four surfaces. - Quote stripping removed a leading or trailing quote independently, so `highlight: "Up Next" rail` lost its opening quote. Both ends must now carry the same quote character. - A whitespace-only quoted value passed validation and then crashed the card generator mid-run, after PNGs were already written. Values are trimmed after unquoting, so it fails validation instead; the hero card also no longer indexes wrapText's empty result blindly. - Feature cards painted the opaque screenshot frame over the last body line whenever the headline wrapped to two lines. The body's line budget is now derived from the space actually left above the frame. - Un-highlighted breaking changes were folded into "…plus N more fixes and improvements" on Telegram and never shown. They are always spelled out. - Both CLI guards compared a non-realpath'd argv[1] against a realpath'd import.meta.url, so reaching either script through a symlinked path (on macOS, anything under /tmp or /var) made it a silent exit-0 no-op — which for the publication gate reads exactly like a pass. - spawnSync reports a missing gh binary and a signalled child as `status: null`, both of which were blamed on the build. The highlight cap drops from 80 to 60 characters: 60 is the hero card's single-line budget, so a valid highlight now always renders in full rather than being silently ellipsized. Docs: new docs/architecture/release-pipeline.md carries the full contract — surfaces, the ordering constraint around --consume, highlight semantics, card layout rules, and the 27-asset draft verification table. release-cut now references it instead of restating the asset list (474/500 words), and CLAUDE.md, AGENTS.md and .changes/README.md point at it; the README's release sequence no longer omits the announcement and card steps. 172 tests passing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>