mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
[CI] (scripts, P8-MF): pin G5's tenth row as well and re-pin both flush ladders on the reviewed post-fix bodies (ID-P8-14) - dev f973008c moved FlushPendingRangesNow past every base ref CI passes (the Adreno 830 queued ring copy) and ac9ab078 mirrors it into FlushPendingRangesFrom; both scripts' self-tests now run the pin-precedence and one-token controls on both ladders
This commit is contained in:
@@ -24,9 +24,19 @@
|
||||
# RingAllocate the fast path on the hot upload route
|
||||
# FlushPendingRangesNow the three-tier drain: tier 1 is an INVALIDATE_BUFFER map + memcpy
|
||||
# for a whole-buffer flush or a range >= 128 KiB, tier 2 the upload
|
||||
# ring + glCopyBufferSubData, tier 3 UploadRangeNow
|
||||
# ring + glCopyBufferSubData, tier 3 UploadRangeNow. PINNED since
|
||||
# ID-P8-14 (see below)
|
||||
# FlushPendingRangesFrom the SAME three-tier drain, on the arm that ships. Born in P3a
|
||||
#
|
||||
# ID-P8-14 PINS THE TENTH TOO. dev f973008c changed FlushPendingRangesNow on purpose: on Adreno 830 a
|
||||
# partial range-invalidating map of a store that still has an upload-ring glCopyBufferSubData queued
|
||||
# loses the copy (create-instancing drew whole terrain sections empty, SSIM 0.870), so the ring tier
|
||||
# stamps ringCopyRetireSerial and a partial range waits behind an unretired copy. P8 merged dev
|
||||
# (37174242) and P8-MF mirrored the rule into FlushPendingRangesFrom (via InvalidateFlushAccessFor).
|
||||
# The base ref CI passes (37da3c3a) predates the fix, so the tenth row can no longer be compared
|
||||
# against <ref-a>; both ladders are now PINNED rows, re-pinned together on the reviewed post-fix
|
||||
# bodies, and still compared on every run.
|
||||
#
|
||||
# THE ELEVENTH IS HERE BY INTEGRATOR DECISION ID-15, and it is the whole reason the row about the
|
||||
# tenth is not decorative. On this tree Managers.cpp has TWO arms: `#if MOBILEGL_PIPE_PUSH` holds
|
||||
# FlushPendingRangesFrom, `#else` holds FlushPendingRangesNow byte-identically, and BOTH of a push
|
||||
@@ -36,9 +46,10 @@
|
||||
# would exit 2 rather than run). The consequence, and what ID-15 closes: a push build compiles no
|
||||
# FlushPendingRangesNow at all, so a gate that hashed only that name protected text the shipping
|
||||
# build never sees, and a tier-threshold edit made in the ladder that DOES ship would pass it. So
|
||||
# both names are hashed. The pull build's ladder is compared against the base ref; the push build's
|
||||
# is compared, ALWAYS AND WHETHER OR NOT <ref-a> DEFINES IT, against a sha pinned at the commit
|
||||
# where that body was reviewed - see PINNED_FUNCTIONS.
|
||||
# both names are hashed. The push build's ladder is compared, ALWAYS AND WHETHER OR NOT <ref-a>
|
||||
# DEFINES IT, against a sha pinned at the commit where that body was reviewed - see
|
||||
# PINNED_FUNCTIONS. The pull build's ladder was compared against the base ref until ID-P8-14 pinned
|
||||
# it the same way (see the note under the list above).
|
||||
#
|
||||
# "ALWAYS" IS INTEGRATOR DECISION ID-41 AND IT IS A CHANGE. Until P5 this text said "pinned" while
|
||||
# the implementation consulted the pin only as a FALLBACK, when <ref-a> did not define the function
|
||||
@@ -50,7 +61,8 @@
|
||||
# InvalidateFlushAccessFor, the pull arm (FlushPendingRangesNow) is byte-identical across that
|
||||
# change and G1 reports .text +0, so it is the intended change to the eleventh row rather than
|
||||
# drift - and the answer is to RE-PIN it, not to revert it and not to let the row stop being
|
||||
# compared. The OTHER TEN stay ref-a-vs-ref-b: nothing about them moved.
|
||||
# compared. The other nine stay ref-a-vs-ref-b: nothing about them moved (the tenth moved at
|
||||
# ID-P8-14 and was pinned then).
|
||||
#
|
||||
# THE TENTH IS HERE BY INTEGRATOR DECISION ID-11, resolving a contradiction inside the brief.
|
||||
# D-F's "Decision: nine functions" table omits FlushPendingRangesNow, but BRIEF-P3A.md:420 calls it
|
||||
@@ -99,24 +111,33 @@
|
||||
set -u -o pipefail
|
||||
|
||||
SOURCE_PATH=MobileGL/MG_Backend/DirectGLES/Managers.cpp
|
||||
# The ten that exist at the P3a base ref, so their baseline is read out of <ref-a>.
|
||||
FUNCTIONS="IsPoolable EnrollIntoPool AcquireFromPool TrimBufferPool ClearBufferPool ProcessDeferredBufferReleases CreateRingStorage RingAvailable RingAllocate FlushPendingRangesNow"
|
||||
# The ELEVENTH (ID-15), and it is a different kind of row: it was BORN in P3a, so there was no
|
||||
# body at the base ref to compare it with, and its baseline is PINNED below and consulted
|
||||
# UNCONDITIONALLY (ID-41 - see the long note at the top of this file).
|
||||
# The nine unpinned rows: they exist at the P3a base ref, so their baseline is read out of <ref-a>.
|
||||
FUNCTIONS="IsPoolable EnrollIntoPool AcquireFromPool TrimBufferPool ClearBufferPool ProcessDeferredBufferReleases CreateRingStorage RingAvailable RingAllocate"
|
||||
# The TENTH and the ELEVENTH, and they are a different kind of row: their baseline is PINNED below
|
||||
# and consulted UNCONDITIONALLY (ID-41 - see the long note at the top of this file). The eleventh
|
||||
# (ID-15) was BORN in P3a, so there was no body at the base ref to compare it with; the tenth joined
|
||||
# it at ID-P8-14, when a reviewed fix moved it past the base ref. PINNED_FUNCTIONS is in the fixed
|
||||
# order, because apply_pinned_shas appends the pinned rows in that order.
|
||||
#
|
||||
# THE PIN, AND WHAT RE-PINS IT. Whoever moves this body deliberately replaces BOTH lines and
|
||||
# writes the decision beside them; a pin with no commit and no decision next to it is a number
|
||||
# nobody can audit.
|
||||
# 3e298c9a 37fc94ff... ID-15, P3a: the two-arm shape, reviewed and accepted
|
||||
# 3dadd4c1 172b0222... ID-41, P5 (b1): [Fix] (DirectGLES): make the extent hostBase is good
|
||||
# for a parameter of the flush ladder, so tier 1's widening refusal is
|
||||
# live code the moment a SEG_STAGE snapshot is narrower than the queued
|
||||
# range. <- CURRENT
|
||||
PINNED_FUNCTIONS="FlushPendingRangesFrom"
|
||||
PINNED_BASELINE_REF=3dadd4c1
|
||||
PINNED_BASELINE_DECISION=ID-41
|
||||
PINNED_SHA_FlushPendingRangesFrom=172b022273db01b16e772d15b269ffcd797fe38c767f7354d83ce113a66040d0
|
||||
# THE PIN, AND WHAT RE-PINS IT. Whoever moves one of these bodies deliberately replaces the shas
|
||||
# AND the commit AND the decision, and writes a line here; a pin with no commit and no decision
|
||||
# next to it is a number nobody can audit.
|
||||
# 3e298c9a From 37fc94ff... ID-15, P3a: the two-arm shape, reviewed and accepted
|
||||
# 3dadd4c1 From 172b0222... ID-41, P5 (b1): [Fix] (DirectGLES): make the extent hostBase is
|
||||
# good for a parameter of the flush ladder, so tier 1's widening
|
||||
# refusal is live code the moment a SEG_STAGE snapshot is narrower
|
||||
# than the queued range.
|
||||
# ac9ab078 Now c40cae66... ID-P8-14, P8-MF: dev f973008c (merged at 37174242) keeps a partial
|
||||
# From 33bc4cb8... range-invalidating map behind an upload-ring copy still queued on the
|
||||
# store - Adreno 830 loses the queued copy - in FlushPendingRangesNow;
|
||||
# ac9ab078 mirrors it into FlushPendingRangesFrom (the stamp on
|
||||
# the ring tier, the guard in InvalidateFlushAccessFor, the
|
||||
# whole-buffer exemption kept). <- CURRENT
|
||||
PINNED_FUNCTIONS="FlushPendingRangesNow FlushPendingRangesFrom"
|
||||
PINNED_BASELINE_REF=ac9ab078
|
||||
PINNED_BASELINE_DECISION=ID-P8-14
|
||||
PINNED_SHA_FlushPendingRangesNow=c40cae66f021160478ef9af6bcf5e8ef0bf26721486173695d5257263c97723f
|
||||
PINNED_SHA_FlushPendingRangesFrom=33bc4cb855b932ed4fb0de44a4cfa7a9be8aca34da267ccd2fc9fedfad4d3328
|
||||
ALL_FUNCTIONS="$FUNCTIONS $PINNED_FUNCTIONS"
|
||||
EXPECTED_FUNCTION_COUNT=11
|
||||
# The functions the self-test perturbs, one control each. ClearBufferPool is small, has no forward
|
||||
@@ -353,21 +374,22 @@ apply_pinned_shas() {
|
||||
for name in $PINNED_FUNCTIONS; do
|
||||
eval "pinned=\$PINNED_SHA_$name"
|
||||
if [ -z "$pinned" ] || [ "$pinned" = "PLACEHOLDER_SHA" ]; then
|
||||
say "$name has no pinned baseline sha; the eleventh row cannot be compared"
|
||||
say "$name has no pinned baseline sha; that row cannot be compared"
|
||||
return 2
|
||||
fi
|
||||
grep -v " $name\$" "$file" > "$file.unpinned" || true
|
||||
mv -f "$file.unpinned" "$file" || return 2
|
||||
# Appended LAST, which is also its position in the fixed order (it is the eleventh of eleven),
|
||||
# so the header's "stdout is always the sha list in the fixed order" stays true and a baseline
|
||||
# captured by redirect still diffs cleanly against a two-ref run.
|
||||
# Appended LAST, in PINNED_FUNCTIONS order, which is also their position in the fixed order
|
||||
# (the tenth and the eleventh of eleven), so the header's "stdout is always the sha list in the
|
||||
# fixed order" stays true and a baseline captured by redirect still diffs cleanly against a
|
||||
# two-ref run.
|
||||
printf '%s %s\n' "$pinned" "$name" >> "$file"
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
# The BASELINE side (<ref-a>). The TEN are extracted strictly, so a rename of one of THOSE is
|
||||
# exit 2 rather than a silently short list. FlushPendingRangesFrom then takes the PINNED sha
|
||||
# The BASELINE side (<ref-a>). The NINE are extracted strictly, so a rename of one of THOSE is
|
||||
# exit 2 rather than a silently short list. Each pinned row then takes the PINNED sha
|
||||
# WHETHER OR NOT <ref-a> defines it (ID-41), and a <ref-a> that defines it DIFFERENTLY is
|
||||
# reported - loudly - because the two answers disagreeing is itself a finding rather than a
|
||||
# reason to prefer the ref.
|
||||
@@ -379,7 +401,7 @@ extract_baseline() {
|
||||
return 2
|
||||
fi
|
||||
if ! python3 "$PY" extract "$blob" "$FUNCTIONS" > "$WORK_DIR/$out.sha" 2>"$WORK_DIR/$out.err"; then
|
||||
say "the baseline ref '$ref' does not define the pre-P3a ten exactly once each:"
|
||||
say "the baseline ref '$ref' does not define the nine unpinned rows exactly once each:"
|
||||
sed 's/^/[p3a-untouched] /' "$WORK_DIR/$out.err" >&2
|
||||
return 2
|
||||
fi
|
||||
@@ -387,7 +409,7 @@ extract_baseline() {
|
||||
eval "pinned=\$PINNED_SHA_$name"
|
||||
atRef=$(python3 "$PY" extract "$blob" "$name" 2>/dev/null | awk -v n="$name" '$2 == n { print $1 }')
|
||||
if [ -z "$atRef" ]; then
|
||||
say "$name is not defined at '$ref' (it was born in P3a): its baseline is the sha PINNED in"
|
||||
say "$name is not defined at '$ref' (a pinned row): its baseline is the sha PINNED in"
|
||||
say " this script, captured at $PINNED_BASELINE_REF ($PINNED_BASELINE_DECISION)"
|
||||
elif [ "$atRef" != "$pinned" ]; then
|
||||
say "NOTE: $name IS defined at '$ref' and hashes"
|
||||
@@ -517,14 +539,16 @@ if [ "${1:-}" = "--self-test" ]; then
|
||||
# --- THE PINNED ROW (ID-41) -----------------------------------------------------------------
|
||||
# TWO more controls, and they exist because none of the five above can see the pin at all: every
|
||||
# one of them compares one extraction of the working tree against another, so they would all be
|
||||
# green on a build of this script in which PINNED_SHA_* was never read by anything. The eleventh
|
||||
# row's whole claim is "the baseline is the PIN, not <ref-a>", and that claim needs its own two.
|
||||
# green on a build of this script in which PINNED_SHA_* was never read by anything. A pinned
|
||||
# row's whole claim is "the baseline is the PIN, not <ref-a>", and that claim needs its own two -
|
||||
# per pinned row (both ladders since ID-P8-14).
|
||||
for target in $PINNED_FUNCTIONS; do
|
||||
eval "pinned=\$PINNED_SHA_$target"
|
||||
|
||||
# (1) PIN PRECEDENCE, positive. A baseline that carries some OTHER sha for the pinned row -
|
||||
# which is the shape of every <ref-a> CI passes today, since ff2994d9 and 37da3c3a both DEFINE
|
||||
# FlushPendingRangesFrom - must come out of apply_pinned_shas carrying the PIN. This is the
|
||||
# FlushPendingRangesFrom and both predate ID-P8-14's FlushPendingRangesNow - must come out of
|
||||
# apply_pinned_shas carrying the PIN. This is the
|
||||
# control that would have caught the ID-41 defect itself: before it, the pin was consulted
|
||||
# only when <ref-a> lacked the function, so the row silently reverted to ref-a-vs-ref-b the
|
||||
# moment a base ref had one.
|
||||
@@ -537,7 +561,7 @@ if [ "${1:-}" = "--self-test" ]; then
|
||||
got=$(awk -v n="$target" '$2 == n { print $1 }' "$WORK_DIR/pinprec.sha")
|
||||
if [ "$got" != "$pinned" ]; then
|
||||
say "PIN CONTROL FAILED: a baseline that carried a DIFFERENT sha for $target came out as"
|
||||
say " '${got:-<absent>}' and not as the pin ($pinned). The eleventh row would be compared"
|
||||
say " '${got:-<absent>}' and not as the pin ($pinned). That pinned row would be compared"
|
||||
say " against <ref-a> again, which is exactly the defect $PINNED_BASELINE_DECISION closed."
|
||||
exit 2
|
||||
fi
|
||||
@@ -545,7 +569,7 @@ if [ "${1:-}" = "--self-test" ]; then
|
||||
|
||||
# (2) A ONE-TOKEN EDIT TO THE PINNED LADDER, negative, AGAINST THE PIN. The comparison must go
|
||||
# red, must name the row, and must say that the row is PINNED - R-16's "a control asserts its
|
||||
# OWN failure string": the pinned row and the ten ref-a rows are fixed differently, and a
|
||||
# OWN failure string": the pinned rows and the nine ref-a rows are fixed differently, and a
|
||||
# reader who gets only the generic paragraph goes looking for a diff against <ref-a> that does
|
||||
# not exist.
|
||||
python3 "$PY" perturb-token "$WORK_DIR/pristine.cpp" "$WORK_DIR/pinperturbed.cpp" \
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
# CreateRingStorage glBufferStorageEXT + persistent|coherent, retires at serial + 1
|
||||
# RingAvailable self-heals a stale context generation
|
||||
# RingAllocate the fast path on the hot upload route
|
||||
# FlushPendingRangesNow the three-tier drain, pull arm
|
||||
# FlushPendingRangesNow the three-tier drain, pull arm. PINNED since ID-P8-14: dev
|
||||
# f973008c moved it past <ref-a> on purpose (the parent's note)
|
||||
# FlushPendingRangesFrom the SAME three-tier drain, on the arm that ships (ID-15). Born
|
||||
# in P3a, so its baseline is PINNED, not read from <ref-a>
|
||||
#
|
||||
@@ -125,6 +126,11 @@
|
||||
# be RE-PINNED on the reviewed P5 body rather than reverted or quietly left comparing
|
||||
# against <ref-a>. This script says so on stderr, in both directions, and keeps the PIN -
|
||||
# because the pin is the reviewed text.
|
||||
#
|
||||
# ID-P8-14 extends the same treatment to FlushPendingRangesNow: dev f973008c changed it
|
||||
# past every <ref-a> CI passes (the Adreno 830 queued-ring-copy guard), P8-MF mirrored the
|
||||
# rule into FlushPendingRangesFrom, and both ladders were re-pinned together on the
|
||||
# reviewed post-fix bodies.
|
||||
set -u -o pipefail
|
||||
|
||||
# One row per region: <name>@<kind>@<path>. The ORDER is the fixed order the sha list is printed
|
||||
@@ -151,21 +157,32 @@ ShouldUseCaveatTextureFormat@function@MobileGL/MG_Backend/DirectGLES/Utils.cpp"
|
||||
|
||||
EXPECTED_FUNCTION_COUNT=17
|
||||
|
||||
# The one region born in P3a, so there is no body at P4a's base ref that this phase reviewed: its
|
||||
# baseline is PINNED and consulted UNCONDITIONALLY (DEVIATIONS D-N/2, and ID-41 for the parent).
|
||||
# The two flush ladders. FlushPendingRangesFrom was born in P3a, so there is no body at P4a's base
|
||||
# ref that this phase reviewed; FlushPendingRangesNow was moved past the base ref by a reviewed fix
|
||||
# (ID-P8-14, dev f973008c: a partial range-invalidating map must not overtake an upload-ring copy
|
||||
# still queued on the store - Adreno 830 loses the copy). Both baselines are PINNED and consulted
|
||||
# UNCONDITIONALLY (DEVIATIONS D-N/2, and ID-41 for the parent).
|
||||
#
|
||||
# THE PIN, AND WHAT RE-PINS IT. Whoever moves this body deliberately replaces BOTH lines and
|
||||
# writes the decision beside them; a pin with no commit and no decision next to it is a number
|
||||
# nobody can audit. The parent script carries the identical table and the two must not drift.
|
||||
# 3e298c9a 37fc94ff... ID-15, P3a: the two-arm shape, reviewed and accepted
|
||||
# 3dadd4c1 172b0222... ID-41, P5 (b1): [Fix] (DirectGLES): make the extent hostBase is good
|
||||
# for a parameter of the flush ladder, so tier 1's widening refusal is
|
||||
# live code the moment a SEG_STAGE snapshot is narrower than the queued
|
||||
# range. <- CURRENT
|
||||
PINNED_FUNCTIONS="FlushPendingRangesFrom"
|
||||
PINNED_BASELINE_REF=3dadd4c1
|
||||
PINNED_BASELINE_DECISION=ID-41
|
||||
PINNED_SHA_FlushPendingRangesFrom=172b022273db01b16e772d15b269ffcd797fe38c767f7354d83ce113a66040d0
|
||||
# THE PIN, AND WHAT RE-PINS IT. Whoever moves one of these bodies deliberately replaces the shas
|
||||
# AND the commit AND the decision, and writes a line here; a pin with no commit and no decision
|
||||
# next to it is a number nobody can audit. The parent script carries the identical table and the
|
||||
# two must not drift.
|
||||
# 3e298c9a From 37fc94ff... ID-15, P3a: the two-arm shape, reviewed and accepted
|
||||
# 3dadd4c1 From 172b0222... ID-41, P5 (b1): [Fix] (DirectGLES): make the extent hostBase is
|
||||
# good for a parameter of the flush ladder, so tier 1's widening
|
||||
# refusal is live code the moment a SEG_STAGE snapshot is narrower
|
||||
# than the queued range.
|
||||
# ac9ab078 Now c40cae66... ID-P8-14, P8-MF: dev f973008c (merged at 37174242) keeps a partial
|
||||
# From 33bc4cb8... range-invalidating map behind an upload-ring copy still queued on the
|
||||
# store - Adreno 830 loses the queued copy - in FlushPendingRangesNow;
|
||||
# ac9ab078 mirrors it into FlushPendingRangesFrom (the stamp on
|
||||
# the ring tier, the guard in InvalidateFlushAccessFor, the
|
||||
# whole-buffer exemption kept). <- CURRENT
|
||||
PINNED_FUNCTIONS="FlushPendingRangesNow FlushPendingRangesFrom"
|
||||
PINNED_BASELINE_REF=ac9ab078
|
||||
PINNED_BASELINE_DECISION=ID-P8-14
|
||||
PINNED_SHA_FlushPendingRangesNow=c40cae66f021160478ef9af6bcf5e8ef0bf26721486173695d5257263c97723f
|
||||
PINNED_SHA_FlushPendingRangesFrom=33bc4cb855b932ed4fb0de44a4cfa7a9be8aca34da267ccd2fc9fedfad4d3328
|
||||
|
||||
# The regions the self-test perturbs, one negative control each. FOUR, exactly as D-N requires, and
|
||||
# each is a different shape so that a control which only ever perturbed the easy one cannot leave
|
||||
@@ -502,8 +519,8 @@ extract_ref() {
|
||||
return $?
|
||||
}
|
||||
|
||||
# The BASELINE side (<ref-a>). The sixteen ordinary regions are extracted strictly, so a rename of
|
||||
# one of THOSE is exit 2 rather than a silently short list. FlushPendingRangesFrom then takes the
|
||||
# The BASELINE side (<ref-a>). The fifteen ordinary regions are extracted strictly, so a rename of
|
||||
# one of THOSE is exit 2 rather than a silently short list. Each pinned row then takes the
|
||||
# PINNED sha (DEVIATIONS D-N/2) whether or not <ref-a> defines it, and a <ref-a> that defines it
|
||||
# DIFFERENTLY is reported - loudly - because the two answers disagreeing is itself a finding.
|
||||
extract_baseline() {
|
||||
@@ -517,7 +534,7 @@ extract_baseline() {
|
||||
mv -f "$WORK_DIR/$out.spec.tmp" "$WORK_DIR/$out.spec" || return 2
|
||||
done
|
||||
if ! python3 "$PY" extract "$WORK_DIR/$out.spec" > "$WORK_DIR/$out.sha" 2>"$WORK_DIR/$out.err"; then
|
||||
say "the baseline ref '$ref' does not define the sixteen unpinned regions exactly once each:"
|
||||
say "the baseline ref '$ref' does not define the fifteen unpinned regions exactly once each:"
|
||||
sed 's/^/[p4a-untouched] /' "$WORK_DIR/$out.err" >&2
|
||||
return 2
|
||||
fi
|
||||
@@ -608,8 +625,8 @@ compare_lists() {
|
||||
say " $labelA ${shaA:-<not found>}"
|
||||
say " $labelB ${shaB:-<not found>}"
|
||||
if is_pinned_row "$name"; then
|
||||
# ITS OWN MESSAGE, and that is R-16 rather than decoration: the pinned row and the
|
||||
# sixteen ref-a rows fail differently and are fixed differently, so a reader who sees
|
||||
# ITS OWN MESSAGE, and that is R-16 rather than decoration: the pinned rows and the
|
||||
# fifteen ref-a rows fail differently and are fixed differently, so a reader who sees
|
||||
# only the generic paragraph below goes looking for a diff against <ref-a> that does not
|
||||
# exist.
|
||||
say " $name IS A PINNED ROW ($PINNED_BASELINE_DECISION): its baseline is ALWAYS the sha"
|
||||
@@ -640,10 +657,10 @@ compare_lists() {
|
||||
# A gate that always says "identical" and a gate that is working produce the same green, so the
|
||||
# comparison has to be shown failing. Both controls run: the POSITIVE ones (an untouched copy
|
||||
# compares equal; an edit OUTSIDE the regions is invisible; a baseline that names another sha for
|
||||
# the PINNED row is overridden by the pin) rule out a comparison that reports every region as
|
||||
# moved, and the NINE NEGATIVE ones - D-N's four regions, each perturbed at the HEAD of its body
|
||||
# and again at its TAIL, plus a ONE-TOKEN edit to the pinned ladder compared AGAINST THE PIN
|
||||
# (ID-41) - rule out the comparison that never reports any, the extraction whose extent stops
|
||||
# a PINNED row is overridden by the pin) rule out a comparison that reports every region as
|
||||
# moved, and the TEN NEGATIVE ones - D-N's four regions, each perturbed at the HEAD of its body
|
||||
# and again at its TAIL, plus a ONE-TOKEN edit to each pinned ladder compared AGAINST THE PIN
|
||||
# (ID-41; two pinned rows since ID-P8-14) - rule out the comparison that never reports any, the extraction whose extent stops
|
||||
# before the closing brace (F-m2), and a pin that nothing consults.
|
||||
if [ "${1:-}" = "--self-test" ]; then
|
||||
[ $# -eq 1 ] || { say "--self-test takes no other arguments"; exit 2; }
|
||||
@@ -750,18 +767,17 @@ if [ "${1:-}" = "--self-test" ]; then
|
||||
# --- THE PINNED ROW (ID-41) -----------------------------------------------------------------
|
||||
# TWO more controls, and they exist because none of the ten above can see the pin at all: every
|
||||
# one of them compares one extraction of the working tree against another, so they would all be
|
||||
# green on a build of this script in which PINNED_SHA_* was never read by anything. The pinned
|
||||
# green on a build of this script in which PINNED_SHA_* was never read by anything. A pinned
|
||||
# row's whole claim is "the baseline is the PIN, not <ref-a>" (D-N/2, ID-41), and that claim
|
||||
# needs its own two.
|
||||
# needs its own two - per pinned row (both ladders since ID-P8-14).
|
||||
for target in $PINNED_FUNCTIONS; do
|
||||
eval "pinned=\$PINNED_SHA_$target"
|
||||
targetSource=$(printf '%s\n' "$REGIONS" | awk -F@ -v n="$target" '$1 == n { print $3 }')
|
||||
[ -n "$targetSource" ] || { say "$target is not one of the regions"; exit 2; }
|
||||
|
||||
# (1) PIN PRECEDENCE, positive. A baseline that carries some OTHER sha for the pinned row -
|
||||
# which is the shape of every <ref-a> CI passes, since 37da3c3a DOES define
|
||||
# FlushPendingRangesFrom and no longer hashes the pin - must come out of apply_pinned_shas
|
||||
# carrying the PIN.
|
||||
# which is the shape of every <ref-a> CI passes, since 37da3c3a DOES define both ladders and
|
||||
# hashes neither pin - must come out of apply_pinned_shas carrying the PIN.
|
||||
grep -v " $target\$" "$WORK_DIR/pristine.sha" > "$WORK_DIR/pinprec.sha" || true
|
||||
printf '%s %s\n' \
|
||||
"0000000000000000000000000000000000000000000000000000000000000000" "$target" \
|
||||
@@ -779,7 +795,7 @@ if [ "${1:-}" = "--self-test" ]; then
|
||||
|
||||
# (2) A ONE-TOKEN EDIT TO THE PINNED LADDER, negative, AGAINST THE PIN. The comparison must go
|
||||
# red, must name the region, and must say the region is PINNED - R-16's "a control asserts its
|
||||
# OWN failure string": the pinned row and the sixteen ref-a rows are fixed differently, and a
|
||||
# OWN failure string": the pinned rows and the fifteen ref-a rows are fixed differently, and a
|
||||
# reader who gets only the generic paragraph goes looking for a diff against <ref-a> that does
|
||||
# not exist.
|
||||
rm -rf "$WORK_DIR/pinperturbed"
|
||||
|
||||
Reference in New Issue
Block a user