9.9 KiB
Delta 0.3.14-pre.005 — preuve conservative de coverage redondante
Base requise
0.3.14-pre.004
workspace.package.version = 0.3.14-pre.4
deltas/0.3.14/pre.004.md présent
Gate de la base
Le gate opérateur de 0.3.14-pre.004 est validé avant ouverture de cette tranche :
cargo fmt --all : PASS
cargo fmt --all -- --check : PASS
audit Rust workspace rules : PASS
audit Markdown tables : PASS
cargo check --workspace : PASS
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS
cargo test -p ksp-onchain-transport-lib --all-targets --all-features : PASS
cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features : PASS
Le gate Transport comprend notamment :
391 unit tests : PASS
public_api : 53 PASS
release_completeness : 46 PASS
smokes live : ignorés par défaut conformément au contrat existant
Le gate Worker comprend notamment :
120 unit tests : PASS
cross_layer_completeness : 8 PASS
dependency_boundary : 19 PASS
hardening : 29 PASS
public_api : 20 PASS
release_completeness : 6 PASS
Objectif
Implémenter strictement la tranche pre.005 du plan 035 :
matérialiser les relations conservative Exact / Superset
matérialiser des epochs et ranges de coverage run-local bornés
n'autoriser une preuve redondante que depuis une source distincte
exiger un commitment strictement identique
exiger que l'epoch couvre intégralement la plage du gap
interdire toute équivalence opportuniste entre familles exactes différentes
conserver KnownReferences impropre à TargetCoverage
ne modifier encore aucune décision runtime de supervisor
ne déclencher aucun repair HTTP et aucun replay supplémentaire
Relations de coverage
RawTransactionIngestCoverageScope possède maintenant une relation privée et directionnelle :
FullLedgerTransactions -> FullLedgerTransactions : Exact
FullLedgerTransactions -> ExactSourceScope(...) : Superset
ExactSourceScope(family, fingerprint)
-> ExactSourceScope(même family, même fingerprint) : Exact
autres combinaisons : aucune relation prouvée
Cette relation est volontairement conservative.
Deux scopes exacts qui partagent le même fingerprint mais pas le même family_code ne sont jamais considérés équivalents. Ainsi, par exemple, aucune correspondance standard_logs <-> helius_transaction ou standard_block <-> yellowstone n'est inventée à partir d'une similarité de sélecteur.
La relation est également indépendante de l'identité provider/endpoint : cette indépendance vient uniquement du scope sémantique déjà normalisé, tandis que l'obligation de redondance exige une source_key différente.
Commitments
La redondance requiert un commitment strictement identique :
Confirmed couvre seulement Confirmed
Finalized couvre seulement Finalized
Aucune hiérarchie Confirmed <-> Finalized n'est inférée dans cette tranche.
TargetCoverage
La construction de RawTransactionIngestTargetCoverage réutilise désormais la relation conservative plutôt qu'une comparaison ad hoc :
un FullLedgerTransactions au même commitment subsume les requirements exacts
un requirement exact identique est dédupliqué
un scope exact cross-family reste distinct
un commitment différent reste distinct
KnownReferences reste interdit comme target scope
Aucune broadening cross-family n'est introduite.
Epochs et ranges de coverage
La tranche matérialise des contrats privés :
RawTransactionIngestCoverageRange
RawTransactionIngestCoverageEpoch
RawTransactionIngestCoverageEpochLedger
RawTransactionIngestCoverageRelation
Un CoverageRange est inclusif et rejette uniquement une plage inversée. Contrairement au GapRange, il n'est pas limité artificiellement à MAX_RAW_TRANSACTION_INGEST_REPAIR_RANGE_SLOTS, car un epoch de continuité saine peut être plus long qu'une seule obligation de repair.
Un epoch conserve :
epoch_id
source_key
commitment
scope
range inclusif
Le ledger est run-local et borné à :
MAX_RAW_TRANSACTION_INGEST_COVERAGE_EPOCHS = 256
Il vérifie :
IDs non nuls et uniques
next_epoch_id strictement monotone
borne de cardinalité
range valide
scope admissible comme configured target scope
source_key présente dans l'inventaire exact des capabilities
commitment et scope strictement identiques à la capability de cette source
Le ledger est initialisé vide avec les autres continuity contracts. Aucune coverage n'est pré-déclarée à partir de la simple configuration d'une source.
Preuve de redondance
Un epoch peut prouver une obligation uniquement si toutes les conditions suivantes sont vraies :
source de preuve != source cible
commitment de preuve == commitment requis
range de preuve contient intégralement le GapRange inclusif
scope de preuve relation Exact ou Superset avec le scope requis
Un epoch partiel, une source identique, un commitment différent, un filtre différent ou une famille différente ne ferment donc aucune obligation.
FullLedgerTransactions peut fournir une preuve Superset d'un scope exact au même commitment, parce qu'il représente toutes les transactions de tous les blocs produits. L'inverse est interdit.
Activation runtime
Cette tranche ne change pas encore la politique de source-loss/reconciliation :
aucun gap n'est fermé automatiquement
aucune source n'est maintenue en vie grâce à cette preuve
aucune terminalité fail-closed de pre.003/pre.004 n'est encore remplacée
pre.008 restera responsable de l'intégration de ces preuves dans le supervisor et le gap ledger. pre.005 fournit uniquement le modèle conservative nécessaire.
Tests ajoutés
Les unit tests Worker couvrent :
Exact pour même famille + même fingerprint
Superset uniquement FullLedger -> exact
absence de relation exact -> FullLedger
absence de relation pour filtre exact différent
absence de relation cross-family malgré fingerprint identique
source distincte obligatoire
commitment strictement identique
range complet obligatoire
ledger borné à 256 epochs
next_epoch_id monotone
capability source/scope/commitment obligatoire
Les canaris hardening et release_completeness garantissent en plus :
présence des contrats Exact/Superset/epoch
absence d'équivalence cross-family codée en dur
absence de hiérarchie opportuniste de commitment
absence d'exposition publique des nouveaux types de preuve
Fichiers ajoutés
deltas/0.3.14/pre.005.md
Fichiers modifiés
Cargo.toml
crates/ksp-worker-raw-transaction-ingest-lib/src/continuity.rs
crates/ksp-worker-raw-transaction-ingest-lib/tests/hardening.rs
crates/ksp-worker-raw-transaction-ingest-lib/tests/release_completeness.rs
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/continuity.rs
Fichiers supprimés
aucun
Version Cargo
Conformément à VER-ID-009, cette nouvelle prerelease synchronise la version workspace :
header Cargo.toml : 571 -> 572
workspace.package.version : 0.3.14-pre.4 -> 0.3.14-pre.5
Versions des fichiers modifiés :
ksp-worker-raw-transaction-ingest-lib/src/continuity.rs : 4 -> 5
ksp-worker-raw-transaction-ingest-lib/tests/hardening.rs : 28 -> 29
ksp-worker-raw-transaction-ingest-lib/tests/release_completeness.rs : 23 -> 24
ksp-worker-raw-transaction-ingest-lib/unit_tests/continuity.rs : 3 -> 4
Frontières préservées
aucun changement Transport
aucun changement Config
aucun changement Store
aucun changement Job Backfill
aucune nouvelle dépendance
aucune nouvelle feature
aucun repair HTTP
aucun replay Worker
aucun nouveau socket/actor/retry
aucun set_from_slot dans Worker
aucune nouvelle surface publique Worker
aucune équivalence cross-family opportuniste
aucune hiérarchie implicite de commitment
Validations exécutées dans le sandbox de préparation
python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
scan des frontières et de la surface crate-root Worker
comparaison exacte 0.3.14-pre.004 -> 0.3.14-pre.005
contrôle des versions de fichiers modifiés
contrôle du contenu de l'archive delta
unzip -t de l'archive delta
réapplication de l'archive sur la base puis comparaison byte-exacte
Validations non exécutées dans le sandbox de préparation
Le sandbox ne fournit pas le toolchain Cargo/Rust. Les gates suivants restent à exécuter côté opérateur :
cargo fmt --all
cargo fmt --all -- --check
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features
Décisions prises
coverage relationnelle directionnelle, jamais symétrisée implicitement
FullLedger est un superset d'un exact scope au même commitment
un exact scope n'est équivalent qu'à même family + même fingerprint
une redondance doit provenir d'une source_key distincte
un epoch doit contenir toute la plage du gap
aucune coverage initiale n'est créée depuis la configuration seule
pre.005 ne modifie pas encore la terminalité runtime
Questions ouvertes
aucune pour pre.005
Tranche suivante
pre.006 reste dédiée au scan HTTP de réparation : détection des capabilities run-wide réellement disponibles, fenêtres bornées, découverte getBlocks/getBlocksWithLimit conservative et récupération getBlock observed, sans broadening de scope.
Gate opérateur après application
cargo fmt --all
cargo fmt --all -- --check
python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features