Report the charts an open or a bake dropped - #70
Merged
Conversation
beetlebugorg
force-pushed
the
fix/ingest-report-losses
branch
from
September 5, 2026 02:23
d2c824f to
5939c04
Compare
beetlebugorg
force-pushed
the
fix/ingest-report-losses
branch
from
September 6, 2026 19:23
5939c04 to
a74985c
Compare
beetlebugorg
force-pushed
the
fix/ingest-report-losses
branch
from
September 6, 2026 20:27
a74985c to
64db5c6
Compare
beetlebugorg
force-pushed
the
fix/ingest-report-losses
branch
2 times, most recently
from
September 6, 2026 23:27
93ab377 to
286e358
Compare
Four paths lost a chart in silence. bakeOneToFile returns void and bails at four points, and the label callback fired for every cell, so a host printed a finished chart for one that was never written. bakeArchive added the attempted count to its progress total before inspecting any result, so the bar reached the end whether the cells loaded or not. openCharts errored only when every cell failed, and openPath dropped a cell it could not read or parse, or one with no extent. tile57_compose_open computed the count it composed and discarded it. The label now fires for a chart that was written, progress counts the cells that produced a backend, and each lost chart prints a line naming it, as a lost tile already does. tile57_info gains skipped_cells and tile57_compose_meta gains skipped, both appended. A host reads them to tell a chart set with a gap in it from a complete one. Baking a directory holding a cell that is not S-57 writes the archives for the rest and names the one it dropped.
The count went into tile57_compose_meta between charts and west, described as appended for ABI-append-safety. That struct ends on a double and has no spare padding, so the new field moved the bounds and grew the struct: before: sizeof 40, west at 8, north at 32 after: sizeof 48, west at 16, north at 40 tile57_compose_get_meta writes the whole struct, so a host built against the previous header passed a 40-byte object and had 48 bytes written into it, then read its western bound from the count and the padding after it. No field can be added to this struct safely, so the count is now its own call, tile57_compose_skipped. The struct is back to its previous layout, measured against both headers. The tile57_info append is safe: skipped_cells uses the padding after is_raster and the struct stays 96 bytes, measured against both headers.
The count was the charts with no decoded coverage, taken before the open ran. openBorrowed drops more after that: a chart whose coverage decoded to an empty ring owns no ground and is absent from every composed tile. Those went uncounted, so charts plus skipped came to less than the number handed in, and a chart missing from the quilt had no sign of it. Both openers now subtract what the open kept from what it was handed, so the two numbers add up by construction. The raster opener never set the count at all and reported 0 whatever it dropped. The bake's own skipped counter is removed. It was incremented and never read, under a comment saying a host reports it. The CHART LOST line beside it is the report.
The field is set when a chart opens from ENC source. Every open this header exports is archive-backed, so a host calling tile57_chart_get_info reads 0 there whatever the source set held, and the text promising a way to tell a set with a gap from a complete one described a value no caller can reach. The comment now says where it is filled and points at the per-cell lines the engine writes to stderr, the report a host gets today.
beetlebugorg
force-pushed
the
fix/ingest-report-losses
branch
from
September 7, 2026 02:01
286e358 to
8874b1b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
An open or a bake dropped a cell silently, and a chart set with a gap in it looks like a complete one. Each dropped cell is named on stderr with the reason, and the counts a host reads are correct. Stacked on #69.
addPathCellreports whether it used the cell,openPathandopenChartscount what they skipped, and the bake names a cell that produced no backend. The bake's label fires only after the archive, aux files and hash are written, so a host stops printing a finished chart for one that failed.skippedwent intotile57_compose_metabetweenchartsandwest, described as an append. That struct ends on a double with no spare padding, so it grew from 40 to 48 bytes and movedwestfrom offset 8 to 16.tile57_compose_get_metawrites the whole struct, so a host built against the previous header passed a 40-byte object and had 48 bytes written into it. The count istile57_compose_skippedinstead, and both openers derive it by subtracting what the open kept from what it was handed.zig build,zig build testandzig fmt --checkpass.