Skip to content

v0.2.3

Latest

Choose a tag to compare

@github-actions github-actions released this 04 Oct 09:51
· 454 commits to main since this release
a8de373
  • Top-align the API Timing workbench by moving application identity into the left column so Registrations starts at the same vertical position on the right.

  • Refine the interpreted Registrations table to Time | Type | TeamID | Code | <action>, distinguish registration Type from time-origin Code, use an icon-only delete action with no header, and rebalance the two-column workbench.

  • Add a two-column Development Client Timing workbench with input/control on the left, an interpreted local-time Registrations projection with Code AUTO/MAN on the right above the immutable technical LogBook, and future REV projection that marks entries DELETED rather than hiding history.

  • Make the Development Client registration time zone explicit: show the interpreted client zone beside the local civil Time field, keep Now in that same zone and convert to canonical UTC only at the IF-03 boundary.

  • Make Development Client Timing synchronisation prominent above Version/Status, start baseline sync immediately on Events connection, buffer the initial snapshot during sync, and keep mutating controls disabled until LIVE.

  • Introduce a node-scoped TimingNodeProxy behind PresentationGateway, remove the standalone Set Location operation in favor of open(locationId), rename automatic-registration intent to applyAutomaticRegistration(action, registrationId, time), and expose explicit statusChangedEvent() / timingDataCommittedEvent() facts.

  • Make the Development Client target host/IP editable at runtime with an explicit Apply target action, and turn the previously grey API indicator into a clickable stateless HTTP CHECK that reports CHECKING / READY / UNREACHABLE.

  • Promote Device Log and Client Log to independent top-level Development Client tabs, removing the nested Logs/source-tab structure while preserving separate runtime log-level controls.

  • Correct the Development Client Logs tab: show Device Log first and Client Log last, and give both sources independent current/set-level controls while keeping the local client log usable when SI-01 is offline.

  • Rename the standalone JavaFX tool to Development Client and align the API-first workbench: remove the prominent Set Location button, split TimingData Type/Code columns, retain node-scoped IF-03 problems, and give client log lines real source context while keeping Client and SI-01/Device logs separate.

  • Contain TimingData startup-recovery failures to the affected TimingNode: keep SI-01 and diagnostic interfaces running, expose node state ERROR with TIMING_DATA_RECOVERY_FAILED, reject normal operations on the errored node, and add black-box VC-ST1-004 for a persisted NodeId mismatch.

  • Make IF-03 OPEN carry the requested LocationId as one ordered TimingNode operation; the HTTP /open request now requires locationId, while the separate closed-state Set Location operation remains available for engineering/configuration work. Update the Engineering Client and VC-ST1-002 to use the combined OPEN operation.

  • Implement the reviewed API-first Engineering Client workbench: one client configuration file for target/per-boundary ports and presentation defaults, API as the primary Status/Timing surface, top-level Events/Terminal/Device-log connection controls, separate Client versus SI-01 log sources, low local domain intelligence, split registration prefix/number plus readable date/time entry, and retained raw API results/errors/TimingData records for engineering inspection. Keep this change separate from the still-open Step-4 VC-ST1-003 evidence.

  • Rename the transport-independent Application-layer presentation entry point from CommandHandler to PresentationGateway; the gateway continues to expose the same commands, queries, application metadata/capabilities and events without changing IF-03 behaviour or TimingNode execution semantics.

  • Align SI-01 naming with the Timing Point Application boundary: rename the parent/core/app/system-test Maven artifacts to timing-point-*, keep shared event-timing-data under the Event Timing family namespace, use the stable IF-03 application identity timing-application, and rename SI-01-owned runtime threads with the tp-<owner>-<role>[-<identity>] diagnostic convention.

  • Rename the standalone test-client Maven artifact and IDE labels to Event Timing Engineering Client while keeping its existing source directory/package boundary.

  • Strengthen Step-4 VC-ST1-002 with a real second SI-01 process run against the same TimingData file, proving persisted LogBook recovery separately from WebSocket reconnect and confirming recovered history is not emitted as a new live commit.

  • Add the Step-4 Engineering Client Timing view for the compact node-addressed IF-03 contract, including node selection, location/open/close control, capability-gated dev auto-reg, bounded LogBook loading, live committed TimingData merge/deduplication and stale/reconnect handling.

  • Expose the Step-4 first-registration IF-03 application/transport slice: compact node-addressed status/control, capabilities, bounded LogBook queries, dev auto-reg injection and live committed/status WebSocket events.

  • Compose the reference TimingData persistence stack in the real executable from io.storage.timingData.path, including startup recovery, default factory/codec and UTC recorded-time source.

  • Add TimingNode.registerAccepted(...) as the shared post-filter registration boundary used by Step-4 engineering simulation and later RFID processing; it creates automatic TimingData through the same ordered durable commit path.

  • Add a small typed local Event<T> primitive and publish newly committed TimingData after durable store append and LogBook visibility; listener RuntimeExceptions are isolated and reported without rolling back the commit.

  • Rebuild LogBook from committed TimingData before the TimingNode serial worker starts; preserve CLOSED/no-location restart policy and expose repaired incomplete-tail recovery in TimingNode status.

  • Add append-only FileTimingDataStore with canonical LF framing, FileChannel.force(true) append gating, contiguous-stream validation and explicit incomplete-tail recovery reporting.

  • Add the default/reference IF-05 v1 TimingData JSON codec using Jackson streaming only, with canonical writer ordering, compatible extra-member reads and explicit invalid/version/record-type failures.

  • Compact the shared TimingData API by grouping registration variants, manual time source and record key under TimingData, construction context under TimingDataFactory, codec failures under TimingDataCodec, and small shared identity values under source-only TimingDataTypes as NodeId, LocationId and RegistrationId; keep TimingTimestamp standalone.

  • Clarify SerialWorker usage in Javadoc and distinguish queue AdmissionResult from the later futureResult() returned for accepted result-bearing work.

  • Add the first manual TimingData commit path on the TimingNode serial lane with commit-time sequence allocation, TimeSource-based recorded time, store-before-LogBook ordering and failure blocking.

  • Add the passive per-TimingNode LogBook and TimingDataStore append boundary as the foundation for ordered durable TimingData commits.

  • Add the first serialized TimingNode state slice: bounded per-node execution, LocationId, CLOSED/OPEN lifecycle, processed state-operation results, timeout-as-unknown-outcome semantics and ordered status snapshots.

  • Move the shared TimingData library to shared/timing-data and rename its artifact from event-timing-data-api to event-timing-data; keep semantic contracts, default/reference profile, codec and factory/provider in one JAR.

  • Refine the IF-05 TimingData API around TagId / TeamId -> RegistrationId, one common TimingDataContext, and type-safe AutomaticRegistrationTimingData / ManualRegistrationTimingData factory returns; remove the premature universal state/revocation record model.

  • Rename the reusable SI-01 Maven module from framework/ to core/ and the artifact from event-timing-framework to event-timing-core; keep app/ as the thin executable boundary and keep Core out of the architecture-layer model.

  • Add the narrow shared TimingDataCodec and TimingDataProvider SPI; codecs translate one record payload while stores own framing/recovery, and codec failures distinguish invalid data from unsupported version/record-type compatibility cases.

  • Complete the first semantic IF-05 model slice with a provider-neutral RegistrationIdentity, positive configured LocationID, registration origin/time-source enums, exact nine-digit UTC TimingTimestamp, and immutable record-family factories for TimingDataRecord including revocation-reference validation.

  • Start the Step-4 shared IF-05 boundary with a Java-8 shared TimingData reactor artifact (introduced as event-timing-data-api, later renamed to event-timing-data) and the first real interchange value type, TimingDataRecordKey; keep SI-01 TimingNodeId in the framework Domain model and represent the IF-05 record identity value as a validated string.

  • Document test-client/ consistently as the standalone Engineering Client, including its current UI/boundaries, Step-4 Timing/DebugConnector direction and planned deterministic CI screenshot workflow while keeping the module name and code unchanged.

  • Rename SI-01 to Timing Point Application, move SI-01 framework/app Java packages under io.github.brainboxemb.eventtiming.timingpoint, and split runtime Logging from the independently composed infra.loggingserver.LoggingServer package while preserving the external logging.live YAML shape.

  • Rename the programmable IF-03 presentation interface from Remote API to API, including presentation.interfaces.api, Api* configuration types, the presentation.api YAML key and engineering test-client names; HTTP/WebSocket wire paths and behavior are unchanged.

  • Decouple black-box VC-ST1-001 from ordinary local/PR verification: make system-test an explicit Maven profile, keep NetBeans Build/Rebuild test-free, run the process-level test after affected protected-main integration, and require Linux plus Windows system-test evidence for release-tag qualification.

  • Resume normal development on 0.2.3-SNAPSHOT after the accepted v0.2.2 Step-3 release; this mechanical successor does not pre-decide the eventual Step-4 release number.