Capability registry for planning and implementation reuse based on discovery and delivery maturity.
Find a file
tegwick 0c6b1e2538 Harden federated compose against malformed member indexes (REUSE-WP-0020)
Repointing the production hub's 50 Gitea-hosted federation sources to Forgejo
ahead of the 2026-08-31 CoulombCore retirement took /v1/federated to HTTP 500.
One member index (evidence-binder) has capability rows with no `id`, and
compose_federated_index dereferenced item["id"] unguarded. Its Gitea copy was a
stale snapshot returning a non-mapping, so those rows had never been parsed.

A single malformed member index must not take down the whole endpoint. Extract
_read_index_entries(): unparseable YAML, a non-mapping body, an empty file, and
a non-list `capabilities` each degrade to a warning and an empty row list, and
rows without an `id` are skipped individually. A failed source stays listed with
count 0 so it remains visible to operators rather than silently disappearing.

Also fix wall-clock rot in tests/test_plan_check.py, which was already failing
at clean HEAD: three tests pinned the compose date to a literal that has now
aged past STALE_DAYS.

Add workplan REUSE-WP-0020 covering the full cutover.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 00:04:39 +02:00
.claude/rules docs: workplan-first agent guidance prose (CUST-WP-0055 T04 batch 2) 2026-07-08 16:41:23 +02:00
.forgejo/workflows REUSE-WP-0019-T06: hub freshness monitoring, docs, close workplan 2026-07-08 00:09:58 +02:00
.kaizen Onboard coulomb-loop kaizen engagement (LOOP-WP-0005 expansion) 2026-06-18 17:24:34 +02:00
agents Onboard coulomb-loop kaizen engagement (LOOP-WP-0005 expansion) 2026-06-18 17:24:34 +02:00
docs REUSE-WP-0019-T06: hub freshness monitoring, docs, close workplan 2026-07-08 00:09:58 +02:00
history Finish REUSE-WP-0017: T05 approved, T07 closeout complete. 2026-07-07 16:37:53 +02:00
registry Harden federated compose against malformed member indexes (REUSE-WP-0020) 2026-08-21 00:04:39 +02:00
reuse_surface Harden federated compose against malformed member indexes (REUSE-WP-0020) 2026-08-21 00:04:39 +02:00
schemas REUSE-WP-0019-T05: reuse telemetry aggregation into R-axis evidence 2026-07-07 22:47:51 +02:00
specs REUSE-WP-0019-T05: reuse telemetry aggregation into R-axis evidence 2026-07-07 22:47:51 +02:00
templates REUSE-WP-0017-T01: explicit capability_status on roster + coverage split in report gaps 2026-07-06 18:36:05 +02:00
tests Harden federated compose against malformed member indexes (REUSE-WP-0020) 2026-08-21 00:04:39 +02:00
tools REUSE-WP-0019-T06: hub freshness monitoring, docs, close workplan 2026-07-08 00:09:58 +02:00
workplans Harden federated compose against malformed member indexes (REUSE-WP-0020) 2026-08-21 00:04:39 +02:00
.custodian-brief.md chore(consistency): sync task status from DB [auto] 2026-07-08 00:13:00 +02:00
.gitignore Track .claude/rules agent instructions (fix gitignore) 2026-07-08 15:01:51 +02:00
.repo-classification.yaml Human-review .repo-classification.yaml (CUST-WP-0050 follow-up) 2026-06-22 17:56:16 +02:00
AGENTS.md Regenerate agent instructions from state-hub templates (CUST-WP-0055 T01) 2026-07-08 14:51:02 +02:00
CLAUDE.md Normalize agent instructions and workplan frontmatter (STATE-WP-0067) 2026-06-22 23:16:28 +02:00
Dockerfile Fix K8s service env collision on REUSE_SURFACE_PORT 2026-06-15 10:08:54 +02:00
INTENT.md docs: refresh SCOPE and INTENT↔SCOPE gap analysis post WP-0014 2026-06-16 02:17:07 +02:00
LICENSE Adopt Target Revenue Source License V1C1 (org-wide preliminary rollout) 2026-07-30 01:03:32 +02:00
pyproject.toml Implement REUSE-WP-0013 registry establish, update, and stats 2026-06-16 01:21:01 +02:00
README.md Update README.md 2026-06-14 20:59:01 +00:00
SCOPE.md REUSE-WP-0019-T06: hub freshness monitoring, docs, close workplan 2026-07-08 00:09:58 +02:00
uv.lock WP-0016 finished: interactive registry maintain with llm-connect automation 2026-06-18 04:00:39 +02:00

Capability registry for planning and implementation reuse based on discovery and delivery maturity.