frontend-patterns/feedback/README.md
tegwick bd85fcd179 Add verified reference lookup and immutable consumer receipts
Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a1045b-933d-7aa1-b2db-104557487a79
2026-10-04 09:02:35 +02:00

2.2 KiB

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:

{"repo":"example-consumer","branch":"main","index":"research/pattern-use/index.json"}

Consumer index (at most 100 entries across one collection):

{"schema_version":1,"receipts":[{"path":"research/pattern-use/use-01/event-01.yaml","sha256":"<64 hex characters>"}]}

Events follow PatternUseReceipt.yaml. The local producer helper prepares verified reference pins and a new immutable JSON/YAML event plus its index entry from explicit consumer provenance. It does not install the closeout hook or enroll a consumer. decision-input.example.json is a synthetic format fixture. 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.