# Evidence drift note — 2026-10-29

This note records a hash mismatch inside a sealed evidence package, so that the
mismatch is a documented event rather than an unexplained red result.

## What moved

Package: `docs/tsa/2026-10/` (created 2026-10-28, commit `835099b`, PR #370).

| | |
|---|---|
| Manifest | `docs/tsa/2026-10/SHA256SUMS` |
| Manifest sha256 | `e6423362e7f2fe714491940902cb7d274d2789d52b94184e7ae5e3de8be4d1dc` |
| Entries | 9, paths relative to this directory |
| Re-checked | 2026-10-29, against the working tree at `main` |
| Match | **8 / 9** |
| Mismatch | `paper-story.md` |

```
listed         9553c38d89f8d774eab166148a84fc7d345903fc4bd922f2a5041e099e95fd9d
now (10-29)    c4960c57d21dd67d6284c0c2896b1b65a0656ffd4286b77a7a984db0a5e4c42e
size (10-29)   21521 B
```

## Why

`docs/tsa/2026-10/paper-story.md` was sealed at 15,470 B in commit `a8ec2d9`
(2026-10-28T20:59:16+08:00, PR #380) and extended to
21521 B by `bdf3e6f` (2026-10-29, PR #389), which rewrote Contribution 3 around
the 2026-10-29 audit: the S0–S4 disturbance table, the mutation-test evidence, and
three claims narrowed to what the evidence supports.

That is the whole change: one document edited on purpose, in a normal review, with
the diff visible in git history. No evidence file was replaced, no manifest was
rewritten, no token was re-minted.

## What was not done, and why

The old `SHA256SUMS` **stays byte-identical**. Re-generating it would destroy the
only thing the package proves — that on 2026-10-28 these were the digests — and
minting a fresh RFC 3161 token over a newer manifest would assert a new fact about
a newer file, not repair the old one. A timestamp cannot be back-dated, so
"re-sealing 2026-10-28" is not a thing that exists.

The tokens in this package remain valid for their own subjects:

| Token | Subject | Status |
|---|---|---|
| `lg-111` | `cyclonedx-data-loss-proof-202610.md` | unchanged |
| `lg-113` | `repo-commits.txt` | unchanged |
| `lg-114` | `verify_cyclonedx_data_loss.py` | unchanged |
| `lg-115` | `ASSET-MANIFEST.md` | unchanged |

## What a verifier should see

Running `scripts/claim-evidence/verify-evidence.cjs` (repo `fibemate-tools`) against
this manifest should report **exactly one** file mismatch, on `paper-story.md`, and
nothing else. Any additional mismatch is a real drift and should be investigated.

This is the same distinction the package itself is about: a record proves what was
true when it was made. Reading it as a statement about today is the error, not the
record.

## A second snapshot, same phenomenon

`docs/tsa/2026-10-28-retire-ml-kem-768-td/SHA256SUMS` (1,921 entries, sealed by
`lg-110`) is a whole-tree snapshot taken at commit `4064ba8`. 29 of its files differ
from today's tree, including `README.md`, `www/index.html` and `packages/pqc-kem/*`.
That is drift by construction: the repository kept moving after the snapshot. The
token seals the manifest bytes, and those are unchanged. It is noted here so that
nobody hashes the current tree against it and concludes the archive was tampered
with.

## Second edit: 2026-10-30

`paper-story.md` was extended again in the review series that added
`## Evaluation: the deploy that returned 0` — the 2026-10-30 delivery-gate finding
(commit `6c05152`, described in the document itself). Nothing else in the package moved; the
manifest and every token are unchanged.

```
listed         9553c38d89f8d774eab166148a84fc7d345903fc4bd922f2a5041e099e95fd9d
now (10-30)    55512568afae82cde6381688bb90162879b41cd17d869e4d7f65dbe22b074a43
size (10-30)   27407 B
```

The earlier pair (`c4960c57…`, `21521 B`) is kept in place, dated, rather than overwritten:
this note exists because each observation belongs to a date. `SHA256SUMS` is still
byte-identical, and a verifier should still see exactly one mismatch — on this file — whose
current digest is the 2026-10-30 value above.

Signed-off-by: 刘天赫 <research@fibemate.net>
