Close WP-0036 on natural heartbeat evidence; declare emission cadence
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s

WP-0036-T04: rein-aharness 44f5bb9 heartbeats immediately after claim and
returned a natural claim/heartbeat/complete trace (hub message c217e92f).
With the 2026-08-23 authenticated claim and spoofed-identity 403, the
acceptance is met. The late-close smoke stays an optional rein-side follow-up.

Add a source-owned Emission Cadence declaration for scheduled evidence events
(INFO-WP-0029-T03), with a recorded incompatibility: expected-rate cannot
express the weekday-only SBOM catch-up schedule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 151606@bnt-lap001
Assistant-Session: 3c0a4ad5-bb8b-4bf7-b9f0-fa5f29204e48
This commit is contained in:
tegwick 2026-09-22 22:44:58 +02:00
parent 51689bf323
commit f20db478f5
3 changed files with 96 additions and 3 deletions

View file

@ -0,0 +1,58 @@
# Source-owned Emission Cadence declaration (info-tech-canon INFO-WP-0029-T03).
# Contract: info-tech-canon emission-cadence candidate, document 0.2.0,
# wire schema 0.1, contract digest b08b4d95fc4b0bd3.
# This states intended cadence only. It is not evidence that the events are
# emitted, and it is not a conformance claim.
#
# Events are State Hub progress events written by activity-core's declared
# evidence/report sinks, one per scheduled activation of the named
# ActivityDefinition (activity-definitions/<id>.md). Schedules are fixed-time
# Temporal cron schedules, so windows include slack for run duration.
schema_version: "0.1"
declaration_id: activity-core.scheduled-evidence.v1
source: activity-core
stream_id: activity-core.state-hub-progress
sources:
- source_id: activity-core.daily-cnpg-option-a-backup
source_system: railiance01/activity-core
event_class: cnpg_option_a_backup
form: expected-rate
window: PT26H # cron "30 2 * * *" UTC; 24h period + 2h run slack
expected_min: 1
drop_below: finding
extensions:
activity-core:
definition: daily-cnpg-option-a-backup
schedule: "30 2 * * * UTC"
- source_id: activity-core.weekly-forgejo-package-prune
source_system: railiance01/activity-core
event_class: forgejo_package_prune
form: expected-rate
window: P8D # cron "30 3 * * 0" UTC; 7d period + 1d slack
expected_min: 1
drop_below: finding
extensions:
activity-core:
definition: weekly-forgejo-package-prune
schedule: "30 3 * * 0 UTC"
- source_id: activity-core.daily-sbom-catchup
source_system: railiance01/activity-core
event_class: sbom_catchup
form: heartbeat-or-reconciliation
reconciliation:
compare_local: activity_runs.count(definition_id=daily-sbom-catchup)
compare_observed: state_hub_progress.count(event_type=sbom_catchup)
divergence: finding
undrained_local: lag-not-divergence
extensions:
activity-core:
definition: daily-sbom-catchup
schedule: "15 9 * * 1-5 Europe/Berlin"
incompatibility: >-
expected-rate cannot express a weekday-only schedule. A PT26H window
raises a false finding every Saturday, Sunday and Monday morning; a
window long enough to span the weekend (P4D) hides a three-day
outage midweek. Declared as reconciliation against local activation
records instead. Suggested change: allow an expected-rate entry to
name a calendar (e.g. a cron expression and timezone) so the window
is counted in scheduled slots rather than wall-clock time.

View file

@ -41,3 +41,28 @@ rejection. No run was actively leased during the rollout window, so a natural
production heartbeat plus a rejected late close remains the final T04 evidence.
This does not weaken the deployed enforcement; it avoids changing unrelated
production work solely to create a demonstration row.
## Natural heartbeat evidence (2026-09-22)
Reported by rein-aharness in State Hub message
`c217e92f-0968-416f-9def-fd8ab4a436f3` (thread
`1250c36a-9fe8-45dc-bb5a-d5fa85e49fd0`):
- rein-aharness `44f5bb9` heartbeats once immediately after claim and before
dispatch; a 409 on that heartbeat fails closed before dispatch
(`stage=pre-dispatch-heartbeat`). Deployed on railiance01 in claim-loop tree
`11020e8`; `rein-aharness-claim-loop.service` active since
2026-09-13 20:52:18 UTC.
- 19 natural claims since then logged an accepted initial heartbeat, and none
were rejected.
- Natural trace, run `a19455cd-2d25-43f5-a0af-1a6af0910d37`
(fi-research-brief, 2026-09-14): `05:30:25.388` heartbeat HTTP 200, then
`05:30:29.138` complete HTTP 200, state `succeeded`.
This is evidence the counterparty attested. It was not re-read from actcore-api logs or
the production database in this session. The T04 acceptance (authenticated
claim, active heartbeat, and a rejected mismatched *or* expired mutation) is
met: claim and 403 mismatch above, heartbeat here. Server-side expiry
rejection is proven by the deterministic suite. rein-aharness's labelled
late-close smoke remains an optional follow-up on their side and does not gate this
workplan.

View file

@ -4,13 +4,13 @@ type: workplan
title: "Bind queue mutations to worker identity and active leases"
domain: infotech
repo: activity-core
status: active
status: finished
flavor: implementation
owner: codex
topic_slug: activity-core
priority: high
created: "2026-08-23"
updated: "2026-09-04"
updated: "2026-09-22"
related:
- ACT-ADR-005
- ACTIVITY-WP-0026
@ -122,7 +122,7 @@ existing explicit opt-in, and the former implicit open mode is gone.
```task
id: ACTIVITY-WP-0036-T04
status: progress
status: done
priority: high
state_hub_task_id: "1228e10a-067b-54db-baa3-a8fc9549492b"
```
@ -161,3 +161,13 @@ lease enforcement is absent. State Hub message
immediately after claim, retain periodic heartbeats, and return a natural
claim/heartbeat/close trace. It also requests an isolated labeled late-close
smoke; no real workload will be delayed or expired to manufacture evidence.
Closed 2026-09-22: rein-aharness `44f5bb9` now heartbeats immediately after
claim. It reported 19 natural claims with accepted heartbeats and no
rejections. Its natural trace for run `a19455cd` shows heartbeat HTTP 200, then
complete HTTP 200 (message `c217e92f`). Together with the 2026-08-23 claim and
spoofed-identity 403, this meets the acceptance. The late-close smoke is an
optional rein-side follow-up. Evidence is appended to
`docs/evidence/ACTIVITY-WP-0036-queue-boundary-rollout-2026-08-23.md`. That
evidence was reported by rein-aharness and not re-read from production in this
session.