v0.3.12-pre.007
This commit is contained in:
216
deltas/0.3.12/pre.007.md
Normal file
216
deltas/0.3.12/pre.007.md
Normal file
@@ -0,0 +1,216 @@
|
||||
<!-- file: deltas/0.3.12/pre.007.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.12-pre.007` — processing frontier run-local bornée
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
0.3.12-pre.006-fix.001
|
||||
workspace.package.version = 0.3.12-pre.6.fix.1
|
||||
```
|
||||
|
||||
Le gate opérateur communiqué pour cette base est entièrement vert : audits Rust/Markdown, `cargo check --workspace`, Clippy strict, 58 tests Worker et toutes les suites d'intégration associées.
|
||||
|
||||
## Objectif
|
||||
|
||||
Ajouter la processing frontier run-local prévue au plan sans anticiper reconnect/replay/repair :
|
||||
|
||||
```text
|
||||
source work observed
|
||||
pending / settled par slot
|
||||
oldest pending slot
|
||||
highest unblocked actually-observed settled slot
|
||||
latest-value snapshot projection
|
||||
```
|
||||
|
||||
La frontier reste strictement processing-only.
|
||||
|
||||
## Version
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.3.12-pre.7
|
||||
```
|
||||
|
||||
## Définition pending / settled
|
||||
|
||||
Un signal transactionnel devient pending seulement après validation de sa clé d'hydration et insertion dans le coordinator borné.
|
||||
|
||||
Il devient settled lorsque :
|
||||
|
||||
```text
|
||||
hydration HTTP -> Missing
|
||||
ou
|
||||
hydration HTTP -> Available puis ingress accepté par la queue centrale
|
||||
```
|
||||
|
||||
`BlockMeta` et `Slot` sont continuity-only et deviennent settled dès leur projection locale, sans créer de RAW.
|
||||
|
||||
Un signal non admis à cause d'un stop ou d'un fault reste pending dans la dernière projection de run. `settled` ne signifie jamais Store persisted/durable.
|
||||
|
||||
## Frontier
|
||||
|
||||
Le tracker privé maintient :
|
||||
|
||||
```text
|
||||
pending_total
|
||||
pending par slot
|
||||
settled par slot retenu
|
||||
oldest_pending_slot
|
||||
processing_frontier_slot
|
||||
```
|
||||
|
||||
La frontier est la plus haute slot réellement observée/settled située avant la plus ancienne slot encore pending. Sans pending, elle devient la plus haute slot settled effectivement observée.
|
||||
|
||||
Ainsi, une slot pending empêche explicitement toute progression à travers elle.
|
||||
|
||||
## Borne mémoire
|
||||
|
||||
Les slots pending sont conservées exactement. Les slots settled-only sont compactées par intervalles autour des slots pending : un seul maximum settled est conservé par intervalle.
|
||||
|
||||
La représentation est donc bornée linéairement par le nombre de slots pending distinctes, lui-même borné par le coordinator d'hydration. Un flux continuity-only sans pending se compacte à une seule candidate.
|
||||
|
||||
Aucun historique de slots non borné n'est conservé.
|
||||
|
||||
## Projection snapshot
|
||||
|
||||
Le source task émet une projection privée latest-value par `tokio::sync::watch` :
|
||||
|
||||
```text
|
||||
hydration_pending
|
||||
processing_frontier_slot
|
||||
oldest_pending_slot
|
||||
```
|
||||
|
||||
Le supervisor reste l'unique owner/mutateur du snapshot concret et applique ces valeurs via `RawTransactionIngestSnapshotPublisher`.
|
||||
|
||||
Les trois getters deviennent publics sur `RawTransactionIngestSnapshot`. Aucun nouveau type public ni module public n'est ajouté.
|
||||
|
||||
`WorkerActivity` considère désormais `hydration_pending > 0` comme activité réelle même si la queue centrale et la persistence sont momentanément vides.
|
||||
|
||||
## Sécurité / redaction
|
||||
|
||||
La projection ne transporte jamais :
|
||||
|
||||
```text
|
||||
signature
|
||||
filter id/value
|
||||
provider
|
||||
endpoint
|
||||
transaction/meta
|
||||
URL/header/credential
|
||||
remote error text
|
||||
```
|
||||
|
||||
Les erreurs de compteur/frontier utilisent uniquement des codes/contextes internes sûrs.
|
||||
|
||||
## Canaris ajoutés/ajustés
|
||||
|
||||
```text
|
||||
frontier ne traverse jamais une slot pending
|
||||
oldest pending avance après settlement
|
||||
frontier rejoint la plus haute slot settled lorsque tout pending est résolu
|
||||
compaction bornée des settled-only
|
||||
snapshot initial frontier vide
|
||||
snapshot latest-value des trois getters
|
||||
WorkerActivity active sur hydration pending
|
||||
public getters exacts
|
||||
source.run inclut le publisher frontier privé
|
||||
aucun ReplayInfo/from_slot/continuity_gap/repair
|
||||
aucun backend/direct protocol edge
|
||||
release completeness inclut les nouveaux canaris
|
||||
```
|
||||
|
||||
## Décisions prises
|
||||
|
||||
```text
|
||||
frontier = source-processing, pas Store durability
|
||||
Missing = settled source-processing
|
||||
Available = settled après send admission réussi
|
||||
continuity-only = settled immédiat local
|
||||
projection supervisor via watch latest-value
|
||||
pas de checkpoint persistant
|
||||
pas de claim monotone de blockchain completeness
|
||||
```
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
Aucune question ne bloque `pre.007`.
|
||||
|
||||
Restent réservés :
|
||||
|
||||
```text
|
||||
reconnect / from_slot / ReplayInfo / retention gap : pre.008
|
||||
races/retry/backpressure final : pre.009
|
||||
cross-layer completeness/security : pre.010
|
||||
live opt-in : pre.011
|
||||
```
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
deltas/0.3.12/pre.007.md
|
||||
```
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/src/lib.rs
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/src/runtime.rs
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/src/runtime_resources.rs
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/src/snapshot.rs
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/tests/dependency_boundary.rs
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/tests/hardening.rs
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/tests/public_api.rs
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/tests/release_completeness.rs
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/runtime_resources.rs
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/snapshot.rs
|
||||
docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.md
|
||||
```
|
||||
|
||||
## Fichiers supprimés
|
||||
|
||||
Aucun.
|
||||
|
||||
## Validations exécutées dans l'environnement d'assemblage
|
||||
|
||||
```text
|
||||
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
|
||||
```
|
||||
|
||||
Des scanners statiques ciblés vérifient également la borne du tracker, le blocage par oldest pending, les getters publics, le confinement Transport et l'absence de responsabilités `pre.008`.
|
||||
|
||||
## Validations non exécutées dans l'environnement d'assemblage
|
||||
|
||||
`cargo`, `rustc` et `rustfmt` ne sont pas disponibles dans l'environnement d'assemblage. Aucun gate Cargo local n'est revendiqué.
|
||||
|
||||
## Gate opérateur requis
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
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
|
||||
cargo tree -p ksp-worker-raw-transaction-ingest-lib --edges normal
|
||||
cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features
|
||||
cargo tree --duplicates
|
||||
```
|
||||
|
||||
## Non-claims
|
||||
|
||||
```text
|
||||
pas de reconnect policy Worker
|
||||
pas de from_slot Worker
|
||||
pas d'interprétation ReplayInfo
|
||||
pas de preuve replay
|
||||
pas de continuity gap fault
|
||||
pas de repair/backfill implicite
|
||||
pas de checkpoint inter-process
|
||||
pas de getBlock
|
||||
pas de nouveau backend/Config edge
|
||||
pas de smoke live revendiqué
|
||||
```
|
||||
Reference in New Issue
Block a user