Commit graph

7 commits

Author SHA1 Message Date
390b0b9bab Verify T09 in production (Helm revision 10, main-6cbc862)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
ci / validate-registry (push) Successful in 1m16s
A registration change now self-heals: PATCH of a composition field advances
composed_at on the next plain GET, while a description-only PATCH leaves the
cache alone. Both confirmed against the production hub.

Record the revision 9 lesson: it reported STATUS: deployed and Upgrade
complete while shipping nothing, because the values file still pinned the
previous tag. A successful helm upgrade proves the chart applied, not that the
code changed -- confirm the running image afterwards.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 16:26:21 +02:00
6cbc862371 Invalidate the composed index when a registration changes (REUSE-WP-0020-T09)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
ci / validate-registry (push) Successful in 1m18s
Build and Publish Container Image / build-and-push (push) Successful in 23s
Enabling a federation source left /v1/federated serving its cached compose and
reporting stale: false while doing it, so a repo could be correctly registered
and silently invisible for as long as its cached index survived. That is how
evidence-binder stayed missing after re-enabling until a manual
POST /v1/federated/compose was issued.

Registration writes now mark the composed index stale, and a plain GET
recomposes when the flag is set. Clearing it there is not a silent clear: that
pass really did refetch. A PATCH touching only a description does not
invalidate anything.

This changes a contract documented in specs/FederationHubAPI.md, so the
staleness section is rewritten rather than left to drift, including the two
triggers that now set the flag.

The first two tests written for this were worthless -- they passed with the fix
removed, because a newly registered repo has no cache entry and gets fetched
regardless. The real failure needs a populated cache holding stale content
inside its 24h TTL. test_re_enabled_source_refetches_a_stale_cache models that
and fails on pre-fix code; verified by reverting the mark_stale calls.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 13:51:58 +02:00
d1de320743 Close REUSE-WP-0020: evidence-binder live, 64 capabilities federated
All checks were successful
ci / validate-registry (push) Successful in 1m6s
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
evidence-binder published their repaired index at e462775 and correctly held
the re-enable request until it was visible on Forgejo. Pre-checked this time
before touching production: backing entries return 200, and a local compose of
all 61 sources gave 64 capabilities with zero warnings and no duplicate IDs.

Public endpoint now serves 61 sources / 64 capabilities, with both
capability.evidence.binding and capability.evidence.rect-registry at
D3 / A2 / C3 / R3.

Open T09 for the gap this exposed: enabling a source does not invalidate the
composed index. The endpoint kept serving a stale compose, reporting
stale: false throughout, until POST /v1/federated/compose was called by hand.
A repo can be correctly registered and silently invisible.

SCOPE.md: refresh the federated counts, record the deployed image, and correct
the multi-domain claim — member rows have begun carrying their own domain
(evidence-binder publishes domain: infotech) even though the manifest is still
composed under helix_forge.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 10:46:59 +02:00
ff826beb33 Close T06: /health routes to the API again (REUSE-WP-0020)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
ci / validate-registry (push) Successful in 1m38s
Helm revision 8. /health returns 200 from uvicorn instead of 404 from the
landing nginx, / still serves the landing page, and make reuse-smoke passes
end to end for the first time.

Also resolves the composed_at observation: it was not a bug, just a build
that predated REUSE-WP-0019-T06. The timestamp now advances per recompose.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 08:17:49 +02:00
823ce9e120 Add standard SCOPE.md sections and capability blocks (REUSE-WP-0020-T07)
Clears the hub scope check's C5b/C5c warnings: Relevant When, Not Relevant
When, How It Fits, Terminology, Related / Overlapping, and Provided
Capabilities were all missing, along with any fenced capability block.

The Terminology section calls out something this workplan ran into for real:
the fenced `capability` blocks in SCOPE.md (type/title/description/keywords)
look like index rows in registry/indexes/capabilities.yaml but are a different
shape and are not validated. evidence-binder copied the SCOPE block shape into
its index, which is why it had no `id` and broke federation composition.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 03:21:45 +02:00
2a3fc70172 Record production deploy of main-b035664 (REUSE-WP-0020-T05 done)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
ci / validate-registry (push) Successful in 3m10s
Helm revision 7 on Railiance01. Production now runs a Forgejo image; the Gitea
dependency is gone from both the federation sources and the image reference.
/v1/reuse-events returns 200 for the first time, so REUSE-WP-0019 T04/T05 are
finally live. PVC and all 61 registrations survived.

Also diagnose T06: /health is served correctly by the app (200 in-cluster) but
Traefik routes it to the landing nginx, because router priority is derived from
rule-string length and Path(/health) ties with PathPrefix(/). Raise T06 to
medium — make reuse-smoke is the documented deploy check and it false-negatives.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 00:47:26 +02:00
3aaf961352 Route evidence-binder index fix to its owner (REUSE-WP-0020-T03)
Inspection showed the defect is larger than the missing id that broke compose:
both rows use a non-conforming shape and registry/capabilities/ is empty, so
they are orphans with no backing entry Markdown.

Left to that repo rather than edited here. Reshaping the rows is mechanical,
but assigning maturity vectors is an assessment of their own delivery state.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 00:16:53 +02:00