130 lines
6.7 KiB
Markdown
130 lines
6.7 KiB
Markdown
---
|
||
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. |