Paul's tracking-sheet fields, plus what the catalog model can add. Rollups aggregate a version's Channel Listings.
MR-062 · built on catalog-list-v2.html’s machinery so the two lists read as one family
SF-0044 and SF-0051 are the same chemistry at 90 and 60 capsules and they are two records, deliberately (MR‑059). Weight and dimensions only exist once a count exists, and a purchase line is written for a count, not for a powder. That pair is also why the create screen’s formula field searches rather than drops down — two records can differ only by count.
The catalog product inherits its unit spec from here and never types one.
Weight, dimensions, bottle, bottle size, label size, cost and the ingredient list are true of what arrives on the pallet, not of any label printed over it. They are read-only everywhere else — and filling a blank from over there is not allowed either, because the rule is ownership rather than “don’t overwrite”. The trip is avoided instead of the rule bent: the formula’s editor opens as a drawer over whatever screen you are on.
Cost is QuickBooks’ and read-only; we never write a corrected cost back.
SF-0031 sits at 0 on hand and is still perfectly listable — the goods are on a truck. Status is awaiting stock → stocked → discontinued; the first transition is derived from QuickBooks recording a receipt, the last is a person’s act, because QuickBooks never learns a supplier dropped a line. SF-0012 is discontinued with 604 units still on hand, which is exactly why the two are separate ideas.
Derived, never typed: a formula needs one when a fact it alone owns is blank and something downstream waits on it — unit weight (the physical product and the label rating) or the ingredient list (content generation and the claims gate). The same filter sits on the catalog products list; the bell is the combined cross-entity view. No new nav item — this settles MR‑004’s open question as no.
The Gaps saved view is the same answer as a column layout: SF, house name, the reason, and the two fields it points at.
The Form vocabulary tab is a two-level list since MR‑327: the three groups are rows of their own and the forms sit under them. The group was already data (RI‑544) and already drawn as a tag on every row — what it was not was editable. You could not add a group, empty one, or move a form between them, and that last one is the edit that matters: a form’s group is what gates Flavor (RI‑225) and what decides whether the unit proposal (RI‑545) reads as a dose or a volume.
Reordering inside a group is the everyday act; changing group is the expensive one, and the screen refuses to make them feel alike. Drag a row, or focus its handle and use ↑↓ — and the arrows stop at the group edge rather than sliding a form into the next group when the key is held down. Crossing groups is deliberate: drag the row onto a group, or use the panel’s Move, which states what it costs before the click. There is no indent and no outdent, on any row — those keys are not wired rather than wired and refused, and the handle’s own label does not offer them.
A move never clears a value, and it is not refused for a missing Flavor. Moving a form out of tasted changes what is asked for, not what is stored: every flavour already entered stays on its record. Moving a form in means Flavor starts being asked for; a formula on it that has none is left as it is. MR‑330 refused that move while any formula lacked a flavour, and Paul withdrew it on 2026‑09‑13: “I don’t think we need such strict validation. It’s not that big a deal if it goes into the tasted category” (MR‑371, RI‑731). The only move still refused is into or out of hard goods.
This tab does not reach into the records. A first cut flagged the formulas a move left without a flavour and offered a box to fill them in, right here. Paul withdrew it: “Moving a category around could trigger 100 products to need some sort of update. That would get messy.” A vocabulary editor that edits the records using the vocabulary is a bulk write with no selection model, no preview, no undo and no progress. The refusal that replaced it has gone too (MR‑371), so the tab neither edits nor counts the formulas.
What to click. Capsule → tasted now moves, and says Flavor will be asked for. Hard good cannot leave its group, and nothing can join it. Counted vs measured is not guarded — it decides what a new unit spec reads as and rewrites none already entered.
A group never moves under another group. Paul, 2026-09-10: “I will never demote a category.” So this is not categories.html’s tree with a shallower fixture — it is two levels by construction, which is why none of that screen’s depth-first block splicing, subtree carrying or cycle refusal is here to maintain.
A group is not a value you can pick. A category parent is selectable; a group is not — no formula’s Form is swallowed. So a group has no usage count of its own, only the products on the forms beneath it.
Three things the flat list ran together, now separate. The group’s name and its stored value: the screen said swallowed and never said the record stores whole, which is exactly the invisible stored value RI‑542 was a live defect about. Ours (RI‑546) was glued to the group as topical · ours — one string doing two jobs, now a tag on the form. And counted vs measured (RI‑544’s unit axis) had no admin anywhere; it is per form because a gummy is counted and a powder is measured and both are tasted.
Two delete guards, and Retire is what makes refusing tolerable. A form anything uses cannot be deleted; a group holding forms cannot be deleted. Retiring a group takes every form under it out of the picker and leaves every product carrying one untouched — the release valve those guards require.
A fourth group, hard goods, holding one form: Hard good (MR‑348). Some catalog products arrive finished and are not formulations at all — a branded vacuum jar has no panel, no ingredients, no batch and nothing to research. Form is the field that already decides the panel and the image slots, so it carries this too rather than a new flag beside it. It is picked on the catalog product, never on a source formula (a formula is by definition a formulation), and nothing moves into or out of the group: the move is refused in both directions, because re-filing a capsule as a hard good would silently drop its panel. It is marked ours — eBay has no such Formulation value.
Benefits and Tags are untouched (and Sold for, the third flat list when this was written, has since been removed — MR‑345). The same module draws them and they pass no groups, so they render the flat rows they always did. A flat list that grew a nesting affordance would be promising a shape it cannot hold.
1 · Should Products link to a filtered catalog list? The count links to the catalog products list today but does not carry the formula as a filter, because the catalog list has no formula filter yet. Adding one is a column-model change on that screen, not this one.
2 · Does the ingredient list belong in the row at all? It is shown as a count. A formula with four ingredients and a formula with four different ingredients read identically here, and the claims risk MR‑059 records lives in the difference.
3 · A new Form group is allowed, and nothing reads it. Flavor and the unit proposal both branch on whole, tasted and skin, so a fourth group is a container with no rules behind it — a form moved into one keeps its stored value and loses both. The panel says so in amber rather than the control being disabled, because the taxonomy is meant to outlive the three groups it starts with. RI‑543 removed Suppository partly to avoid that fourth route; this is the same question, now reachable by clicking.