# Artio: original generated numeric codecs and public fixed-scale configuration

## Outcome

Both hosts pass the new finite codec capability gate. Each independently builds
19 generated Java files and 32 compiled classes (including the fixture and
generator), exercises 720 real writer/decoder vectors and checks 7,200 original
numeric getter reads. All generated sources, compiled classes and vector bytes
match across HP and SCAN. Fifteen actual malformed input processes and twenty
altered-output controls refuse per host. The focused source suite passes 106
tests with zero selected skips. Every preserved runtime file remains unchanged.

This is no new production Session, clock, phase, runtime-installation, physical
or report-grade admission. No result cell or latency value is produced. The
existing Artio v10 Session and physical diagnostics keep their original grades.
The full benchmark plan remains incomplete.

## Original SDK configuration and exact wire proof

The SDK artifacts remain Artio 0.182 with the roster source declaration
`5d1bb3b2deed9c5865e8584d23bb37c48fde048a`. The existing SDK build receipt
and runtime provenance are authenticated by their previously retained hashes.
That declaration is kept distinct from independent source-to-Maven-release
attestation; this gate checks the actual supplied JARs. All 26 current runtime
files are inventoried before and after; all 21 library JARs match the original
SDK receipt. The old adapter JAR, launcher and provenance stay unchanged.

The separate canonical dictionary declares actual PRICE/QTY numeric fields,
CHAR/INT fields, exact D/8/V/W body order and complete repeating groups. The
original public `CodecGenerator` produces the encoders and decoders. This does
not reuse the Stage 2 dictionary's STRING price/quantity configuration.

The native fixture calls public generated setters/getters, group APIs and
`Encoder.copyTo`; its reflection is confined to this finite capability tool.
No measured path or performance result is inferred from reflection. All wire
bytes, BodyLength and CheckSum come from the original generated Encoder and
SDK buffer. Required quantities/prices are read back through original
`ReadOnlyDecimalFloat.value()/scale()` and compared independently, including
all twenty depth-ten entries. There is no hand-written wire encoder or numeric
field declared as STRING to hide formatting behavior.

| Configuration | Actual vectors per host | Exact canonical frames | Disposition |
| --- | ---: | ---: | --- |
| Original normalized number format: forward, reverse and public copy | 360 | 78 | All values and group associations pass; 282 fractional-spelling differences remain explicit |
| Public fixed-scale numeric configuration: forward, reverse and copy | 360 | 360 | All four canonical bodies pass byte/order/spelling checks |

The fixed-scale configuration first supplies a normal original SDK decimal,
then uses the encoder's **public mutable decimal getter** and original
`DecimalFloat.value(long).scale(5)` setters. These setters preserve the requested
representation. `MutableAsciiBuffer` and `DecimalFloat` are final classes;
neither is replaced or patched. There is no private reflection or field access.
Prices still use the original numeric formatter. Typed extraction is projected
back to the canonical scale only for the separate verification column; the
cold reader checks actual encoded wire bytes independently.

The public body copy leaves Session headers to its caller and normalizes copied
decimals. After a copy the fixture supplies the same original public header
fields and explicitly reapplies the same public price-scale configuration.
Neither behavior is silently treated as a copied envelope or stable copied
presentation. Fifteen malformed input processes exercise finite shape/count,
flow/step/kind, group, precision, quantity and envelope boundaries.

## Independent replay and provenance

The private reader recomputes the complete 120-case, six-mode matrix against
`canonical_spec`, SDK numeric values/scales and strict framing/order/checksum
rules. It authenticates sealed source/fixture inputs, actual compiler/JVM
commands, generated source/class hashes and all SDK snapshots. JVM class-load
logs prove original `DecimalFloat`, `MutableAsciiBuffer` and Encoder code comes
from the original Artio JAR; all eight generated business encoder/decoder
classes load from the new bound output directory. Missing, borrowed and
duplicate class-source observations are refused by source tests.

Twenty mutations of actual output refuse without stale-hash shortcuts: missing/
duplicate vectors, wrong marker, altered columns, typed numeric value/scale/tag,
seven well-framed business value/scale/group changes, typed extraction and the
SDK envelope. The independent local replay reproduces each host's complete
cold result exactly after collection, without a new JVM build or socket.

