readmodels

package
v0.17.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 25, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ValidDeliberationAccessMode added in v0.15.0

func ValidDeliberationAccessMode(value DeliberationAccessMode) bool

func ValidDeliberationAllowedOperation added in v0.15.0

func ValidDeliberationAllowedOperation(value DeliberationAllowedOperation) bool

func ValidDeliberationAutomationMode added in v0.15.0

func ValidDeliberationAutomationMode(value DeliberationAutomationMode) bool

func ValidDeliberationCaptureMode added in v0.15.0

func ValidDeliberationCaptureMode(value DeliberationCaptureMode) bool

func ValidDeliberationFailureCode added in v0.15.0

func ValidDeliberationFailureCode(value DeliberationFailureCode) bool

func ValidDeliberationGrantStatus added in v0.15.0

func ValidDeliberationGrantStatus(value DeliberationGrantStatus) bool

func ValidDeliberationLaneStatus added in v0.15.0

func ValidDeliberationLaneStatus(value DeliberationLaneStatus) bool

func ValidDeliberationProviderGroup added in v0.15.0

func ValidDeliberationProviderGroup(value DeliberationProviderGroup) bool

func ValidDeliberationReleaseEligibility added in v0.15.0

func ValidDeliberationReleaseEligibility(value DeliberationReleaseEligibility) bool

func ValidDeliberationRuntimeReadiness added in v0.15.0

func ValidDeliberationRuntimeReadiness(value DeliberationRuntimeReadiness) bool

func ValidDeliberationSessionStatus added in v0.15.0

func ValidDeliberationSessionStatus(value DeliberationSessionStatus) bool

func ValidDeliberationTurnStatus added in v0.15.0

func ValidDeliberationTurnStatus(value DeliberationTurnStatus) bool

func ValidateDeliberationAutomationGrantReadModel added in v0.15.0

func ValidateDeliberationAutomationGrantReadModel(grant DeliberationAutomationGrantReadModel) error

ValidateDeliberationAutomationGrantReadModel rejects all unverifiable or over-broad grant projections. Runtime consumers must additionally verify the Base-issued decision and expiry; this shape check does not grant authority.

func ValidateDeliberationProviderLaneReadModel added in v0.15.0

func ValidateDeliberationProviderLaneReadModel(lane DeliberationProviderLaneReadModel) error

ValidateDeliberationProviderLaneReadModel rejects unknown adapter state and prevents an imported lane from being projected without its artifact and ledger references. Actual Receipt existence must still be verified by os-03.

func ValidateDeliberationSessionReadModel added in v0.15.0

func ValidateDeliberationSessionReadModel(session DeliberationSessionReadModel) error

ValidateDeliberationSessionReadModel confirms that a client projection only contains governed references and closed lifecycle values. It does not make the projection a truth source or authorize any automation.

func ValidateDeliberationTurnReadModel added in v0.15.0

func ValidateDeliberationTurnReadModel(turn DeliberationTurnReadModel) error

ValidateDeliberationTurnReadModel checks references and bounded counters. It purposely does not decide whether a turn may dispatch; that remains an owner-product Base and Gateway decision.

func ValidateExperienceAssetCandidateReadModel added in v0.17.0

func ValidateExperienceAssetCandidateReadModel(model ExperienceAssetCandidateReadModel) error

ValidateExperienceAssetCandidateReadModel checks candidate/formal isolation and immutable provenance without treating the projection as a truth source.

func ValidatePackHandsRequirementReadModel added in v0.16.0

func ValidatePackHandsRequirementReadModel(model PackHandsRequirementReadModel) error

ValidatePackHandsRequirementReadModel checks projection integrity without treating readiness, installability, or binding as authorization.

Types

type DeliberationAccessMode added in v0.15.0

type DeliberationAccessMode string

DeliberationAccessMode describes an adapter's declared access path; it does not grant that access.

const (
	DeliberationAccessOfficialAPI           DeliberationAccessMode = "official_api"
	DeliberationAccessProviderAuthorizedWeb DeliberationAccessMode = "provider_authorized_web"
	DeliberationAccessManualWeb             DeliberationAccessMode = "manual_web"
)

type DeliberationAllowedOperation added in v0.15.0

type DeliberationAllowedOperation string

DeliberationAllowedOperation is intentionally closed. A provider adapter may perform only the operations carried by a server-issued grant.

