Skip to content

chore(register): C-73 — stale-run selection; and a correction to C-25 written today - #176

Merged
Polichinel merged 1 commit into
developmentfrom
chore/register-c73-stale-run
Aug 1, 2026
Merged

Polichinel merged 1 commit into
developmentfrom
chore/register-c73-stale-run

Conversation

@Polichinel

Copy link
Copy Markdown
Collaborator

From /falsify on "there is nothing more to do in this repo" — which the audit disproved. The finding is views-pipeline-core's C-241, relayed in #172 and unread here until the audit went looking.

C-73 (Tier 2) — the delivery can ship a stale run rather than failing

pipeline-core's search_files_by_metadata was unpaged: Appwrite returns 25 rows by default and get_latest_file_id sorted those, so with >25 matching documents it returned the newest of the oldest 25 — staler every run.

It reaches us because HOP_A_MANIFEST_FILTERS is broad by design and the store has no retention: every manifest ever published is a candidate. Shard lookups are name-scoped and resolve correctly for whatever run was selected — which is exactly why the failure is quiet. Everything downstream of the selection is self-consistent, so the partner receives a complete, valid, wrong-vintage delivery.

Not our defect and not our fix (arrives with a pin bump, gated on pipeline-core#341). What is ours: the register carried no record of it, and broad-filter-newest-wins is a strategy this repo chose.

C-25 corrected — I got this wrong earlier today

I closed C-25 as "superseded by mechanism" reasoning that "recency-based selection is not an operation the code can perform any more."

It is exactly what the code does — source_selection.py:106.

What manifest selection actually solved is the producer-identity half: the manifest declares its ensemble, every shard header is verified against it, so another producer's run cannot be selected. The recency half was never solved — it moved from newest-payload-file to newest-manifest.

The overclaim is left visible rather than rewritten, because it is more instructive than the conclusion: a mechanism can dissolve one half of a hazard and leave the other standing, and "superseded by mechanism" is exactly the phrasing that hides it.

appwrite merged into C-07

Same problem type (undeclared direct dependency arriving transitively), new location. But no longer "Tier 4-ish, resolve if the transitive guarantee is sufficient" — pipeline-core is making appwrite an optional extra (#345), so the guarantee is being withdrawn deliberately and this repo breaks at import when it lands.

Register: 73 concerns, 26 open.

🤖 Generated with Claude Code

… written today

From /falsify on "there is nothing more to do in this repo", which the audit
disproved. The finding itself is views-pipeline-core's C-241, relayed in #172 and
unread here until the audit went looking.

C-73 (Tier 2): pipeline-core's search_files_by_metadata was unpaged — Appwrite
returns 25 rows by default and get_latest_file_id sorted THOSE, so with more than
25 matching documents it returned the newest of the oldest 25, staler every run.
It reaches this repo because HOP_A_MANIFEST_FILTERS is broad by design and the
store has no retention: every manifest ever published is a candidate. Shard
lookups are name-scoped and resolve correctly FOR WHATEVER RUN WAS SELECTED,
which is exactly why the failure is quiet — everything downstream of the
selection is self-consistent. The partner receives a complete, valid,
wrong-vintage delivery.

Not this repo's defect and not its fix (it arrives with a pin bump, gated on
pipeline-core #341). What IS ours: the register carried no record of it, and the
broad-filter-newest-wins strategy is a choice this repo made.

C-25 CORRECTED, not rewritten. I closed it earlier today as "superseded by
mechanism" on the reasoning that "recency-based selection is not an operation the
code can perform any more". That is false — source_selection.py:106 does exactly
that. What manifest selection actually solved is the PRODUCER-IDENTITY half: the
manifest declares its ensemble and every shard header is checked against it, so
another producer's run cannot be selected. The RECENCY half was never solved; it
moved from newest-payload-file to newest-manifest. The overclaim is left visible
because it is more instructive than the conclusion.

appwrite merged into C-07 rather than filed separately — same problem type
(undeclared direct dependency arriving transitively), new location. But it is no
longer "Tier 4-ish, resolve if the transitive guarantee is sufficient": pipeline-
core is making appwrite an optional extra (#345), so the guarantee is being
withdrawn deliberately, and this repo breaks at import when it lands.

Register: 73 concerns, 26 open. Integrity guard green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Polichinel
Polichinel merged commit 0de96b8 into development Aug 1, 2026
4 checks passed
@Polichinel
Polichinel deleted the chore/register-c73-stale-run branch August 1, 2026 17:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant