Skip to main content

internal/infra/pg/factgeneration.go

internal/infra/pg · 294 lines · 9 declarations · source

Declarations

type GenerationResult

type GenerationResult struct {
ID string `json:"generation_id"`
SourceID string `json:"source_observation_id"`
Version string `json:"extractor_version"`
AppliedAt time.Time `json:"applied_at"`
Messages int `json:"messages_read"`
Asserted int `json:"facts_asserted"`
Retired int `json:"facts_retired"`
Rejected int `json:"claims_rejected"`
Retracted int `json:"claims_retracted"`
RefusedRole int `json:"claims_refused_by_role"`
Replayed bool `json:"replayed"`
}

GenerationResult records what committed, not the current number of surviving rows after erasure. It contains no statements or model diagnostics and is safe for operator progress output.

source

type GenerationPlan

type GenerationPlan struct {
Claims []domain.Claim
Rejected []domain.RejectedClaim
Job *GenerationJobGuard `json:"-"`
}

source

method FactStore.FindGeneration

func (s *FactStore) FindGeneration(ctx context.Context, schema Schema, scope, source, key, version string) (GenerationResult, bool, error)

source

func validGenerationRequest

func validGenerationRequest(scope, source, key, version string) error

source

func findGenerationTx

func findGenerationTx(ctx context.Context, tx pgx.Tx, schema Schema, scope, source, key, version string) (GenerationResult, bool, error)

source

method FactStore.ApplyGeneration

func (s *FactStore) ApplyGeneration(ctx context.Context, schema Schema, snapshot GenerationSnapshot, key, version, principal string, plan GenerationPlan) (GenerationResult, error)

ApplyGeneration is one source's atomic cutover. The caller has already spent the model budget; source/revision comparison, policy checks, retirement, new facts, provenance and audit all commit together. A failed cutover leaves the previously readable generation untouched.

source

func retireGenerationTx

func retireGenerationTx(ctx context.Context, tx pgx.Tx, schema Schema, scope, source string, out *GenerationResult) ([]string, error)

source

func recordGenerationFactTx

func recordGenerationFactTx(ctx context.Context, tx pgx.Tx, schema Schema, scope, source, generation, id, disposition string) error

source

func rejectGenerationTx

func rejectGenerationTx(ctx context.Context, tx pgx.Tx, schema Schema, scope, source, owner, version string, r domain.RejectedClaim) error

source