Record Class ReleaseRecord
java.lang.Object
java.lang.Record
network.ike.workspace.ReleaseRecord
- Record Components:
cycle- the cycle label, e.g.komet-wsr-1; never blankstarted- when the cycle opened (opaque caller-supplied text, typically an ISO date); null when unknownmembers- released members in release order, keyed by subproject name; never null, possibly empty
public record ReleaseRecord(String cycle, String started, Map<String, ReleaseRecord.MemberRelease> members)
extends Record
One release cycle of a working set — the typed model behind
releases/release-<cycle>.yaml in the workspace root
(IKE-Network/ike-issues#973; shape settled 2026-08-10: one file per
cycle, one row per released member, finalized by the cycle's
workspace-root release).
ws:record-release appends a ReleaseRecord.MemberRelease row each
time a member releases; together with the member's manifest state
transition (see
ManifestWriter.recordReleaseAlignment(String, String, String, String))
the two writes are the same manifest evolution: the record says what
released, the state entry makes alignment and the release cascade obey
it.
Instances are immutable; withMember(String, MemberRelease)
returns an updated copy. Member insertion order is preserved — the
record file reads in release order.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordOne member's release within a cycle. -
Constructor Summary
ConstructorsConstructorDescriptionReleaseRecord(String cycle, String started, Map<String, ReleaseRecord.MemberRelease> members) Validate and defensively copy: the cycle label is required and the member map is copied into an unmodifiable insertion-ordered map. -
Method Summary
Modifier and TypeMethodDescriptioncycle()Returns the value of thecyclerecord component.final booleanIndicates whether some other object is "equal to" this one.final inthashCode()Returns a hash code value for this object.members()Returns the value of themembersrecord component.static ReleaseRecordOpen a new, empty cycle record.started()Returns the value of thestartedrecord component.final StringtoString()Returns a string representation of this record class.withMember(String name, ReleaseRecord.MemberRelease release) Return a copy of this record with the given member's row added, or replaced when the member already has one (a member re-released within the cycle keeps a single row carrying the latest release).
-
Constructor Details
-
ReleaseRecord
public ReleaseRecord(String cycle, String started, Map<String, ReleaseRecord.MemberRelease> members) Validate and defensively copy: the cycle label is required and the member map is copied into an unmodifiable insertion-ordered map.- Throws:
ManifestException- ifcycleis null or blank, ormembersis null
-
-
Method Details
-
start
Open a new, empty cycle record.- Parameters:
cycle- the cycle label, e.g.komet-wsr-1started- when the cycle opened (opaque caller-supplied text); may be null- Returns:
- an empty record for the cycle
- Throws:
ManifestException- ifcycleis null or blank
-
withMember
Return a copy of this record with the given member's row added, or replaced when the member already has one (a member re-released within the cycle keeps a single row carrying the latest release). A replaced member keeps its original position; a new member appends.- Parameters:
name- the subproject name; never blankrelease- the member's release row- Returns:
- a new record including the row
- Throws:
ManifestException- ifnameis null or blank orreleaseis null
-
toString
-
hashCode
-
equals
Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared withObjects::equals(Object,Object). -
cycle
-
started
-
members
-