﻿# Journal 2026-05

## 2026-05-25 19:05:00
- Actor: codex
- Modul: konversi / proses kerja dokumentasi
- Ringkasan: menambahkan mekanisme log perubahan harian tanpa Git hook.
- File:
  - AGENTS.md
  - docs/dev-journal/README.md
  - docs/dev-journal/2026-05.md
- Verifikasi: file terbentuk, aturan logging tercantum di AGENTS.md.

## 2026-05-25 19:21:02
- Actor: codex
- Modul: konversi / FollowUp preview 1334
- Ringkasan: memperbaiki shadow row item source (`produk_id=0` / `nama=0`) pada flow `followupPrePreview` dan `followupPreview`.
- File:
  - application/modules/konversi/controllers/FollowUp.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - `php -l application/modules/konversi/controllers/FollowUp.php` => no syntax errors
  - guard baru:
    - sanitasi registry items key/id `0`
    - skip loop transaksi detail jika `produk_id < 1`

## 2026-05-25 19:26:46
- Actor: codex
- Modul: konversi / FollowUp preview 1334 (hotfix varian)
- Ringkasan: memperhalus guard agar row varian tidak ikut terhapus saat filtering shadow row.
- File:
  - application/modules/konversi/controllers/FollowUp.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - `php -l application/modules/konversi/controllers/FollowUp.php` => no syntax errors
  - filter invalid row sekarang hanya aktif untuk non-varian (`isVariantRow=false`)

## 2026-05-25 19:53:51
- Actor: codex
- Modul: konversi / FollowUp prepreview (fix key varian)
- Ringkasan: memperbaiki revalidate `items` agar update pakai key session (`$xid`) bukan key produk (`id`) untuk mencegah row bayangan `1743` dari `variant:1743:1`.
- File:
  - application/modules/konversi/controllers/FollowUp.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - `php -l application/modules/konversi/controllers/FollowUp.php` => no syntax errors
  - titik perbaikan: loop `foreach ($items as $xid => $iSpec)` di `followupPrePreview`

## 2026-05-25 20:09:53
- Actor: codex
- Modul: konversi / selector varian locker hold
- Ringkasan: perbaikan key kolom insert locker varian pada `_processSelectProductConvertion` dari `varian_id/varian2_id` ke `variant_id/variant2_id` agar transaksi update stock_locker_variant tidak rollback.
- File:
  - application/modules/konversi/controllers/_processSelectProductConvertion.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - `php -l application/modules/konversi/controllers/_processSelectProductConvertion.php` => no syntax errors
  - transaksi varian tidak lagi berhenti di pesan `Gagal update locker stock varian` akibat mismatch nama kolom id varian.

## 2026-05-25 20:15:29
- Actor: codex
- Modul: konversi / locker variant debug hardening
- Ringkasan: perbaikan lanjutan mismatch kolom nama varian (`variant_nama`, `variant2_nama`) dan menambahkan debug detail transaksi locker varian (db error code/message + last query + identity) saat gagal.
- File:
  - application/modules/konversi/controllers/_processSelectProductConvertion.php
  - application/models/Mdls/MdlLockerStockVariant.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - `php -l application/modules/konversi/controllers/_processSelectProductConvertion.php` => no syntax errors
  - `php -l application/models/Mdls/MdlLockerStockVariant.php` => no syntax errors

## 2026-05-25 20:25:19
- Actor: codex
- Modul: konversi / shoppingcart target dropdown
- Ringkasan: menambahkan marker `[VAR]` di depan nama option target yang bertipe varian pada dropdown "Choose one of the following...".
- File:
  - application/modules/konversi/views/shoppingCart.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - `php -l application/modules/konversi/views/shoppingCart.php` => no syntax errors

## 2026-05-25 20:41:10
- Actor: codex
- Modul: konversi / shoppingcart target dropdown varian
- Ringkasan: menambahkan injeksi varian prioritas dari produk yang sudah ada di session `items` agar opsi varian source-related tetap muncul walau query global varian dibatasi limit.
- File:
  - application/modules/konversi/controllers/_shoppingCart.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - `php -l application/modules/konversi/controllers/_shoppingCart.php` => no syntax errors
  - alur: varian global tetap dimuat, lalu dilengkapi dengan `get_picker_rows(produk_id)` untuk produk yang aktif di cart.

