# ISO namespace fixture

This is a constructed image observation, not a disc-aging study or a survey of reader compatibility.

## Result
Two files were written to one 67,584-byte ISO, closed, then read back with pycdlib 1.14.0.
All six file reads matched their input bytes. The 41-byte subject occupied one shared
data extent but had three names:

| Explicit lookup API | Subject name | SHA-256 |
| --- | --- | --- |
| iso_path | /REPORT.TXT;1 | 54a78eb13b3ab91ed58ff624a8a4994eb48d5c42062946f192e11e4fa08e603d |
| rr_path | /report-final.txt | 54a78eb13b3ab91ed58ff624a8a4994eb48d5c42062946f192e11e4fa08e603d |
| joliet_path | /Report final.txt | 54a78eb13b3ab91ed58ff624a8a4994eb48d5c42062946f192e11e4fa08e603d |

Looking up /report-final.txt through the other two APIs failed. The control used
SAME.TXT in the extension namespaces and SAME.TXT;1 in the primary namespace.
The semicolon-version suffix is part of this raw API result, not a claim that
all mounted filesystems show it.

The 21 checks include package pin, directory-entry counts, names, content,
missing lookups and shared-extent consistency. They are checks of one constructed
case, not 21 independent samples. A fresh replay under Python -O passed the same
checks. No statistical confidence interval is meaningful for this fixture.

## Reproduce
Download [probe.py](probe.py), [requirements.txt](requirements.txt) and optionally
[the original results](results.json). In a disposable Python environment:

```sh
python -m pip install --require-hashes -r requirements.txt
python -B probe.py fresh-output
```

The script writes a new namespace.iso and results.json; it refuses to overwrite
existing evidence. Compare rows, inputs, missingLookups and checks across runs.
Creation timestamps change the whole-image hash; do not mistake this for
different recovered payloads. Original image and replay evidence are retained
with the project. The public JSON identifies the original image and script hashes.

## Provenance and scope
The PyPI wheel is pycdlib-1.14.0-py2.py3-none-any.whl, SHA-256
a905827335f0066af3fd416c5cf9b1f29dffaf4d0914b714555213d1809f38d4.
[Release metadata](https://pypi.org/pypi/pycdlib/1.14.0/json) and
[upstream source/license](https://github.com/clalancette/pycdlib/tree/v1.14.0)
were checked on 2026-10-21. No package was added to the website dependency graph.
The fixture payloads and probe were created for this study; no third-party data
or library source is redistributed here.

The same library creates and reads the image. That is a limitation, not independent
parser confirmation. No device, mounted filesystem, UDF, multisession, symbolic
link, permission, power-loss or media-lifetime test was performed. Namespace
selection is explicit, not a measurement of OS defaults.

[Linux ISOFS documentation](https://www.kernel.org/doc/html/v6.18/filesystems/isofs.html)
explains separate extension and name-mapping options.
[ECMA-119](https://ecma-international.org/wp-content/uploads/ECMA-119_2nd_edition_december_1987.pdf)
defines the base file/volume structures.
[Optical archival guidance](https://hesela.com/tech/optical-archival/) explains
why an inventory should retain expected paths as well as hashes.
