Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
0177a0d
feat(ptp-sv): add allocation-free bounded phase authority and fractio…
masarray Oct 14, 2026
6f607ed
test(ptp-sv): simulate 480s 80ppm drift, 4000/4800fps bounded slew, f…
masarray Oct 14, 2026
fe1fc61
ci(ptp-sv): enforce bounded phase authority tests under GCC Clang and…
masarray Oct 14, 2026
b851ee2
ci(ptp-sv): enforce bounded phase authority tests under GCC Clang and…
masarray Oct 14, 2026
669d208
feat(ptp-sv): add default-off guarded continuous phase servo lab config
masarray Oct 14, 2026
037c00d
feat(esp32p4): add guarded lock-free ISR phase handoff state
masarray Oct 14, 2026
38bbbc3
feat(esp32p4): distribute bounded PTP phase corrections within same s…
masarray Oct 14, 2026
443ac97
fix(ptp-sv): cancel ongoing slew on source loss and keep publisher la…
masarray Oct 14, 2026
f1185d4
feat(esp32p4): add background bounded EMAC PTP/GPTimer phase observat…
masarray Oct 14, 2026
35efcbd
feat(esp32p4): initialize optional phase observer before publisher ST…
masarray Oct 14, 2026
5f7d76b
ci(esp32p4): compile experimental continuous PTP-SV phase adapter in …
masarray Oct 14, 2026
85d1b0e
fix(ptp-sv): preserve wrap-safe lateness accounting and 1Hz receiver …
masarray Oct 14, 2026
ccc264f
fix(ptp-sv): preserve wrap-safe lateness accounting and 1Hz receiver …
masarray Oct 14, 2026
2e7dd2e
docs(ptp-sv): specify continuous phase servo invariants, software evi…
masarray Oct 14, 2026
9b1ea98
fix(ci): repair PTP firmware YAML after generated string substitution…
masarray Oct 14, 2026
e47aad8
perf(esp32p4): keep original 32-bit ISR deadline path for default fir…
masarray Oct 14, 2026
f2558ee
perf(esp32p4): avoid per-frame atomic RMW and redundant slew reset in…
masarray Oct 14, 2026
fd3f908
fix(esp32p4): tag every GPTimer session to reject stale post-STOP PTP…
masarray Oct 14, 2026
c6b8820
fix(ptp-sv): bind phase correction to exact STOP/START session and se…
masarray Oct 14, 2026
0e3e9f8
fix(ptp-sv): permit bounded 20ms initial phase acquisition without ab…
masarray Oct 14, 2026
2403848
test(ptp-sv): cover bounded acquisition after coarse 9ms PTP epoch arm
masarray Oct 14, 2026
0fdcc53
ci(m2a): stop redundant feature push builds and skip expensive Draft …
masarray Oct 14, 2026
4f399ba
ci(m2a): finish push scope and remove unrelated BRCB/control Draft PR…
masarray Oct 14, 2026
50d11b2
feat(interop): add combined PTP+SV offline PCAP wire audit and positi…
masarray Oct 14, 2026
ad40746
ci: prevent unrelated IED Qt WIP builds on PTP+SV PCAP audit
masarray Oct 14, 2026
3370c7d
perf(pcap): stream PTP+SV captures with bounded memory and preserve b…
masarray Oct 14, 2026
caf8606
ci: add opt-in single-job PTP-SV wire audit Draft checkpoint
masarray Oct 14, 2026
b4d19ff
fix(ci): restore Linux matrix job after targeted audit YAML patch
masarray Oct 14, 2026
3b7c029
fix(ci): remove duplicate C++ jobs; keep one targeted Draft checkpoint
masarray Oct 14, 2026
0c8372b
fix(interop): bind two-step PTP FollowUp to matching Sync source and …
masarray Oct 14, 2026
af2bc33
fix(ptp-sv): fail-closed phase steering on canonical frame loss; test…
masarray Oct 14, 2026
a8df24a
fix(ci): reconstruct valid one-job PTP phase checkpoint from known-go…
masarray Oct 14, 2026
8705b74
fix(ci): initialize ESP-IDF toolchain before portable CMake phase reg…
masarray Oct 14, 2026
670a5cd
test(ptp-sv): validate 360-second recovery from repeated canonical lo…
masarray Oct 14, 2026
986ca6c
fix(ptp-sv): recheck publisher fault generation inside serialized pha…
masarray Oct 14, 2026
68151ca
feat(ptp-sv): sparse canonical SV EMAC TX timestamp evidence with fai…
masarray Oct 14, 2026
e871b54
fix(ptp-sv): reject false phase evidence across PTP clock steps, sour…
masarray Oct 14, 2026
a035744
fix(ptp): require fresh Announce and Sync/FU after faults; preserve 1…
masarray Oct 14, 2026
90062f3
fix(ptp): expire stale SOURCE evidence and gate PTP timescale on veri…
masarray Oct 14, 2026
83a531a
ci(m3): synchronize efficient routing without dropping bounded PTP-SV…
masarray Oct 14, 2026
48dfaac
fix(ci): scope inherited M3 workflow push triggers to main only
masarray Oct 14, 2026
be7ef02
fix(ci): restore precise IED packaging PR scope and manual trigger
masarray Oct 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions .github/workflows/arstack-studio-qt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ name: ARStack Studio Qt

on:
push:
branches: [main]
paths:
- 'apps/arstack_studio/**'
- 'include/ariec61850/sampled_values/**'
- 'src/scl/**'
- 'include/ariec61850/scl/**'
- '.github/workflows/arstack-studio-qt.yml'
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'apps/arstack_studio/**'
- 'include/ariec61850/sampled_values/**'
Expand All @@ -20,11 +22,12 @@ permissions:
contents: read

concurrency:
group: arstack-studio-qt-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
windows-launcher-parse:
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
runs-on: windows-latest
steps:
- name: Checkout
Expand Down Expand Up @@ -53,6 +56,7 @@ jobs:
Write-Host 'Windows PowerShell parse: PASS · launcher + S8B packaged ownership probe'

windows-ownership-integration:
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
name: S8B Windows ownership integration
runs-on: windows-2022
steps:
Expand Down Expand Up @@ -123,6 +127,7 @@ jobs:
retention-days: 7

qt-build-smoke:
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
runs-on: ubuntu-latest
container: ubuntu:26.04
steps:
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/arstack-studio-rc2-policy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ name: ARStack Studio RC2 Acceptance Policy

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'apps/arstack_studio/src/Rc2Acceptance.cpp'
- 'apps/arstack_studio/rc2/**'
- 'apps/arstack_studio/CMakeLists.txt'
- 'docs/SMV_STUDIO_RC2_ACCEPTANCE.md'
- '.github/workflows/arstack-studio-rc2-policy.yml'
push:
branches: [main]
paths:
- 'apps/arstack_studio/src/Rc2Acceptance.cpp'
- 'apps/arstack_studio/rc2/**'
Expand All @@ -20,11 +22,12 @@ permissions:
contents: read

concurrency:
group: arstack-studio-rc2-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
windows-policy:
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
name: RC2 Windows evidence gate
runs-on: windows-2022
steps:
Expand Down Expand Up @@ -79,6 +82,7 @@ jobs:
retention-days: 14

linux-policy:
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
name: RC2 Linux policy regression
runs-on: ubuntu-latest
container: ubuntu:26.04
Expand Down
8 changes: 0 additions & 8 deletions .github/workflows/arstack-studio-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,6 @@ name: ARStack Studio Release

on:
workflow_dispatch:
pull_request:
paths:
- 'apps/arstack_studio/**'
- 'embedded/esp32p4_smv_injector/**'
- 'include/ariec61850/**'
- 'src/**'
- '.github/workflows/arstack-studio-release.yml'
- '.github/workflows/esp32p4-smv-injector.yml'
push:
tags:
- 'v*'
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/arstack-studio-windows-lifecycle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ name: ARStack Studio Windows Lifecycle

on:
push:
branches: [main]
paths:
- 'apps/arstack_studio/**'
- '.github/workflows/arstack-studio-windows-lifecycle.yml'
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'apps/arstack_studio/**'
- '.github/workflows/arstack-studio-windows-lifecycle.yml'
Expand All @@ -14,11 +16,12 @@ permissions:
contents: read