## 2026-05-25 22:03:00
- Actor: codex
- Modul: konversi / sinkronisasi qty source-target
- Ringkasan: menambahkan trigger sinkronisasi qty target gate (items2_sum dan 	ableIn_detail2_sum) saat qty source diubah melalui _processSelectProductConvertion::select, termasuk source cart key varian (ariant:{pid}:{vid}).
- File:
  - application/modules/konversi/controllers/_processSelectProductConvertion.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - php -l application/modules/konversi/controllers/_processSelectProductConvertion.php => no syntax errors
  - call sinkronisasi dieksekusi setelah pplyVariantIdentityToItem() dan sebelum ValueGate rebuild.

## 2026-05-25 22:21:00
- Actor: codex
- Modul: konversi / followup preview varian source
- Ringkasan: perbaikan mapping qty source pada FollowUp::followupPrePreview() agar varian source tidak dijumlah per master produk (produk_id) saat rebuild session; sekarang memakai key varian ariant:{produk_id}:{variant_id} dengan fallback ke key non-varian.
- File:
  - application/modules/konversi/controllers/FollowUp.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - php -l application/modules/konversi/controllers/FollowUp.php => no syntax errors
  - jalur assign items[*].jml/max_jml memakai matchedValidKey (cart_key/variant key) sehingga kasus 22 + 7 tidak tertimpa menjadi 29 per baris.

## 2026-05-25 22:42:00
- Actor: codex
- Modul: konversi / variant trap followup
- Ringkasan: menambahkan perangkap debug bertahap pada FollowUp::followupPrePreview() dan FollowUp::followupPreview() untuk melacak titik perubahan qty varian source (registry -> validItems -> revalidate -> session -> before render).
- File:
  - application/modules/konversi/controllers/FollowUp.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - php -l application/modules/konversi/controllers/FollowUp.php => no syntax errors
  - aktifkan debug via query dbg_vtrap=1 pada URL ollowupPrePreview; log muncul dengan prefix [DBG-VTRAP] di log CI/PHP.

## 2026-05-25 22:49:00
- Actor: codex
- Modul: konversi / variant trap output hardening
- Ringkasan: trap varian followup kini menulis ke file fisik selain log_message, agar debug tetap terbaca saat konfigurasi CI log tidak menampilkan entry.
- File:
  - application/modules/konversi/controllers/FollowUp.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - php -l application/modules/konversi/controllers/FollowUp.php => no syntax errors
  - target file output trap: pplication/logs/variant-trap-YYYY-MM-DD.log dan fallback docs/dev-journal/variant-trap-YYYY-MM-DD.log.

## 2026-05-25 22:58:00
- Actor: codex
- Modul: konversi / followup prepreview variant qty fallback
- Ringkasan: perbaikan fallback key validItems pada revalidate items agar row varian tidak fallback ke key master produk (produk_id) yang menyebabkan qty varian tertimpa total agregat master (contoh 22/7 jadi 29/29).
- File:
  - application/modules/konversi/controllers/FollowUp.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - php -l application/modules/konversi/controllers/FollowUp.php => no syntax errors
  - fallback ke key master hanya berlaku untuk non-varian; varian wajib match ke cart_key/ariant:{pid}:{vid}.

## 2026-05-25 23:06:00
- Actor: codex
- Modul: konversi / followup prepreview keep variant rows
- Ringkasan: varian source tidak lagi di-drop saat alidItems tidak tersedia per varian; ditambahkan fallback __variant_keep__ agar qty varian memakai snapshot row registry (jml/qty existing) tanpa fallback ke agregat master.
- File:
  - application/modules/konversi/controllers/FollowUp.php
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - php -l application/modules/konversi/controllers/FollowUp.php => no syntax errors
  - marker kode fallback: __variant_keep__.

## 2026-05-25 23:14:00
- Actor: codex
- Modul: proses kerja / guardrail bug berulang
- Ringkasan: menambahkan protokol wajib penanganan bug berulang di AGENTS.md dengan pendekatan instrument-first, root-cause stage patch, dan regression 4 skenario varian/non-varian.
- File:
  - AGENTS.md
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - section baru Protokol Bug Berulang (Wajib) tersedia di AGENTS.md.