const (
	DeliberationOperationFillPrompt       DeliberationAllowedOperation = "fill_prompt"
	DeliberationOperationSubmitPrompt     DeliberationAllowedOperation = "submit_prompt"
	DeliberationOperationObserveResponse  DeliberationAllowedOperation = "observe_response"
	DeliberationOperationCaptureResponse  DeliberationAllowedOperation = "capture_response"
	DeliberationOperationRequestSynthesis DeliberationAllowedOperation = "request_synthesis"
)

type DeliberationAutomationGrantReadModel added in v0.15.0

type DeliberationAutomationGrantReadModel struct {
	GrantRef             string                         `json:"grant_ref"`
	Mode                 DeliberationAutomationMode     `json:"mode"`
	SessionRef           string                         `json:"session_ref"`
	TurnRef              string                         `json:"turn_ref,omitempty"`
	TransactionRef       string                         `json:"transaction_ref"`
	ProviderAdapterRefs  []string                       `json:"provider_adapter_refs"`
	AllowedOperations    []DeliberationAllowedOperation `json:"allowed_operations"`
	DispatchOnConfirm    bool                           `json:"dispatch_on_confirm"`
	QuestionSHA256       string                         `json:"question_sha256,omitempty"`
	IdleExpiresAt        string                         `json:"idle_expires_at"`
	AbsoluteExpiresAt    string                         `json:"absolute_expires_at"`
	MaxTurns             int                            `json:"max_turns"`
	RemainingTurns       int                            `json:"remaining_turns"`
	MaxDispatchesPerLane int                            `json:"max_dispatches_per_lane"`
	Status               DeliberationGrantStatus        `json:"status"`
	DecisionRef          string                         `json:"decision_ref"`
	PolicySnapshotRef    string                         `json:"policy_snapshot_ref"`
	EvidenceRefs         []string                       `json:"evidence_refs"`
	CandidateOnly        bool                           `json:"candidate_only"`
	NonFormal            bool                           `json:"non_formal"`
	CreatedAt            string                         `json:"created_at"`
	UpdatedAt            string                         `json:"updated_at"`
}

DeliberationAutomationGrantReadModel projects a Base-issued grant for the currently selected automation scope. It never permits more than one dispatch per lane and is valid only while its owner product can verify DecisionRef.

type DeliberationAutomationMode added in v0.15.0

type DeliberationAutomationMode string

DeliberationAutomationMode limits the scope of a server-issued automation grant. It is a projection of a Base decision, never a client-supplied approval signal.

const (
	DeliberationAutomationManual          DeliberationAutomationMode = "manual"
	DeliberationAutomationCurrentTurnAuto DeliberationAutomationMode = "current_turn_auto"
	DeliberationAutomationSessionAuto     DeliberationAutomationMode = "session_auto"
)

type DeliberationCaptureMode added in v0.15.0

type DeliberationCaptureMode string
const (
	DeliberationCaptureNetworkDOMMatch        DeliberationCaptureMode = "network_dom_match"
	DeliberationCaptureDOMFallback            DeliberationCaptureMode = "dom_fallback"
	DeliberationCaptureConflictReviewRequired DeliberationCaptureMode = "conflict_review_required"
)

type DeliberationFailureCode added in v0.15.0

type DeliberationFailureCode string
const (
	DeliberationFailureLoginRequired       DeliberationFailureCode = "login_required"
	DeliberationFailureCaptchaRequired     DeliberationFailureCode = "captcha_required"
	DeliberationFailureAdapterDrift        DeliberationFailureCode = "adapter_drift"
	DeliberationFailureTimedOut            DeliberationFailureCode = "timed_out"
	DeliberationFailureCaptureConflict     DeliberationFailureCode = "capture_conflict"
	DeliberationFailureRecoveryRequired    DeliberationFailureCode = "recovery_required"
	DeliberationFailurePolicyStale         DeliberationFailureCode = "policy_stale"
	DeliberationFailureDigestMismatch      DeliberationFailureCode = "digest_mismatch"
	DeliberationFailureReceiptAppendFailed DeliberationFailureCode = "receipt_append_failed"
	DeliberationFailureModelNotReady       DeliberationFailureCode = "model_not_ready"
	DeliberationFailureEmergencyStop       DeliberationFailureCode = "emergency_stop"
	DeliberationFailureOriginMismatch      DeliberationFailureCode = "origin_mismatch"
)

type DeliberationGrantStatus added in v0.15.0

