Commits
Publication validation closes phase 5
The small hours close #38 and phase 5: publication validation assembling a complete real Number, a Fit action that communicates what it does, and tickets #20, #23 and #24 closed. Phase 6 remains: the InDesign export checked inside real InDesign.
The small hours have closed #38 and, with it, phase 5 of the plan: the publication circuit is now validated end to end, and three more tickets have fallen. One phase remains, the sixth: checking the InDesign export inside real InDesign.
A trustworthy view and a Fit that explains itself
#38 has separated two views that used to blur together: the canvas quick view is labelled as approximate and the viewer's as the full-engine view, with real folios and page breaks. preview.json declares medicion: imposible with a reason when the page is in code mode — it used to present itself as "no overflows". Overlaps are now marked on both elements involved.
Fit has stopped being a silent action: it answers with the reduced elements (body measured before and after, with the 20% per-step limit and texts untouched) and the overflows that remain; when nothing can be reduced — a rule sliding out of the header — it says so instead of staying quiet. The report survives autosave and reversibility is explicit: the previous state enters the canvas history and Undo reverts on the server too, verified against the database with a headline getting its 27 points back. After saving, it also re-measures the page to report the real problems, not a previous render. "View PDF" now opens the viewer directly at the piece's page.
Phase 5 assembles a whole Number
The integrated publication validation assembles a number with every ingredient — a cover with background, sections with headers, a long article with an internal heading and photograph, Closed Material, a library SVG placed by hand, custom typography and a custom layout — and checks the real output: the index points to its page, the typography is embedded, the bleed is 3 mm, preflight comes out green, the colour is CMYK and the InDesign package carries IDML and JSX. An applied spread is visible on both sides of the spine and the piece's contextual view matches, pixel by pixel in miniature, the page of the full PDF.
The phase uncovered a real defect: the factory CSS of the "image" piece mixed loose declarations with rules, the engine silently discarded it, and the image and its caption lost their styling in every layout using the piece. Fixed at the factory and with a seeding that updates only installations still carrying the broken CSS, respecting whatever the user has edited.
#23, #24 and #20: closings
#23 has brought order to proposal measuring: it checks the piece is laid out with the proposed layout and measures only its boxes; measuring with a temporary layout no longer writes anything to the database; the model selector only offers models that can compose; and the confirmation names the model and the data that comes out. #24 has given the pilot a report with each piece's page and warnings; on revert, the number is measured in a temporary directory — undoing the pilot publishes no PDF — and warns if the reflow moved the piece to another page. And #20 has kept performance stable: adding sections to an existing Edition does not change its PDF, and moving articles and reordering sections keeps the index pointing at the real page.
There is also the first user documentation: docs/guia-editor.md. With #20, #23, #24 and #38 closed, the sixth phase remains, pending the user's decision: reviewing the InDesign export inside real InDesign.