Experiment ablation local prototype run 01 - kmosoti/FabricO11y GitHub Wiki
Historical report imported 2026-10-10 from
docs/experiments/ablation/local-prototype-run-01.md. Original SHA-256:364f92ab08349e8a22b31b69f2e9fd2ba94a918740c39f4aecd1afe2ec46c3a3. Measurements and outcomes retain their stated revisions. Links and local environment labels are normalized;$FABRIC_DATAis the mounted experiment drive. See evidence policy.
Local prototype and collection correctness, run 01
Status: the integrated lifecycle and its focused checks pass. The full E3 corpus and registered costs complete the separate evidence gates in the completion contract.
Collection boundary
The S5 profile accepts a capped offline OTLP/JSON Logs file and caller-owned identity configuration. It preserves physical record and attribute order, duplicate attribute keys, supported scalar values and timestamp-presence information. It rejects unsupported structures, unknown or duplicate object members, explicit nulls, range overflow and known dropped data. All validation precedes output creation. This is a restricted profile, not a conformant network receiver or a source-completeness claim.
Two independent adapter candidates passed the 11 frozen mapping tests and two
clarification tests. Candidate A was selected after equal gates with the smaller
implementation. Its collect.rs SHA-256 is
17299a704eb5612fc55bf84c2101be682c2734b93814fe40dcec58049a04afe0.
GPT's seven independent tests passed. Four scratch defects failed their intended
assertions with exit 101: dropping a LogRecord, trusting a telemetry tenant value,
dropping duplicate attributes and accepting unknown fields. Clean controls exited 0.
Claude's nine combined adapter/CLI probes also passed, including float bits,
ordering, source-identity overflow, capacity-1 retry and checkpoint mismatches.
Both families approved the unchanged adapter. See the collection artifacts (local evidence omitted from stage).
CLI selection and repairs
Both lifecycle candidates initially passed three frozen process tests. Broader
capacity/batch combinations found that candidate A drained only one final batch and
could report success with queued events lost. Candidate B fully drained the queue
and was selected. Both candidates initially collapsed duplicate query members via
serde_json::Value. B now checks the required field set, then deserializes the
original bytes into the typed query so duplicates are rejected.
Independent review found that B could publish a valid 75,498,948-byte FOL2 log even
though the CLI contract caps every file input at 64 MiB. A new regression failed
before repair (exit 101). B now checks log length before opening/replaying it in
publish and existing-log ingest. This limits the research CLI; the general EventLog
API retains its existing behavior. The repaired regression and six other CLI tests
passed on ext4. GPT repeated the large-log refusal and 48 process probes; Claude
repeated all seven CLI tests. Both approved final fabric-research.rs SHA-256
a75d6e6585649d2c75172085a3e4c7761db4741e22f90198798f7a98628fc2ba.
The CLI artifacts (local evidence omitted from stage) retain original failures and repairs.
Reproduce the integrated lifecycle
From the repository root, use a fresh output directory whose parent already exists:
mkdir -p target
python3 -B tools/bench/run_prototype.py target/prototype-demo
The recorded run exited 0 and preserved 21 separate process commands. It adapts
caller-authored Log input, ingests through a capacity-1 buffer, publishes a snapshot
and checks a complete answer. An identical ingest retry changes no log bytes. A new
partial query then resumes through a cold-directory move and a missing block;
verification refuses the still-incomplete answer. Restoring the retained block
closes the same snapshot with positions [0, 2]. Removing the manifest makes query
fail; same-root rebuild restores it. A late event is appended and published as a
successor. Reusing the old checkpoint is rejected; the new snapshot verifies as
[0, 2, 3]. Earlier source and checkpoint files remain intact.
The preserved lifecycle and validation artifacts (local evidence omitted from stage) include every command/exit, inputs, publications, checkpoint digests, output hashes, binary/source hashes and illustrative elapsed times. Its ingest-to-first-complete query observation includes subprocess launch and report checks on this shared WSL2/ext4 host. One tiny lifecycle observation is not a latency benchmark.
The integrated research test command exited 0 while explicitly skipping only the
separately completed expensive E3 corpus on the selected B body. The eight layout tests passed. The Linux
partial-read/EIO harness executed its two normally ignored tests with observed
injections and exited 0. cargo test --offline --locked --all-features passed all
25 root integration tests (exit 0). Source-pinned review and these finite checks
do not establish physical power-loss safety, network delivery, clustering or
malicious-executor correctness. The prototype architecture
and experimental decision
state the retained-source and external-trust assumptions.