type DeliberationGrantStatus string
const (
	DeliberationGrantPrepared                         DeliberationGrantStatus = "prepared"
	DeliberationGrantActive                           DeliberationGrantStatus = "active"
	DeliberationGrantConsumed                         DeliberationGrantStatus = "consumed"
	DeliberationGrantExpired                          DeliberationGrantStatus = "expired"
	DeliberationGrantRevoked                          DeliberationGrantStatus = "revoked"
	DeliberationGrantSuspendedReauthorizationRequired DeliberationGrantStatus = "suspended_reauthorization_required"
)

type DeliberationLaneStatus added in v0.15.0

type DeliberationLaneStatus string

DeliberationLaneStatus records an adapter lane's controlled progress.

const (
	DeliberationLaneSelected         DeliberationLaneStatus = "selected"
	DeliberationLanePreflight        DeliberationLaneStatus = "preflight"
	DeliberationLaneFilling          DeliberationLaneStatus = "filling"
	DeliberationLaneSubmitting       DeliberationLaneStatus = "submitting"
	DeliberationLaneAwaitingResponse DeliberationLaneStatus = "awaiting_response"
	DeliberationLaneCapturing        DeliberationLaneStatus = "capturing"
	DeliberationLaneImported         DeliberationLaneStatus = "imported"
	DeliberationLaneFailed           DeliberationLaneStatus = "failed"
	DeliberationLaneBlocked          DeliberationLaneStatus = "blocked"
	DeliberationLaneCaptchaRequired  DeliberationLaneStatus = "captcha_required"
	DeliberationLaneLoginRequired    DeliberationLaneStatus = "login_required"
	DeliberationLaneAdapterDrift     DeliberationLaneStatus = "adapter_drift"
	DeliberationLaneTimedOut         DeliberationLaneStatus = "timed_out"
	DeliberationLaneExcluded         DeliberationLaneStatus = "excluded"
	DeliberationLaneRecoveryRequired DeliberationLaneStatus = "recovery_required"
	DeliberationLaneCancelled        DeliberationLaneStatus = "cancelled"
)

type DeliberationProviderGroup added in v0.15.0

type DeliberationProviderGroup string

DeliberationProviderGroup fixes the product directory grouping. It is a display and selection boundary, not a claim that an adapter is eligible to execute.

const (
	DeliberationProviderGroupChinaCore               DeliberationProviderGroup = "china_core"
	DeliberationProviderGroupChinaExtended           DeliberationProviderGroup = "china_extended"
	DeliberationProviderGroupInternationalSupplement DeliberationProviderGroup = "international_supplement"
	DeliberationProviderGroupCustom                  DeliberationProviderGroup = "custom"
)

type DeliberationProviderLaneReadModel added in v0.15.0

type DeliberationProviderLaneReadModel struct {
	LaneRef                string                         `json:"lane_ref"`
	SessionRef             string                         `json:"session_ref"`
	TurnRef                string                         `json:"turn_ref"`
	ProviderGroup          DeliberationProviderGroup      `json:"provider_group"`
	ProviderResourceRef    string                         `json:"provider_resource_ref"`
	ProviderAdapterRef     string                         `json:"provider_adapter_ref"`
	AdapterVersion         string                         `json:"adapter_version"`
	AdapterDigest          string                         `json:"adapter_digest"`
	AccessMode             DeliberationAccessMode         `json:"access_mode"`
	ReleaseEligibility     DeliberationReleaseEligibility `json:"release_eligibility"`
	RuntimeReadiness       DeliberationRuntimeReadiness   `json:"runtime_readiness"`
	Status                 DeliberationLaneStatus         `json:"status"`
	BrowserRunRef          string                         `json:"browser_run_ref,omitempty"`
	TabBindingRef          string                         `json:"tab_binding_ref,omitempty"`
	GrantRef               string                         `json:"grant_ref,omitempty"`
	ResponseArtifactRef    string                         `json:"response_artifact_ref,omitempty"`
	ResponseSHA256         string                         `json:"response_sha256,omitempty"`
	ResponseByteCount      int                            `json:"response_byte_count,omitempty"`
	ProviderMessageRefHash string                         `json:"provider_message_ref_hash,omitempty"`
	CaptureMode            DeliberationCaptureMode        `json:"capture_mode,omitempty"`
	FailureCode            DeliberationFailureCode        `json:"failure_code,omitempty"`
	FailureSummaryRedacted string                         `json:"failure_summary_redacted,omitempty"`
	ReceiptRefs            []string                       `json:"receipt_refs,omitempty"`
	StartedAt              string                         `json:"started_at,omitempty"`
	CompletedAt            string                         `json:"completed_at,omitempty"`
	ExpiresAt              string                         `json:"expires_at,omitempty"`
	CreatedAt              string                         `json:"created_at"`
	UpdatedAt              string                         `json:"updated_at"`
	CandidateOnly          bool                           `json:"candidate_only"`
	NonFormal              bool                           `json:"non_formal"`
}

DeliberationProviderLaneReadModel exposes adapter release and runtime readiness separately. It carries redacted failure codes and artifact refs, never browser DOM, credentials or provider response text.

type DeliberationReleaseEligibility added in v0.15.0

type DeliberationReleaseEligibility string
const (
	DeliberationReleaseReady    DeliberationReleaseEligibility = "ready"
	DeliberationReleaseNotReady DeliberationReleaseEligibility = "not_ready"
	DeliberationReleaseBlocked  DeliberationReleaseEligibility = "blocked"
	DeliberationReleaseStale    DeliberationReleaseEligibility = "stale"
)

type DeliberationRuntimeReadiness added in v0.15.0

type DeliberationRuntimeReadiness string
const (
	DeliberationRuntimeReady           DeliberationRuntimeReadiness = "ready"
	DeliberationRuntimeNotReady        DeliberationRuntimeReadiness = "not_ready"
	DeliberationRuntimeBlocked         DeliberationRuntimeReadiness = "blocked"
	DeliberationRuntimeProviderMissing DeliberationRuntimeReadiness = "provider_missing"
)

type DeliberationSessionReadModel added in v0.15.0

type DeliberationSessionReadModel struct {
	SessionRef                  string                                `json:"session_ref"`
	TransactionRef              string                                `json:"transaction_ref"`
	SourceEventID               string                                `json:"source_event_id"`
	OwnerRef                    string                                `json:"owner_ref"`
	Status                      DeliberationSessionStatus             `json:"status"`
	AutomationMode              DeliberationAutomationMode            `json:"automation_mode"`
	AutomationGrant             *DeliberationAutomationGrantReadModel `json:"automation_grant,omitempty"`
	ActiveTurnRef               string                                `json:"active_turn_ref,omitempty"`
	Turns                       []DeliberationTurnReadModel           `json:"turns"`
	SelectedProviderAdapterRefs []string                              `json:"selected_provider_adapter_refs"`
	OccVersion                  int64                                 `json:"occ_version"`
	CreatedAt                   string                                `json:"created_at"`
	UpdatedAt                   string                                `json:"updated_at"`
	ExpiresAt                   string                                `json:"expires_at,omitempty"`
	CandidateOnly               bool                                  `json:"candidate_only"`
	NonFormal                   bool                                  `json:"non_formal"`
}

DeliberationSessionReadModel is the client-safe projection of a session. It retains only governed references, hashes and statuses; question and response bodies remain in the owning product's controlled artifact store.

type DeliberationSessionStatus added in v0.15.0

type DeliberationSessionStatus string

DeliberationSessionStatus is the visible lifecycle of a deliberation session. A successful-looking state still requires a real Receipt in the owning product before it can be treated as formal.

const (
	DeliberationSessionCreated                          DeliberationSessionStatus = "created"
	DeliberationSessionCollecting                       DeliberationSessionStatus = "collecting"
	DeliberationSessionAutoActive                       DeliberationSessionStatus = "auto_active"
	DeliberationSessionReadyPartial                     DeliberationSessionStatus = "ready_partial"
	DeliberationSessionReady                            DeliberationSessionStatus = "ready"
	DeliberationSessionSynthesizing                     DeliberationSessionStatus = "synthesizing"
	DeliberationSessionSynthesisReady                   DeliberationSessionStatus = "synthesis_ready"
	DeliberationSessionBlocked                          DeliberationSessionStatus = "blocked"
	DeliberationSessionRecoveryRequired                 DeliberationSessionStatus = "recovery_required"
	DeliberationSessionSuspendedReauthorizationRequired DeliberationSessionStatus = "suspended_reauthorization_required"
	DeliberationSessionVoided                           DeliberationSessionStatus = "voided"
)

type DeliberationTurnReadModel added in v0.15.0

