docs(v2): record the standard-coverage debt as Tier 5 - #229
Merged
Conversation
Seven pieces of standard that a shipped generator does not implement were tracked only in conversation. They are now a tier, ordered by what it costs to leave each one alone rather than by when it was written: * #201, the extension pass segfaulting under continue-on-error, first because it is the only defect here and it masks other failures; * QR calling the data encoder with Mode::Byte and nothing else, while numeric, alphanumeric and Kanji compaction sit implemented and unreached; * Data Matrix having ASCII and none of C40, Text, X12, EDIFACT or Base256; * PDF417 emitting no ECI header and no macro block, so a payload over one symbol does not fit rather than taking two; * Aztec having no FLG(n) -- the one entry whose fix adds a symbology, since FLG(0) is FNC1 and gs1-aztec is that plus the existing placement rule; * MaxiCode mode 5, kept open for the reason Tier 3 gave rather than a new one: nothing available writes one to measure against; * DataBar Expanded's fourteen variable-measure compaction methods, last because the risk-to-modules ratio is the worst in the tier. Tier 6's opening claimed 5 was being left free for a symbology tier; it now says what 5 actually holds.
s2x
added a commit
that referenced
this pull request
Sep 3, 2026
docs(v2): record the standard-coverage debt as Tier 5
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.
Seven pieces of standard that a generator in the Shipped table does not
implement were tracked only in conversation. This makes them a tier.
They are collected rather than filed against their own entries because they
share a shape: each encoder was finished against what the round trip could
prove, and these are what the round trip never asked about. None of them is a
wrong symbol — each either costs modules a standard-complete encoder would not
spend, or refuses a payload the symbology could have carried.
Ordered by what it costs to leave alone:
sizeand the suite segfaults (present on main) #201 — the extension pass segfaults on roughly half of all CI runs andis
continue-on-error: true, so a real extension regression would lookexactly like the crash that is already there. The only defect on the list
and the only one that hides other failures. Undiagnosed.
Encoder.phppassesMode::Bytetwice and nothingelse, while
DataEncoderimplements numeric, alphanumeric and Kanjicompaction that nothing reaches. Widest gap in ordinary use: eight bits a
digit where the standard spends three and a third. The work is
segmentation, not compaction.
Digits are already optimal; text costs a third more than it should and
binary goes through ASCII upshift.
one with a capability behind it: without it a payload over one symbol does
not fit rather than taking two.
than shrinking a symbol. FLG(0) is FNC1, so
gs1-aztecis that plus theFNC1 placement rule the GS1 layer already has.
interleaving is not the plain mode's, nothing available writes one, and
thirty candidate splits produced nothing the reader accepts.
on purpose. Narrowest set of inputs, fourteen field layouts to get wrong,
one or two symbol characters saved.
Tier 6's opening paragraph claimed 5 was being left free for a symbology tier.
It now says what 5 holds.
Every claim in the new section was checked against the source rather than
recalled:
Encoder.php:145/:222for the QR modes, the absence ofMode::Numeric/Alphanumeric/Kanjianywhere outsideDataEncoder, theAsciiEncodationdocblock, the "not implemented" notes already inEncoding\Aztec\HighLevelEncoderandEncoding\Pdf417\HighLevelEncoder, themissing
case 5inEncoding\MaxiCode\Mode, andci.yml:194-200.Docs only — no source, tests or fixtures touched.
composer lint:kbok.