diff --git a/activity-definitions/frontend-patterns-daily.md b/activity-definitions/frontend-patterns-daily.md new file mode 100644 index 0000000..a147746 --- /dev/null +++ b/activity-definitions/frontend-patterns-daily.md @@ -0,0 +1,43 @@ +--- +id: frontend-patterns-daily +name: Frontend Patterns Daily Review +enabled: false +owner: frontend-patterns +governance: custodian +status: proposed +trigger: + type: cron + cron_expression: "0 2 * * *" + timezone: Europe/Berlin + misfire_policy: catchup_latest + catchup_window_seconds: 86400 +context_sources: + - type: frontend-patterns + query: daily + params: {required: true} + bind_to: context.daily_triage_digest +--- + +# Frontend patterns daily review + +Domain-owned by FEP-WP-0008. Read-only bounded receipt collection and deterministic +reporting; no LLM calls or repository mutations. Source collection is pinned to Git +revisions. Outcome assertions remain unverified. The weekly report explicitly carries +the blocked executor dependency; it does not emit unexecutable ops_run work or claim +an improvement has happened. Enable after live report-sink proof. + +```instruction +id: frontend-patterns-daily-report +trusted_fields: [] +model: deterministic +temperature: 0 +max_tokens: 1 +prompt: Deterministic frontend-patterns receipt and execution-readiness digest. +output_schema: "" +review_advisory: false +report_sinks: + - type: state-hub-progress + event_type: fep_feedback_intake + author: activity-core + topic_id: fe2aaa78-9c20-4feb-b3d2-4fe0529572a3 +``` diff --git a/activity-definitions/frontend-patterns-monthly.md b/activity-definitions/frontend-patterns-monthly.md new file mode 100644 index 0000000..2dd9bcb --- /dev/null +++ b/activity-definitions/frontend-patterns-monthly.md @@ -0,0 +1,43 @@ +--- +id: frontend-patterns-monthly +name: Frontend Patterns Monthly Review +enabled: false +owner: frontend-patterns +governance: custodian +status: proposed +trigger: + type: cron + cron_expression: "0 9 1 * *" + timezone: Europe/Berlin + misfire_policy: catchup_latest + catchup_window_seconds: 86400 +context_sources: + - type: frontend-patterns + query: monthly + params: {required: true} + bind_to: context.daily_triage_digest +--- + +# Frontend patterns monthly review + +Domain-owned by FEP-WP-0008. Read-only bounded receipt collection and deterministic +reporting; no LLM calls or repository mutations. Source collection is pinned to Git +revisions. Outcome assertions remain unverified. The weekly report explicitly carries +the blocked executor dependency; it does not emit unexecutable ops_run work or claim +an improvement has happened. Enable after live report-sink proof. + +```instruction +id: frontend-patterns-monthly-report +trusted_fields: [] +model: deterministic +temperature: 0 +max_tokens: 1 +prompt: Deterministic frontend-patterns receipt and execution-readiness digest. +output_schema: "" +review_advisory: false +report_sinks: + - type: state-hub-progress + event_type: fep_monthly_review + author: activity-core + topic_id: fe2aaa78-9c20-4feb-b3d2-4fe0529572a3 +``` diff --git a/activity-definitions/frontend-patterns-weekly.md b/activity-definitions/frontend-patterns-weekly.md new file mode 100644 index 0000000..b1d65d7 --- /dev/null +++ b/activity-definitions/frontend-patterns-weekly.md @@ -0,0 +1,43 @@ +--- +id: frontend-patterns-weekly +name: Frontend Patterns Weekly Review +enabled: false +owner: frontend-patterns +governance: custodian +status: proposed +trigger: + type: cron + cron_expression: "0 3 * * 2" + timezone: Europe/Berlin + misfire_policy: catchup_latest + catchup_window_seconds: 86400 +context_sources: + - type: frontend-patterns + query: weekly + params: {required: true} + bind_to: context.daily_triage_digest +--- + +# Frontend patterns weekly review + +Domain-owned by FEP-WP-0008. Read-only bounded receipt collection and deterministic +reporting; no LLM calls or repository mutations. Source collection is pinned to Git +revisions. Outcome assertions remain unverified. The weekly report explicitly carries +the blocked executor dependency; it does not emit unexecutable ops_run work or claim +an improvement has happened. Enable after live report-sink proof. + +```instruction +id: frontend-patterns-weekly-report +trusted_fields: [] +model: deterministic +temperature: 0 +max_tokens: 1 +prompt: Deterministic frontend-patterns receipt and execution-readiness digest. +output_schema: "" +review_advisory: false +report_sinks: + - type: state-hub-progress + event_type: fep_improvement_review + author: activity-core + topic_id: fe2aaa78-9c20-4feb-b3d2-4fe0529572a3 +``` diff --git a/docs/ActivityCoreLoop.md b/docs/ActivityCoreLoop.md new file mode 100644 index 0000000..2af73d1 --- /dev/null +++ b/docs/ActivityCoreLoop.md @@ -0,0 +1,67 @@ +# Activity-core receipt loop + +FEP-WP-0008 owns this integration. The initial delivery is deterministic collection +and reporting. Automatic investigation and publication are a separate, outstanding +execution dependency; a weekly report is not evidence of an improvement cycle. + +| Definition | Europe/Berlin schedule | Output event | +|---|---|---| +| frontend-patterns-daily | Daily 02:00 | fep_feedback_intake | +| frontend-patterns-weekly | Tuesday 03:00 | fep_improvement_review | +| frontend-patterns-monthly | First day 09:00 | fep_monthly_review | + +Definitions live in `activity-definitions/`. Activity-core projects the identical +Markdown into its external-definition ConfigMap. Its `frontend-patterns` context +resolver reads this repository's `feedback/sources.json` at a resolved commit, +then reads enrolled consumer indexes and receipts at resolved commits. See +[the enrollment contract](../feedback/README.md). Initially the roster is empty; +reports must say `no_consumers`, never imply measured usefulness or coverage. + +The collector validates identities, hashes, chronology, decisions and evidence +presence, reduces immutable event chains to one observation per use, and +quarantines ambiguous chains. Synthetic outcomes have separate counts. Outcomes +remain producer assertions until investigation verifies their evidence. Missing or +malformed sources produce a degraded report. Monthly reports cover the previous +calendar month in Europe/Berlin, using observations available before its end. +They are receipt summaries, not yet the complete cost/decision review packet. + +Collection allows ten repositories, 100 events per run, 128 KiB per source file +and a 45-second fetch deadline (an in-flight read may finish up to five seconds +later). Over-limit sources are reported as errors; durable pagination is still +required before expanding enrollment. Only the fixed Forgejo host and validated +relative paths are read. No secret retrieval, shell execution, LLM calls or +repository mutation is performed. Required context prevents an absent resolver +from silently producing a successful empty report. + +## Activation and proof + +Current state: source definitions are disabled; collector and deployment are +prepared under ACTIVITY-WP-0040. No scheduled production execution is claimed. +The worker overlay changes only the resolver module and registration, based on +the existing production worker image. API, router and dependencies stay pinned. + +Activation requires the documented cluster change path. The estate's +`the-custodian/docs/kubernetes-change-gate-decision.md` treats unmapped targets as +production-tier and requires Git/ArgoCD reconciliation. Activity-core currently has +no ArgoCD application. A direct rollout therefore needs an explicit scoped policy +exception, or prior ArgoCD adoption; ordinary permission to implement is not a +claim that the estate gate has already been satisfied. + +Once deployed, sync definitions, run one manual smoke per definition, verify the +State Hub report sink, enable and re-project the definitions, then sync schedules. +Record workflow IDs, schedule state and first natural scheduled executions here. +Use manual smoke evidence only as manual evidence. Rollback restores the previous +worker image and disables these three definitions followed by schedule sync. + +The owner handoff is [ACTIVITY-WP-0040](../../activity-core/workplans/ACTIVITY-WP-0040-frontend-patterns-feedback.md). + +## Unattended improvement remains open + +GLAS-WP-0012 and HFACT-WP-0001 own the missing admitted executor proof. The +available development profile is operationally unverified and does not enforce +the loop's llm-connect budget (six calls / 40,000 aggregate tokens / 30 minutes). +Do not emit unexecutable work or fall back to an unrestricted legacy worker. +WP-0008-T03 retains the end-to-end execution, independent review, publication and +rollback proofs. WP-0008-T01/T02 retain first real consumer integration, frozen +release validation, producer closeout hooks and delayed-outcome refresh. These +are live tasks, not implied completions of this reporting foundation. diff --git a/feedback/README.md b/feedback/README.md new file mode 100644 index 0000000..8ab55c3 --- /dev/null +++ b/feedback/README.md @@ -0,0 +1,37 @@ +# 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). diff --git a/feedback/sources.json b/feedback/sources.json new file mode 100644 index 0000000..15dd94d --- /dev/null +++ b/feedback/sources.json @@ -0,0 +1,5 @@ +{ + "schema_version": 1, + "sources": [], + "note": "No consumer is enrolled yet. Empty sources means coverage is unknown, not that the language has no users. Enroll an authorized repository with an index of immutable receipt paths and SHA-256 digests." +} diff --git a/workplans/FEP-WP-0008-use-driven-improvement.md b/workplans/FEP-WP-0008-use-driven-improvement.md index 1085362..85676d5 100644 --- a/workplans/FEP-WP-0008-use-driven-improvement.md +++ b/workplans/FEP-WP-0008-use-driven-improvement.md @@ -61,7 +61,7 @@ in this design session; hosted registration and consumer integration remain open ```task id: FEP-WP-0008-T02 -status: todo +status: progress priority: high lane: blue state_hub_task_id: "49be8a8e-eaaf-5f1c-b4cd-f0c4dbac9823" @@ -88,7 +88,7 @@ refresh after 14 days and remain unknown after 30; no manual survey dependency. ```task id: FEP-WP-0008-T03 -status: todo +status: progress priority: high lane: blue state_hub_task_id: "f823587c-727d-515a-974d-401719420ce5" @@ -142,3 +142,13 @@ design under the user mandate, not runtime activation or independent human valid Local capability entry passes reuse-surface validation; reference, evolution and classification checks pass, and changed Markdown links/whitespace were checked. The receipt template is a draft contract; its executable schema/collector belong to T02. + +## Activity-core setup — 2026-09-27 + +Domain-owned daily/weekly/monthly definitions and the empty consumer roster are +prepared. ACTIVITY-WP-0040 owns the tested read-only collector, worker overlay and +projected definitions. See [runtime status](../docs/ActivityCoreLoop.md). Definitions +remain disabled pending the estate deployment path and live sink verification. +GLAS-WP-0012 / HFACT-WP-0001 own the unverified execution profile; no fallback is +enabled. T02/T03 remain in progress: prepared schedules and reports do not satisfy +the real-consumer, admitted execution or publication acceptance criteria.