type DeliberationTurnReadModel struct {
	TurnRef               string                              `json:"turn_ref"`
	SessionRef            string                              `json:"session_ref"`
	TransactionRef        string                              `json:"transaction_ref"`
	SourceEventID         string                              `json:"source_event_id"`
	Sequence              int                                 `json:"sequence"`
	QuestionArtifactRef   string                              `json:"question_artifact_ref"`
	QuestionSHA256        string                              `json:"question_sha256"`
	Status                DeliberationTurnStatus              `json:"status"`
	ProviderLanes         []DeliberationProviderLaneReadModel `json:"provider_lanes"`
	SelectedLaneCount     int                                 `json:"selected_lane_count"`
	ImportedLaneCount     int                                 `json:"imported_lane_count"`
	SynthesisCandidateRef string                              `json:"synthesis_candidate_ref,omitempty"`
	AutomationAttemptRef  string                              `json:"automation_attempt_ref,omitempty"`
	OccVersion            int64                               `json:"occ_version"`
	CreatedAt             string                              `json:"created_at"`
	UpdatedAt             string                              `json:"updated_at"`
	CandidateOnly         bool                                `json:"candidate_only"`
	NonFormal             bool                                `json:"non_formal"`
}

DeliberationTurnReadModel is a client-safe one-turn projection. Question content is addressed by artifact ref and SHA-256, never serialized here.

type DeliberationTurnStatus added in v0.15.0

type DeliberationTurnStatus string

DeliberationTurnStatus identifies the state of one question turn without carrying the question or any provider response body.

const (
	DeliberationTurnCreated               DeliberationTurnStatus = "created"
	DeliberationTurnCollecting            DeliberationTurnStatus = "collecting"
	DeliberationTurnDispatching           DeliberationTurnStatus = "dispatching"
	DeliberationTurnReadyPartial          DeliberationTurnStatus = "ready_partial"
	DeliberationTurnReady                 DeliberationTurnStatus = "ready"
	DeliberationTurnSynthesizing          DeliberationTurnStatus = "synthesizing"
	DeliberationTurnSynthesisReady        DeliberationTurnStatus = "synthesis_ready"
	DeliberationTurnBlocked               DeliberationTurnStatus = "blocked"
	DeliberationTurnRecoveryRequired      DeliberationTurnStatus = "recovery_required"
	DeliberationTurnAuthorizationRequired DeliberationTurnStatus = "authorization_required"
)

type ExperienceAssetCandidateReadModel added in v0.17.0

type ExperienceAssetCandidateReadModel struct {
	CandidateID                    string                                     `json:"candidate_id"`
	CandidateOnly                  bool                                       `json:"candidate_only"`
	NonFormal                      bool                                       `json:"non_formal"`
	Status                         string                                     `json:"status"`
	Version                        int                                        `json:"version"`
	SourceReceiptRef               string                                     `json:"source_receipt_ref"`
	TransactionRef                 string                                     `json:"transaction_ref"`
	PackRef                        string                                     `json:"pack_ref"`
	SourcePackVersionRef           string                                     `json:"source_pack_version_ref"`
	SourceModule                   string                                     `json:"source_module"`
	Provenance                     ExperienceAssetProvenance                  `json:"provenance"`
	InheritedPermissions           string                                     `json:"inherited_permissions"`
	DesensitizedExperience         string                                     `json:"desensitized_experience,omitempty"`
	DesensitizationReport          ExperienceAssetDesensitizationReport       `json:"desensitization_report"`
	ContributionCandidate          *candidates.PackUsageContributionCandidate `json:"contribution_candidate,omitempty"`
	PackVersionMigrationCandidate  *candidates.PackVersionMigrationCandidate  `json:"pack_version_migration_candidate,omitempty"`
	ContributionReceipt            *receipts.ContributionReceipt              `json:"contribution_receipt,omitempty"`
	PackVersionMigrationReceiptRef string                                     `json:"pack_version_migration_receipt_ref,omitempty"`
	CreatedAt                      string                                     `json:"created_at"`
}

ExperienceAssetCandidateReadModel is the client-safe projection of one desensitized experience candidate. It cannot carry raw Receipt payloads, Owner authority, or a market-upload proof.

type ExperienceAssetDesensitizationReport added in v0.17.0

type ExperienceAssetDesensitizationReport struct {
	OriginalLength int      `json:"original_length"`
	RedactedCount  int      `json:"redacted_count"`
	FieldsMasked   []string `json:"fields_masked"`
	Rejected       bool     `json:"rejected"`
	Reason         string   `json:"reason,omitempty"`
}

