Repository navigation
-
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/MANon 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
TimingNodeProxybehindPresentationGateway, remove the standalone Set Location operation in favor ofopen(locationId), rename automatic-registration intent toapplyAutomaticRegistration(action, registrationId, time), and expose explicitstatusChangedEvent()/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
ERRORwithTIMING_DATA_RECOVERY_FAILED, reject normal operations on the errored node, and add black-boxVC-ST1-004for a persisted NodeId mismatch. -
Make IF-03 OPEN carry the requested LocationId as one ordered TimingNode operation; the HTTP
/openrequest now requireslocationId, 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
CommandHandlertoPresentationGateway; 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 sharedevent-timing-dataunder the Event Timing family namespace, use the stable IF-03 application identitytiming-application, and rename SI-01-owned runtime threads with thetp-<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-reginjection 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
FileTimingDataStorewith 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 underTimingDataFactory, codec failures underTimingDataCodec, and small shared identity values under source-onlyTimingDataTypesasNodeId,LocationIdandRegistrationId; keepTimingTimestampstandalone. -
Clarify SerialWorker usage in Javadoc and distinguish queue
AdmissionResultfrom the laterfutureResult()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-dataand rename its artifact fromevent-timing-data-apitoevent-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 commonTimingDataContext, and type-safeAutomaticRegistrationTimingData/ManualRegistrationTimingDatafactory returns; remove the premature universal state/revocation record model. -
Rename the reusable SI-01 Maven module from
framework/tocore/and the artifact fromevent-timing-frameworktoevent-timing-core; keepapp/as the thin executable boundary and keep Core out of the architecture-layer model. -
Add the narrow shared
TimingDataCodecandTimingDataProviderSPI; 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 configuredLocationID, registration origin/time-source enums, exact nine-digit UTCTimingTimestamp, and immutable record-family factories forTimingDataRecordincluding 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 toevent-timing-data) and the first real interchange value type,TimingDataRecordKey; keep SI-01TimingNodeIdin 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 runtimeLoggingfrom the independently composedinfra.loggingserver.LoggingServerpackage while preserving the externallogging.liveYAML shape. -
Rename the programmable IF-03 presentation interface from
Remote APItoAPI, includingpresentation.interfaces.api,Api*configuration types, thepresentation.apiYAML 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-testan 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-SNAPSHOTafter the acceptedv0.2.2Step-3 release; this mechanical successor does not pre-decide the eventual Step-4 release number.