Repository navigation
fix: status lifecycle improvements and created/running result handling - #5
Merged
Merged
Conversation
Defines a checks-per-minute quota per organization (super admin only) that proportionally scales all check_job periods when exceeded. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Internal checks (checkworker, jobworker) were created with type "internal:checkworker" but internal=false, causing them to appear in the default user checks listing. Now they use the internal boolean flag properly and self-heal existing checks on startup. Also adds missing Internal field handling in UpdateCheck for both postgres and sqlite. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Restructure flat docs/ directory into themed subdirectories: - conventions/ for all project standards - testing/ for test infrastructure docs - slack/ for app manifests - research/ for tool evaluations - competitors/ for market analysis (renamed from other-services/) Add docs/CLAUDE.md giving Claude authority to maintain organization. Add docs/README.md as a full index of all documentation. Update cross-references in CLAUDE.md and specs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… "created" instead of "unknown" Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Major rewrites based on actual codebase analysis: - api-specification: replace fictional endpoints with all ~150 real routes - architecture: expand from 5 to 30 check types, 3 to 9 notification channels, update directory structure, remove "future" items now implemented - database-model: add 6 missing tables (check_groups, status_pages, maintenance_windows, etc.), fix auth_methods->organization_providers, add missing columns (2FA, relapse tracking, etc.) - checker-config: expand from 11 to all 30 checker types with accurate field names from source config.go files - frontend-urls: rewrite for TanStack Router with all 42 dash0 routes - CLAUDE.md: update API endpoint summary and error codes list Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Reorganize status integers to reflect the natural lifecycle: 1=created, 2=running, 3=up, 4=down, 5=timeout, 6=error Status 0 is intentionally unused to avoid confusion with the old "initial" value. CheckStatus values are also updated to align: 0=unknown, 3=up, 4=down, 7=degraded. Includes DB migration (002) for both SQLite and PostgreSQL to remap existing data, and replaces all hardcoded status integers with model constants. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New checks now start with CheckStatusCreated (1) instead of CheckStatusUnknown (0), matching the ResultStatusCreated lifecycle. Updates DB migration, status page handler, and frontend fallbacks to use "created" instead of "unknown". Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The backend always provides an explicit status (starting with "created"), so "unknown" should never appear. It remains as a safety net only. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ulations Created results represent initial check state before any execution — they should not count as downtime in the response time graph or availability badge. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Instead of blocking deletion, resolve active incidents first and emit a check.deleted event with active_incidents_count in the payload. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…utton - Skip both created and running results in availability/uptime calculations (consistent with aggregation logic treating them as lifecycle markers) - Treat created/running as neutral (green) in graph coloring - Add refresh button to badge preview page Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tests were using old hardcoded status integers (Up=1, Down=2) instead of the reordered values (Created=1, Running=2, Up=3, Down=4, Timeout=5, Error=6). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Merged
fclairamb
added a commit
that referenced
this pull request
Jun 23, 2026
🤖 I have created a release *beep* *boop* --- ## [0.1.0](v0.0.0...v0.1.0) (2026-06-22) ### Features * add check type registry, sample configs, notification senders, and observability integrations ([eea049e](eea049e)) * batch — Warning/Degraded statuses, SSL/Docker check upgrades, MCP OAuth 2.1, config-as-code ([#85](#85)) ([936d830](936d830)) * batch spec implementations (dashboard UI, jobs, notifications, SaaS, perf) ([#78](#78)) ([fe003e4](fe003e4)) * bulk feature integration (discovery, web push, badges, webhooks, and more) ([#73](#73)) ([a976856](a976856)) * custom user-agent, refresh checks, vite plugin switch, CI updates ([#1](#1)) ([cc00858](cc00858)) * documentation site served at /docs (co-located in web/docs) ([#88](#88)) ([27d9ccd](27d9ccd)) * email check frontend (spec 03) ([#30](#30)) ([aebd106](aebd106)) * email inbox foundation via JMAP (spec 01) ([#24](#24)) ([0f3b0c1](0f3b0c1)) * email passive checks (spec 02) ([#27](#27)) ([ba5536f](ba5536f)) * **entitlements:** trim to MaxSSOUsers + MaxChecksPerMinute + status page history fixes ([#50](#50)) ([a007de0](a007de0)) * **entitlements:** trim to MaxSSOUsers + MaxChecksPerMinute, enforce both ([#49](#49)) ([d25cc5f](d25cc5f)) * group incident correlation (spec 04 backend v1) ([#31](#31)) ([1883986](1883986)) * **observability:** instrument hot path + add bench harness ([#60](#60)) ([c6604cc](c6604cc)) * **oncall:** searchable timezone dropdown + sidebar logo polish ([#46](#46)) ([4396898](4396898)) * per-IP HTTP rate limiting and concurrency limiting ([#59](#59)) ([f9cc273](f9cc273)) * soften HTTP rate limits with bounded queues + request timeout ([#63](#63)) ([025501b](025501b)) * SolidPing — distributed uptime monitoring platform ([eef4383](eef4383)) * **statuspages:** drag-and-drop resource reordering + dash conventions ([#41](#41)) ([cf910d4](cf910d4)) ### Bug Fixes * **deps:** update dependency i18next to v26 ([#26](#26)) ([d5d1b7e](d5d1b7e)) * **deps:** update dependency lucide-react to v1 ([#28](#28)) ([cdc8e8c](cdc8e8c)) * **deps:** update dependency react-i18next to v17 ([#29](#29)) ([13135d8](13135d8)) * **deps:** update dependency recharts to v3.8.1 ([#14](#14)) ([5d95a3b](5d95a3b)) * **deps:** update go dependencies (non-major) ([#16](#16)) ([2450f13](2450f13)) * **deps:** update go dependencies (non-major) ([#19](#19)) ([f842310](f842310)) * **deps:** update go dependencies (non-major) ([#37](#37)) ([c020eca](c020eca)) * **deps:** update go dependencies (non-major) ([#44](#44)) ([ff0bcd0](ff0bcd0)) * **deps:** update go dependencies (non-major) ([#52](#52)) ([2e3bc28](2e3bc28)) * **deps:** update go dependencies (non-major) ([#69](#69)) ([a65ed4c](a65ed4c)) * **deps:** update go dependencies (non-major) ([#77](#77)) ([a0920ff](a0920ff)) * **deps:** update go dependencies (non-major) to v1.4.2 ([#86](#86)) ([1eb7504](1eb7504)) * **deps:** update module github.com/aws/aws-sdk-go-v2/config to v1.32.18 ([#72](#72)) ([6406537](6406537)) * **deps:** update module github.com/aws/aws-sdk-go-v2/service/s3 to v1.101.0 ([#39](#39)) ([f9c9563](f9c9563)) * **deps:** update module github.com/go-webauthn/webauthn to v0.17.3 ([#45](#45)) ([593931a](593931a)) * **deps:** update module github.com/go-webauthn/webauthn to v0.17.4 ([#70](#70)) ([fca1c97](fca1c97)) * **deps:** update module github.com/ibm/sarama to v1.48.1 ([#47](#47)) ([93ccf3a](93ccf3a)) * **deps:** update module github.com/ibm/sarama to v1.48.2 ([#54](#54)) ([e84d868](e84d868)) * **deps:** update module github.com/ibm/sarama to v1.49.0 ([#64](#64)) ([fd61bd7](fd61bd7)) * **deps:** update module github.com/oapi-codegen/runtime to v1.4.1 ([#65](#65)) ([a3a3e9f](a3a3e9f)) * **deps:** update module github.com/prometheus/common to v0.67.5 ([#61](#61)) ([095dd6f](095dd6f)) * **deps:** update module github.com/slack-go/slack to v0.24.0 ([#75](#75)) ([6e86d5b](6e86d5b)) * **deps:** update module golang.org/x/sys to v0.44.0 ([#42](#42)) ([a245730](a245730)) * **deps:** update module golang.org/x/sys to v0.45.0 ([#67](#67)) ([49c3d90](49c3d90)) * **deps:** update module golang.org/x/term to v0.43.0 ([#43](#43)) ([4a934f1](4a934f1)) * **deps:** update module google.golang.org/grpc to v1.81.0 ([#36](#36)) ([1be183a](1be183a)) * **deps:** update module google.golang.org/grpc to v1.81.1 ([#55](#55)) ([6bfac2d](6bfac2d)) * status lifecycle improvements and created/running result handling ([#5](#5)) ([fc64c7d](fc64c7d)) * **status0:** white page header and de-duplicated footer ([#48](#48)) ([77506a7](77506a7)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
This was referenced Sep 8, 2026
Closed
Closed
fclairamb
added a commit
that referenced
this pull request
Sep 14, 2026
Three bumps close every open Dependabot alert on the repo. - kin-openapi 0.142.0 -> 0.144.0 (alerts #6 critical, #7 medium): ValidationHandler.Load() fail-open auth bypass via the default NoopAuthenticationFunc, and an unauthenticated nil-pointer panic in openapi3filter when validating a `content` parameter whose media type carries no schema. Indirect, pulled by oapi-codegen. - goxmldsig 1.4.0 -> 1.6.0 (alert #1 high): loop-variable capture in validateSignature let a crafted document bypass signature validation. Indirect, pulled by crewjam/saml. - github.com/docker/docker -> github.com/moby/moby/{client,api} (alerts #2, #3, #4, #5): docker/docker stopped publishing Go modules at v28.5.2 — Docker 29 split the Go client into github.com/moby/moby/client and the API types into github.com/moby/moby/api. There is no patched v28, so the only way off the vulnerable module is the migration. The moby migration is mechanical but not a pure import rewrite, because the split client reshaped its call signatures: - every call takes an options struct and returns a result struct (ContainerInspect/List/Start/Remove/Logs, CopyTo/FromContainer, ImagePull, Ping); - InspectResponse is flat — the ContainerJSONBase embedding is gone; - Summary.State is container.ContainerState and Health.Status is container.HealthStatus, both typed strings now; - container.Port is container.PortSummary; - port sets/maps moved to the network package with a real Port type (network.MustParsePort) and netip.Addr host IPs, replacing docker/go-connections/nat — which drops to indirect; - EndpointSettings.Gateway is a netip.Addr, not a string. Behaviour is unchanged for the docker check and container discovery. The one compatibility note: the split client's floor is Docker API 1.40 (Docker 19.03, 2019), up from 1.24. API-version negotiation still runs, so Podman and older-but-supported daemons are unaffected. go mod tidy also promotes chromedp/cdproto to a direct requirement — it is directly imported by internal/checkers/checkbrowser and was mislabeled indirect. Verified: make lint-back, go vet ./... , go vet -tags slowtests ./... , and the full `make test` suite all green; oapi-codegen still builds against kin-openapi 0.144.0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
fclairamb
added a commit
that referenced
this pull request
Sep 14, 2026
Three bumps close every open Dependabot alert on the repo. - kin-openapi 0.142.0 -> 0.144.0 (alerts #6 critical, #7 medium): ValidationHandler.Load() fail-open auth bypass via the default NoopAuthenticationFunc, and an unauthenticated nil-pointer panic in openapi3filter when validating a `content` parameter whose media type carries no schema. Indirect, pulled by oapi-codegen. - goxmldsig 1.4.0 -> 1.6.0 (alert #1 high): loop-variable capture in validateSignature let a crafted document bypass signature validation. Indirect, pulled by crewjam/saml. - github.com/docker/docker -> github.com/moby/moby/{client,api} (alerts #2, #3, #4, #5): docker/docker stopped publishing Go modules at v28.5.2 — Docker 29 split the Go client into github.com/moby/moby/client and the API types into github.com/moby/moby/api. There is no patched v28, so the only way off the vulnerable module is the migration. The moby migration is mechanical but not a pure import rewrite, because the split client reshaped its call signatures: - every call takes an options struct and returns a result struct (ContainerInspect/List/Start/Remove/Logs, CopyTo/FromContainer, ImagePull, Ping); - InspectResponse is flat — the ContainerJSONBase embedding is gone; - Summary.State is container.ContainerState and Health.Status is container.HealthStatus, both typed strings now; - container.Port is container.PortSummary; - port sets/maps moved to the network package with a real Port type (network.MustParsePort) and netip.Addr host IPs, replacing docker/go-connections/nat — which drops to indirect; - EndpointSettings.Gateway is a netip.Addr, not a string. Behaviour is unchanged for the docker check and container discovery. The one compatibility note: the split client's floor is Docker API 1.40 (Docker 19.03, 2019), up from 1.24. API-version negotiation still runs, so Podman and older-but-supported daemons are unaffected. go mod tidy also promotes chromedp/cdproto to a direct requirement — it is directly imported by internal/checkers/checkbrowser and was mislabeled indirect. Verified: make lint-back, go vet ./... , go vet -tags slowtests ./... , and the full `make test` suite all green; oapi-codegen still builds against kin-openapi 0.144.0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ResultStatusCreatedso initial check results display as "created" instead of "unknown"internal=truemake devtarget for non-test development modeTest plan
make testmake lint-dash🤖 Generated with Claude Code