Files
KArtSell.Aegis/docs/CURRENT/AEG-V15-038_HEARTBEAT_AGING_SLICE_NOTE.md
T
kjh2064 ec80337389 feat: add deterministic execution heartbeats (AEG-V15-038)
Adds a pure, monotonic execution heartbeat and caller-supplied staleness cutoff without inventing alert thresholds. Evidence: targeted Release tests 5/5 passed; TRX SHA256 2ADBB526FAF6E5D924EB3F53C7E582E736199A59E0DA4E4FD25DCAA82A661BBC. WBS remains IN_PROGRESS pending approved alert contract.
2026-08-09 02:20:14 +09:00

2.0 KiB
Raw Blame History

AEG-V15-038 — Schedule heartbeat and aging

Scope

  • WBS ID: AEG-V15-038; Requirement / API / DB / Job / UI / Test: REQ-V15-SCH-06 / V15-SCH-API / MIG-0020 / J31~J40 / Cross / T-V15-SCH-06.
  • Dependency / Gate: AEG-V15-037 (completed, commit d38dc32) / G3.
  • Acceptance: detect a stuck request and produce Owner-alert evidence.

Source / Assumption / Unknown / Decision Required

  • Source: MIG-0020 provides last_heartbeat_at; the execution state machine has no heartbeat contract; schedule rows provide Primary/Secondary owners.
  • Assumption: a heartbeat is valid only for a running execution and cannot move time backwards. Staleness is evaluated against a caller-supplied cutoff, not a hidden default threshold.
  • Unknown: no approved stale duration, alert transport, severity, or escalation policy exists for J31J40.
  • Decision Required: an approved owner-alert contract is required before an I/O alert sender or automatic action may be added. This Slice deliberately creates no default threshold, alert, or schedule activation.

Actual evidence and remaining acceptance

  • dotnet test tests/KArtSell.ModelOperations.UnitTests/KArtSell.ModelOperations.UnitTests.csproj -c Release --filter FullyQualifiedName~ModelOperationExecutionTests --logger "trx;LogFileName=ModelOperationExecutionHeartbeatTests_20260809.trx" --results-directory evidence/AEG-V15-038
  • Result: passed 5/5; artifact: evidence/AEG-V15-038/ModelOperationExecutionHeartbeatTests_20260809.trx; SHA-256: 2ADBB526FAF6E5D924EB3F53C7E582E736199A59E0DA4E4FD25DCAA82A661BBC.
  • A running execution alone can write a monotonic heartbeat; a caller-provided cutoff deterministically identifies staleness. No magic number, wall clock, alert sender, retry, or activation was introduced.
  • Not complete: persist heartbeat to last_heartbeat_at, query it with schedule owners, and produce Owner-alert evidence after the stale-duration and alert-contract decision is approved.