106 lines
4.6 KiB
Markdown
106 lines
4.6 KiB
Markdown
|
|
---
|
||
|
|
id: feedback/2026-09-22-activity-core-emission-cadence-declaration
|
||
|
|
type: consumer-feedback
|
||
|
|
status: reviewed
|
||
|
|
date: "2026-09-22"
|
||
|
|
consumer: activity-core
|
||
|
|
consumer_domain: infotech
|
||
|
|
canon_version: "0.13.0"
|
||
|
|
artifacts:
|
||
|
|
- standard/emission-cadence
|
||
|
|
related_demand:
|
||
|
|
- demand/EmissionExpectedRateCalendar.md
|
||
|
|
related_workplan:
|
||
|
|
- INFO-WP-0029
|
||
|
|
spawned_demand:
|
||
|
|
- demand/EmissionExpectedRateCalendar.md
|
||
|
|
spawned_workplan: []
|
||
|
|
---
|
||
|
|
|
||
|
|
# Feedback: second source-owned Emission Cadence declaration (activity-core scheduled evidence)
|
||
|
|
|
||
|
|
**Consumer:** activity-core
|
||
|
|
**Canon version used:** contract digest `b08b4d95fc4b0bd3` (Emission Cadence
|
||
|
|
document 0.2.0, wire schema 0.1)
|
||
|
|
**Artifacts exercised:** `infospace/schemas/emission-cadence.schema.yaml`,
|
||
|
|
`standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md`
|
||
|
|
**Related demand:** `demand/EmissionExpectedRateCalendar.md`
|
||
|
|
|
||
|
|
Source: activity-core's reply to INFO-WP-0029-T03 (State Hub message
|
||
|
|
`161d5aa5-d2a9-4f6a-b833-3727e06007f8`, thread `f1687805-3153-47c2-9744-05a2b1a6b8c1`),
|
||
|
|
and the file it published at activity-core commit `f20db47`:
|
||
|
|
`docs/emission-cadence/activity-core-evidence.yaml`.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Consumer purpose
|
||
|
|
|
||
|
|
Declare intended cadence for three scheduled activities emitted as State Hub
|
||
|
|
progress events — a daily backup, a weekly package prune, and a daily SBOM
|
||
|
|
catch-up — so an observer could evaluate silence against a fixed schedule.
|
||
|
|
|
||
|
|
## Hits
|
||
|
|
|
||
|
|
- `expected-rate` with a window sized to the schedule's period plus run slack
|
||
|
|
(`PT26H` for a daily cron, `P8D` for a weekly cron). Two of the three
|
||
|
|
entries expressed a fixed-time schedule cleanly this way.
|
||
|
|
- `heartbeat-or-reconciliation` with a `reconciliation` block, for the third
|
||
|
|
entry, once `expected-rate` proved unable to express its schedule (see
|
||
|
|
Gaps).
|
||
|
|
- `extensions`. `activity-core.definition` and `activity-core.schedule`
|
||
|
|
carried the activity's own identifiers and cron expression without
|
||
|
|
touching the generic contract shape.
|
||
|
|
- The declaration is `contract_valid`: canon-side `emission-review` returns
|
||
|
|
`ok: true`, `errors: []`, `operational_truth_assessed: false`.
|
||
|
|
|
||
|
|
## Friction
|
||
|
|
|
||
|
|
- `emission-review` could not be run by the consumer directly; the CLI needs
|
||
|
|
`infospace-bench`, which is not installable from a package index there. The
|
||
|
|
consumer worked around this by calling `contracts.py` directly. This is the
|
||
|
|
same packaging limitation the net-kingdom declaration hit
|
||
|
|
(`feedback/2026-09-21-net-kingdom-emission-cadence-declaration.md`), now
|
||
|
|
observed by a second independent consumer.
|
||
|
|
|
||
|
|
## Gaps
|
||
|
|
|
||
|
|
- **`expected-rate` cannot express a weekday-only schedule.** The third
|
||
|
|
activity (`sbom_catchup`) runs `15 9 * * 1-5 Europe/Berlin` — weekdays
|
||
|
|
only. A wall-clock window sized to catch a daily run (`PT26H`) raises a
|
||
|
|
false finding every Saturday and Sunday morning. A window wide enough to
|
||
|
|
span the weekend (`P4D`) would hide a genuine three-day outage that starts
|
||
|
|
midweek. Neither window size is honest. The consumer declared this entry as
|
||
|
|
`heartbeat-or-reconciliation`/`reconciliation` against its own local
|
||
|
|
activation count instead, which is correct but sidesteps the form the
|
||
|
|
activity actually needs. Filed as
|
||
|
|
`demand/EmissionExpectedRateCalendar.md`.
|
||
|
|
|
||
|
|
## Drop candidates
|
||
|
|
|
||
|
|
None.
|
||
|
|
|
||
|
|
## Steward notes
|
||
|
|
|
||
|
|
- **This is the second source-owned declaration from an owner independent of
|
||
|
|
both net-kingdom and this repository** (INFO-WP-0029-T03). Its
|
||
|
|
incompatibility — a wall-clock window cannot express a calendar-shaped
|
||
|
|
schedule — is a different gap from net-kingdom's session-scoped silence.
|
||
|
|
Both are recorded, per the workplan's framing, as successful outcomes: they
|
||
|
|
show the contract is implementable and where its `expected-rate` form
|
||
|
|
currently falls short of a real production schedule.
|
||
|
|
- **What this counts toward.** Standard §10's stable gate asks for two
|
||
|
|
source-owned declarations from independent owners plus one observer result.
|
||
|
|
This declaration is the second. It also records a second, distinct
|
||
|
|
incompatibility. No observer result yet evaluates this stream specifically:
|
||
|
|
activity-core's periodic emission into issue-core is currently off in
|
||
|
|
production (`ISSUE_SINK_TYPE=state-hub`), so this declaration covers State
|
||
|
|
Hub progress evidence, and no third party has registered as an observer of
|
||
|
|
that stream. The standard stays at candidate; INFO-WP-0029-T05 (observer
|
||
|
|
result) stays open.
|
||
|
|
- Both known incompatibilities (this one, and net-kingdom's session-scoped
|
||
|
|
silence) point at the same underlying limitation of `expected-rate`: a
|
||
|
|
single wall-clock window cannot represent activity that is legitimately
|
||
|
|
bursty, calendar-shaped, or attended-only. A future standard revision
|
||
|
|
should weigh both before choosing a fix, rather than solving each in
|
||
|
|
isolation.
|