Current section
Files
Jump to
Current section
Files
iconvex_platforms
TDD_LOG.md
TDD_LOG.md
# TDD Log
## Platforms Phase 2
### RED — frozen package contract
- Added the exact 117 byte-registration contract from `SURFACE_MANIFEST.tsv`.
- Added the exact 73 manifest provider contract plus three package-owned IBM
provider relocations required to avoid ICU Archive ownership collisions.
- Added one-transaction application lifecycle, restart, asset, package-license,
and Specs-independence expectations before implementation.
Command:
```text
ICONVEX_PATH=../iconvex mix test test/package_contract_test.exs
```
Result: **4 tests, 4 failures**. The package facade/provider relocation API did
not exist and the package metadata retained only the root LGPL license.
### GREEN — exact package, runtime, and artifact contracts
Implementation discovery found seven additional IBM runtime dependencies hidden
behind the three manifest-visible hazards. All ten were copied into package-owned
provider IDs rather than retaining an `Iconvex.Archive` dependency.
The completed contract is:
- 117 canonical codec registrations.
- 237 aliases and 354 unique registry names.
- 84 package-owned table providers: 73 manifest providers, 10 relocated IBM
providers, and the standalone glibc IBM423 provider.
- No runtime `Iconvex.Specs` reference and no `Iconvex.Archive` dependency.
- Five package-owned IBM additional-code-page maps; the DEC 1287/1288 source
maps remain repository test/research inputs and are excluded from the Hex
artifact.
Verification:
```text
ICONVEX_PATH=../iconvex mix test --seed 0
# 194 tests, 0 failures
ICONVEX_PATH=../iconvex mix test --seed 424242
# 194 tests, 0 failures
MIX_ENV=prod ICONVEX_PATH=../iconvex mix compile --warnings-as-errors
# success
```
The CP1090, Evertype source-qualified, and VietUnicode VNI benchmark contract
tests all passed their 30x native/reference ceiling and scaling gates. Observed
worst ratios in the recorded quick runs were 5.161x, 2.168x, and 1.15x,
respectively.
The final local-only Hex dry build completed with publishing disabled:
```text
env -u ICONVEX_PATH MIX_ENV=prod mix hex.build
# iconvex_platforms-0.1.0.tar
# 181 packaged entries; 84 packaged table providers
```
The final artifact digest is recorded in the release handoff rather than inside
this packaged log, which avoids a self-referential checksum. No package was
published and no branch was pushed.
### RED/GREEN — Core extension API floor
Integration established that `Iconvex.Extension` first ships in Core 0.1.1. A
package contract was added before changing the dependency:
```text
ICONVEX_PATH=../iconvex mix test test/package_contract_test.exs
# 4 tests, 1 failure: expected ~> 0.1.1, found ~> 0.1.0
```
Both the released and `ICONVEX_PATH` dependency branches now require
`iconvex ~> 0.1.1`; the contract and complete suite pass.