Packages

Pure Elixir bibliographic encoding extensions for Iconvex

Current section

Files

Jump to
Raw

TDD_LOG.md

# Iconvex Bibliographic TDD log
## Phase 2 ownership migration — 2026-07-30
Expectation-first tests were added before moving any codec implementation or
asset into this package.
RED:
```console
ICONVEX_PATH=../iconvex mix test --warnings-as-errors --seed 0
```
Result: `47 tests, 47 failures`. Failures named the absent ten codec modules,
two packed profiles, source/runtime assets, transaction facade, lifecycle
ownership, license declarations, and Hex selectors.
GREEN:
```console
ICONVEX_PATH=../iconvex mix test --warnings-as-errors --seed 0
```
After the first GREEN pass, a new stateful-stream expectation was added for
MARC-8 and ANSEL. Its focused RED result was `10 tests, 1 failure` with the
precise missing behavior:
`{:error, {:streaming_unsupported, :source, "MARC-8"}}`. Stateful incremental
decode/encode callbacks and a one-byte-chunk linearity gate were then added.
A final package-specific extraction added the ANSEL/MARC-8 native substitution
and MARC runtime-asset safety expectations. Its focused RED was
`4 tests, 1 failure` for the missing package-isolated cache identity API.
An exhaustive packed transport contract was then added and passed for all 128
OML and OMS units in both MSB- and LSB-first order, including incomplete and
wrong-width transports.
Final result: `54 tests, 0 failures`.
The GREEN suite covers:
- exact 12-row manifest projection into ten registrations and two packed
profiles;
- every byte for Cork/T1, OT1/OT1TT, OML/OMS, LY1, and PostScript profiles;
- every primary Library of Congress MARC-8 mapping in a valid stream;
- inverse, longest-match, strict/discard/substitute, malformed UTF-8, and chunk
semantics;
- every stream split used by the moved profiles;
- stateful MARC-8 designations plus ANSEL combining/spanning sequences at every
split, with a `<2.35x` reduction gate when a one-byte-chunk workload doubles;
- all 1,112,064 Unicode scalar values for both glyph-vector encoders;
- MSB- and LSB-first packed OML/OMS transports and named-order conflicts;
- atomic package stop/start/restart without stale routes;
- no `Iconvex.Specs` runtime reference, Core-only dependency, retained assets,
license identifiers, and package selectors.
- native ANSEL/MARC-8 substitution call paths plus MARC ETF digest tamper
rejection and package-isolated persistent-term ownership.
Production compile:
```console
ICONVEX_PATH=../iconvex MIX_ENV=prod mix compile --warnings-as-errors
```
Benchmark evidence and commands are recorded in `BENCHMARKS.md`.