feat: implement milestones 19–43 (security, topology, tooling, bridges, RTOS, certification)#3
Merged
Merged
Conversation
…s, RTOS, certification)
Milestones 19–43 across 6 phases:
Phase 6 — Security
M19 authz: AuthController + AccessPolicy; ErrForbidden; IEC 62443 SL-2
M20 firmware: FirmwareSession; chunked OTA; rollback; CommandType::Update
Phase 7 — Topology
M21 zonegroup: ZoneGroup typed sets; concurrent send_group; GroupResponse
M22 proxy: ProxyController latency budget; ProxyRegistry
M23 redundancy: RedundantController hot-standby; auto_promote
M24 federation: FederatedRegistry; lease-based cross-HPC ownership
Phase 8 — Tooling
M25 observe: ObservingController; InMemorySink; OTel span recording
M26 admin: AdminServer; SSE events; Prometheus metrics_text
M27 record: RecordingController; Record binary log; Playback replay
M28 config: parse_json; config::load into Registry
M29 codegen: tooling/zone_manifest_schema.json
M30 dyndata: SchemaRegistry; DynamicPayload encode/decode
Phase 9 — Remote Access
M31 grpcbridge: GrpcController stub
M32 restbridge: RestController stub
Phase 10 — Protocol Bridges
M33-M39: someipbr, canbr, ddsbr, mqttbr, linbr, udsbr, doipbr stubs
Phase 11 — Platform
M40 capi: capi.h C API; capi_impl.hpp placement-new shim for RTOS targets
Phase 12 — Certification
M41 tla/: HealthStateMachine, AntiReplayGuard, WatchdogProtocol TLA+ specs
FORMAL_VERIFICATION.md
M42 TARA.md; CYBERSECURITY.md; IEC 62443 SL-2 gap analysis
M43 AUDIT_PACK.md; ASIL-D gap analysis; structural coverage report
Supporting changes:
- rcp.hpp: CommandType::Update = 7
- .fusa-reqs.json: +126 requirements (REQ-AUTH..REQ-CAPI, 24 groups → 38)
- tests/CMakeLists.txt: +12 executables (test_authz..test_capi)
- ROADMAP.md: M19–M43 marked ✅
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Matt Jones <47545907+SoundMatt@users.noreply.github.com>
- dyndata.hpp: add `schema_id = 0` default member initializer so DynamicPayload::decode() returns zero schema_id on short input (was UB) - test_capi.cpp: use __attribute__((aligned(16))) after declarator for placement-new buffers; avoids bus error from misaligned rcp::mock::Registry All 26 CTest cases pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Matt Jones <47545907+SoundMatt@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase 6 — Security
authz.hpp:AuthController+AccessPolicy;ErrForbidden; IEC 62443 SL-2 access control (REQ-AUTH-001..008)firmware.hpp:FirmwareSession; chunked OTA transfer; verify+rollback;CommandType::Update(REQ-FW-001..008)Phase 7 — Topology
zonegroup.hpp:ZoneGrouptyped sets; concurrentsend_group()viastd::async;GroupResponse(REQ-ZG-001..006)proxy.hpp:ProxyControllerlatency budget;ProxyRegistryfull relay (REQ-PROXY-001..006)redundancy.hpp:RedundantControllerhot-standby;auto_promoteon fault (REQ-RED-001..008)federation.hpp:FederatedRegistry; lease-based cross-HPC ownership (REQ-FED-001..008)Phase 8 — Tooling
observe.hpp:ObservingController;InMemorySink; OTel-style span recording (REQ-OBS-001..008)admin.hpp:AdminServer; SSE event bus; Prometheusmetrics_text()(REQ-ADMIN-001..008)record.hpp:RecordingController; binary log;Playback::run_all()with speed factor (REQ-REC-001..008)config.hpp: hand-rolled JSON parser;config::load()intoRegistry(REQ-CFG-001..006)tooling/zone_manifest_schema.json: JSON Schema draft-07 for zone manifestsdyndata.hpp:SchemaRegistry;DynamicPayloadencode/decode with 4-byte BE schema_id prefix (REQ-DYN-001..006)Phase 9–10 — Protocol Bridges
grpcbridge,restbridge,someipbr,canbr,ddsbr,mqttbr,linbr,udsbr,doipbr— all stubControllerimpls returningerrc::function_not_supportedPhase 11 — RTOS / C API
capi.h+capi_impl.hpp: pure-C flat API with opaque handles; placement-new into caller-supplied aligned buffers;rcp_send,rcp_subscribe,rcp_registry_*,rcp_ctrl_*Phase 12 — Formal Verification
tla/:HealthStateMachine.tla,AntiReplayGuard.tla,WatchdogProtocol.tla— TLC-checkable safety propertiesFORMAL_VERIFICATION.md: property descriptions, C++ mapping, TLC instructionsPhase 13–14 — ISO 21434 / Certification
TARA.md,CYBERSECURITY.md: 10 threats (T-01..T-10), risk matrix, IEC 62443 SL-2 gap analysisAUDIT_PACK.md: ASIL-D gap analysis, structural coverage table, CI gate table, change impact procedure.fusa-reqs.json: expanded to 324 requirements across 38 groups (up from 198)All 26 CTest cases pass ✅
Test plan