## 2026-05-25 23:26:00
- Actor: codex
- Modul: proses kerja / personalisasi agents
- Ringkasan: menambahkan personalisasi role, prinsip kerja, mekanisme respon, dan akses server ke AGENTS.md agar otomatis berlaku per session di workspace ini.
- File:
  - AGENTS.md
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - section personalisasi tampil di bagian atas AGENTS.md.

## 2026-05-25 23:37:00
- Actor: codex
- Modul: proses kerja / guardrail personalisasi
- Ringkasan: menambahkan guardrail eksekusi default global (DoD, prioritas P0-P2, bukti root cause, regression minimum, larangan aksi berisiko, format update, lokasi artefak debug) dan aturan override per modul untuk mencegah bentrok antar modul varian.
- File:
  - AGENTS.md
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - section baru Guardrail Eksekusi (Default Global) dan Rule Override per Modul (Anti-Bentrok) tersedia di AGENTS.md.

## 2026-05-25 23:49:00
- Actor: codex
- Modul: proses kerja / format komunikasi
- Ringkasan: menambahkan format komunikasi wajib di AGENTS.md agar jawaban lebih ringkas, mudah dipahami, evidence-based, dan to-the-point (One-Screen Rule, Answer First, 3 blok, evidence inline, actionable next).
- File:
  - AGENTS.md
  - docs/dev-journal/2026-05.md
- Verifikasi:
  - section baru Format Komunikasi Jawaban (Wajib) tersedia di AGENTS.md.

## 2026-05-26 00:04:00
- actor: codex
- source: ai-session
- operator: codex
- session_tag: governance-journal-traceability
- workspace: w:\san_staging
- modul/area: proses kerja / aturan jurnal
- ringkasan perubahan: memperketat format jurnal di AGENTS.md dengan metadata wajib actor/source/operator/session_tag/workspace agar jelas siapa updater lintas tim/session.
- file yang diubah:
  - AGENTS.md
  - docs/dev-journal/2026-05.md
- status verifikasi singkat:
  - section Log Perubahan Harian (Tanpa Git Hook) terupdate dan mencantumkan metadata audit trail.

## 2026-05-26 00:18:00
- actor: codex
- source: ai-session
- operator: codex
- session_tag: followup-ghost-key-counter-merge
- workspace: w:\san_staging
- modul/area: konversi / FollowUp doFollowup counter merge
- ringkasan perubahan: mencegah injeksi key hantu saat merge hasil CounterNumber ke session gate items/items2_sum dengan update-only-existing rows (tanpa membuat key baru). Ditambahkan helper pplyCounterRowsToExistingGate() dan diterapkan ke semua blok merge counter di controller FollowUp.
- file yang diubah:
  - application/modules/konversi/controllers/FollowUp.php
  - docs/dev-journal/2026-05.md
- status verifikasi singkat:
  - php -l application/modules/konversi/controllers/FollowUp.php => no syntax errors
  - merge counter kini melewati key tidak dikenal dan mencatat trap counter.skip_missing_key saat debug trap aktif.
- timestamp: 2026-05-25 23:44:46
  actor: codex
  source: ai-session
  operator: vansgare
  session_tag: TR1334-dofollowup-ghostkey-guard
  workspace: w:\san_staging
  modul_area: konversi/FollowUp doFollowup
  ringkasan: Tambah guard normalisasi gate session sebelum validate/write untuk mencegah key hantu pada items, tableIn_detail, tableIn_detail_values saat doFollowup.
  files_changed:
    - application/modules/konversi/controllers/FollowUp.php
  verifikasi_singkat: php -l FollowUp.php lulus; call-site normalize terpasang di doFollowup pre-validate.
