Hourly, externally observed and sanitized status history for the Belacca platform.
The scheduled GitHub Actions runner checks public portfolio, Pong, and
analytics endpoints from outside the native cluster that hosts the platform. It
checks the catalogued analytics SLI (/status plus a fixed harmless same-origin
/count collector probe), /count.js as a supporting diagnostic, and every
supported portfolio alias over representative paths while preserving the path
in the expected canonical Location. It commits a public status.json
artifact and a bounded, sanitized observation record under history/ every
hour. It also publishes slo.json, a sanitized
30-day SLO and error-budget artifact generated from that history. See
POLICY.md for the publication and failure-domain boundary.
Each supported public application has an internal 99% availability objective;
this is not an SLA and carries no service credit. slo.json reports the current
measured level as good observations / (good + bad observations) using the
observations already available. It switches to the latest rolling 30-day slot
window once the history spans 30 days. Missing or malformed slots remain visible
as coverage context and never count as good. A controlled-drill recovery
objective under six minutes is separate policy context and is excluded from
availability arithmetic.
Authenticated dashboard and Flux checks are optional diagnostics. They use only
short-lived, operator-managed bearer credentials supplied as GitHub Actions
secrets (DASHBOARD_PROBE_BEARER_TOKEN and FLUX_PROBE_BEARER_TOKEN); values
are never written to Git, passed to the Pong child process, or included in
history. The probe makes no request when its credential is absent and records
configuration_unknown. The current Dex/Google deployment does not provide a
verified least-privilege synthetic identity, so operators must not populate
these secrets until one is approved and the endpoint accepts this probe safely.
The repository is intentionally not a Kubernetes status API or paging system.
The website reads only the public status.json artifact from GitHub and falls
back to a freshness-safe unknown state if the artifact is missing, malformed, or
expired. Published uptime is calculated from good and bad critical observations
in the recent 24-hour window; short history is labeled available history / 24h
with its observation count. slo.json is durable reliability evidence, not a
public uptime claim; its current measured levels are published immediately from
observed evidence, while coverage and measurement window are shown alongside
them.
The first reviewed commit is also used as the platform submodule pointer for
local workspace review.
npm test
npm run check
node scripts/slo-evidence.mjs --history-dir history --output slo.json
node scripts/validate-slo.mjs slo.jsonThe full Pong journey requires the sibling repository and its npm dependency:
npm --prefix ../cloudnativepong ci --ignore-scripts
node scripts/monitor.mjs \
--pong-script ../cloudnativepong/scripts/synthetic-check.mjsThe workflow can receive these out-of-band secrets without changing public artifacts:
DASHBOARD_PROBE_BEARER_TOKENforhttps://dashboard.belacca.com/FLUX_PROBE_BEARER_TOKENforhttps://flux.belacca.com/
A supplied URL override must be HTTPS with no query, fragment, username, or
password. A successful HTML response that is not an OAuth sign-in page is
passed; a response mismatch is target_failure; a transport or monitor
exception is monitor_failure; and absent/invalid configuration is
configuration_unknown. Only target and monitor failures make the monitor
command unsuccessful. This distinction prevents missing production-only
identity setup from being mislabeled as a native target outage.
Before enabling either secret, an operator must create and approve a dedicated least-privilege synthetic identity, document rotation/revocation, and verify that the identity provider supports this bearer probe safely. That production step cannot be performed or claimed from this repository.