Close WP-0036 on natural heartbeat evidence; declare emission cadence
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:
parent
51689bf323
commit
f20db478f5
3 changed files with 96 additions and 3 deletions
58
docs/emission-cadence/activity-core-evidence.yaml
Normal file
58
docs/emission-cadence/activity-core-evidence.yaml
Normal 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.
|
||||||
|
|
@ -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.
|
production heartbeat plus a rejected late close remains the final T04 evidence.
|
||||||
This does not weaken the deployed enforcement; it avoids changing unrelated
|
This does not weaken the deployed enforcement; it avoids changing unrelated
|
||||||
production work solely to create a demonstration row.
|
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.
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,13 @@ type: workplan
|
||||||
title: "Bind queue mutations to worker identity and active leases"
|
title: "Bind queue mutations to worker identity and active leases"
|
||||||
domain: infotech
|
domain: infotech
|
||||||
repo: activity-core
|
repo: activity-core
|
||||||
status: active
|
status: finished
|
||||||
flavor: implementation
|
flavor: implementation
|
||||||
owner: codex
|
owner: codex
|
||||||
topic_slug: activity-core
|
topic_slug: activity-core
|
||||||
priority: high
|
priority: high
|
||||||
created: "2026-08-23"
|
created: "2026-08-23"
|
||||||
updated: "2026-09-04"
|
updated: "2026-09-22"
|
||||||
related:
|
related:
|
||||||
- ACT-ADR-005
|
- ACT-ADR-005
|
||||||
- ACTIVITY-WP-0026
|
- ACTIVITY-WP-0026
|
||||||
|
|
@ -122,7 +122,7 @@ existing explicit opt-in, and the former implicit open mode is gone.
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: ACTIVITY-WP-0036-T04
|
id: ACTIVITY-WP-0036-T04
|
||||||
status: progress
|
status: done
|
||||||
priority: high
|
priority: high
|
||||||
state_hub_task_id: "1228e10a-067b-54db-baa3-a8fc9549492b"
|
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
|
immediately after claim, retain periodic heartbeats, and return a natural
|
||||||
claim/heartbeat/close trace. It also requests an isolated labeled late-close
|
claim/heartbeat/close trace. It also requests an isolated labeled late-close
|
||||||
smoke; no real workload will be delayed or expired to manufacture evidence.
|
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.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue