coverage

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Aug 4, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TypeScannerCapacity    = "ScannerCapacity"
	TypeScannerHeartbeat   = "ScannerHeartbeat"
	TypeGroupObservation   = "GroupObservation"
	TypeCoveragePlan       = "CoveragePlan"
	TypeCoverageAssignment = "CoverageAssignment"
	TypeRangeClaim         = "RangeClaim"
	TypeTimeWindowClaim    = "TimeWindowClaim"
	TypeCoverageCheckpoint = "CoverageCheckpoint"
	TypeRangeComplete      = "RangeComplete"
	TypeRangeFailed        = "RangeFailed"

	ScannerCapacityBodySchema    = "gonzbnet.ScannerCapacity/1.0"
	ScannerHeartbeatBodySchema   = "gonzbnet.ScannerHeartbeat/1.0"
	GroupObservationBodySchema   = "gonzbnet.GroupObservation/1.0"
	CoveragePlanBodySchema       = "gonzbnet.CoveragePlan/1.0"
	CoverageAssignmentBodySchema = "gonzbnet.CoverageAssignment/1.0"
	RangeClaimBodySchema         = "gonzbnet.RangeClaim/1.0"
	TimeWindowClaimBodySchema    = "gonzbnet.TimeWindowClaim/1.0"
	CoverageCheckpointBodySchema = "gonzbnet.CoverageCheckpoint/1.0"
	RangeCompleteBodySchema      = "gonzbnet.RangeComplete/1.0"
	RangeFailedBodySchema        = "gonzbnet.RangeFailed/1.0"
)

Variables

This section is empty.

Functions

func BodySchema

func BodySchema(eventType string) string

func EventTypes

func EventTypes() []string

func HashBody

func HashBody(body any) (string, error)

func Validate

func Validate(eventType string, body any, now time.Time, futureTolerance time.Duration) error

Types

type CoverageAssignment

type CoverageAssignment struct {
	SchemaVersion  string `json:"schema_version"`
	Type           string `json:"type"`
	AssignmentID   string `json:"assignment_id"`
	PlanID         string `json:"-"`
	PoolID         string `json:"pool_id"`
	Group          string `json:"group"`
	Mode           string `json:"mode"`
	Role           string `json:"role"`
	AssignedNodeID string `json:"assigned_node_id"`
	ProviderScope  string `json:"provider_scope_hash,omitempty"`
	RangeStart     int64  `json:"range_start,omitempty"`
	RangeEnd       int64  `json:"range_end,omitempty"`
	WindowStart    string `json:"window_start,omitempty"`
	WindowEnd      string `json:"window_end,omitempty"`
	Priority       int    `json:"priority"`
	DueAt          string `json:"-"`
	ExpiresAt      string `json:"expires_at"`
	CreatedAt      string `json:"created_at"`
}

type CoverageCheckpoint

type CoverageCheckpoint struct {
	SchemaVersion       string `json:"schema_version"`
	Type                string `json:"type"`
	CheckpointID        string `json:"checkpoint_id"`
	PoolID              string `json:"pool_id"`
	NodeID              string `json:"node_id"`
	Group               string `json:"group"`
	ProviderScope       string `json:"provider_scope_hash,omitempty"`
	ClaimID             string `json:"claim_id"`
	RangeStart          int64  `json:"range_start"`
	RangeCurrent        int64  `json:"range_current"`
	RangeEnd            int64  `json:"range_end"`
	WindowStart         string `json:"window_start,omitempty"`
	WindowEnd           string `json:"window_end,omitempty"`
	ReleaseCardsEmitted int    `json:"release_cards_emitted"`
	ManifestsEmitted    int    `json:"manifests_emitted"`
	Errors              int    `json:"errors"`
	CheckedAt           string `json:"checked_at"`
	LowWatermark        int64  `json:"-"`
	HighWatermark       int64  `json:"-"`
	CreatedAt           string `json:"-"`
}

type CoveragePlan

type CoveragePlan struct {
	SchemaVersion        string                   `json:"schema_version"`
	Type                 string                   `json:"type"`
	PlanID               string                   `json:"plan_id"`
	PoolID               string                   `json:"pool_id"`
	Version              int                      `json:"version"`
	CreatedAt            string                   `json:"created_at"`
	CreatedByNodeID      string                   `json:"created_by_node_id"`
	RequiresPoolApproval bool                     `json:"requires_pool_approval"`
	Policy               CoveragePlanPolicy       `json:"policy"`
	Assignments          []CoveragePlanAssignment `json:"assignments"`
	Group                string                   `json:"-"`
	RangeStart           int64                    `json:"-"`
	RangeEnd             int64                    `json:"-"`
	WindowStart          string                   `json:"-"`
	WindowEnd            string                   `json:"-"`
	Priority             int                      `json:"-"`
}

type CoveragePlanAssignment

type CoveragePlanAssignment struct {
	AssignmentID         string   `json:"assignment_id"`
	Group                string   `json:"group"`
	Mode                 string   `json:"mode"`
	PrimaryNodes         []string `json:"primary_nodes"`
	ValidatorNodes       []string `json:"validator_nodes"`
	ManifestBuilderNodes []string `json:"manifest_builder_nodes"`
	Priority             int      `json:"priority"`
	MinRedundancy        int      `json:"min_redundancy"`
}

type CoveragePlanPolicy

type CoveragePlanPolicy struct {
	DefaultClaimTTLMinutes  int     `json:"default_claim_ttl_minutes"`
	MinValidatorOverlapPct  int     `json:"min_validator_overlap_percent"`
	TrustedClaimMinScore    float64 `json:"trusted_claim_min_score"`
	AllowUnassignedScanning bool    `json:"allow_unassigned_scanning"`
}

type GroupObservation

type GroupObservation struct {
	SchemaVersion        string  `json:"schema_version"`
	Type                 string  `json:"type"`
	ObservationID        string  `json:"observation_id"`
	NodeID               string  `json:"node_id"`
	PoolID               string  `json:"pool_id"`
	Group                string  `json:"group"`
	ProviderScope        string  `json:"provider_scope_hash,omitempty"`
	ObservedAt           string  `json:"observed_at"`
	LowWatermark         int64   `json:"low_water"`
	HighWatermark        int64   `json:"high_water"`
	EstimatedCount       int64   `json:"estimated_count"`
	PostsPerHourEstimate float64 `json:"posts_per_hour_estimate"`
	ScanSupported        bool    `json:"scan_supported"`
	RetentionDays        int     `json:"retention_days_observed"`
	Confidence           float64 `json:"confidence,omitempty"`
}

type RangeClaim

type RangeClaim struct {
	SchemaVersion                     string `json:"schema_version"`
	Type                              string `json:"type"`
	ClaimID                           string `json:"claim_id"`
	AssignmentID                      string `json:"assignment_id"`
	PoolID                            string `json:"pool_id"`
	Group                             string `json:"group"`
	NodeID                            string `json:"claimant_node_id"`
	ProviderScope                     string `json:"provider_scope_hash,omitempty"`
	RangeStart                        int64  `json:"range_start"`
	RangeEnd                          int64  `json:"range_end"`
	ClaimedAt                         string `json:"claimed_at"`
	ExpiresAt                         string `json:"expires_at"`
	ClaimMode                         string `json:"claim_mode"`
	ExpectedCheckpointIntervalSeconds int    `json:"expected_checkpoint_interval_seconds"`
}

type RangeComplete

type RangeComplete struct {
	SchemaVersion          string `json:"schema_version"`
	Type                   string `json:"type"`
	OutcomeID              string `json:"completion_id"`
	ClaimID                string `json:"claim_id"`
	AssignmentID           string `json:"-"`
	PoolID                 string `json:"pool_id"`
	Group                  string `json:"group"`
	NodeID                 string `json:"node_id"`
	ProviderScope          string `json:"provider_scope_hash,omitempty"`
	RangeStart             int64  `json:"range_start"`
	RangeEnd               int64  `json:"range_end"`
	ArticlesSeen           int64  `json:"articles_seen"`
	HeadersProcessed       int64  `json:"headers_processed"`
	ReleaseCount           int    `json:"release_cards_emitted"`
	ManifestsEmitted       int    `json:"manifests_emitted"`
	DedupCandidatesSkipped int    `json:"dedup_candidates_skipped"`
	ErrorCount             int    `json:"error_count"`
	RangeFingerprint       string `json:"range_fingerprint,omitempty"`
	CompletedAt            string `json:"completed_at"`
}