concurrency:
group: arstack-studio-windows-lifecycle-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
close-exit-reopen:
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
name: Close -> process exit -> immediate reopen
runs-on: windows-2022
timeout-minutes: 12
Expand Down
30 changes: 30 additions & 0 deletions .github/workflows/brcb-hard-profile-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,43 @@ on:
push:
branches:
- main
paths:
- 'embedded/brcb_hard_profile/**'
- 'embedded/brcb_*.cpp'
- 'embedded/mms_brcb_*.cpp'
- 'include/ariec61850/mms/**'
- 'src/mms/**'
- 'include/ariec61850/control/**'
- 'src/control/**'
- 'include/ariec61850/asn1/**'
- 'src/asn1/**'
- 'tests/fixtures/scl/**'
- '.github/workflows/brcb-hard-profile-ci.yml'
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'embedded/brcb_hard_profile/**'
- 'embedded/brcb_*.cpp'
- 'embedded/mms_brcb_*.cpp'
- 'include/ariec61850/mms/**'
- 'src/mms/**'
- 'include/ariec61850/control/**'
- 'src/control/**'
- 'include/ariec61850/asn1/**'
- 'src/asn1/**'
- 'tests/fixtures/scl/**'
- '.github/workflows/brcb-hard-profile-ci.yml'

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
brcb-hard-profile:
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
name: BRCB Hard / ${{ matrix.compiler }}
runs-on: ubuntu-latest
strategy:
Expand Down
26 changes: 26 additions & 0 deletions .github/workflows/ci-routing-policy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: CI Routing Policy
on:
pull_request:
paths:
- '.github/workflows/**'
- 'scripts/check_ci_trigger_policy.py'
- 'docs/CI_WORKFLOW_ROUTING.md'
push:
branches: [main]
paths:
- '.github/workflows/**'
- 'scripts/check_ci_trigger_policy.py'
- 'docs/CI_WORKFLOW_ROUTING.md'
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
routing-contract:
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- uses: actions/checkout@v4
- name: Verify scoped PR workflow routing
run: python3 scripts/check_ci_trigger_policy.py
12 changes: 12 additions & 0 deletions .github/workflows/control-hard-profile-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,14 @@ on:
push:
branches:
- main
paths:
- 'include/ariec61850/control/**'
- 'src/control/**'
- 'embedded/control_guarded_hard_profile_smoke.cpp'
- 'embedded/control_hard_profile/**'
- '.github/workflows/control-hard-profile-ci.yml'
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'include/ariec61850/control/**'
- 'src/control/**'
Expand All @@ -15,8 +22,13 @@ on:
permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
control-hard-profile:
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
name: Control Hard / ${{ matrix.compiler }}
runs-on: ubuntu-latest
strategy:
Expand Down
19 changes: 19 additions & 0 deletions .github/workflows/control-interop-harness-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,32 @@ on:
branches:
- "agent/phase-4d-c5-control-interoperability"
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'tools/control_interop_probe/**'
- 'include/ariec61850/control/**'
- 'src/control/**'
- 'include/ariec61850/mms/**'
- 'src/mms/**'
- 'include/ariec61850/asn1/**'
- 'src/asn1/**'
- 'include/ariec61850/osi/**'
- 'src/osi/**'
- 'include/ariec61850/acse/**'
- 'src/acse/**'
- '.github/workflows/control-interop-harness-ci.yml'
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
control-interop:
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
name: Control Interop Harness / ${{ matrix.compiler }}
runs-on: ${{ matrix.os }}
strategy:
Expand Down
17 changes: 17 additions & 0 deletions .github/workflows/control-mms-profile-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,19 @@ on:
push:
branches:
- main
paths:
- 'include/ariec61850/control/**'
- 'src/control/**'
- 'tests/test_control_mms_structure.cpp'
- 'tests/control_mms_profile/**'
- 'include/ariec61850/mms/data_value.hpp'
- 'include/ariec61850/mms/services.hpp'
- 'src/mms/data_value.cpp'
- 'src/mms/data_codec.cpp'
- 'src/mms/utc_time.cpp'
- '.github/workflows/control-mms-profile-ci.yml'
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'include/ariec61850/control/**'
- 'src/control/**'
Expand All @@ -20,8 +32,13 @@ on:
permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
control-mms-profile:
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
name: Control MMS / ${{ matrix.compiler }}
runs-on: ubuntu-latest
strategy:
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/control-session-profile-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,16 @@ on:
push:
branches:
- main
paths:
- 'include/ariec61850/control/**'
- 'src/control/**'
- 'include/ariec61850/mms/association_runtime.hpp'
- 'src/mms/association_runtime_control_wait.cpp'
- 'tests/test_control_session.cpp'
- 'tests/control_session_profile/**'
- '.github/workflows/control-session-profile-ci.yml'
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'include/ariec61850/control/**'
- 'src/control/**'
Expand All @@ -17,8 +26,13 @@ on:
permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
control-session-profile:
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
name: Control Session / ${{ matrix.compiler }}
runs-on: ubuntu-latest
strategy:
Expand Down
15 changes: 15 additions & 0 deletions .github/workflows/control-termination-profile-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,17 @@ on:
push:
branches:
- main
paths:
- 'include/ariec61850/control/**'
- 'src/control/**'
- 'tests/test_command_termination.cpp'
- 'tests/control_termination_profile/**'
- 'include/ariec61850/mms/data_value.hpp'
- 'include/ariec61850/mms/reporting.hpp'
- 'src/mms/data_value.cpp'
- '.github/workflows/control-termination-profile-ci.yml'
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'include/ariec61850/control/**'
- 'src/control/**'
Expand All @@ -18,8 +28,13 @@ on:
permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
control-termination-profile:
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
name: Control Termination / ${{ matrix.compiler }}
runs-on: ubuntu-latest
strategy:
Expand Down
Loading
Loading