Repository navigation
build(contracts): regenerate for the wal_checkpoint_pinned finding - #4177
Conversation
#4164 added DoctorStorageFindingKindV1::WalCheckpointPinned without regenerating the dashboard contracts, the TypeScript SDK operations, or the ChatGPT extension bundle, so contracts:check fails on master.
|
| }; | ||
|
|
||
| export type DoctorStorageFindingKindV1 = "over_budget_store" | "orphan_store" | "incident_debris_present" | "retention_backlog" | "table_growth" | "pending_schema_migration"; | ||
| export type DoctorStorageFindingKindV1 = "over_budget_store" | "orphan_store" | "incident_debris_present" | "retention_backlog" | "table_growth" | "pending_schema_migration" | "wal_checkpoint_pinned"; |
There was a problem hiding this comment.
🟡 WAL checkpoint producer disappears from coverage
When Doctor reports wal_checkpoint_pinned, its producer never appears in storage coverage. STORAGE_KINDS still lists six kinds, so producer counts exclude the WAL checkpoint diagnosis.
Learn more
The dashboard's storage findings payload contains both report entries and a per-kind producer status list. with_storage_kind_statuses builds that list from STORAGE_KINDS, which has only the previous six kinds. The new kind reaches the entries, but never gets a source coverage status. StorageSourceStatuses cannot show its producer, and findingsSummary derives its producer count and denominator from that list.
Example: Doctor reports one degraded wal_checkpoint_pinned entry. Its card appears, but the storage producer list still has six rows and no WAL checkpoint row.
Recommended fix: Add WalCheckpointPinned to STORAGE_KINDS and extend the route tests to assert that this new kind appears with the correct source state and observed entry count.
Was this helpful? React with 👍 or 👎 to provide feedback.
| observability read models. The set is closed and grows only through a future | ||
| versioned enum, never by widening an existing subclass. */ | ||
| export const DoctorStorageFindingKindV1Schema: z.ZodUnion<[z.ZodLiteral<"over_budget_store">, z.ZodLiteral<"orphan_store">, z.ZodLiteral<"incident_debris_present">, z.ZodLiteral<"retention_backlog">, z.ZodLiteral<"table_growth">, z.ZodLiteral<"pending_schema_migration">]> = z.union([z.literal("over_budget_store"), z.literal("orphan_store"), z.literal("incident_debris_present"), z.literal("retention_backlog"), z.literal("table_growth"), z.literal("pending_schema_migration")]); | ||
| export const DoctorStorageFindingKindV1Schema: z.ZodUnion<[z.ZodLiteral<"over_budget_store">, z.ZodLiteral<"orphan_store">, z.ZodLiteral<"incident_debris_present">, z.ZodLiteral<"retention_backlog">, z.ZodLiteral<"table_growth">, z.ZodLiteral<"pending_schema_migration">, z.ZodLiteral<"wal_checkpoint_pinned">]> = z.union([z.literal("over_budget_store"), z.literal("orphan_store"), z.literal("incident_debris_present"), z.literal("retention_backlog"), z.literal("table_growth"), z.literal("pending_schema_migration"), z.literal("wal_checkpoint_pinned")]); |
There was a problem hiding this comment.
🟡 WAL checkpoint findings display as unsupported
When wal_checkpoint_pinned reaches the dashboard, storageFindingLabel returns “Unsupported storage finding.” The label map omits this valid kind, hiding its diagnosis across storage and evidence views.
Learn more
The Doctor report uses a typed storage kind for each storage finding. The new variant now passes the dashboard decoder, but storageFindingLabel has no label for it and returns its unsupported fallback. StorageFindingCard and the exact evidence views reuse that label, so a real diagnosis appears unsupported to readers.
Example: A report entry with storage_kind: 'wal_checkpoint_pinned' renders a degraded finding titled “Unsupported storage finding,” rather than “WAL checkpoint pinned.”
Recommended fix: Add a wal_checkpoint_pinned label to FINDING_LABELS and cover the new value in the storage presentation tests.
Was this helpful? React with 👍 or 👎 to provide feedback.
#4164 added
DoctorStorageFindingKindV1::WalCheckpointPinnedwithout regenerating the generated contract outputs, socontracts:checkfails on master and every PR that touches the dashboard inherits it. This commits the regenerated dashboard contracts, SDK operations, and ChatGPT extension bundle. Generated files only.Test plan
pnpm --dir dashboard run contracts:checknode plugin/chatgpt-extension/scripts/build.mjs --check