reuse-surface/WORK-RECORDS.md
tegwick 6cbc862371
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
Invalidate the composed index when a registration changes (REUSE-WP-0020-T09)
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

7.1 KiB

Work Records — reuse-surface

Generated by statehub fix-consistency (CUST-WP-0061-T04, work-record stage 3). Do not edit by hand — edit the source file/block listed for each record and re-run fix-consistency to refresh this index. Archived workplans are omitted; closed decisions/intakes/engagements stay listed so recently-resolved work is still visible. [auto]

Kind ID Status Lane Source
workplan REUSE-WP-0001 finished workplans/REUSE-WP-0001-statehub-bootstrap.md
workplan REUSE-WP-0002 finished workplans/REUSE-WP-0002-mvp-registry-foundation.md
workplan REUSE-WP-0003 finished workplans/REUSE-WP-0003-intent-scope-gap-closure.md
workplan REUSE-WP-0004 finished workplans/REUSE-WP-0004-registry-hardening.md
workplan REUSE-WP-0005 finished workplans/REUSE-WP-0005-registry-federation.md
workplan REUSE-WP-0006 finished workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md
workplan REUSE-WP-0007 finished workplans/REUSE-WP-0007-interactive-catalog.md
workplan REUSE-WP-0008 finished workplans/REUSE-WP-0008-graph-explorer.md
workplan REUSE-WP-0009 finished workplans/REUSE-WP-0009-cli-hardening.md
workplan REUSE-WP-0010 finished workplans/REUSE-WP-0010-network-federation.md
workplan REUSE-WP-0016 finished workplans/REUSE-WP-0016-interactive-registry-maintain.md
workplan REUSE-WP-0020 finished workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md
task REUSE-WP-0001-T01 done workplans/REUSE-WP-0001-statehub-bootstrap.md
task REUSE-WP-0001-T02 done workplans/REUSE-WP-0001-statehub-bootstrap.md
task REUSE-WP-0001-T03 done workplans/REUSE-WP-0001-statehub-bootstrap.md
task REUSE-WP-0002-T01 done workplans/REUSE-WP-0002-mvp-registry-foundation.md
task REUSE-WP-0002-T02 done workplans/REUSE-WP-0002-mvp-registry-foundation.md
task REUSE-WP-0002-T03 done workplans/REUSE-WP-0002-mvp-registry-foundation.md
task REUSE-WP-0002-T04 done workplans/REUSE-WP-0002-mvp-registry-foundation.md
task REUSE-WP-0002-T05 done workplans/REUSE-WP-0002-mvp-registry-foundation.md
task REUSE-WP-0002-T06 done workplans/REUSE-WP-0002-mvp-registry-foundation.md
task REUSE-WP-0003-T01 done workplans/REUSE-WP-0003-intent-scope-gap-closure.md
task REUSE-WP-0003-T02 done workplans/REUSE-WP-0003-intent-scope-gap-closure.md
task REUSE-WP-0003-T03 done workplans/REUSE-WP-0003-intent-scope-gap-closure.md
task REUSE-WP-0003-T04 done workplans/REUSE-WP-0003-intent-scope-gap-closure.md
task REUSE-WP-0003-T05 done workplans/REUSE-WP-0003-intent-scope-gap-closure.md
task REUSE-WP-0003-T06 done workplans/REUSE-WP-0003-intent-scope-gap-closure.md
task REUSE-WP-0003-T07 done workplans/REUSE-WP-0003-intent-scope-gap-closure.md
task REUSE-WP-0003-T08 done workplans/REUSE-WP-0003-intent-scope-gap-closure.md
task REUSE-WP-0004-T01 done workplans/REUSE-WP-0004-registry-hardening.md
task REUSE-WP-0004-T02 done workplans/REUSE-WP-0004-registry-hardening.md
task REUSE-WP-0004-T03 done workplans/REUSE-WP-0004-registry-hardening.md
task REUSE-WP-0004-T04 done workplans/REUSE-WP-0004-registry-hardening.md
task REUSE-WP-0005-T01 done workplans/REUSE-WP-0005-registry-federation.md
task REUSE-WP-0005-T02 done workplans/REUSE-WP-0005-registry-federation.md
task REUSE-WP-0005-T03 done workplans/REUSE-WP-0005-registry-federation.md
task REUSE-WP-0005-T04 done workplans/REUSE-WP-0005-registry-federation.md
task REUSE-WP-0005-T05 done workplans/REUSE-WP-0005-registry-federation.md
task REUSE-WP-0006-T01 done workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md
task REUSE-WP-0006-T02 done workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md
task REUSE-WP-0006-T03 done workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md
task REUSE-WP-0006-T04 done workplans/REUSE-WP-0006-registry-hygiene-and-coverage.md
task REUSE-WP-0007-T01 done workplans/REUSE-WP-0007-interactive-catalog.md
task REUSE-WP-0007-T02 done workplans/REUSE-WP-0007-interactive-catalog.md
task REUSE-WP-0007-T03 done workplans/REUSE-WP-0007-interactive-catalog.md
task REUSE-WP-0008-T01 done workplans/REUSE-WP-0008-graph-explorer.md
task REUSE-WP-0008-T02 done workplans/REUSE-WP-0008-graph-explorer.md
task REUSE-WP-0009-T01 done workplans/REUSE-WP-0009-cli-hardening.md
task REUSE-WP-0009-T02 done workplans/REUSE-WP-0009-cli-hardening.md
task REUSE-WP-0009-T03 done workplans/REUSE-WP-0009-cli-hardening.md
task REUSE-WP-0010-T01 done workplans/REUSE-WP-0010-network-federation.md
task REUSE-WP-0010-T02 done workplans/REUSE-WP-0010-network-federation.md
task REUSE-WP-0010-T03 done workplans/REUSE-WP-0010-network-federation.md
task REUSE-WP-0016-T01 done workplans/REUSE-WP-0016-interactive-registry-maintain.md
task REUSE-WP-0016-T02 done workplans/REUSE-WP-0016-interactive-registry-maintain.md
task REUSE-WP-0016-T03 done workplans/REUSE-WP-0016-interactive-registry-maintain.md
task REUSE-WP-0016-T04 done workplans/REUSE-WP-0016-interactive-registry-maintain.md
task REUSE-WP-0016-T05 done workplans/REUSE-WP-0016-interactive-registry-maintain.md
task REUSE-WP-0016-T06 done workplans/REUSE-WP-0016-interactive-registry-maintain.md
task REUSE-WP-0016-T07 done workplans/REUSE-WP-0016-interactive-registry-maintain.md
task REUSE-WP-0016-T08 done workplans/REUSE-WP-0016-interactive-registry-maintain.md
task REUSE-WP-0016-T09 done workplans/REUSE-WP-0016-interactive-registry-maintain.md
task REUSE-WP-0020-T01 done workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md
task REUSE-WP-0020-T02 done workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md
task REUSE-WP-0020-T03 done workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md
task REUSE-WP-0020-T04 done workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md
task REUSE-WP-0020-T05 done workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md
task REUSE-WP-0020-T06 done workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md
task REUSE-WP-0020-T07 done workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md
task REUSE-WP-0020-T08 done workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md
task REUSE-WP-0020-T09 todo workplans/REUSE-WP-0020-coulombcore-retirement-cutover.md