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>
This commit is contained in:
parent
fa1235474f
commit
0c6b1e2538
5 changed files with 403 additions and 16 deletions
|
|
@ -1,7 +1,7 @@
|
|||
# Composed federated capability index. Regenerate with:
|
||||
# reuse-surface federation compose
|
||||
version: 1
|
||||
updated: '2026-07-07'
|
||||
updated: '2026-08-21'
|
||||
domain: helix_forge
|
||||
collision_policy: warn
|
||||
sources:
|
||||
|
|
@ -66,7 +66,7 @@ sources:
|
|||
url: https://forgejo.coulomb.social/coulomb/evidence-binder/raw/main/registry/indexes/capabilities.yaml
|
||||
cache: registry/federation/cache/evidence-binder.yaml
|
||||
- repo: evidence-source
|
||||
count: 0
|
||||
count: 1
|
||||
url: https://forgejo.coulomb.social/coulomb/evidence-source/raw/main/registry/indexes/capabilities.yaml
|
||||
cache: registry/federation/cache/evidence-source.yaml
|
||||
- repo: feature-control
|
||||
|
|
@ -309,9 +309,9 @@ capabilities:
|
|||
source_index: registry/federation/cache/the-custodian.yaml
|
||||
- id: capability.agents.kaizen-framework
|
||||
name: Kaizen Agentic Framework
|
||||
summary: AI agency framework providing 18 specialized deployable agent instruction
|
||||
sets plus persistent, project-scoped memory and cross-agent coordination via a
|
||||
Coach meta-agent.
|
||||
summary: AI agency framework providing 20 deployable agent instruction sets, project
|
||||
memory, metrics, role and engagement contracts, and scheduled preparation for
|
||||
governed execution.
|
||||
vector: D3 / A2 / C1 / R0
|
||||
domain: agents
|
||||
status: draft
|
||||
|
|
@ -321,9 +321,13 @@ capabilities:
|
|||
- agents
|
||||
- memory
|
||||
- coordination
|
||||
- metrics
|
||||
- scheduling
|
||||
- engagements
|
||||
consumption_modes:
|
||||
- cli
|
||||
- library import
|
||||
- file contracts
|
||||
source_repo: kaizen-agentic
|
||||
source_url: https://forgejo.coulomb.social/coulomb/kaizen-agentic/raw/main/registry/indexes/capabilities.yaml
|
||||
source_index: registry/federation/cache/kaizen-agentic.yaml
|
||||
|
|
@ -372,9 +376,11 @@ capabilities:
|
|||
name: Audit Event Retention
|
||||
summary: Collect, normalize, retain, and search audit events with integrity evidence
|
||||
across tenants.
|
||||
vector: D4 / A2 / C2 / R1
|
||||
domain: helix_forge
|
||||
status: draft
|
||||
joins: operations.audit
|
||||
provision: data/capability/audit-core-operational.json
|
||||
vector: D4 provision / A4 / C3 / R2
|
||||
domain: infotech
|
||||
status: production
|
||||
owner: audit-core
|
||||
path: registry/capabilities/capability.audit.event-retain.md
|
||||
tags:
|
||||
|
|
@ -382,6 +388,7 @@ capabilities:
|
|||
- retention
|
||||
- compliance
|
||||
consumption_modes:
|
||||
- http ingest
|
||||
- source module
|
||||
source_repo: audit-core
|
||||
source_url: https://forgejo.coulomb.social/coulomb/audit-core/raw/main/registry/indexes/capabilities.yaml
|
||||
|
|
@ -950,6 +957,27 @@ capabilities:
|
|||
source_repo: open-reuse
|
||||
source_url: https://forgejo.coulomb.social/coulomb/open-reuse/raw/main/registry/indexes/capabilities.yaml
|
||||
source_index: registry/federation/cache/open-reuse.yaml
|
||||
- id: capability.infotech.pdf-evidence-ingest
|
||||
name: Headless PDF Evidence Ingest
|
||||
summary: "Turns raw PDF bytes into an engine-shaped Document + DocumentRepresentation\
|
||||
\ \u2014 SHA-256 fingerprint, canonical text, page map, and gap-free offset map\
|
||||
\ \u2014 as a runtime-agnostic library with no viewer, persistence, or React coupling."
|
||||
vector: D2 / A1 / C1 / R1
|
||||
domain: infotech
|
||||
status: draft
|
||||
owner: evidence-source
|
||||
path: registry/capabilities/capability.infotech.pdf-evidence-ingest.md
|
||||
tags:
|
||||
- pdf
|
||||
- ingest
|
||||
- fingerprint
|
||||
- canonical-text
|
||||
- evidence
|
||||
consumption_modes:
|
||||
- library import
|
||||
source_repo: evidence-source
|
||||
source_url: https://forgejo.coulomb.social/coulomb/evidence-source/raw/main/registry/indexes/capabilities.yaml
|
||||
source_index: registry/federation/cache/evidence-source.yaml
|
||||
- id: capability.infotech.repo-template
|
||||
name: Coulomb Repository Template
|
||||
summary: Bootstrap new git repositories with agent instructions, registry scaffold,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue