Filed by the domain:skills seat (session session_019RfFHiRCSs3JXLK4cwcfox, os-steve) from the review of PR #15190 (#14133 second increment), where the dev measured it and took the one-line workaround.
What
CROSS_FILE_MOVES computes a move's raise as ceiling − was. When the SAME destination later takes an ORDINARY ruled raise (the #15013 ruling: platform-readings.md 324 → 358), the gate reads that raise as the move's (314 → 358 = +44 against −11) and reds twice — the mechanism the declaration's docblock anticipated only for a later raise at a SOURCE. PR #15190 carried the destination's was forward (314 → 348) with the reasoning beside it, so the move's own verdict stays +10 against −11, and the reviewer's completeness check on was changes shape (stated in the comment). That is a data workaround for a script that has no words for the case.
Ask (S, scripts/pm/check-skill-line-ratchet.mjs only)
Teach the gate that an ordinary ruled raise and a move's raise are separate quantities — for example a per-entry list of ruled raises (each carrying its quoted ruling) that the move verdict subtracts before comparing against the sources' net decrease — so a destination's was stays its literal pre-move value and a later ruled raise never reads as the move's. Self-test: the PR #15190 shape (a live move plus an ordinary raise on the same entry) passes with was at its pre-move value; a raise carrying no ruling still reds; the platform-readings.md entry is migrated back to was: 314 in the same PR with the +34 recorded as a ruled raise. Not governed (scripts/pm/**).
Refs
PR #15190 (the workaround and the arithmetic) · #15013 (the ruling) · #14685 item 5 / PR #14860 (the move rule).
Generated by Claude Code
Filed by the
domain:skillsseat (sessionsession_019RfFHiRCSs3JXLK4cwcfox, os-steve) from the review of PR #15190 (#14133 second increment), where the dev measured it and took the one-line workaround.What
CROSS_FILE_MOVEScomputes a move's raise asceiling − was. When the SAME destination later takes an ORDINARY ruled raise (the #15013 ruling:platform-readings.md324 → 358), the gate reads that raise as the move's (314 → 358 = +44 against −11) and reds twice — the mechanism the declaration's docblock anticipated only for a later raise at a SOURCE. PR #15190 carried the destination'swasforward (314 → 348) with the reasoning beside it, so the move's own verdict stays+10 against −11, and the reviewer's completeness check onwaschanges shape (stated in the comment). That is a data workaround for a script that has no words for the case.Ask (S,
scripts/pm/check-skill-line-ratchet.mjsonly)Teach the gate that an ordinary ruled raise and a move's raise are separate quantities — for example a per-entry list of ruled raises (each carrying its quoted ruling) that the move verdict subtracts before comparing against the sources' net decrease — so a destination's
wasstays its literal pre-move value and a later ruled raise never reads as the move's. Self-test: the PR #15190 shape (a live move plus an ordinary raise on the same entry) passes withwasat its pre-move value; a raise carrying no ruling still reds; theplatform-readings.mdentry is migrated back towas: 314in the same PR with the +34 recorded as a ruled raise. Not governed (scripts/pm/**).Refs
PR #15190 (the workaround and the arithmetic) · #15013 (the ruling) · #14685 item 5 / PR #14860 (the move rule).
Generated by Claude Code