# Consumer feedback intake Activity-core reads `sources.json` daily, resolves each enrolled Forgejo repository's branch to a full commit and reads its receipt index and YAML events at that revision. Only `https://forgejo.coulomb.social/coulomb/` is allowed. No arbitrary commands, credentials, or model prompts are taken from these files. Enrollment entry: ```json {"repo":"example-consumer","branch":"main","index":"research/pattern-use/index.json"} ``` Consumer index (at most 100 entries across one collection): ```json {"schema_version":1,"receipts":[{"path":"research/pattern-use/use-01/event-01.yaml","sha256":"<64 hex characters>"}]} ``` Events follow [PatternUseReceipt.yaml](../templates/PatternUseReceipt.yaml). One stable `use_id` links immutable events; `previous_event_sha256` identifies a follow-up. Identical events deduplicate; conflicting IDs, missing predecessors, branches/cycles and malformed records are quarantined in the report. Synthetic receipts never count as external use. A source/hash check establishes provenance, not the truth of a helpfulness assertion or the referenced test result. Reports are retained by activity-core and State Hub, under `fep_feedback_intake`, `fep_improvement_review` and `fep_monthly_review`. Their compact deterministic digest records exact source revisions, counts, unresolved signals and collection errors. A collection error disables action eligibility and is reported as degraded, not zero feedback. The current adapter rejects over-cap collections visibly; durable cursor pagination and consumer closeout wiring remain WP-0008 T02 work. No consumers are enrolled initially. Enrollment and actual task-close receipts are still needed to measure value. The unattended report schedules do not create real-use evidence. Weekly mutation remains disabled until a scoped, budget-enforced execution profile has a positive production proof. See [runbook](../docs/ActivityCoreLoop.md).