Canon logo
DF Canon
Product database handbook — confidential, internal use

Open Questions — Damn Filters

Status: the live list of questions that still need an answer. A question leaves this page the moment it is decided — the decision is logged in CHANGELOG.md (append-only, dated) and folded into the canonical docs where it becomes a rule: AGENTS.md (locked rules), docs/domain-model.md (business rules), docs/grade-pricing.md (grades + pricing). If something you expected to see here is missing, it was answered — check the CHANGELOG.

Open

Media source — canonical_media() still falls to the SKU suffix

Decided 2026-09-07: media is the Option1 Value label (or bdf); the SKU suffix is never a media label; external resolution order is OEM/manufacturer → DFI → Clark → competitor listings. The code is not yet repointedsrc/media.py canonical_media() still returns suffix_media(sku) for standard labels, so a bare-suffix SKU whose Option1 names NF / SB / wide-pleat still derives 80/20 (measured 2026-09-07; re-derive via src/media_indicator_audit.py). Fixing the fallback corrects classes at scale — this is the open follow-up.

Endcap-config taxonomy

Build hardware (twist-lock, tri-bolt, threaded-stud, d-ring, ground-wire, coupling-washer, lip-for-clips, hook, spring-retainer-clip) is already class-defining; "bands" is construction, not endcap hardware. The unenumerated remainder is the residual free-text in bdf.Top_Config / bdf.Bottom_Config (lips, clips, studs, stainless endcaps, …) beyond flange / bolt hole / gasket. Enumerate that vocabulary so it can be backfilled as a class attribute. Flagged and deferred — not happening soon.

Pricing + sibling cost

Held until classes are trusted (a few days of looping to find class errors). Pricing and PO/sibling-cost are one question. Once a solid per-class base price exists, a 3–10% grade premium is applied on top; the old price is preserved in sku_prev_price.

People and authority roster

Viktor will fill in the role-per-person + override order later. Not needed now.

DFI cross-reference join

DFI is authoritative. Each EFI part line already carries manufacturer + part number (Donaldson P…, Camfil …, Clark …, Nordson B…), and every cross-reference on one EFI line is one class. Parse manufacturer+PN → EFI_PN → class and join our SKUs to it — a gold mine for verifying SKUs and their direct cross-references. High priority; not yet built.

Grade combinations that should not exist

Deferred until classes are re-keyed and this round's removals / re-figures land — no point correcting house grades against classes that are about to change. The clear cases (dA/fA/dB/fB/fC) are already corrected; the "likely but not certain" combos (dC/dF/fD/fF/cA/cB/cF) need a human, and a small handful of them are A-C natural grade (repeat buyers) — those get eyes first.

P25.70E — spunbond promotion possibly wrong

A spunbond-primary SKU whose 80/20 + NF twins are the in-stock bins. If the "spunbond promotion" was wrong, the true primary is 80/20 and the product switches to single-variant 80/20 (drop spunbond + NF). Needs a ruling. The general pattern was flagged in the 2026-09-06 spunbond pass; P25.70E is the specific open instance.

In flight — blocked on a person or handoff

Where answered questions went

Questions that are now decided are no longer listed here. The decisions live in:

The human-review lists themselves stay re-derivable — run the named script (src/build_review_sheet.py, src/media_indicator_audit.py, src/dfi_review.py, src/invariants.py) for the current outstanding set.