pf_app/routes
Paul Trowbridge 8f96fa3f7f Let clone read reference rows — copying them out is the point
A selection of five AOP rows cloned nothing, with no explanation. The cause
was exclude_iters, which clone applied along with scale and recode.

It should not. That exclusion exists to stop operations *modifying*
reference rows: scale distributes an increment across its pool, so including
reference would attribute forecast movement to prior-year rows, and recode
writes negative rows that zero the original out. Clone does neither -- it
reads rows and inserts new pf_iter = 'clone' rows, leaving the source
untouched. Copying a plan or a prior year out of reference and into
adjustments is the operation doing exactly what it is for.

So from_logid stops being the only way to reach those rows and becomes what
it should be: a narrowing, for a selection spanning AOP and Prior Year where
only one is wanted.

The "would just duplicate the rows" guard no longer fires when the selection
is entirely non-adjustable, since moving rows from reference into adjustments
changes what they are even at factor 1 with no shift.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 02:33:28 -04:00
..
auth.js Put the app behind a login 2026-09-14 22:20:25 -04:00
log.js Let a segment say what it counts toward, and pivot on it 2026-09-17 00:59:00 -04:00
operations.js Let clone read reference rows — copying them out is the point 2026-09-17 02:33:28 -04:00
sources.js Keep master data for a dim_group instead of re-deriving it from the source 2026-09-17 00:19:39 -04:00
tables.js Expose pf_note/pf_op in forecast data; fix tables list duplicates 2026-04-28 19:51:45 -04:00
versions.js Complete recode values from the version, not the source view 2026-09-17 00:03:05 -04:00