- timestamp: 2026-05-26 00:05:32
  actor: codex
  source: ai-session
  operator: vansgare
  session_tag: TR1334-subpostproc-empty-payload-trap
  workspace: w:\san_staging
  modul_area: konversi/FollowUp doFollowup sub-postproc
  ringkasan: Tambah trap + filter payload sebelum exec sub-postproc untuk menangkap row sumber kosong/ghost dan skip exec jika payload kosong.
  files_changed:
    - application/modules/konversi/controllers/FollowUp.php
  verifikasi_singkat: php -l lulus; marker trap baru dofollowup.subpostproc.* aktif di source loop dan pre-exec.
- timestamp: 2026-05-26 00:08:47
  actor: codex
  source: ai-session
  operator: vansgare
  session_tag: TR1334-dofollowup-alwayson-trap-entry
  workspace: w:\san_staging
  modul_area: konversi/FollowUp doFollowup logging
  ringkasan: Tambah marker always-on dofollowup.entry dan dofollowup.subpostproc.entry supaya jalur doFollowup tercatat walau dbg_vtrap tidak aktif.
  files_changed:
    - application/modules/konversi/controllers/FollowUp.php
  verifikasi_singkat: php -l lulus; marker dofollowup.entry & dofollowup.subpostproc.entry terpasang.
- timestamp: 2026-05-26 00:11:12
  actor: codex
  source: ai-session
  operator: vansgare
  session_tag: TR1334-dofollowup-breadcrumb-registry
  workspace: w:\san_staging
  modul_area: konversi/FollowUp doFollowup tracing
  ringkasan: Tambah breadcrumb doFollowup pada post_validate, write_main, dan write_registry untuk mengunci titik berhenti sebelum sub-postproc.
  files_changed:
    - application/modules/konversi/controllers/FollowUp.php
  verifikasi_singkat: php -l lulus; marker dofollowup.write_registry.fail/after siap dipantau.
- timestamp: 2026-05-26 00:12:54
  actor: codex
  source: ai-session
  operator: vansgare
  session_tag: TR1334-dofollowup-early-checker-trap
  workspace: w:\san_staging
  modul_area: konversi/FollowUp doFollowup early flow
  ringkasan: Inisialisasi session dipastikan sebelum booking checker; tambah trap before/after checkerKodeBooking serta scan valid qty untuk menangkap titik stop paling awal.
  files_changed:
    - application/modules/konversi/controllers/FollowUp.php
  verifikasi_singkat: php -l lulus; marker dofollowup.booking_check.* dan dofollowup.valid_qty.* aktif.
- timestamp: 2026-05-26 00:15:08
  actor: codex
  source: ai-session
  operator: vansgare
  session_tag: TR1334-dofollowup-preproc-pair-exec-trap
  workspace: w:\san_staging
  modul_area: konversi/FollowUp doFollowup preprocessor
  ringkasan: Tambah trap before/after pair-exec + pair_fail pada sub-preproc detail, preproc master, dan preInject master untuk menangkap titik gagal sebelum postproc.
  files_changed:
    - application/modules/konversi/controllers/FollowUp.php
  verifikasi_singkat: php -l lulus; marker dofollowup.preproc.* dan dofollowup.preinject.* aktif.

## 2026-05-26 10:30:00
- actor: codex
- source: ai-session
- operator: vansgare
- session_tag: TR1334-fix-ghost-key-fifo-average
- workspace: \\192.168.5.14\web\san_staging
- modul: Preprocessor FIFO Average Convertion (config heTransaksi_core.php)
- ringkasan: Fix ghost key injection di session items gate saat varian item diproses oleh PreFifoAverageConvertion. Terapkan pattern lockerStock: PreFifoAverageConvertion skip variant rows (variant_id>0), PreFifoAverageConvertionVarian handle variant rows dengan key patcher cart_key (bukan produk_id). Config static fields ditambah variant_id/cart_key. Varian entries ditambahkan di module 334, 976, 881, 1334. Module 7881 skip karena resultParams-nya commented out.
- files:
  - modified: application/models/Preprocs/PreFifoAverageConvertion.php (guard skip variant)
  - new: application/models/Preprocs/PreFifoAverageConvertionVarian.php (handle variant rows)
  - modified: application/config/heTransaksi_core.php (static fields + Varian entries)
- verifikasi: php -l syntax check lolos untuk semua 3 file. Total 4 module dengan Varian entry aktif.