type ExperienceAssetProvenance added in v0.17.0

type ExperienceAssetProvenance struct {
	ReceiptRef     string `json:"receipt_ref"`
	TransactionRef string `json:"transaction_ref"`
	TaskRef        string `json:"task_ref,omitempty"`
	SourceModule   string `json:"source_module"`
	SourceHash     string `json:"source_hash"`
}

type MobilePairingBootstrapCandidate added in v0.15.0

type MobilePairingBootstrapCandidate struct {
	OK                    bool   `json:"ok"`
	CandidateCreated      bool   `json:"candidate_created"`
	Duplicate             bool   `json:"duplicate"`
	CandidateOnly         bool   `json:"candidate_only"`
	MobileTruthSource     bool   `json:"mobile_truth_source"`
	Status                string `json:"status"`
	CandidateRef          string `json:"candidate_ref"`
	CandidateKind         string `json:"candidate_kind"`
	DeviceLabel           string `json:"device_label"`
	Platform              string `json:"platform"`
	IdempotencyKey        string `json:"idempotency_key"`
	CreatedAt             string `json:"created_at"`
	ProducesOwnerDecision bool   `json:"produces_owner_decision"`
	CredentialState       string `json:"credential_state"`
}

MobilePairingBootstrapCandidate is a pre-approval ReadModel/Candidate projection. It carries no raw bootstrap proof, bearer, formal identity, binding, pairing, OwnerDecision, or Receipt truth. The Host creates formal binding and pairing facts only after the PC owner approves this candidate.

type MobilePairingBootstrapRequest added in v0.15.0

type MobilePairingBootstrapRequest struct {
	DeviceLabel    string `json:"device_label"`
	Platform       string `json:"platform"`
	AppInstanceRef string `json:"app_instance_ref"`
	IdempotencyKey string `json:"idempotency_key"`
}

MobilePairingBootstrapRequest is an authority-free description supplied by a phone before it holds a mobile session. The Host, not the phone, creates all binding and pairing refs after the PC owner approves the candidate.

type MobileSessionIssueIntent added in v0.15.0

type MobileSessionIssueIntent struct {
	CandidateRef   string `json:"candidate_ref"`
	IdempotencyKey string `json:"idempotency_key"`
}

MobileSessionIssueIntent is the JSON body for a post-approval session issue. The one-time bootstrap proof travels only in a controlled request header and is intentionally not represented here.

type PackHandsRequirementReadModel added in v0.16.0

type PackHandsRequirementReadModel struct {
	PackRef                      string   `json:"pack_ref"`
	PackVersionRef               string   `json:"pack_version_ref"`
	RequirementRef               string   `json:"requirement_ref"`
	RequiredCapabilities         []string `json:"required_capabilities"`
	ProviderFamily               string   `json:"provider_family"`
	SoftwareRequirementRefs      []string `json:"software_requirement_refs"`
	SoftwareResolutionLockRefs   []string `json:"software_resolution_lock_refs"`
	ResolutionStatus             string   `json:"resolution_status"`
	BlockedReason                string   `json:"blocked_reason,omitempty"`
	ResolvedProviderResourceRef  string   `json:"resolved_provider_resource_ref,omitempty"`
	ResolvedProviderDisplayLabel string   `json:"resolved_provider_display_label,omitempty"`
	ResolvedControlMethodRef     string   `json:"resolved_control_method_ref,omitempty"`
	ResolvedExecutionMode        string   `json:"resolved_execution_mode,omitempty"`
	Installable                  bool     `json:"installable"`
	InstallCandidateRef          string   `json:"install_candidate_ref,omitempty"`
	RiskClass                    string   `json:"risk_class"`
	Optional                     bool     `json:"optional"`
	LastProbeReceiptRef          string   `json:"last_probe_receipt_ref,omitempty"`
	LastResolutionReceiptRef     string   `json:"last_resolution_receipt_ref,omitempty"`
	Stale                        bool     `json:"stale"`
	ExpiresAt                    string   `json:"expires_at,omitempty"`
}

PackHandsRequirementReadModel is the server-produced, client-safe explanation of one Pack Hands requirement. It is a projection only: it cannot authorize execution, install a provider, or force a provider instance selection.

type ReadModelEnvelope

type ReadModelEnvelope struct {
	ViewID string      `json:"view_id"`
	Data   interface{} `json:"data"`
}

ReadModelEnvelope 用于前端展示,根据纪律,它绝不可作为真相源。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL