nanobrush / docs /parity.md
nmarshall's picture
formats: add txt conversion cli
18d65b9
|
Raw History Blame Contribute Delete
5.34 kB

Reference coverage ledger

Initial source coverage, 2026-10-21. Owner for this ledger and the external dependencies listed in DEPENDENCIES.md: Nanobrush reference research. E01 establishes source coverage; E02 adds converter-only runtime observations. Rust DAT parity is scoped to the F29 fixtures below; no editor parity is claimed.

Every one of the 560 regular-member occurrences has its own path/hash/category/coverage/owner/follow-up entry in source-map.json. Direct include candidates, qualified calls, interrupt wrappers, tool registrations and literal-resource candidates remain attached to their source file. The human documents summarize behavior without copying the raw reference tree into ordinary Git.

Latest-build category Files Initial disposition Next contract/validation task
Core host includes 5 Source-indexed; native contract/adapter planned P4.03, P3.14 host behavior
Task clients 9 Source-indexed; service/protocol contracts planned P4.05
Top-level plugins 17 Source-indexed; native functionality planned P4.08, P7
Experimental plugins 5 Source-indexed; equivalent functionality or explicit scope decision required P4.09
IXPL utilities/misc 10 Source-indexed; needed functionality requires independent port P4.07
Model generator 1 Source-indexed; native generation target P9.06
Grammars 7 Grammar rules indexed; initial format map written P6.01–P6.10
CFG resources 15 Literal typed declarations indexed; full consumer semantics pending P8.09
Shader containers 3 Sections/uniforms indexed; selected output expressions reviewed P9.01–P9.04
BAT files 17 Text inventory and build/conversion boundary reviewed P4.12
Images 4 Byte inventory only in this pass; provenance/atlas meaning pending P9.05
Executables 3 Converter: both binaries decompiled and probed (E02); editor/compiler still header-only P3.06/P3.17
Other reference text 28 Encoding/line inventory; selected readmes/help reviewed P3.02; original licenses P0.04
Total 124 All regular members accounted for No category has complete runtime parity

“Lexically indexed” means identifiers/edges can be located, not that a complete language parser or host implementation is understood. “Text inventoried” means text identity/encoding/lines are known; it does not mean every paragraph has been semantically reviewed. CP1252 fallback is a decoding choice for indexing, not a proven application encoding contract.

Remaining mapping gaps

  • Complete consumer-derived config keys, dotted scope handling, localized string tables and dynamic key generation.
  • Dynamic file/resource names, implicit loader conventions, and actual compiler include precedence.
  • Static and dynamic plugin load/unload order, callback concurrency, task priority ordering and errors.
  • IXModel primitive semantics, native-editor DAT conformance, compiled plugin representation and editor/compiler runtime dependencies. Converter DAT widths/encoding/layout are specified in E02.
  • Full tool state machines, geometry algorithms/tolerances, shader bindings and file-conversion preservation.
  • Editor/plugin source discrepancies versus executed behavior. E01 ran no executables; E02 ran original converter copies only.

Keep the broad parent TODO tasks open until their promised behavioral evidence exists. The completed source-mapping subtasks record this pass without marking an entire subsystem reverse engineered.

Converter coverage extension (E02)

static.json covers the 183/193 managed methods in both distinct converter binaries with RVAs and hashes; the four 2015 members are byte-identical. probes.json indexes 101 controlled cases and every captured payload. DAT hierarchy is experimentally specified on this corpus; format edge cases and editor cross-validation remain P6.19/P6.20, and external consumers remain P6.16. Broad parent tasks stay open.

Rust DAT implementation (F29)

mb3-dat implements both converter DAT layouts. The five Rust integration tests cover all 58 captured DAT outputs with exact bytes, selected semantic fields, captured malformed-input rejections and version migration. Twenty-four unit tests and one doctest add boundary/resource/I/O checks and 5,000 deterministic mutations. See the compatibility matrix for deliberate strictness and the old signed-16 writer repair. Native-editor conformance, real-document coverage, independent consumer testing and remaining codecs stay open.

TXT and CLI implementation (E04)

The native TXT codec and CLI cover all 58 E02 DAT outputs through exact DAT→TXT→DAT reconstruction, seven text outputs through canonical semantic round trips, 16 direct TXT-input/DAT-output pairs and nine rejected malformed/lossy text inputs. Original formatting, guessed encodings, ignored arrays and property optimization are explicit differences in F30. CLI no-clobber/force publication, alias/symlink guards, validation before I/O and exit streams are tested separately in F31. Legacy external formats, editor behavior and other-platform execution remain open.