ADR-015: Contribution-Intelligence Dossier (FCC-native, cohesion #4)¶
Date: 2026-06-21
Status: Accepted
Decision-makers: FCC core maintainers
Consulted: Research Center (RC-MP-21 / ADR-067 / ADR-068 reference pattern; contribution-dossier-v1 blueprint)
Informed: Ecosystem partners (PAOM/AOME/NEXUS) — coordination via GitHub issues/notices (Channel-B)
Context and Problem Statement¶
FCC is the canonical authority for personas / archetypes / R.I.S.C.E.A.R., and they are increasingly run across the ecosystem (PAOM executes FCC champions; AOME/CONSTEL/RC consume the catalog). But FCC had no way to see how its contributions are actually adopted and run — no forensic, repeatable view of commits, releases, served surfaces, or persona-adoption. This is the fourth and final cohesion mechanism of the v1.8.3→v2.0.0 arc (the other three: registry-sync bot, journey emission + portal manifest, machine-readable catalog export).
Two hard constraints shape the design: - Channel-B: FCC must never write into partner repos; harvest is local + read-only. - Rule-8 / FTO: no person or partner names, and no privileged (monetary / patent-claim) data.
Decision¶
Build an FCC-native contribution-intelligence dossier (src/fcc/contributions/),
mirroring RC's RC-MP-21 pattern but adapted to FCC:
- Offline-green harvest (
harvest.py) — localgit log(commit count + distinct-author integer count, never names), latest release tag, served surfaces from the vendoredport_allocation.yaml, and the 23-project roster fromecosystem_projects.yaml. Every external command degrades to empty rather than raising (a dossier always builds, no network). - FCC-distinctive persona-adoption tier (
dossier.py::_catalog_adoption) — derived from the committeddocs/catalog/*.jsonl+paom_override_map.json: persona count, PAOM-runnable count, override-map label count, and the distribution by PAOM-8 archetype. This is FCC's unique signal (how the persona catalog is consumed) and has no RC analog. - Two governance firewalls (
guards.py): - Rule-8: structural (no name fields;
active_authorsis anint) +assert_no_namesrejecting email/@handle shapes in any free-text field. - FTO:
assert_fto_saferejects monetary/patent-claim shapes ($N,N million USD,patent claim N) at construction →PrivilegedDataError. Detector matches shapes, never names — so it is simultaneously Rule-8-clean. - Surfaces:
fcc contributions dossierCLI +make contribution-dossier→ gitignoredoutput/contributions/{dossier.json,DOSSIER.md}; a read-opencontribution-dossier-v1summary served at/.well-known/contribution-dossier.json(schemacontribution_dossier_v1.schema.json,additionalProperties:false).
Consequences¶
- FCC gains a repeatable, name-free, offline-green view of its own contribution
- adoption footprint, and a federation-ready descriptor a NEXUS aggregator can
fan in (per the co-designed
contribution-dossier-v1blueprint). - The dossier output is regenerated, not committed (gitignored) — it is evidence, not source.
- Channel-B/Rule-8/FTO are enforced in code + tests, so the dossier can harvest sibling checkouts read-only without risk of leaking names or privileged data.
- The persona-adoption tier ties the dossier to the catalog export (ADR-relevant to the cohesion set), making FCC's "how are my personas used" question answerable from committed data alone.