Venipak · programme status

4H / HF / LW — status board

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.

Last updated: 2026-08-03 · all four PRs pushed · Evelina answers folded
Active wave: 4H Phase 1 → approvals + helper tags + VDT-3395 → LT enable
State — 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.

5 PRs
Pushed · merge-gated
#43
Helper patch (review first)
0
go-ws PR (gap)
6/6
Q14 + key ODs*
~10.5k
LT postcodes still off†
PHP 7.4.33
4H suites green

*OD-3/25/4/8/27 answered + Q14 YES (Evelina 2026-07-30 on VDT-3203). †Demo venipak_dev — re-probe prod.

Phase 1 — 4H enablement (VDT-3145)

PRTicketHeadWhat landedStatus
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

LT other zones data, not a PR

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.

Still before flip process

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.

Exec brief HTML

Stakeholder enablement summary: .workflow/4h-enablement-executive-summary-2026-07-29.html

Adversarial review — 2026-08-01 (pakas #394 + VDT-3384 fold)

SeverityFindingFix
#394 blockers (pre-push / pre-prod)
Fixed 08-01Both local commits carried Co-authored-by: Cursor trailersAmended — branch rewritten to a71cff6c · a37ceb05, trailers gone
In reviewPublished 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-chargePR #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-01Pallet 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-01PR #394 body stale — no VDT-3384 / default MANUAL; still cited 80 kg doubling, ceiling-less bandsBody rewritten at push (incl. "apply VDT-3384.sql before/with deploy")
#394 should-fix
Should-fixScalar 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-02Test gaps: no absent-payer row; tripwire not extended to tbl_klientai shadow; seed UPDATE unverifiedClosed in 7c94a2ad — test hardening + seed verification SELECT (+ the bootstrap cred-guard fix that explained the 9 "pre-existing" PPScheduleTest errors)
Fixed 08-01Deploy 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
ClearedUnit 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)
Openpack_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)

Decisions

IDDecisionOwnerStatusOutcome
Programme / HF+LW
OD-3HF package-count triggerProductResolvedStrictly >20 (BRD v17).
OD-25LW billing basisProductResolvedBillable only when executed + valid photo.
OD-4HF pricing model & amountProduct + FinanceResolvedSame as LW — LT 6.60 / LV 7.00 / EE 8.20 € / 100 kg. Configurable, not hardcoded. (A. Kvaraciejus 2026-07-22)
OD-8LW rates + unitProduct + FinanceResolvedUnit = per 100 kg. Rates LT 6.60 / LV 7.00 / EE 8.20. Courier bonus 0.03 €/kg. Final for programming; adjustable later.
OD-27HF on OOH / pickup / lockerProductResolvedHF excluded on OOH / PP / locker (call 2026-07-26 · #110151).
OD-5Canonical pallet signalProduct + EngOpenpack_paletes_tipas; per-package vs per-shipment aggregation TBD.
4H Phase 1
EE bandEffective EE thresholdProductResolved31 kg (not Confluence “EE 25”).
CeilingsAuto-4H upper bandsEng + ProductIn PRsLT ≤75 · LV/EE ≤90 (includes 2×4H). Doubling LT>50 / LV·EE>60. Legacy 80/100 rejected (PM 2026-07-30).
Q14Cron: drop payers · posti_service1 · drop volume · both-countryProductYES 2026-07-30Eligibility YES. Default auto-for-all superseded 2026-07-31.
Client modePAKAS kl_4rp_auto AUTO/MANUALSales + EngIn #394 · pushedDefault 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 writerAuto-4H writers all gate on the client-card switchUser rulingExecutedRuled 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-4HClient rp4=1 without allowlist rejectProductPolicyWave-1 = monitored override (MANUAL clients).
GeographyFirst enable waveProduct + OpsSettledLT all zones via allowlist — after client-mode gate.

P0 architecture — resolved

LW data model ADR 2026-07-22

Resolves the VDT-3345 ↔ VDT-3346 conflict (extend vs new table). Split by concern:

  • siunt_lw_order — ordered flag on tbl_siuntos (needs ALTER window)
  • NEW append-only InnoDB tbl_siunt_lw_attempt — execution / photo / bonus authority
  • tbl_siunt_charge_works not extended — stays legacy scalar capture
  • billable = ordered & executed & photo-valid & eligible

Still blocked for HF/LW build on ALTER window + residual ODs (e.g. OD-5), not on OD-4/8/27.

Research spikes · VDT-3344–3350

TicketFocusStatusState / blocker
VDT-3344LW scanner ownershipIn ProgressSole writer mapped. Ops: device-app + DDL owner.
VDT-3345LW lifecycle / schema (P0)In ProgressADR resolved. Blocked: ALTER window, schema authority. OD-8 answered.
VDT-3346Eligibility→billing SM (P0)In ProgressState machine + D8 fence pinned. Ownership ratification.
VDT-3347Terminal weight re-evalIn ProgressLate-correction trigger policy (Product+Ops).
VDT-3348Pallet + count boundaryIn ProgressOD-3 resolved. Blocked: OD-5.
VDT-3349HF pricing modelUnblockedOD-4 answered (same €/100 kg as LW). Implement when 4H wave allows; still needs ALTER/ownership sequencing.
VDT-3350Combinatorial matrixIn ProgressOD-27 answered. Residual: OD-13 / 5 / 11.

Test groundwork shipped (HF/LW · Track A)

Wave 1 7 files

Characterization — locks current behavior.

  • charge_works write/read · ODKU LWW
  • entity-clone · split derivation
  • pricing components

Wave 2 · HF 6 files

Applicability oracle + guards.

  • HF never under Nurodymai
  • reset-on-split/return · provenance

Wave 3 · LW 1 file

Ordered-eligibility oracle on siunt_lw_order.

  • >350 kg block · photo billable rule

PR #516 parked

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.

Tracking & artifacts

What’s next

4H merge + tags + LT flip critical path

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.

HF/LW build after 4H

OD-4/8/27 answered — remaining: OD-5, ALTER window, ownership, then implement using €/100 kg HF=LW rates.

PR #516 not on 4H path

Keep parked until HF/LW implementation wave; do not block 4H enable on it.

Step log

  1. 2026-07-18 → 22
    Research, ADR, spikes, PR #516
    CONTRACT / MASTER-PLAN; LW attempt table ADR; VDT-3344–3350 deliverables; characterization suite under review.
  2. 2026-07-22
    OD status corrected; decision requests posted
    OD-4/8/27 marked open pending rulings; epic comment 109412; VDT-3203 validation + Q14 ask.
  3. 2026-07-26
    Product call — OD-27 + LW definition
    HF excluded OOH/PP/locker; LW = indoor or depallet at pallet; 4H-first rollout.
  4. 2026-07-27–28
    4H readiness + LT-zones prep
    Allowlist mechanism grounded; EE=31 locked; pakas #394 rebased 4H-only.
  5. 2026-07-22 (tariffs) / recorded 07-29
    OD-4 / OD-8 answered
    LW rates LT 6.60 / LV 7.00 / EE 8.20 €/100 kg; HF = same; bonus 0.03 €/kg; configurable.
  6. 2026-07-29
    Multi-model first-go audit + Phase-1 push
    Ceilings + sender gates landed; PRs #394/#90/#49 pushed; Jira/PR descriptions refreshed; exec enablement HTML published.
  7. 2026-07-30
    Q14 YES — Evelina on VDT-3203
    OD-15/16/posti_service1/both-country signed. Follow-ups: Sales toggle, physical weight, terminal re-weigh, LT zone data owner, 2× pricing wave.
  8. 2026-07-30 PM
    PM corrections — tiers, doubling, LW wording
    2×4H kept; Price doubling 51/61 not 80; hard stop 75/90; pallet excludes 4H; both-country gate; LW = driveable point; HF/LW unify 250 kg. HTML: .workflow/4h-pm-corrections-2026-07-30.html
  9. 2026-07-30
    Status board refresh
    This page updated: completed ODs folded in; 4H enable path vs HF/LW park clarified.
  10. 2026-07-31
    Default MANUAL locked (Sales)
    Client card AUTO/MANUAL; cron only AUTO; legacy 4 → seed; LT flip blocked until gate. Plan: 4H-CLIENT-AUTO-MANUAL-PLAN.md
  11. 2026-07-31 PM
    VDT-3384 + doubling folded into #394 branch
    Local commits 8ca6cd68 (kl_4rp_auto + cron JOIN + client UI + tests) and 2eda3a23 (doubling LT>50 / LV·EE>60, bands through 75/90). Push pending OK.
  12. 2026-08-01
    Adversarial review — #394 merge-ready-with-fixes
    4 parallel hostile reviewers + chair verification. Suites green on real 7.4.33 (unit zero new regressions; e2e 3/3 incl. MANUAL skip vs MySQL 5.6). Blockers: Cursor trailers, helper-0.8.2 scalar trap, pallet wire, stale PR body. #90/#49 flagged not-ready (bands 50/60; client-blind auto-apply). Wiki + this board refreshed.
  13. 2026-08-01 PM
    Product ruling + two blockers fixed on-branch
    Ruling: 4H = weighted parcels only, never PUDO/pallets. Pallet skip wired into cron (pack_paletes_tipas='0') + e2e row; Cursor trailers amended. Branch rewritten: a71cff6c · a37ceb05 · 1529e793 (ahead 3, push pending). Suites re-verified: unit zero new, integration 3/3 (35 asserts).
  14. 2026-08-01 EVE
    #394 pushed (69c91de1 → d0fb8634)
    Push OK given; dev merged in; gate green (suites + veni-guard 42 ran / 0 blocking, VDT-3384 fold sanctioned); PR body rewritten; Jira VDT-3203 (FVS cases f–k) + VDT-3384 updated.
  15. 2026-08-01 NIGHT
    Full-programme tournament — champ-B path wins
    15 agents (8 reviewers · 3 champion plans · 3 judges · critic), 2.76M tokens, zero fabrications. Winner: fastest-to-LT-enable skeleton + transplants. Key finds: helper 0.8.2 AND 0.9.0 scalar-only in BOTH Price.php and the parcel-label DirectionProvider (release must patch both, cut from 0.8.2 tag); go-ws + gocourier DO track composer.locks (gocourier pins helper 0.3.16); exposure opens at the prod release_* tag, not the flip; siblings get PARKED not raced; seeded-4 vs Confluence's six "permanent clients" conflict needs a Sales answer; promotion payload = 90 commits/6 tickets → vehicle decision. Corpus: analysis/vdt-4h-p2p3/tournament-2026-08-01/ (SYNTHESIS.md). #394 follow-up fixes committed locally (7c94a2ad, push pending OK); Jira evidence corrected (c.111440).
  16. 2026-08-02
    Decisions executed: push · helper branch · asks · siunta amendment
    User rulings: push 7c94a2ad (done — #394 head), DON'T park siblings — amend to respect the client-card switch, helper branch prep, asks both routed. Delivered: #394 pushed + gate green; venipak-helper branch VDT-3203 @ e868978 off the 0.8.2 tag (both files + tests; helper suite 170 green; push-ready); asks on Jira (c.111506/507/508/509) + .workflow/4h-product-asks-2026-08-02.md; siunta #90 amendment implemented + verified + committed local (aa31edc3).
  17. 2026-08-02 PM
    siunta #90 + helper PR pushed
    aa31edc3 → PR #90 (body + Jira c.111510 refreshed; Playwright gate deferred to pre-merge — VPN down). venipak-helper branch pushed + PR #43 opened (VDT-3203 → master, two-file patch off the 0.8.2 tag, 170 tests green).
  18. 2026-08-02 EVE → 08-03
    go-import #49 amended + pushed · veniship #743 split + pushed — all four PRs live
    #49: payer-gated auto-4H at the import_helper chokepoint + bands 26–75/31–90, rebased onto dev, suite 57/64 + veni-guard 42/0; pushed; composer fully out of the PR per review (suite via phpunit PHAR; head 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).
  19. 2026-08-03
    Evelina answered the asks (VDT-3203 c.111596) → VDT-3395 + P3 amend
    P1 cleared: 26–30 kg LT bills the same flat 4H LT (26–50) price, no separate tier — but she states tariff 14 € 4H / 28 € 2×4H (vs programme 6/12 € vs 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 fieldkl_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.
  20. — next
    helper #43 review→tags · approvals ×4 · VDT-3395 design · tariff reconciliation · pre-flip gates · wave flip
    Helper PR #43 review → tag 0.8.3 + cherry-pick → 0.9.1 → pakas pin ^0.8.3; approvals on #394/#90/#49/#743; VPN-deferred suites (siunta Playwright, go-import API, demo probes); VDT-3395 provenance design + build; 14/28-vs-6/12 tariff answer (Finance); seed list (Sales); promotion-vehicle decision; SQL-before-code incl. dev+demo; censuses/comms; wave-by-zone LT flip.