Repository navigation
fix(#439): bump VIEWS_POSTPROCESSING_PIN 1.1.1 → 1.4.0 in both launchers - #522
Merged
Merged
Conversation
…hers Closes #439. Two lines, one value, and it is the only thing standing between the FAO findability fix and a pod. WHY THIS IS NOT A NO-OP. The launcher does NOT install views-postprocessing from PyPI. It installs from a git ref: tools/launcher/postprocessor.sh:132 pip install "git+https://${GITHUB_TOKEN}@.../views-postprocessing.git@${VIEWS_POSTPROCESSING_PIN}" and refuses the run at :164 if the installed ref does not match the pin. So views-postprocessing#314 being merged does nothing for a pod, and releasing it to PyPI (1.4.0 is there) does nothing either. Verified empirically rather than reasoned: the 2026-09-29 pod ended up with views-postprocessing 1.1.1 while PyPI was at 1.3.0. This was invisible because the two halves of the same incident reach a pod by DIFFERENT mechanisms — views-pipeline-core transitively from PyPI through views-hydranet's dependency range, views-postprocessing from a git tag by exact pin. "Is the fix released?" therefore has two different correct answers depending on which half is meant, and nothing states that anywhere. views-postprocessing#310 is the same family. WHAT 1.4.0 CARRIES: #314, the C-94 findability guard that verifies every artefact by name rather than trusting a returned file id — the defect that let the 2026-09-29 delivery report "Postprocessor Run Completed" while being unservable; and #315, a guard deriving the port's documented datastore contract from source so the prose cannot drift from the code. VERIFIED BEFORE COMMITTING, not assumed: - tag 1.4.0 resolves on the remote the launcher actually pulls from (8db8c9fb) - no other reference to 1.1.1 remains in the repo outside historical reports - the ref-vs-pin guard at postprocessor.sh:164 still reads the same variable - `bash -n` clean on both files BOTH LAUNCHERS, deliberately. un_crafd carries the identical pin and the identical exposure; leaving CRAF'd on 1.1.1 would fix one partner delivery and silently leave the other on the version with the defect. NOT pinned to `development`, which would have been the lazy choice and is worse than a moving target here: the :164 guard compares the installed ref against the pin STRING, so a branch name satisfies the check designed to catch staleness while installing whatever landed most recently. It would pass the guard and still be unreproducible for a partner-visible delivery. Expect a behaviour change: a delivery that previously completed can now stop. 1.4.0 adds two refusal situations and no new exception types. A DeliveryNotFindableError names every object that does not resolve and states explicitly when nothing in the run is servable. Edited under an explicit lift of the standing "do not modify run.sh" rule, granted for this change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GG2cY2HaqmUMpwUyR5V82K
/review-diff on the pin bump, and the finding is one the value hid: the rationale blocks in both launchers document 1.1.0 and then 1.1.1 in detail, and stopped there. The value said 1.4.0 with no recorded reason. These blocks are not commentary. `tools/launcher/postprocessor.sh:26` says "EVERY STEP BELOW IS A SCAR. Read the comment before reordering anything." A future reader would have found a version two moves ahead of its own history and no way to learn what it carries. Which is the exact pattern the views-postprocessing session named against itself twice today — fixing the visible half of a finding and leaving the half that bites. The value is the visible half. The scar record is the half that explains it. un_fao now records the 2026-09-29 incident as the reason: the findability guard in 1.1.1 checked TWO artefacts out of the 110 a run uploads, and by returned file id rather than by name, so the first-ever FAO delivery uploaded 109 of 110, logged "Postprocessor Run Completed", fired a success alert and was refused by views-faoapi. It also records that the producer half of that defect is views-pipeline-core#552, shipped in 3.3.4 and reached from PyPI, while this pin is the other half and is reached from a git tag — which is precisely why "is the fix released?" had two different correct answers and this line was missed for hours. un_crafd records the same, framed by the shared-prefix argument its own block already makes twice: both launchers install into one conda prefix, so moving only the leg that failed downgrades the environment out from under the armed FAO delivery (C-139). CRAF'd runs the identical `_assert_delivery_is_findable`, so the defect is byte-identical there and has simply not fired on that leg yet — the same sentence the 1.1.1 note had to write about #268. Also replaced the verification recipe. The old one greps for `success is not True`, which verifies the 1.1.0-era C-79 fix and is still correct but says nothing about what 1.4.0 adds. The new one greps `DeliveryNotFindableError` in `delivery/findability.py` — verifying the build by what it REFUSES rather than by what it claims, which is the lesson of the whole incident. No behaviour change in this commit; the pin value is unchanged from the previous one. ruff clean, 8037 passed, `bash -n` clean on both files. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GG2cY2HaqmUMpwUyR5V82K
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #439.
Two lines, one value. It is the only thing standing between the FAO findability fix and a pod.
in
postprocessors/un_fao/run.sh:38andpostprocessors/un_crafd/run.sh:34.Why this is not a no-op
The launcher does not install views-postprocessing from PyPI. It installs from a git ref —
tools/launcher/postprocessor.sh:132:pip install "git+https://${GITHUB_TOKEN}@.../views-postprocessing.git@${VIEWS_POSTPROCESSING_PIN}"and refuses the run at
:164if the installed ref does not match the pin.So views-postprocessing#314 being merged does nothing for a pod, and releasing it to PyPI (1.4.0 is there) does nothing either. Verified empirically rather than reasoned: the 2026-09-29 pod ended up with views-postprocessing 1.1.1 while PyPI was at 1.3.0.
Why this was invisible: the two halves of the same incident reach a pod by different mechanisms — views-pipeline-core transitively from PyPI through views-hydranet's dependency range, views-postprocessing from a git tag by exact pin. "Is the fix released?" therefore has two different correct answers depending on which half you mean, and nothing states that anywhere. views-postprocessing#310 is the same family.
What 1.4.0 carries
Postprocessor Run Completedand fire a success alert while being unservable.Verified before committing, not assumed
1.4.0resolves on the remote the launcher actually pulls from —8db8c9fbff181a0858737724d8bf5a68634c725d1.1.1remains in the repo outside historical reportspostprocessor.sh:164still reads the same variablebash -nclean on both filesBoth launchers, deliberately
un_crafdcarries the identical pin and the identical exposure. Leaving CRAF'd on 1.1.1 would fix one partner delivery and silently leave the other on the version with the defect.Not pinned to
developmentThat would have been the lazy choice and it is worse than a moving target here: the
:164guard compares the installed ref against the pin string, so a branch name satisfies the check designed to catch staleness while installing whatever landed most recently. It would pass the guard and still be unreproducible for a partner-visible delivery.Expect a behaviour change
A delivery that previously completed can now stop. 1.4.0 adds two refusal situations and no new exception types. A
DeliveryNotFindableErrornames every object that does not resolve and states explicitly when nothing in the run is servable.Process note
Edited under an explicit lift of the standing "do not modify
run.sh" rule, granted by the maintainer for this change.🤖 Generated with Claude Code
https://claude.ai/code/session_01GG2cY2HaqmUMpwUyR5V82K