--- id: fork-provenance-and-floor name: Fork provenance register completion + inherited-test floor green status: completed depends_on: [fork-port-connection-watcher, fork-rederive-queue-ops] scope: narrow risk: low impact: component level: implementation tags: [wave-2, substrate] --- ## Description Close out the fork's bookkeeping and verify the test floor end-to-end (ADR-018's adoption discipline; ADR-011's tests clause): - **`PROVENANCE.md` delta register**: entries for every delta the port actually made, category-tagged per ADR-018's categories — the three watcher deltas (W-1, W-2, dead-man's switch), the table-family rename, the bootstrap re-keying, the drops (recorded as not-ported), the re-derivation (new code, contract-derived names), and any mechanical adaptations the port surfaced that the plan didn't anticipate. Each entry: what, why, the decision citation. - **License/provenance cross-check**: the notice matches the actual ported content; the register's revision citation (`f4e53c6`) matches what was actually diffed. - **Test floor**: run the full engine-crate test suite (inherited + contract-property) as one gate; fix or explicitly record any inherited test that the deltas legitimately changed (e.g. the dead-man's-switch panic test becomes a watcher-fatal-death test). - **Lineage-diff sanity pass**: produce (locally, not committed) the diff of the substrate subtree vs. the honker-core sources at `f4e53c6` and skim it for accidental divergence — anything not covered by a register entry is either fixed or registered. This is the wave-2 review's primary input. ## Acceptance Criteria - [x] `PROVENANCE.md` register complete: every delta categorized and cited; no unregistered divergence from the lineage - [x] License notice accurate; revision citation verified - [x] Full substrate test floor green in one run; changed inherited tests documented in the register - [x] Lineage diff skimmed; findings recorded ## References - docs/architecture/decisions/018-provenance-register-and-cherry-picks.md - docs/architecture/decisions/011-sqlite-substrate-fork.md (tests clause) - docs/research/quality-read-honker-core.md §6 ## Notes - **The lineage read of record is `quality-read-honker-core.md` §6 — not a diff.** Task lines 30–31 cite `quality-read` §6 for the lineage vs. ported-tree comparison. §6 is the prose keep / re-derive / drop scope register; a mechanical full-coverage line-by-line diff does not exist as a document. The gate was therefore performed as: §6's prose scope (plus `docs/research/reference-honker-machinery.md` for line-cited verification) read first, the ported tree read against it in full coverage (not spot sampling), then a mechanical `diff -u` of the extracted lineage sources against their closest substrate counterparts as the corroboration pass. Both methods agreed on every divergence; the findings below cite the actual artifacts (subagent report + local diff files, `/tmp/opencode/`, not committed). - **Lineage-diff findings** (all now register-addressable): scheduler pause/resume/list/update unregistered as a drop → D-21; two kept-machinery `in_savepoint` regression tests whose re-derive-side drivers weren't ported → D-22; two lineage durability tests (python-child crash recovery, soak) not ported → D-23; micro-deltas (error-text re-owning, thread name, clippy lint shape) → D-24/25/26; and a substrate-side orphan `pressure_deadline_is_bounded` placeholder test (asserted only that time moves — a tautology, never part of the lineage or the port plan) → removed from `ops.rs`'s pressure suite. That removal — the gate's only code change — is a test-deletion, not a behavior delta; it is recorded here rather than as a register entry because the register records divergences from lineage, and this added nothing. - **D-12's enumeration was annotated in place** (per ADR-018 §2's amendment-permitted class — correcting the record, not the story) to pin the scheduler surface's register/tick/soonest/unregister shape and cite D-21 for pause/resume/list/update. - **Acceptance criterion 3 ("changed inherited tests documented in the register") — the dead-man's-switch test example in the task text is D-07's recorded landing** (`update_watcher_dies_cleanly_on_file_ replacement` asserts `join() == Ok` where the lineage asserted a panic payload); the *dropped* non-adapted inherited tests are the D-22/D-23 rows. All inherited floors that the delta work changed are therefore register-visible. - **Test floor**: the single-run gate was exercised repeatedly — workspace runs (23 core + 3 contract-suite + 83 substrate = 109 tests green) plus a 3× repetition of the substrate crate run and a 5×-grep sweep with zero failures. One transient first-combined-run substrate failure did not reproduce across 4 subsequent full runs and 4 additional `cargo test -p alkstore-sqlite` repetitions; the flake is unattributed (temp-file-based concurrency tests are the suspect class). Test floor is green; the watch item is recorded here for wave-2 review, not as a blocker. ## Summary Gate-time completion of the fork's bookkeeping: the lineage diff (honker-core @ `f4e53c6` `f4e53c6b83ad2d6979c04098d576db024ce7e98d` vs. the ported substrate) was produced locally and skimmed end-to-end by a dedicated full-coverage read plus mechanical `diff -u` corroboration; every divergence found is register-addressable. `PROVENANCE.md` completed: D-21..D-26 appended (scheduler pause/resume/list/update drop → D-21; dropped in_savepoint regression-test drivers → D-22; dropped python-child crash-recovery and soak durability tests → D-23; error-text/thread-name/clippy-shape micro-deltas → D-24/25/26), D-12's scheduler enumeration annotated in place, gate-time completion note added to the delta-register header. License/provenance cross-check: the bundled LICENSE's Apache-2.0 and MIT texts verified byte-verbatim against upstream `LICENSE-APACHE`/`LICENSE-MIT` via `git show f4e53c6:…`; the full fork-point hash, date, and package name `node-v0.5.1-10-gf4e53c6` re-verified against the reference checkout; workspace license = MIT OR Apache-2.0 = upstream — the notice statement matches the tree. Test floor: workspace `cargo test` (23 + 3 + 83 = 109 green in one run) with repetition sweeps clean; one unreproducible first-run transient noted in the register's watch items, not blocking. One substrate test removed (`pressure_deadline_is_bounded`, a tautology placeholder with no lineage counterpart). The register now carries D-01..D-26 plus an empty cherry-picks section (append-only), and every divergence from the lineage is register-entered. Verified: `cargo build`, workspace `cargo test`, `cargo clippy --all-targets -- -D warnings`, `cargo fmt --check` all clean.