Skip to content

Commit e78dc6e

Browse files
committed
docs(delta): session-5c — PR#2 smoke version-skew fixed; A.3a carved + reviewed clean (fork #5)
1 parent 3fd0c60 commit e78dc6e

2 files changed

Lines changed: 81 additions & 0 deletions

File tree

DELTA_PR_SPLIT_PLAN.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,33 @@ Append-only. Newest entry at the top. Entry template:
548548
- Next action:
549549
```
550550

551+
### 2026-06-20 (session 5c — Opus 4.8) — PR#2 smoke fixed (version skew); A.3a carved + reviewed clean
552+
- **PR #2 (monolith) smoke failures diagnosed + fixed:** the `Delta Lake Regression Tests /
553+
smoke/delta-*` jobs failed on the fresh head — NOT a code regression, a VERSION SKEW. The
554+
regression diffs hardcoded `val cometVersion = "0.17.0-SNAPSHOT"`; the main-sync bumped the repo to
555+
0.18.0-SNAPSHOT, so the smoke harness couldn't resolve `comet-spark-...-0.17.0-SNAPSHOT.pom`. Fixed
556+
on `feat/delta-kernel-read`: (1) bumped the 3 diffs to 0.18.0-SNAPSHOT (`48a84f08d`), then (2) made
557+
`run-regression.sh` auto-derive cometVersion from the pom + overwrite the injected line post-apply
558+
(`940fea62f`) so future bumps never re-break it (pipefail-safe extraction). This `run-regression.sh`
559+
improvement flows into A.6b when carved.
560+
- **A.3a carved** onto `pr/delta-A2-buildgate` → branch `pr/delta-A3a-rust-driver` @ **`1a774d02d`**,
561+
fork review draft **#5**. 10 files +4374/-50. Survey agent mapped the carve. Verbatim driver
562+
modules (error/engine/predicate/scan/jni = 2622 lines), carved lib.rs (keeps planner stub, drops
563+
dv_reader/kernel_scan), TRIMMED real Cargo.toml (only driver deps; executor deps → A.3b). Gate
564+
cargo-tree assertion re-tightened to require delta_kernel (now real; contrib libcomet +11 MB).
565+
- **§5 (all green):** gated native build, **54 in-crate unit tests**, default native build unchanged,
566+
clippy ×2 feature states, gate-verify script, cargo fmt.
567+
- **Review (manual + /code-review high, 22 agents, 6 refuted / 6 survived) — 3 fixed, 2 documented:**
568+
fixed dead `crate::proto` re-export (DeltaScan/DeltaScanCommon → A.3b), unused datafusion `parquet`
569+
feature (→ A.3b), misleading `[plan_delta_scan]` doc-link. Documented (NOT fixed, verbatim monolith
570+
code, latent behind DV invariants): scan.rs:691/693 unguarded DV offset/sizeInBytes Arrow reads —
571+
candidate for a separate monolith-level hardening pass, not an A.3a divergence.
572+
- **Carve invariants verified:** driver set has zero deferred-module refs; A.3a touches ONLY
573+
contrib/native + native lockfile + gate script; stub planner.rs byte-unchanged.
574+
- **Next action:** carve **A.3b** (executor side: dv_reader, kernel_scan, real planner — replaces the
575+
stub) onto `pr/delta-A3a-rust-driver`. It re-adds the deferred Cargo deps (parquet, roaring,
576+
datafusion-datasource, futures, chrono*, comet-common, tokio) + the proto re-exports trimmed in 3a.
577+
551578
### 2026-06-20 (session 5b — Opus 4.8) — A.1 opened upstream (#4700); A.2 carved + reviewed clean
552579
- **A.1:** opened upstream as **#4700** (with AI-disclosure footer; new standing rule: every PR body
553580
ends with it). Apache CI is `action_required` (awaiting a maintainer to approve workflow runs for a

review-log-A3a.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Unit A.3a — Rust driver side — review log
2+
3+
Branch: `pr/delta-A3a-rust-driver` (based on `pr/delta-A2-buildgate`).
4+
Commit: `1a774d02d` (single commit; review fixes amended in).
5+
6+
## Carve (from `feat/delta-kernel-read`)
7+
10 files, +4374/-50 (the bulk is the two Cargo.lock regens: native +202, contrib standalone +~1.5k).
8+
- Verbatim copies: `error.rs` (61), `engine.rs` (468), `predicate.rs` (697), `scan.rs` (779),
9+
`jni.rs` (617) = 2622 lines of driver code, proven in the monolith (54 unit tests).
10+
- Carved `lib.rs`: declares the 5 driver modules + keeps the `planner` STUB; drops the
11+
`dv_reader`/`kernel_scan` module decls (A.3b).
12+
- Trimmed real `Cargo.toml`: only the deps the driver set uses (delta_kernel, object_store, arrow,
13+
url, jni, prost, serde_json, thiserror, log + proto/jni-bridge path deps). Executor deps
14+
(parquet, roaring, datafusion-datasource, futures, chrono*, comet-common, tokio) deferred to A.3b.
15+
- Gate-verify `cargo-tree` assertion re-tightened to require `delta_kernel` (now real, not a stub).
16+
17+
## Carve invariants (verified)
18+
- Driver set has ZERO non-comment references to deferred modules (dv_reader/kernel_scan/planner).
19+
- A.3a touches ONLY `contrib/delta/native/` + `native/Cargo.lock` + the gate script. No core, no JVM.
20+
- The A.2 stub `planner.rs` is byte-unchanged and still returns NotImplemented.
21+
22+
## §5 verification (all green)
23+
gated native build; 54 in-crate unit tests (cargo test); default native build unchanged; clippy
24+
(both feature states); gate-verify script (now asserts delta_kernel, contrib libcomet +11 MB);
25+
cargo fmt (native + contrib standalone).
26+
27+
## Review round (manual + /code-review high, 22-agent workflow: 6 refuted, 6 survived)
28+
**Fixed (folded into the commit):**
29+
- **[lib.rs] dead `crate::proto` re-export** (CONFIRMED): `DeltaScan`/`DeltaScanCommon` were re-exported
30+
but no driver module uses them via `crate::proto` (the stub planner imports them directly from
31+
`datafusion_comet_proto`). Trimmed to the driver's real proto surface
32+
(`DeltaDvDescriptor`/`DeltaPartitionValue`/`DeltaScanTask`/`DeltaScanTaskList`); A.3b re-adds the
33+
envelopes when the real planner lands. Consistent with the Cargo.toml "declare what you use" trim.
34+
- **[Cargo.toml] unused `datafusion` `parquet` feature** (CONFIRMED): the driver only needs
35+
`ExecutionPlan`/`SchemaRef`/`DataFusionError` (stub planner); dropped the feature (A.3b re-adds it
36+
for the real parquet scan). Lockfile unchanged (parquet stays via delta_kernel transitively).
37+
- **[lib.rs] misleading `[plan_delta_scan]` doc-link** (CONFIRMED): the module doc implied the
38+
crate-root `scan::plan_delta_scan` is what core's dispatcher calls, but core calls
39+
`planner::plan_delta_scan` (the stub). Reworded to disambiguate the two same-named functions.
40+
41+
**Documented (not fixed — verbatim monolith code, latent, not carve-introduced):**
42+
- **[scan.rs:691/693] DV offset/sizeInBytes unguarded Arrow reads** (PLAUSIBLE): `a.value(i)` without
43+
`is_null` on the DV size/cardinality fields, and an i32->u64 offset cast that would wrap a negative.
44+
Both are real mechanisms but gated behind Delta DV invariants (non-null sizeInBytes, non-negative
45+
offset) that valid tables never violate. This is verbatim, test-passing monolith code; fixing it in
46+
the carve would diverge A.3a from the monolith. Candidate for a separate monolith-level hardening
47+
pass, NOT an A.3a change.
48+
49+
**Refuted (6):** the `scan::plan_delta_scan` vs `planner::plan_delta_scan` name "collision" (two fns
50+
in different modules is fine in Rust), the arrow feature set (transitively fine), the CONTRIB_HITS>=2
51+
gate brittleness.
52+
53+
**State:** A.3a review clean. Ready to open upstream once A.2 (#4 → upstream) lands; depends on A.3a's
54+
base chain (A.1 #4700 -> A.2 -> A.3a).

0 commit comments

Comments
 (0)