Repository navigation
Add the evidence vocabulary and read-outcome classifier (#409 S1) #490
Copy link
Copy link
Closed
Labels
area: k8sKubernetes clients, resources, operations, and cluster behaviorKubernetes clients, resources, operations, and cluster behaviorconcern: architectureModule boundaries, dependency direction, and system structureModule boundaries, dependency direction, and system structureconcern: reliabilityGraceful degradation, lifecycle safety, and operational correctnessGraceful degradation, lifecycle safety, and operational correctnessenhancementNew feature or requestNew feature or requeststatus: acceptedConfirmed bug or accepted change; a pull request may follow once the issue is assignedConfirmed bug or accepted change; a pull request may follow once the issue is assigned
Milestone
Description
Part of #409: slice S1 of the capability-aware diagnostics design (#485).
Scope
korvid.core.capability:EvidenceState,Basis, and the bases each state allows;- sources:
ApiSource,DiscoverySource,ProviderSourceandSourceScope; Role,FreshnessPolicyand declarations;Observationand theRunTokenit carries;conclusive;EvidenceSetwithbaselineandby_scope.
ReadRequestandclassify, with boundedStatusparsing.KubeClientErrorcategories (timeout,transport,malformed,too_large). Each raise site on the shared request path sets its category.- A table test that pins how Pulse's coverage states map onto the vocabulary.
Acceptance criteria
- Each state accepts only its own bases.
-
conclusiveis false forNO_DATA, for stale observations and for retention-limited sources. -
baselineis order-independent, and optional sources never lower it. - The classifier implements the design's table for LIST, GET and discovery, including:
- a 404 with and without a matching
NotFound; - a 405 classified as stale discovery;
- a 406 or 410 both inside and outside its context;
- a failure after an accepted page classified as
PARTIAL.
- a 404 with and without a matching
- Classification never parses error messages, and an error body over 16 KiB is not parsed.
- Nothing in
coreimports Textual or an optional extra, andtach checkpasses.
Out of scope: the discovery snapshot and resolution (S2), reads (S3) and run generations (S4).
Metadata
Metadata
Assignees
Labels
area: k8sKubernetes clients, resources, operations, and cluster behaviorKubernetes clients, resources, operations, and cluster behaviorconcern: architectureModule boundaries, dependency direction, and system structureModule boundaries, dependency direction, and system structureconcern: reliabilityGraceful degradation, lifecycle safety, and operational correctnessGraceful degradation, lifecycle safety, and operational correctnessenhancementNew feature or requestNew feature or requeststatus: acceptedConfirmed bug or accepted change; a pull request may follow once the issue is assignedConfirmed bug or accepted change; a pull request may follow once the issue is assigned
Activity
core: refuse non-integer item counts and tighten three pins
core: never conclude from a recreated object or a future timestamp
core: require the observed UID when an expected incarnation is known
core: treat a wrongly typed Status field as unreadable
test: pin a provider query's own scope and Pulse's full read context
core: scope a provider-wide query to its own provider
test: refuse the stale downgrade for every non-available state
core: refuse an empty resolved version; pin continuation bases
Add the evidence vocabulary and read-outcome classifier (#409 S1) (#492)