type RangeFailed

type RangeFailed struct {
	SchemaVersion string `json:"schema_version"`
	Type          string `json:"type"`
	OutcomeID     string `json:"failure_id"`
	ClaimID       string `json:"claim_id"`
	AssignmentID  string `json:"-"`
	PoolID        string `json:"pool_id"`
	Group         string `json:"group"`
	NodeID        string `json:"node_id"`
	ProviderScope string `json:"provider_scope_hash,omitempty"`
	RangeStart    int64  `json:"range_start"`
	RangeEnd      int64  `json:"range_end"`
	Reason        string `json:"reason_code"`
	Retryable     bool   `json:"retryable"`
	FailedAt      string `json:"failed_at"`
}

type ScannerCapacity

type ScannerCapacity struct {
	SchemaVersion            string   `json:"schema_version"`
	Type                     string   `json:"type"`
	NodeID                   string   `json:"node_id"`
	PoolID                   string   `json:"pool_id"`
	CreatedAt                string   `json:"created_at"`
	MaxGroups                int      `json:"max_groups"`
	MaxArticlesPerHour       int64    `json:"max_articles_per_hour"`
	MaxHeaderBytesPerHour    int64    `json:"max_header_bytes_per_hour,omitempty"`
	PreferredGroupPatterns   []string `json:"preferred_group_patterns,omitempty"`
	ExcludedGroupPatterns    []string `json:"excluded_group_patterns,omitempty"`
	SupportsArticleRangeScan bool     `json:"supports_article_range_scan"`
	SupportsTimeWindowScan   bool     `json:"supports_time_window_scan"`
	RetentionDaysObserved    int      `json:"retention_days_observed"`
	ProviderScope            string   `json:"provider_scope_hash,omitempty"`
	PublishedAt              string   `json:"-"`
	Groups                   []string `json:"-"`
	MaxRangesPerHour         int      `json:"-"`
	MaxBytesPerHour          int64    `json:"-"`
}

type ScannerHeartbeat

type ScannerHeartbeat struct {
	SchemaVersion            string   `json:"schema_version"`
	Type                     string   `json:"type"`
	NodeID                   string   `json:"node_id"`
	PoolID                   string   `json:"pool_id"`
	CreatedAt                string   `json:"created_at"`
	ActiveClaims             []string `json:"active_claims"`
	QueueDepth               int      `json:"queue_depth"`
	CurrentArticlesPerMinute int64    `json:"current_articles_per_minute"`
	Status                   string   `json:"status"`
	PublishedAt              string   `json:"-"`
	Groups                   []string `json:"-"`
}

type SchedulerAssignment

type SchedulerAssignment struct {
	WorkID string
	NodeID string
	Score  float64
}

func RendezvousAssignments

func RendezvousAssignments(work []SchedulerWorkItem, nodes []SchedulerNode) []SchedulerAssignment

type SchedulerNode

type SchedulerNode struct {
	NodeID string
	Weight float64
}

type SchedulerWorkItem

type SchedulerWorkItem struct {
	WorkID   string
	Priority int
	SeenBy   []string
}

type TimeWindowClaim

type TimeWindowClaim struct {
	SchemaVersion string `json:"schema_version"`
	Type          string `json:"type"`
	ClaimID       string `json:"claim_id"`
	AssignmentID  string `json:"assignment_id"`
	PoolID        string `json:"pool_id"`
	Group         string `json:"group"`
	NodeID        string `json:"claimant_node_id"`
	ProviderScope string `json:"provider_scope_hash,omitempty"`
	WindowStart   string `json:"window_start"`
	WindowEnd     string `json:"window_end"`
	ClaimedAt     string `json:"claimed_at"`
	ExpiresAt     string `json:"expires_at"`
	ClaimMode     string `json:"claim_mode"`
}

Jump to

Keyboard shortcuts

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