Group the bridge and the ledger by tag, not label

Both named an adjustment by its label first. Every log entry now carries
a label -- adjustments all get the version's adjustment segment -- so every
adjustment fell under that one name and no tag was ever shown.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Paul Trowbridge 2026-09-25 01:30:14 -04:00
parent f9e989f20e
commit 95c06047b3
2 changed files with 9 additions and 4 deletions

View File

@ -129,9 +129,11 @@ export function buildSteps(rows, {
if (isLoad) { loads.value += v; loads.units += u; loads.rows += 1; continue }
const meta = logMeta[r.pf_logid] || {}
// label first, the same precedence pf_segment uses, so the bridge and the
// pivot call a step by the same name
const tag = (meta.label || meta.tag || '').trim()
// The tag alone. This used to be label first, to match pf_segment, but every
// adjustment now carries a label -- the version's adjustment segment, the
// same one for all of them -- so the walk collapsed into a single bar and
// no tag was ever shown. The label is the segment; the tag is the initiative.
const tag = (meta.tag || '').trim()
// Untagged entries collapse into one step, the same as the ledger's
// "N untagged adjustments" line in OperationPanel.jsx -- one bar per
// untagged scale/recode would otherwise turn a routine cleanup pass into

View File

@ -582,7 +582,10 @@ function ScaleLedger({ currentTotals, scaleInputs, setScaleInputs, scalePlug, se
baseline.push({ ...e, label: name || 'Baseline', kind: 'baseline' })
continue
}
const tag = (meta.label || meta.tag || '').trim()
// The tag alone, not the label. Every adjustment is now stamped with a
// label -- the version's adjustment segment -- so label-first put all of
// them under that one name and no tag was ever reached.
const tag = (meta.tag || '').trim()
if (tag) {
// Grouped case-insensitively. "Keystone reduction" and "Keystone
// Reduction" are one initiative typed twice, and splitting them here