A holder's refused, and a version no holder answered, raised no finding outside the floor, so a build said done while its file was not in the registry; a seat's outcome that does not read was only logged (design 51 Health and conditions). The bound is a key of the new state publish-bounds with its own time to live, armed when a built version is still numbered; a later published of the name clears both findings. Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
25 lines
1.3 KiB
Go
25 lines
1.3 KiB
Go
package versions
|
|
|
|
import "time"
|
|
|
|
// **A publish that ends badly is loud** (design 51 *Health and conditions*; review round 1): the builder raises the
|
|
// finding publish-refused when a holder says refused, and publish-unanswered when a version it built and numbered is
|
|
// neither published nor refused within PublishBound. Each is about the name, so a later published of any version of it
|
|
// clears both. A seat's outcome that does not read is the finding seat-outcome-unread about the seat, cleared by its
|
|
// next outcome that reads.
|
|
//
|
|
// The bound is a key of the state publish-bounds per version (Key), written with its own time to live when the build
|
|
// is done and the version is still numbered, deleted at the holder's word; the bus's marker of its end, heard on the
|
|
// watch, is what raises publish-unanswered while the version is still numbered. No timer.
|
|
const (
|
|
PublishBoundsState = "publish-bounds"
|
|
PublishBoundsBucket = "mesh-delivery-builder_publish-bounds"
|
|
// PublishBound is the build module's own wait for the holder's word (design 51 *How a publish ends*: at most
|
|
// 10 minutes), so a version unanswered past it is one the holder never answered.
|
|
PublishBound = 10 * time.Minute
|
|
|
|
PublishRefused = "publish-refused"
|
|
PublishUnanswered = "publish-unanswered"
|
|
SeatOutcomeUnread = "seat-outcome-unread"
|
|
)
|