| Comment: | fix(repo): verify with one sweep down the delta forest
Repo.Verify expanded every non-phantom blob on its own with content.Verify. Each expansion re-applies the blob's whole delta chain, so the cost grows with the square of chain length. On a clone of fossil-scm.org's repository (67,894 blobs, chains averaging 532 deltas and reaching 2,546) repo verify took 49 minutes of CPU on both main and this branch, against six and a half minutes for fossil test-integrity. content.ExpandAll already walks the delta forest from its roots and applies each delta once, binding every result to its name; internal/verify uses it. Verify now goes through it, with the same blob selection (size >= 0), and names the failing rid in its error. The same clone verifies in 19 seconds. |
|---|---|
| Timelines: | family | ancestors | descendants | both | main | trunk | feat/submanifest-reader |
| Files: | files | file ages | folders |
| SHA3-256: |
6f269e32a95fa74e70835d0a1b29f2d5 |
| User & Date: | [email protected] on 2026-10-21 18:45:52.000 |
| Other Links: | branch diff | manifest | tags |
|
2026-10-21
| ||
| 19:12 |
fix(dst): generate clusters after the run with fault injection suspended
TestScenarioClusterConvergence calls content.GenerateClusters once the simulation is over, to check the API on a repository of 500 blobs. Buggify was still armed, so at hostile seeds 11 and 23 a write-path site corrupted a cluster artifact, blob.Store's round-trip check refused it, and the test failed on the refusal. That refusal is the safeguard working. The call now runs with injection suspended, as the invariant checks and fixtures do. check-in: 0be3dddeae user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 18:45 |
fix(repo): verify with one sweep down the delta forest
Repo.Verify expanded every non-phantom blob on its own with content.Verify. Each expansion re-applies the blob's whole delta chain, so the cost grows with the square of chain length. On a clone of fossil-scm.org's repository (67,894 blobs, chains averaging 532 deltas and reaching 2,546) repo verify took 49 minutes of CPU on both main and this branch, against six and a half minutes for fossil test-integrity. content.ExpandAll already walks the delta forest from its roots and applies each delta once, binding every result to its name; internal/verify uses it. Verify now goes through it, with the same blob selection (size >= 0), and names the failing rid in its error. The same clone verifies in 19 seconds. check-in: 6f269e32a9 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:51 |
fix(dst): write scenario fixtures with fault injection suspended
The simulator arms Buggify when it is built, and the scenarios seed their fixtures after that. Two setups dropped blob.Store's error, so a store the injection failed left an empty UUID, and TestScenarioAuthRestrictedCaps panicked in blob.Exists's precondition when it asserted on it. The seed sweep hit this at adversarial seeds 5 and 8. seedTx suspends injection for the fixture transaction and fails the test if it does not commit. Every unchecked setup transaction in the package now goes through it. check-in: c796b51895 user: [email protected] tags: feat/submanifest-reader, main, trunk | |