All heavyweight work follows host status/process/memory checks and an outer
isolated CPU lease. HP requests high priority. SCAN queues behind another
owner's isolated SDK compile, then qualifies alongside shared work. These
functional leases carry no timing grade. Both durable services finish zero,
MainPID zero. No other owner's process, queue or source is changed.

The native development attempts remain separately retained: the first lacks
the generator's existing SBE-tool dependency; the second exposes the mistaken
assumption that a public body copy includes its Session envelope. The third
prototype and both published-source formal runs pass after declaring the
original generator dependency and supplying the copied message's header.
No failed output or original SDK data is overwritten.

## Remaining Session boundary

This minimal dictionary intentionally has no administration messages. Its
original generated `FixDictionaryImpl` returns null for administration codec
factories. It is a **codec capability input**, not an installable Session
configuration. A complete production dictionary must retain original SDK
Logon/Heartbeat/TestRequest/Logout/recovery factories and separately qualify
actual Session/Connection behavior, extraction owners, clocks, phases and
physical reports. The existing raw-string v10 driver is not relabelled, and no
unchanged physical rerun is a next step. Java/SBE frozen paths and the benchmark
public manifest remain outside this scoped work.

## Exact pins

| Item | Commit or SHA-256 |
| --- | --- |
| Generator, dictionary, fixture and initial source gate | `bb6a27c81d` |
| Formal source and independent collected-path binding | `0ab88f56e993936731c43447888f1eb4593d0f63` |
| Original SDK build receipt | `c7754f815348c94972b6992e8da9da6be1231c6df5c2aa173c519d20a34d7f11` |
| Original runtime provenance | `c03d4fb5ff247292c407e68eeffa0ebd43244153602a59c222b122fb0994f603` |
| Original Artio codec JAR | `b3ae8b998f9036e71a1b1cdbc2c18061aa428a0f5b76f8c1a21c03fda1dbfabc` |
| Original Session codec JAR | `7938ab3a366409640b6038ce97e55720364e80664ee3a0d7abd65f67f5482b31` |
| Shared 720-vector output | `7e901ff2aa3bb432194c3de339784ee82bfcd60e05db3eb0b8ce2c025a28292c` |
| Independent reader | `b4aedba2593038d358a351ed4ef34fd297e52ee2729c39822626ec3d8c732d7a` |
| HP input manifest | `a1846641329b80abf6bd14743d7b63822315aef3c7e20cddec6d2c68bf966542` |
| HP native receipt | `df8b47004a3359493f5b404c5b2b181116fb8b1e132a7350f79b49e6d1cb5cc2` |
| HP cold review | `e65243432596f236fcbab9d0de7a578cba7d10c213b87ba80f1cb85c555c77a0` |
| HP semantic controls | `c0f9677423976985583aab5bad4b45a7a999625f49cc4bda53237c4a0e9a41c0` |
| HP collected index | `a9476236543a9722f5dd46ac6b002d454e8a7b7f70ba9dc3606f113e7219093e` |
| SCAN input manifest | `350c7f1668c240c2536247e44c61216fb813053ef1216af553966ac686f0b133` |
| SCAN native receipt | `0daa2d56bb534e1071a0dd7878faadd8c54f664fdd5b76fd473234603a0b2134` |
| SCAN cold review | `fa03a685db629be1d32414a61c15f8353d54078b51a458c1191785e4408242a6` |
| SCAN semantic controls | `f6735f29050c8e71b7ca49479bf40c0baf4248b65cbe7b4ac41472524b618962` |
| SCAN collected index | `0bf8a20ec92e29b47679a54ac235665ae08d2bba039bedbe3d870a026e1fb6fc` |

Working roots are `~/build/codex-fullbench/libhft/artio-writer-qualification-20261025-v1`;
bounded local reviews use `artio-writer-review-20261025-v1/{hp,scan}`. Services
are `codex-fullbench-artio-writer-20261025-v1`. No raw timing/sample series exists
in this capability gate; no CDF or performance cell is published.
