# public status guide

[public status](https://adafruit.ai/status) starts with a short welcome and a plain-language answer. open “daily check details” or “communications details” when you want the evidence. the page works without javascript.

the overview combines two kinds of evidence: a dated caretaker record and a fresh, limited communications report. “all good in the reported checks” appears only when the daily record is current and operational and the communications report is operational with no public incidents. a public notice, pending work, or a missing result stays visible. this does not determine whether a visitor or an account owner has a private action to take.

last reviewed: 2026-10-15. this date describes the guide, not service health.

## the daily caretaker record

[care.json](https://adafruit.ai/care.json) is a frozen daily summary of communications, discoveries, and the caretaker. it comes from recorded checks and work, not generated commentary. it contains no private content, account names, activity counts, exact private timestamps, technical identifiers, or repair controls.

| field | meaning |
| --- | --- |
| `schemaVersion` | `1` for this contract. |
| `date` | the actual evidence day in America/New_York; `null` if no record is available. |
| `cadence` | `daily`. |
| `state` | `operational`, `attention`, `pending`, or `unknown`, derived from the component observations. |
| `services` | three entries, in order: `communications`, `discoveries`, `caretaker`. |
| `repairs` | `none_recorded`, `attempted`, or `unknown`; an attempt is not proof of success. |

each service has an `id`, an `availability` observation (`operational`, `attention`, or `unknown`), and a `work` result (`checked`, `updated`, `pending`, `attention`, or `unknown`). “operational” means the selected checks passed when recorded. it does not promise current availability or prove every private workflow or a full security audit.

the daily publication is scheduled alongside the 9:30 a.m. eastern report. yesterday's record may remain current before 10 a.m. eastern, allowing time for the daily pass. after that, an old record becomes `unknown` and `/care.json` returns `503`; its date remains visible. future-dated records are also rejected. the public reader never starts private checks or repairs. older saved summaries are validated before projecting the three current groups; retirement does not create a new check or change the saved date.

## the communications report

[status.json](https://adafruit.ai/status.json) preserves the existing communications contract. it is separate from the daily record, and reports selected receiving, sending, and application conditions. private backup, storage, filtering, and alert details remain private.

| state | meaning |
| --- | --- |
| `operational` | no active incident is recorded in this public projection. |
| `shields_up` | protective controls are active; some operations may be limited. |
| `attention` | a public-facing communications condition needs attention. |
| `unavailable` | the latest public report could not be retrieved. |

none of these states independently verifies delivery, receipt, sender authentication, external provider health, or whether every private check is clear.

this object has `state`, `updated_at` (the report's UTC timestamp), and `incidents`. each incident has `code`, `severity` (`notice`, `warning`, or `critical`), `summary`, `started_at` (UTC timestamp or `null`), and `automatic_action` (public text or `null`). an empty incident list alone does not establish health.

## reading the endpoints

use `GET` to read these public views, or `HEAD` for headers. no credentials are needed; other methods return `405`.

`/care.json` returns `200` for a current daily record, or `503` with `Retry-After: 30` when daily evidence is missing, invalid, or stale. `/status` and `/status.json` use the communications source for their response code: a retrieved communications report returns `200`, and an unavailable source returns a generic `503` with `Retry-After: 30`. the HTML page can therefore return `200` while showing overdue, pending, or unknown daily results. a successful retrieval does not itself prove health.

both status responses use `Cache-Control: no-store, no-transform`. reload the page to request a new view; it does not poll automatically. source calls may briefly share a cached result. automated readers should leave at least 30 seconds between requests and honor `Retry-After` with further backoff after repeated failures.

use a descriptive user-agent that truthfully identifies your software. edge protection may deny access before a request reaches the Worker. a `403` is an access denial, not a health report; do not retry it in a loop.

## public work, easy to find

[puppetshow](https://adafruit.ai/puppetshow) is open to everyone. the [circuit playground library](https://adafruit.ai/puppetshow/playground) has films, captions, readable transcripts, and MP4 downloads. [series data](https://adafruit.ai/puppetshow/playground/series.json) gives software the same resource links.

the caretaker checks video delivery, selected media bytes, adaptive playlists and cache responses, as well as the public resource indexes. these are bounded checks, not a daily viewing of every film. the public summary stays small; detailed evidence and repair controls stay private.

## ground truth and permissions

[system.json](https://adafruit.ai/system.json) declares the reviewed purpose, current capabilities, proposed ideas, and public routes. [llms.txt](https://adafruit.ai/llms.txt), [robots.txt](https://adafruit.ai/robots.txt), and the [sitemap](https://adafruit.ai/sitemap.xml) are generated from that same declaration and checked daily. `/llm.txt` redirects to `/llms.txt`.

these documents describe the system. they grant no private access or permission to act. wider participation remains a proposed part of the project.

[home](https://adafruit.ai/) · [about](https://adafruit.ai/about) · [security](https://adafruit.ai/security) · [public resource index](https://adafruit.ai/llms.txt)
