Skip to content

S7: delete both consumer source-reads — the category is wrong, proven twice in 24h #248

Closed

Description

@Polichinel

Re-scoped 2026-08-12. The first draft asked "close it or own it" and leaned toward restoring the source read. An expert review and a second live breakage settled it: the category is wrong, and this story is a deletion.

Part of #241, Gate 1 — blocks PR #240. Registers C-92, C-94; sharpens C-87.

The evidence, which is now conclusive

date repo what they did what happened here
2026-08-11 views-faoapi tidied managers/api.py — literal → named constant our FAO source-read went red
2026-08-12 views-crafdapi APIPathManager(CONSUMER_DOCUMENT_NAME, validate=False) — the identical refactor our crafd source-read is red on development right now

Two repositories, the same refactor, 24 hours apart, both times because their code got better. The regex was measuring their code quality and reporting it as our failure. ADR-017 §7 already said we were never entitled to depend on another repository's file layout; this is that prediction landing twice.

There is no version of this check that survives. A repo that renames a constant, extracts a helper, or moves a file breaks it — and every one of those is an improvement we would be penalising.

Work

  1. Delete test_the_consumer_still_filters_on_the_name_until_it_checks_itself and _CONSUMER_FILTER, _CONSUMER_PATH_MANAGER, _CONSUMER_SELF_CHECK_PENDING — both partners, the whole mechanism.
  2. Drop the views-crafdapi sibling checkout from .github/workflows/run_pytest.yml and from SIBLINGS, if that check was its only consumer — measure, do not assume. Update the note, which currently states a retirement condition contradicting ADR-017 §5.
  3. Register the gap honestly (C-92) with an owner and a trigger. Do not pretend the consumer-side checks cover it — they do not:
link owner mechanism status
our upload writes name N us code ✅
N == registry row us test_the_declared_consumer_name_matches_the_registry ✅ landed
their constant == registry row them views-faoapi's tests/test_seam_contract_binding.py ✅ landed (their development)
document is findable by N in the store us nothing ❌ deferred → C-94
their query uses their constant them nothing ❌ ask for it
  1. File one issue each on views-faoapi and views-crafdapi: their registry-binding check binds a constant; ask them to bind the query to that constant. Note for views-faoapi that prediction/manager.py:117 applies the name filter conditionally (if hasattr(...) and model_name), so a falsy name drops it silently. This is a condition of being a consumer, statable in the contract, and it works for a third-party consumer too.

What is deferred, and why it is the right deferral

The expert review's answer is a producer-side read-only findability preflight: after upload, query the store read-only for a document whose name equals the declared label, assert non-empty, log and raise. It is legal — the registry's [test_environment] table says "read-only preflight validation is the only permitted live check" — the APPWRITE_READ_API_KEY slot already exists, and it is the only mechanism that survives a third-party private consumer, because it asks nothing of them.

It is still deferred, and honestly so. It needs a read credential wired into the launcher, which is an operator action and not a code change; it adds a live network call to the delivery path; and delivery works today. Building it now would be building the right thing at the wrong time.

Registered as C-94. Trigger: a delivery is reported empty, or APPWRITE_READ_API_KEY is provisioned for the launcher. Owner: this repository.

Acceptance criteria

  • No test in this repository parses another repository's source. Verified by grep.
  • The suite is green on development — including the currently-red crafd case, green by deletion of the wrong check, not by weakening an assertion.
  • SIBLINGS and the workflow agree, and no note states a retirement condition that contradicts an ADR.
  • Issues filed on views-faoapi and views-crafdapi, each with file:line evidence.
  • C-92 records the gap, the table above, and C-94's trigger.
  • wc -l tests/test_product.py is lower.

Note on sequencing

The crafd test is red now. Do not xfail it to buy time — land this story. It is a deletion; it is faster than the workaround.

Labels

story, implementation, documentation

Activity

  1. added
    storyA single reviewable unit of an epic
    testingTest/parity/validation work
    needs-decisionRequires a human decision before proceeding
    documentationImprovements or additions to documentation
    and removed
    needs-decisionRequires a human decision before proceeding
    on Aug 12, 2026
  2. changed the title [-]S7: the FAO consumer-filter gap — close it or own it[/-] [+]S7: delete both consumer source-reads — the category is wrong, proven twice in 24h[/+] on Aug 12, 2026
  3. Polichinel commented on Aug 12, 2026

    @Polichinel
    CollaboratorAuthor

    Cross-repo half filed ahead of the local work, per this issue's own note that their response time is not ours:

    One thing #55 changes about this issue's scope. ADR-017 §5 sequenced our crafd source-read retirement behind views-crafdapi#53. That constraint dissolves rather than resolves: we are deleting the check because the category is wrong, not because #53 landed. So this issue no longer waits on #53 at all — it should say so, and the ADR-017 §5 sequencing note needs an erratum when the local half lands.

  4. Polichinel commented on Aug 12, 2026

    @Polichinel
    CollaboratorAuthor

    Landed in #254. Both source-reads gone, the crafdapi fetch with them, the suite fully green for the first time in this arc.

    The correction worth carrying forward: my first ADR-017 §5 erratum claimed the sequencing constraint dissolved. It did not — views-crafdapi#53 closed six hours before that commit, and 8615574/0c493ae each satisfied step 3 and broke our check in one edit. The constraint was discharged, not repealed, and the deletion stands on §7 alone.

    Gap registered as C-92; asks filed as views-faoapi#390 and views-crafdapi#55.

  5. added a commit that references this issue on Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationimplementationCode implementation workstoryA single reviewable unit of an epictestingTest/parity/validation work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions