You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 676e899
Browse filesBrowse the repository at this point in the historyBrowse files
Merge branch 'main' into feat/repeated-boot-notification-scenario
Resolves the conflict from branching before ocpp-debugkit#161. The previous resolution left
three stray '>' markers (index.ts and index.test.ts) and deleted
heartbeat-timeout.ts, which reverted ocpp-debugkit#161 and broke typecheck and build.
Restores heartbeat-timeout.ts, drops the markers, rebuilds the registry wiring on
current main, and moves the scenario count to 21 across all four sites. The
scenario file and changeset are unchanged from this branch.
Copy file name to clipboardExpand all lines: CURRENT_STATE.md
+41-15Lines changed: 41 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,12 +8,13 @@
8
8
9
9
## Current Version
10
10
11
-
`0.4.4`, firmware-update-failure scenario (published 2026-07-30). The v0.4.x
12
-
interop and correctness milestone is complete; the line continues to take patch
13
-
releases for scenario additions. `0.4.3` and `0.4.4` each carry a
14
-
`good-first-issue` completed by an outside contributor: after
15
-
`REPEATED_BOOT_NOTIFICATION` (Issue #105, PR #114) in `0.3.1`, that is three
16
-
external good-first contributions in total.
11
+
`0.4.6`, heartbeat-timeout scenario (published 2026-08-08). The v0.4.x interop and
12
+
correctness milestone is complete; the line continues to take patch releases for
13
+
scenario additions. Three of those patches each carry a `good-first-issue`
14
+
completed by an outside contributor, `0.4.3` (Issue #104, PR #133), `0.4.4`
15
+
(Issue #138, PR #147) and `0.4.6` (Issue #137, PR #161). With
16
+
`REPEATED_BOOT_NOTIFICATION` (Issue #105, PR #114) in `0.3.1`, that is four
17
+
external good-first contributions in total, from three different people.
17
18
18
19
## Release Log
19
20
@@ -24,6 +25,7 @@ step). Do not edit between the markers by hand. Full history lives in
24
25
sections further down.
25
26
26
27
<!-- RELEASE-LOG:START -->
28
+
-`0.4.6` (2026-08-08): Add `heartbeat-timeout` scenario covering the `TIMEOUT_NO_HEARTBEAT` detection rule. The synthetic trace boots a station with `interval=300`, then sends a `StatusNotification` past the 2× interval threshold (`06:12:00.000Z`) with no `Heartbeat` anywhere in the trace.
27
29
- `0.4.5` (2026-07-30): Report every refusing `AuthorizationStatus` in `FAILED_AUTHORIZATION`, not just `Invalid` (#156). The OCPP 1.6 enumeration (edition 2, section 7.2) has five values and only `Accepted` permits charging, so `Blocked`, `Expired` and `ConcurrentTx` end a driver's session exactly as `Invalid` does. The rule fired on `Invalid` alone, which meant a blocked or expired token produced a clean report, and silence from a detector reads as "this is not the problem". All four refusals now report under the existing code, with the status named in the description, and the suggested steps mention the `ConcurrentTx` case. Adds a `refused-authorization` scenario covering the three newly reported statuses, bringing the corpus to 18.; Match `FIRMWARE_UPDATE_FAILURE` to the OCPP 1.6 `FirmwareStatus` enumeration (#154, edition 2 section 7.25). The rule matched `DownloadPaused`, `InstallFailed` and `InstallRebootingFailed`, none of which are 1.6 status values, and did not match `InstallationFailed`, which is one of the two failure values the enumeration defines. A conformant station reporting a failed installation, the more consequential of the two firmware outcomes, went undetected. The rule now matches exactly `DownloadFailed` and `InstallationFailed`, and the `firmware-update-failure` scenario reports `InstallationFailed` instead of the non-spec `InstallFailed` it used before.; Transcribe the `STATUS_TRANSITION_VIOLATION` matrix from the OCPP 1.6 status transition table (#155, edition 2 section 4.9). The matrix disagreed with the table in both directions: it flagged 22 transitions the table permits and permitted 2 it does not list. The false positives were concentrated in the recovery rows, where the table allows a connector to return from `Faulted` to any pre-fault state and from `Unavailable` straight into an operative state, so any station that faulted mid-session and resumed charging, or that took a scheduled availability change during a session (`Charging -> Unavailable` and its siblings), produced a spurious warning. `Preparing -> Unavailable` and `Finishing -> Reserved` are absent from the table and are now flagged. The rule's matrix is now the table cell by cell, with the spec's own cell labels alongside it, and a test transcribes the table independently so the two have to agree.
Copy file name to clipboardExpand all lines: packages/toolkit/CHANGELOG.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,11 @@
1
1
# @ocpp-debugkit/toolkit
2
2
3
+
## 0.4.6
4
+
5
+
### Patch Changes
6
+
7
+
- dc2a77c: Add `heartbeat-timeout` scenario covering the `TIMEOUT_NO_HEARTBEAT` detection rule. The synthetic trace boots a station with `interval=300`, then sends a `StatusNotification` past the 2× interval threshold (`06:12:00.000Z`) with no `Heartbeat` anywhere in the trace.
'Station boots and never sends a Heartbeat. BootNotification response sets interval=300s, threshold at 600s. StatusNotification after threshold triggers TIMEOUT_NO_HEARTBEAT.',
5
+
trace: {
6
+
traceId: 'scenario-heartbeat-timeout',
7
+
metadata: {
8
+
stationId: 'CS-SYNTHETIC-018',
9
+
ocppVersion: '1.6',
10
+
source: 'synthetic-scenario',
11
+
description: 'Station boots and never sends a Heartbeat — timeout expected.',
0 commit comments