Record Class ReleaseRecord
- Record Components:
mission- the mission label, e.g.komet-wsr-1; never blankstarted- when the mission 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
releases/release-<mission>.yaml in the workspace root
(IKE-Network/ike-issues#973; shape settled 2026-08-10: one file per
mission, one row per released member, finalized by the mission's
workspace-root release).
Terminology (IKE-Network/ike-issues#1038, settled
2026-08-17): the working-set release iteration is a mission
— numbered, launched on go/no-go, aborted by
ws:release-rollback, reported by the record and its
what-changed notes. "Cycle" now names only graph cycles. Records
written before the rename carry a cycle: key; the reader
accepts both spellings forever, since shipped records live in
immutable tagged trees.
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 mission. -
Constructor Summary
ConstructorsConstructorDescriptionReleaseRecord(String mission, String started, Map<String, ReleaseRecord.MemberRelease> members) Validate and defensively copy: the mission label is required and the member map is copied into an unmodifiable insertion-ordered map. -
Method Summary
Modifier and TypeMethodDescriptioncycle()Deprecated.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.mission()Returns the value of themissionrecord component.static ReleaseRecordOpen a new, empty mission 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 mission keeps a single row carrying the latest release).
-
Constructor Details
-
ReleaseRecord
public ReleaseRecord(String mission, String started, Map<String, ReleaseRecord.MemberRelease> members) Validate and defensively copy: the mission label is required and the member map is copied into an unmodifiable insertion-ordered map.- Throws:
ManifestException- ifmissionis null or blank, ormembersis null
-
-
Method Details
-
cycle
-
start
Open a new, empty mission record.- Parameters:
mission- the mission label, e.g.komet-wsr-1started- when the mission opened (opaque caller-supplied text); may be null- Returns:
- an empty record for the mission
- Throws:
ManifestException- ifmissionis 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 mission 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). -
mission
-
started
-
members
-
mission()