69 lines
2.3 KiB
Go
69 lines
2.3 KiB
Go
package continuity
|
|
|
|
import (
|
|
"git.cin.su/m/Assistant/contracts/authority"
|
|
"git.cin.su/m/Assistant/contracts/identity"
|
|
"git.cin.su/m/Assistant/contracts/work"
|
|
"git.cin.su/m/Assistant/platform/ids"
|
|
)
|
|
|
|
type CommitmentID ids.ID
|
|
type ProspectiveItemID ids.ID
|
|
type ProspectiveRevision uint64
|
|
type CommittedActionIntentID ids.ID
|
|
type CommittedAuthorizedActionID ids.ID
|
|
|
|
type ProspectiveState string
|
|
|
|
const (
|
|
ProspectiveRegistered ProspectiveState = "REGISTERED"
|
|
ProspectiveArmed ProspectiveState = "ARMED"
|
|
ProspectiveTriggered ProspectiveState = "TRIGGERED"
|
|
ProspectiveRevalidating ProspectiveState = "REVALIDATING"
|
|
ProspectiveDelivered ProspectiveState = "DELIVERED"
|
|
ProspectiveSatisfied ProspectiveState = "SATISFIED"
|
|
ProspectiveSuppressed ProspectiveState = "SUPPRESSED"
|
|
ProspectiveExpired ProspectiveState = "EXPIRED"
|
|
)
|
|
|
|
// ProspectiveItem is canonical future relevance. TriggerAtUnixMillis is an
|
|
// absolute instant; scheduling engines are derived delivery mechanisms only.
|
|
type ProspectiveItem struct {
|
|
ID ProspectiveItemID
|
|
CommitmentID CommitmentID
|
|
OwnerPrincipalID identity.PrincipalID
|
|
ScopeID authority.ScopeID
|
|
GoalID work.GoalID
|
|
TriggerAtUnixMillis int64
|
|
State ProspectiveState
|
|
Revision ProspectiveRevision
|
|
}
|
|
|
|
// SatisfyDeliveredSubject is the complete serializable operation subject. It
|
|
// is distinct from a Work TaskTarget, which remains the live justification.
|
|
type SatisfyDeliveredSubject struct {
|
|
ProspectiveItemID ProspectiveItemID
|
|
ExpectedRevision ProspectiveRevision
|
|
FromState ProspectiveState
|
|
ToState ProspectiveState
|
|
EvidenceRef string
|
|
}
|
|
|
|
// SatisfyDeliveredCommand is accepted only at Continuity's internal executor
|
|
// boundary. Commit identities are references; Continuity remains state owner.
|
|
type SatisfyDeliveredCommand struct {
|
|
ActionIntentID CommittedActionIntentID
|
|
AuthorizedActionID CommittedAuthorizedActionID
|
|
OwnerPrincipalID identity.PrincipalID
|
|
Subject SatisfyDeliveredSubject
|
|
}
|
|
|
|
type ActionReceipt struct {
|
|
ActionIntentID CommittedActionIntentID
|
|
AuthorizedActionID CommittedAuthorizedActionID
|
|
OwnerPrincipalID identity.PrincipalID
|
|
Subject SatisfyDeliveredSubject
|
|
ResultState ProspectiveState
|
|
ResultRevision ProspectiveRevision
|
|
}
|