Living board for Phase 1 4-Hands enablement (VDT-3145) and Phases 2–3 HF/LW research (VDT-3343). Near-term focus is 4H only — LT all-zones via allowlist. Progress refreshed 2026-08-03.
All five active PRs pushed and merge-gated: pakas #394 (425bf63c, incl. the P3 kl_edit_plius ACL gate), siunta #90 (aa31edc3), go-import #49 (7fc0030), veniship #743 (99f5a8b, → master = prod deploy), venipak-helper #43 (e868978, the two-file 2×4H country patch off the 0.8.2 tag). pakas #516 (HF/LW tests, 8bcfde19) stays parked off the 4H path. Sibling auto-4H is payer-gated on kl_4rp_auto everywhere it can be; veniship ships explicit-only (no read path — cron is the sole AUTO writer). LT posti_service1 flip gates: #394+VDT-3384 in prod · #43 merge → 0.8.3 tag + pakas pin · VDT-3395 re-weigh re-eval (new, Product-required) · 14/28-vs-6/12 € tariff reconciliation (Finance) · seed list four-vs-six (Sales) · prod probes on VPN. Approver briefing (all six PRs): briefing.
*OD-3/25/4/8/27 answered + Q14 YES (Evelina 2026-07-30 on VDT-3203). †Demo venipak_dev — re-probe prod.
| PR | Ticket | Head | What landed | Status |
|---|---|---|---|---|
| pakas #394 | VDT-3203 | 425bf63c | Cron → posti_service1; drop zone/payers/volume; bands LT 26–75 / LV·EE 31–90 (incl. 2×4H); sender+consignee gate; doubling LT>50 / LV·EE>60; pallet skip wired; VDT-3384 client mode; dev merged. Pushed 2026-08-01; follow-up fixes 7c94a2ad (08-02) and the P3 kl_edit_plius ACL gate 425bf63c (08-03) — every push gated on suites green + veni-guard 42/0; PR body + Jira refreshed (FVS cases f–k) |
Pushed — awaiting 2 approvals |
| siunta #90 | VDT-3204 | aa31edc3 | Order/import/UI predicates + both-country gate. Amended per ruling + pushed 2026-08-02 (24 files): creation-time auto-4H gated on the client-card switch kl_4rp_auto; bands 26–75/31–90 everywhere incl. JS validator + langs; pallet skip; cron-parity OOH; persisted-sender semantics. Suites green (36/36 · 44/44, 294 asserts); veni-guard 42/0; PR body + Jira refreshed (c.111510). Merge gates: helper 0.9.1 tag · Playwright when VPN returns · 2 approvals |
Pushed — merge gated |
| go-import #49 | VDT-3202 | 7fc0030 | Import validation; EE=31; both-country gate; silent strip if not allowlisted. Amended per ruling + pushed 2026-08-03: creation-time auto-4H gated on payer kl_4rp_auto (memoized, fail-closed); bands raised to 26–75/31–90 + LV/EE ceiling matrix; branch rebased onto dev tip (linear VDT-3202-only history). Suite 57/64 green on 7.4.33 vs MySQL 5.6; veni-guard 42/0 (+2 advisories, seq env 99000); PR body + Jira refreshed (c.111638 incl. FVS). Merge gates: veni-tests go-import API on VPN · 2 approvals |
Pushed — merge gated |
| — | VDT-3384 | in #394 | Client AUTO/MANUAL — default MANUAL; cron JOIN; seed legacy 4; blocks LT flip. Folded into the #394 branch and pushed with it (commit a71cff6c + the kl_edit_plius ACL amend). Review 2026-08-01: clean; e2e proves MANUAL skip. Seed list four-vs-six still open with Sales. |
In #394 · pushed |
| venipak-helper #43 | VDT-3203 | e868978 | The library half of 2×4H doubling: per-country low limit (LT 50 / LV·EE 60) in Price.php + label DirectionProvider.php, guarded scalar fallback; cut from the 0.8.2 tag (src diff = exactly two files) + 7 label tests; suite 170 green on 7.4.33. Review this one first — merge unblocks tags 0.8.3 → 0.9.1 → pakas pin ^0.8.3; inert until tagged (consumers pin tags) |
Pushed — PR open, unblocks tags |
| veniship #743 | VDT-3205 | 99f5a8b | Rate/order gate. Split reworked + pushed 2026-08-03; PR retargeted dev→master: rebased onto master 5caf391; explicit-request-only 4H with OOH-first on quote AND book; double-charge suppression on use_api_rates (provenance flag); EE 26→31; adversarial 2-verifier round found + fixed a PR-original global-rates service leak; confirm round CONFIRMED-SOUND. Suite 210/743 baseline-identical; veni-guard 42/0/0. Auto-detect DROPPED — veniship has no kl_4rp_auto read path (no legacy-DB conn); pakas cron stays sole AUTO writer. CAUTION: veniship master auto-deploys prod |
Pushed — merge gated (2 approvals · release OK = prod) |
| — | go-ws | — | No eligibility logic (never writes siunt_4rp — safe deferral), but inc/config.php:37 low=60 / no ceiling skews courier docs — config-only fix recommended, no PR yet |
Gap · config fix |
After Phase-1 deploy, opening z2/z3/z4 is UPDATE tbl_post_info SET posti_service1='1' WHERE posti_salis='LT' (optionally wave by zone). Cron no longer filters posti_zone.
Approvals ×5 · #43 merge → 0.8.3/0.9.1 tags → pakas pin · VPN-deferred suites (siunta Playwright, go-import API, demo probes) · VDT-3395 design + build · tariff 14/28-vs-6/12 (Finance) · seed list (Sales) · promotion + UAT · zero-kain_4rp + posti_service1 prod probes · Ops capacity · then wave-by-zone LT flip · 48h monitor per wave.
Stakeholder enablement summary: .workflow/4h-enablement-executive-summary-2026-07-29.html
| Severity | Finding | Fix |
|---|---|---|
| #394 blockers (pre-push / pre-prod) | ||
| Fixed 08-01 | Both local commits carried Co-authored-by: Cursor trailers | Amended — branch rewritten to a71cff6c · a37ceb05, trailers gone |
| In review | Published venipak-helper 0.8.2 is scalar-only (Price.php:699-703); country-aware doubling exists only as an untracked local vendor patch; no composer.lock, pipelines run composer update → deploy silently reverts and LV/EE 50–60 kg double-charge | PR #43 open (08-02) — two-file patch off the 0.8.2 tag; after merge: tag 0.8.3 → cherry-pick → 0.9.1 → pakas pin ^0.8.3. Release stays a promotion gate |
| Fixed 08-01 | Pallet exclusion was documented but not wired. Product 2026-08-01: "4H is for weighted parcels only — not PUDO, not pallets." | Wired — pack_paletes_tipas = '0' on the cron pack JOIN + e2e pallet row (commit 1529e793; suite 3/3, 35 asserts) |
| Fixed 08-01 | PR #394 body stale — no VDT-3384 / default MANUAL; still cited 80 kg doubling, ceiling-less bands | Body rewritten at push (incl. "apply VDT-3384.sql before/with deploy") |
| #394 should-fix | ||
| Should-fix | Scalar 80→50 makes 3 country-blind call sites print "2x4 hands" for LV/EE 50–60 kg (inc.siuntos.nurodymai.php:89 + 2 courier print lists) | Country-aware low-limit helper at the 3 sites |
| Fixed 08-02 | Test gaps: no absent-payer row; tripwire not extended to tbl_klientai shadow; seed UPDATE unverified | Closed in 7c94a2ad — test hardening + seed verification SELECT (+ the bootstrap cred-guard fix that explained the 9 "pre-existing" PPScheduleTest errors) |
| Fixed 08-01 | Deploy order (SQL before cron) documented only in one Jira comment; branch was 2 commits behind origin/dev (phantom VDT-2567 diff) | dev merged in before push (4bafe84a); deploy-order note in PR body + wiki |
| Verified clean | ||
| Cleared | Unit suite zero new regressions vs baseline (same 9 pre-existing PPScheduleTest errors) · 4H 32/32 · Pack4rpCronTest 3/3 incl. MANUAL skip (real PHP 7.4.33 + MySQL 5.6) · seed list = old dev whitelist exactly · no hardcoded IN(...) anywhere · cron fail-closed if SQL lags · client UI writeback / ACL / langs / PHP 7.4 syntax all clean | |
| Product one-liners needed (confirmed gaps, not #394 code bugs) | ||
| Open | pack_weight at cron time is client-declared until terminal weigh (accept, or gate on pack_weight_ok='1'?) · "doubles ≥51" wording vs strict >50 for fractional kg. Resolved 2026-08-03: re-weigh clearing is Product-required Phase-1 scope → VDT-3395 (flip gate) | |
| ID | Decision | Owner | Status | Outcome |
|---|---|---|---|---|
| Programme / HF+LW | ||||
| OD-3 | HF package-count trigger | Product | Resolved | Strictly >20 (BRD v17). |
| OD-25 | LW billing basis | Product | Resolved | Billable only when executed + valid photo. |
| OD-4 | HF pricing model & amount | Product + Finance | Resolved | Same as LW — LT 6.60 / LV 7.00 / EE 8.20 € / 100 kg. Configurable, not hardcoded. (A. Kvaraciejus 2026-07-22) |
| OD-8 | LW rates + unit | Product + Finance | Resolved | Unit = per 100 kg. Rates LT 6.60 / LV 7.00 / EE 8.20. Courier bonus 0.03 €/kg. Final for programming; adjustable later. |
| OD-27 | HF on OOH / pickup / locker | Product | Resolved | HF excluded on OOH / PP / locker (call 2026-07-26 · #110151). |
| OD-5 | Canonical pallet signal | Product + Eng | Open | pack_paletes_tipas; per-package vs per-shipment aggregation TBD. |
| 4H Phase 1 | ||||
| EE band | Effective EE threshold | Product | Resolved | 31 kg (not Confluence “EE 25”). |
| Ceilings | Auto-4H upper bands | Eng + Product | In PRs | LT ≤75 · LV/EE ≤90 (includes 2×4H). Doubling LT>50 / LV·EE>60. Legacy 80/100 rejected (PM 2026-07-30). |
| Q14 | Cron: drop payers · posti_service1 · drop volume · both-country | Product | YES 2026-07-30 | Eligibility YES. Default auto-for-all superseded 2026-07-31. |
| Client mode | PAKAS kl_4rp_auto AUTO/MANUAL | Sales + Eng | In #394 · pushed | Default MANUAL; Sales → AUTO (save+render behind kl_edit_plius per P3 ruling 2026-08-03); cron only if AUTO; seed legacy 4 (four-vs-six open with Sales). Review-verified 2026-08-01. Blocks LT flip. |
| Single writer | Auto-4H writers all gate on the client-card switch | User ruling | Executed | Ruled 2026-08-02: don't park — amend. Done across all channels: siunta aa31edc3 and go-import 7fc0030 gate creation-time auto-4H on kl_4rp_auto; veniship ships explicit-only (no read path — pakas cron is the sole AUTO writer for its traffic). Manual/declared paths unchanged. Recorded on VDT-3204/3202 (c.111508/111509). |
| Force-4H | Client rp4=1 without allowlist reject | Product | Policy | Wave-1 = monitored override (MANUAL clients). |
| Geography | First enable wave | Product + Ops | Settled | LT all zones via allowlist — after client-mode gate. |
Resolves the VDT-3345 ↔ VDT-3346 conflict (extend vs new table). Split by concern:
tbl_siuntos (needs ALTER window)tbl_siunt_charge_works not extended — stays legacy scalar captureStill blocked for HF/LW build on ALTER window + residual ODs (e.g. OD-5), not on OD-4/8/27.
| Ticket | Focus | Status | State / blocker |
|---|---|---|---|
| VDT-3344 | LW scanner ownership | In Progress | Sole writer mapped. Ops: device-app + DDL owner. |
| VDT-3345 | LW lifecycle / schema (P0) | In Progress | ADR resolved. Blocked: ALTER window, schema authority. OD-8 answered. |
| VDT-3346 | Eligibility→billing SM (P0) | In Progress | State machine + D8 fence pinned. Ownership ratification. |
| VDT-3347 | Terminal weight re-eval | In Progress | Late-correction trigger policy (Product+Ops). |
| VDT-3348 | Pallet + count boundary | In Progress | OD-3 resolved. Blocked: OD-5. |
| VDT-3349 | HF pricing model | Unblocked | OD-4 answered (same €/100 kg as LW). Implement when 4H wave allows; still needs ALTER/ownership sequencing. |
| VDT-3350 | Combinatorial matrix | In Progress | OD-27 answered. Residual: OD-13 / 5 / 11. |
Characterization — locks current behavior.
Applicability oracle + guards.
Ordered-eligibility oracle on siunt_lw_order.
Test-only HF/LW suite (head 8bcfde19) — not required for 4H enable. Needs its refresh before merge (7-param call fix · 350→250 kg · ADR docblock relabels); merge when Track A resumes. Details: briefing §9.
Approvals on all five PRs (review #43 first) · #43 merge → tags 0.8.3/0.9.1 → pakas pin ^0.8.3 · VPN-deferred suites · promotion dev→uat→prod with VDT-3384.sql first on every env · VDT-3395 · tariff + seed answers · prod probes · then wave-by-zone LT posti_service1 flip.
OD-4/8/27 answered — remaining: OD-5, ALTER window, ownership, then implement using €/100 kg HF=LW rates.
Keep parked until HF/LW implementation wave; do not block 4H enable on it.
7fc0030, 5 files, one production file); PR body + Jira refreshed. #743: explicit-request-only split (auto-detect dropped — veniship has no kl_4rp_auto read path; pakas cron = sole AUTO writer), Blockers A/B fixed, EE 31; 2-verifier adversarial round found + fixed a PR-original global-rates service leak; confirm round CONFIRMED-SOUND with mutation testing; suite 210/743 baseline-identical; pushed 99f5a8b, PR retargeted dev→master; Jira c.111674 (FVS).kain_4rp default 50) → Finance reconciliation before seed. P4 ruled Phase-1 scope (re-weigh must clear/re-flag siunt_4rp — billing cannot enable without it) → VDT-3395 created, joins the flip gate. P3: commercial field → kl_4rp_auto gated behind kl_edit_plius on the #394 branch (commit 425bf63c, pushed 2026-08-03; suites baseline-green, veni-guard 42/0). P5/P11/cron routed to Dainius/Mindaugas; seed four-vs-six still open with Sales.