Five automatic events, zero ledger rows. v2 would have written +5 STOCK at 168h and closed this record. i3 will not, because a unit nobody has inspected must not become sellable by the passage of time.
Module 06 owns everything above the ledger posting. Rule R-06.20: a sample receipt posts to SAMPLE_QC, and its 72h clock starts at counted_at.
Custody chain
4 hops · 3 people
When
Held by
Where
Qty
Handover
23-07 10:30
r.kumar · WH
HQ_319 · receiving
5
counted in from GRN
23-07 14:10
r.kumar · WH
HQ_319 · QC bench
5
staged for inspection
24-07 09:40
f.marketing
HQ_319 · marketing cupboard
5
signed out for shoot review
26-07 16:00
j.photo · studio
HQ_319 · studio
3
3 taken for test shots, 2 left in cupboard
27-07 11:20
f.marketing
HQ_319 · marketing cupboard
5
all 5 back together, 2 show colour variance
29-07 -
f.marketing
HQ_319 · marketing cupboard
5
awaiting the classification decision
Every hop is a program_holding_events row with a named actor. v2's timeline recorded the SLA but not who physically had the units, which is exactly the question asked when a sample goes missing.
QC evaluation
6 checks · the suggested outcome recomputes live
4 pass · 1 fail · 1 n/a
Suggested: STOCK (partial) · 3 units pass every check, 2 fail batch consistency. The suggestion is advice; decided_by is still a person.
Decision tree
The highlighted branch matches the current QC result
Is the item sellable as is?
Yes, all units → STOCK
Yes, some units only → STOCK (partial) ← current path
No. Is the defect repairable or cosmetic?
Usable for marketing or shoot only → SAMPLE_POOL
Supplier at fault, credit expected → RTS
Beyond use → WRITE-OFF(photo required)
A sample whose cost_basis is unknown cannot reach the STOCK branch at all. This one has an invoice, so it can.
Pick a classification
Splittable · the parts must sum to 5, the unclassified remainder
required · 76h overdue
Accept all to SAMPLE_POOL shoot use
Tracked as a marketing asset in the PHOTOGRAPHY sub-pool. Not sellable. Returns to the pool after each shoot.
+5 SAMPLE_POOL0 STOCKno cost line
Reclassify all to STOCK sellable
Production equivalent. Writes +5 STOCK at HQ_319 and the SKU becomes sellable. Contradicted by the batch-consistency failure on 2 units.
+5 STOCK0 SAMPLE_POOL
Split · 3 STOCK, 2 SAMPLE_POOL suggested
The 3 units that passed every check become sellable. The 2 with colour variance go to the photography pool, where a Pantone half-step does not matter.
+3 STOCK+2 SAMPLE_POOLsums to 5 ✓
RTS the 2 off-colour units supplier at fault
Opens an RTS case in draft against ORO Leather with a return AWB. Credit expected: AED 840. Nothing ships from draft.
+3 STOCKRTS 2 unitscredit AED 840
Write off photo required
Units unsalvageable. Routes through program_writeoffs, needs a finance approver who is not the proposer, and needs photo evidence: ck_pw_photo refuses it otherwise.
+5 WRITTEN_OFFcost_ledger line4 photos attached ✓
3 of 5 units match the PI reference exactly. Units 4 and 5 read two Pantone half-steps warm under daylight, visible side by side but not in isolation. Not a defect worth an RTS, and fine for the lookbook. Splitting.
f.marketing (you) · role = manager · feature samples_classify
decided_by rejects system:*. A cron cannot classify, even at 148 hours.
Photos
4 uploaded 23-07 10:35 by r.kumar
Full item · front
Stitching detail
Colour variance · units 4-5
Buckle close-up
What "final disposition" means here
A split classification produces twosample_classifications rows against one receipt, each with its own outcome, quantity, destination and ledger entry. The receipt closes only when qty_classified = qty_received.
Partial classification is legal and common: classify the 3 good units today, argue with the supplier about the other 2 for a week. Over-classification is a constraint violation.
first_breached_at stays set after classification. A late decision does not erase the fact that the SLA was missed, which is what keeps the supplier scorecard honest.
ORO Leather · sample track record
18 samples year to date · this is the evidence that decides whether to keep taking samples from a supplier at all
12 of 18 shown · 12 STOCK (67%), 5 POOL (28%), 1 RTS (5%) · average 28h to classify against a 72h SLA · this sample is the first ORO Leather breach in 18, which is why it escalated to Ahmad rather than to a supplier claim.
Incoming samples from this supplier
3 in the next 30 days
SKU
Description
Qty
PI
ETA
State
LLW-NEW-101
Belt · black
5
PI-2026-LC-048
03-08
shipped
LLW-NEW-103
Wallet · brown
3
PI-2026-LC-049
06-08
dispatched
LLW-NEW-105
Keychain set
8
PI-2026-LC-050
12-08
prep
16 more sample units land in the next two weeks. If this one is still unclassified when they arrive, the breach queue triples and GATE 7 moves further away, which is the argument for deciding today rather than waiting for a perfect answer.
Why this page refuses to auto-classify
v2's version of this page carried a button reading "Classify now (required)" above a line that read "Auto-fallback to STOCK in 12h if not manually classified. INV2 will write +5 STOCK and close this record automatically." Both statements were on screen at once. The second makes the first optional.
It also disagreed with i2's own schema, where samples.state allows auto_pool and not auto-stock. Two specifications, two destinations, one timer, and whichever one shipped would have been a surprise to somebody.
At 148 hours this sample has 3 units that pass every check and 2 that do not. An automatic promotion would have made all 5 sellable at hour 168, including the 2 that fail batch consistency, and the only trace would have been a system-authored row.
Ruling L19 says a carrier status string may never credit stock. The same principle, applied to a clock, is ck_phe_no_robot_writeoff: a system actor may chase, warn, escalate and gate-block, and may never promote, consume, gift, write off or declare lost.