Prepare activity-core feedback collection and reporting schedules

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a0e241-8285-7a63-8c0c-51c9cb824dc3
This commit is contained in:
tegwick 2026-09-27 13:05:03 +02:00
parent 3fdbd12f9b
commit aa08c04a2c
7 changed files with 250 additions and 2 deletions

View file

@ -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
```

View file

@ -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
```

View file

@ -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
```

67
docs/ActivityCoreLoop.md Normal file
View file

@ -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.

37
feedback/README.md Normal file
View file

@ -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).

5
feedback/sources.json Normal file
View file

@ -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."
}

View file

@ -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.