Runtime
Black-Box Incident Reconstruction and Reliability Plan for the InternationalIntelligence.org Daily Brief
Report summary
OBSERVED — On the public snapshot inspected on August 1, 2026, the Daily Brief was not current: the server date was August 1, the latest published edition was July 30, five dates were reported missing, and the current process targeted August 1. The public status representation identified one active
Key topics
- Runtime
- Semantic Systems
- Research Archive
- Architecture
- Governance
- Black-Box
- Incident
- Reconstruction
Research provenance
For citation, use the report title and canonical URL. Archival presence does not establish authorship or promote report statements into portfolio evidence.
Source availability: 30 citation markers in the source export have no recoverable source links. Those markers are omitted from this reader; any supplied bibliography and ordinary links remain. Check the original sources before relying on the cited claims.
This page renders the archived Markdown as safe, formatted HTML. It is background research and does not become a portfolio claim without evidence review.
Full report
On this page
Executive finding, evidence boundaries, and likely failure families
OBSERVED — On the public snapshot inspected on August 1, 2026, the Daily Brief was not current: the server date was August 1, the latest published edition was July 30, five dates were reported missing, and the current process targeted August 1. The public status representation identified one active process, dbp_20260801_c9fb48f6d62f8513, at revision 34, in workflow step 2/8, with provider status queued, four automatic attempts out of four, and no August 1 edition URL.
OBSERVED — The same public status said that a provider operation was durably recorded: background_response.present, stored, and response_id_recorded were all true. It also said that the same response should be polled rather than duplicated. This materially reduces the likelihood that the immediate incident is simply an invalid provider credential, an unsupported model, or inability to create background work.
OBSERVED — The exposed state contained several liveness and projection anomalies:
| Classification | Publicly exposed evidence | Incident significance |
|---|---|---|
| OBSERVED | next_check_at and next_retry_at were August 1 at 16:33:31 Central, while the status representation also exposed a later server time of 21:36:37 UTC, equivalent to 16:36:37 Central. | The next eligible reconciliation time appeared to have passed without a visible state advance. |
| OBSERVED | The timeline’s last event was provider-poll-observed, but poll_count remained 0. | Either the event name does not mean a completed provider retrieval, the counter was not updated atomically, or the public projection mixed fields from different snapshots. |
| OBSERVED | The top-level generated_at remained 19:33:54 UTC while a nested server_time was 21:36:37 UTC. | The public status was not a single self-evidently contemporaneous snapshot; some fields may have been generated at different times or served from retained artifacts. |
| OBSERVED | All Daily Brief cron telemetry fields were null. | Public evidence did not prove that cron had started, completed, checked status, or failed. Null values may mean “never ran,” “not instrumented,” “not persisted,” or “not projected.” |
| OBSERVED | An earlier research pass returned 120 provider evidence records, but retained zero candidates, bound zero exact sources, rejected all 14 candidate items, and recorded 42 validation issues. | A second failure family exists downstream of provider connectivity: evidence binding and qualification are not producing a composable docket. |
| OBSERVED | compose_attempts was 0. | The sampled process had not reached bilingual composition; publication-write failure was therefore not the immediate blocker in that snapshot. |
INFERRED — The highest-probability immediate failure family is a reconciliation-liveness failure after provider work has been reserved. Plausible variants are: the scheduler or server-owned supervisor is not running; it runs in a different runtime or filesystem view; it runs but refuses to acquire or renew a lease; it retrieves the provider state without committing the resulting transition; or the public status projection is stale and conceals real progress.
INFERRED — The second-highest-probability failure family is an evidence-contract mismatch. The system has demonstrated that it can receive substantial provider evidence, yet its binder and validators retained none of the candidate set. That pattern is more consistent with mismatched identifiers, source-normalization rules, freshness boundaries, corroboration rules, schema/version drift, or evidence loss between passes than with a complete absence of provider output.
INFERRED — A third important family is multiple process views: cron and web PHP may load different configurations, releases, document roots, state paths, users, timezones, or mounted filesystems. PHP-FPM pools can run with different users, environments, chroots, and configuration files, while per-directory .user.ini settings apply to CGI/FastCGI but not CLI. Therefore, a web validator can pass while a CLI scheduler sees different credentials, paths, extensions, or state.
INFERRED — Pure browser or CDN staleness is a credible visibility amplifier but is not the best single explanation for the sampled backend state. The English Daily Brief page and the JSON status projection agreed on process, revision, stage, attempts, latest publication, and deficits. A stale service worker, browser cache, reverse proxy, or CDN could still explain why some users see older data, because service workers can intercept requests and substitute cached responses independently of ordinary HTTP caching.
INFERRED — Publication-write and link-generation failures remain necessary branches in the complete fault tree, but they rank below scheduler, reconciliation, and evidence-validation faults for this particular snapshot because the process had not reached composition or finalization.
REPORTED BY PROJECT OWNER — DNS resolution, TLS verification, PHP cURL, OpenSSL, the CA bundle, provider credentials, configured models, the Responses API, required web search, strict structured output, and background-response creation and retrieval have reportedly succeeded in prior diagnostics.
REPORTED BY PROJECT OWNER — Earlier releases reportedly introduced a canonical host, a Daily Brief process identifier, monotonic revisions, cross-tab synchronization, browser polling, a browser trigger lease, and a server-owned supervisor.
UNKNOWN — No source code, deployment manifest, scheduler configuration, server log, private response identifier, state database, state-file path, filesystem mount, PHP configuration, or operator record was inspected for this report.
UNKNOWN — The web observations establish what a public representation exposed; they do not establish whether that representation was freshly generated at origin, reconstructed from a state artifact, or delivered through an intermediary cache. Actual raw response headers from independent networks and browsers must be retained during the incident run.
RECOMMENDED — Treat the incident as a Daily Brief control-plane outage, not initially as a provider outage. The first goal is to determine whether the authoritative state is advancing at all; the second is to locate the first durable transition that fails; the third is to prove that successful publication becomes visible consistently across languages, hosts, sessions, and caches.
Evidence classification and current fact ledger
| Classification | Statement | Confidence |
|---|---|---|
| OBSERVED | A public Daily Brief status endpoint exists and exposes a redacted process, stage, revision, provider lifecycle, validation metrics, and cron fields. | High |
| OBSERVED | The sampled active process was tied to target date August 1, 2026 and process revision 34. | High |
| OBSERVED | A stored provider response was reported present with its identifier recorded. | High as a statement about the public projection |
| OBSERVED | The active process was still at queue/research and had not begun composition. | High |
| OBSERVED | The latest edition artifact linked from the Daily Brief page was July 30, 2026. | High |
| OBSERVED | The English page described public page requests after 8:00 a.m. Central as eligible to initiate or advance automatic publication. | High |
| OBSERVED | Public operations and diagnostics interfaces were access-controlled; no bypass was attempted. | High |
| REPORTED BY PROJECT OWNER | Lower-level provider and network validations passed in earlier tests. | Medium until correlated with production runtime identity |
| REPORTED BY PROJECT OWNER | Deterministic no-network validators passed. | Medium until their release, inputs, and execution environment are identified |
| INFERRED | The process is more likely stuck at reconciliation or evidence transition than at raw provider connectivity. | Medium-high |
| INFERRED | The public status may combine fields generated at different instants. | Medium-high |
| INFERRED | Cron nulls raise suspicion but do not, alone, prove cron never ran. | High |
| UNKNOWN | Whether the scheduler actually invoked the production entry point on August 1. | Unknown |
| UNKNOWN | Whether cron and web PHP share the same release, configuration, state path, timezone, user, and filesystem. | Unknown |
| UNKNOWN | Whether the provider response left queued after the sampled public state was generated. | Unknown |
| UNKNOWN | Whether an unlinked August 1 artifact exists outside the public journal index. | Unknown |
| UNKNOWN | Whether an alternate hostname, origin, or old document root serves an independent state. | Unknown |
Why passing deterministic tests can coexist with a broken production feature
INFERRED — Deterministic validators usually establish that a function behaves correctly for known inputs under a controlled runtime. They do not prove that the production scheduler invokes that function, that it loads the same release and configuration, that it can read and write the same state, or that a later worker commits the result.
INFERRED — A provider create/retrieve test proves an API capability, but not the application’s durable lifecycle. The production workflow additionally must record the operation identifier before losing control, retrieve the same identifier after restarts, recognize terminal states, preserve output evidence, advance the correct process revision, and prevent a stale writer from overwriting newer state. OpenAI’s background-response model requires clients to retrieve and poll the same response while it is queued or in_progress, then handle terminal statuses such as completed, failed, cancelled, or incomplete.
INFERRED — A test run through web PHP does not prove CLI behavior. PHP CLI and CGI/FastCGI can differ in loaded configuration, working directory, environment, per-directory settings, process user, chroot, extension availability, and filesystem access. PHP-FPM can also define separate pools with distinct users and configuration.
INFERRED — A test that validates state-transition logic in isolation does not prove mutual exclusion. In production, an operator request, public-page trigger, browser poll, and cron invocation may overlap. A lock that merely expires by time is insufficient unless every writer also carries a monotonically increasing fencing token or expected revision; otherwise a paused old holder can resume after lease expiry and overwrite work committed by a new holder. Lease-based locks release ownership when the lease expires, but safe state mutation still requires the application to reject stale holders.
INFERRED — A successful write test does not prove atomic publication. The real flow must write all bilingual artifacts, metadata, index entries, and supervisor state in an order that cannot expose a partial edition. POSIX rename provides the standard primitive for atomically replacing a pathname, but the implementation must verify filesystem constraints and must not update “published” state until the final artifact can be read back and hashed.
INFERRED — A passing UI test does not prove freshness. A browser page may render an old embedded snapshot while JavaScript polls a fresher endpoint; a service worker may replace a network response with its own cache; a CDN may cache one language or hostname differently; or client code may infer progress from elapsed time rather than display server-owned state. Service workers act as request proxies and can serve cached responses independently of normal browser navigation caches.
RECOMMENDED — Define “production success” as an end-to-end state transition observed from outside: one target date is selected, one process is created, one provider operation is reconciled, valid evidence is retained, one bilingual immutable edition is atomically committed, the supervisor becomes terminal, and all public views converge to the same publication within a bounded time.
Symptom taxonomy and snapshot-discrimination model
RECOMMENDED — Use the following taxonomy to assign each observation to the earliest failing lifecycle boundary. A symptom should not be labeled “stuck” without specifying which timestamp, revision, lease, retry deadline, or artifact failed to move.
| Classification | Condition | Black-box symptom fingerprint | Strong discriminator |
|---|---|---|---|
| RECOMMENDED | Scheduler never starts | Target remains eligible; revision, last_attempt, cron heartbeat, and next action never change after the publication window. | Owner telemetry shows no invocation record for the expected schedule. |
| RECOMMENDED | Scheduler starts but exits before reserving work | Scheduler heartbeat advances, but no process ID, target reservation, lease owner, or revision appears. | Invocation has start and exit data but no reservation-acquired event. |
| RECOMMENDED | One process is permanently leased | Same process and lease owner persist past TTL; every cycle reports busy or deferred; no transition occurs. | Monotonic and wall-clock lease expiry disagree, or stale holder is never fenced. |
| RECOMMENDED | Provider work is created but identifier is lost | Provider create attempt is recorded, but response_id_recorded=false; later cycles create another operation or cannot poll. | Provider/operator history shows an operation absent from application state. |
| RECOMMENDED | Provider work completes but is never retrieved | Stored ID remains; provider status and poll counter never advance after next-check deadlines. | Provider-side sanitized status is terminal while application status remains queued/in-progress. |
| RECOMMENDED | Provider output is retrieved but evidence validation rejects it | Provider terminal/retrieved event appears; source and candidate counts briefly rise or rejection metrics update; retained set remains empty. | Validation report identifies stable, reproducible rejection classes. |
| RECOMMENDED | Valid evidence is discarded between attempts | One revision reports retained candidates or bound evidence; a later revision for the same process falls to zero without a quarantine or explicit reset event. | Immutable evidence-batch hashes reveal an older accepted batch no longer referenced. |
| RECOMMENDED | Composition never starts | Evidence thresholds are satisfied, but stage remains bind/qualify and compose_attempts=0. | Transition guard reports “eligible for compose” with no compose reservation. |
| RECOMMENDED | Composition succeeds but final validation fails | Composition output hash exists; stage cycles between compose/finalize; no publication artifact. | Final validator emits bounded rule failures against a retained composition artifact. |
| RECOMMENDED | Publication file write fails | Final validation passes; write attempt occurs; no readable final artifact; permission, disk, path, or rename error is recorded. | Temporary artifact exists or write telemetry identifies exact failing operation. |
| RECOMMENDED | Publication succeeds but supervisor is not updated | Dated edition URL returns a valid immutable artifact while status remains in progress and today_url is null. | Artifact manifest predates unchanged supervisor revision. |
| RECOMMENDED | Supervisor updates but public pages remain cached | Status endpoint reports published and a new revision, but pages continue showing an older edition or process. | Cache-bypassed origin response is fresh while ordinary navigation has nonzero Age or an older ETag/body hash. |
| RECOMMENDED | English and Spanish views diverge | Process ID, revision, target date, publication date, or stage differs between language paths. | Differences exceed localized labels and formatting. |
| RECOMMENDED | One hostname serves a stale deployment | Release ID, process ID, canonical origin, asset hashes, headers, or archive count differ by hostname. | DNS/IP and origin fingerprints identify separate deployments or document roots. |
| RECOMMENDED | Browser JavaScript is stale | Initial HTML and status JSON are fresh, but UI labels, poll cadence, or transition logic follow an older release. | Script URL or content hash differs between sessions, hosts, or cache-bypassed fetches. |
| RECOMMENDED | Service worker or CDN serves an old status | DevTools shows service-worker interception or a cache hit; body hash and generated_at lag origin. | Bypassing the worker/CDN produces a newer revision. |
| RECOMMENDED | Operator action and cron race | Two transition attempts share the same expected revision; process revision jumps or one path reports lock conflict. | Event log shows distinct actor IDs contending for one transition. |
| RECOMMENDED | Displayed progress is client-inferred | Percent or “elapsed” changes while process revision, stage, and server timestamps remain fixed. | JavaScript-disabled HTML and status JSON do not contain the displayed progress. |
| RECOMMENDED | Status endpoint healthy but edition artifact missing | Status reports terminal published and supplies a URL, but the URL is 404, incomplete, or has the wrong artifact hash. | Read-after-write verification was absent or failed. |
| RECOMMENDED | Edition artifact exists but is not linked | Predictable or owner-supplied dated artifact responds successfully, but journal index, language page, feed, or today_url omits it. | Artifact manifest exists with no matching index revision. |
| RECOMMENDED | Waiting for a retry time that is never reached | next_check_at is in the past, state remains retryable, and repeated fresh status responses show no cycle. | Scheduler heartbeat is absent or due-time comparison uses a different timezone/clock. |
| RECOMMENDED | Lock expires according to one clock but not another | Lease age appears negative, implausibly long, or inconsistent across nodes; ownership changes without safe fencing. | Owner telemetry compares wall clock, monotonic duration, issued TTL, and fencing token. |
| RECOMMENDED | Cron and web runtime use different configurations or filesystems | Web page shows one release/state while cron logs another path, release, timezone, or process ID. | Runtime fingerprint differs by SAPI or actor. |
RECOMMENDED — Determine whether two pages represent the same snapshot by comparing semantic identity, not prose. The minimum tuple should be:
canonical_origin
site_release
process_id
process_revision
snapshot_token
target_date
stage_key
provider_operation_fingerprint
provider_status
last_meaningful_progress_at
next_check_at
publication_date
artifact_manifest_hash
status_generated_at
RECOMMENDED — Apply these decision rules:
| Classification | Relationship between two pages | Required evidence |
|---|---|---|
| RECOMMENDED | Same current server snapshot | Same process ID, revision, snapshot token, stage, target, provider status, and status-generation timestamp; localized text may differ. |
| RECOMMENDED | Two independently cached snapshots | Same process lineage but different revisions or generation times; older response has cache evidence such as Age, old ETag, old body hash, service-worker source, or stale browser storage. |
| RECOMMENDED | Two genuinely different backend processes | Different active process IDs or targets for the same publication channel, especially if both claim canonical authority or have independent monotonic revision sequences. |
| RECOMMENDED | Same process with localized labels | Semantic tuple is identical while headings, dates, status labels, and explanatory prose are translated. |
| RECOMMENDED | Different releases or site instances | Different release IDs, asset hashes, canonical origins, response-header fingerprints, document structure, process schema versions, or archive/state roots. |
INFERRED — A changed revision with an unchanged process ID normally means progression within one process. An unchanged revision with changing client-side elapsed time does not demonstrate server progress.
RECOMMENDED — No UI should be allowed to synthesize a later stage than the status endpoint. Client code may display a local age counter, but it must visibly identify that counter as local and must not alter the server-owned stage, provider status, revision, last-progress time, or next-action label.
Black-box observation, chronology reconstruction, and evidence record
RECOMMENDED — The observation program must remain read-only. Because the public page says that an eligible GET may initiate publication, automated probes must not repeatedly hit that page without owner approval. HTTP defines GET as a safe method whose requested semantics are read-only; coupling a public page view to production mutation makes monitoring ambiguous and permits bots, caches, and users to act as accidental schedulers. The mutating trigger should ultimately be separated into a controlled scheduler or authenticated idempotent operation.
Safe observation matrix
| Classification | Dimension | Test cells | Data to retain | Safety constraint |
|---|---|---|---|---|
| RECOMMENDED | Language | English Daily Brief; Spanish Daily Brief; language-specific dated artifact | Semantic snapshot tuple, body hash, links, visible labels | Navigate normally; do not guess hidden paths. |
| RECOMMENDED | Host | Canonical hostname; only publicly documented alternate hostname; www if normally reachable | DNS answer, redirect chain, final host, canonical tag, release, process ID | No broad virtual-host enumeration. |
| RECOMMENDED | Status | Public documented status endpoint | Complete JSON, body hash, raw headers, retrieval time | Use documented read-only endpoint at low cadence. |
| RECOMMENDED | Session | Existing session; fresh private session; clean profile | Cookies, cache source, service-worker controller, body hash | Never use credentials not supplied by owner. |
| RECOMMENDED | Tabs | One tab; two simultaneous tabs opened from same profile | Per-tab process/revision, BroadcastChannel or storage behavior, poll times | Observe only; do not invoke operator controls. |
| RECOMMENDED | Browser | Current Chromium, Firefox, Safari or WebKit | Browser/version, network source, script hashes, worker state | One request set per sampling interval. |
| RECOMMENDED | Viewport | Desktop; mobile width | Same semantic tuple and artifact links | Viewport changes must not create extra trigger traffic. |
| RECOMMENDED | JavaScript | Enabled; disabled | Initial HTML snapshot, progressive-enhancement differences | Prefer status endpoint for repeated checks. |
| RECOMMENDED | Cache mode | Normal; lawful reload/revalidation; owner-approved cache bypass | Age, Date, ETag, Last-Modified, Vary, cache-status headers, body hash | Do not add random query strings unless owner confirms they are harmless. |
| RECOMMENDED | Network vantage | At least two ordinary networks or approved synthetic locations | DNS, TLS endpoint, redirect, response fingerprint | Low rate; no load testing. |
| RECOMMENDED | Cycle time | Before eligibility; eligibility boundary; active processing; expected terminal window; next UTC reset | Complete status snapshots and screenshots | One complete intended publication cycle minimum. |
| RECOMMENDED | Artifact | Latest linked edition; newly published edition when exposed | HTTP status, hash, language counterpart, index link, publication metadata | Do not infer undisclosed paths through scanning. |
RECOMMENDED — For ordinary HTTP cache testing, retain Date, Age, Cache-Control, Expires, ETag, Last-Modified, Vary, Via, standardized Cache-Status if present, vendor cache headers, request IDs, and redirect headers. RFC 9111 defines cache reuse and validation behavior, while RFC 9211 defines Cache-Status specifically to make intermediary cache handling diagnosable.
RECOMMENDED — Do not equate Cache-Control: no-cache with “not stored.” It means a stored response must be successfully revalidated before reuse. no-store prohibits storage and reuse by conforming caches, while must-revalidate prohibits stale reuse after freshness expires.
RECOMMENDED — Treat ETags as representation validators. If the status body changes semantically but the strong ETag does not, or if identical bodies receive unstable ETags on every request, cache validation becomes unreliable. Conditional requests should be tested with the server-provided validator rather than fabricated values.
Evidence-log schema
RECOMMENDED — Store every observation as an append-only record plus immutable raw artifacts. The following fields satisfy the minimum incident record:
| Classification | Field | Format and rule |
|---|---|---|
| RECOMMENDED | observation_id | Globally unique identifier generated by the observer. |
| RECOMMENDED | observed_at_utc | RFC 3339 UTC with milliseconds if available. |
| RECOMMENDED | observer_timezone | IANA timezone and numeric offset, for example America/Chicago, -05:00. |
| RECOMMENDED | observer_clock_source | Operating-system time source or monitoring platform. |
| RECOMMENDED | url | Exact requested public URL, with sensitive query data removed. |
| RECOMMENDED | http_method | Normally GET or HEAD; identify whether the endpoint is documented read-only. |
| RECOMMENDED | redirect_chain | Ordered status, location, and timestamp for each hop. |
| RECOMMENDED | status_code | Final HTTP status. |
| RECOMMENDED | response_headers_file | Filename containing unmodified raw headers for every hop. |
| RECOMMENDED | body_file | Filename containing raw response bytes when retention is lawful. |
| RECOMMENDED | body_sha256 | SHA-256 of bytes after transfer decoding but before local reformatting. |
| RECOMMENDED | content_encoding | Encoding as received, to explain byte-hash differences. |
| RECOMMENDED | visible_release | Public release/build identifier. |
| RECOMMENDED | visible_process_id | Exact public or redacted process ID. |
| RECOMMENDED | visible_revision | Integer revision; never substitute page-load count. |
| RECOMMENDED | snapshot_token | Public snapshot token if exposed. |
| RECOMMENDED | visible_target_date | ISO date. |
| RECOMMENDED | visible_stage | Stable stage key plus localized label. |
| RECOMMENDED | visible_provider_status | Stable provider lifecycle value. |
| RECOMMENDED | last_meaningful_progress_at | Server-provided timestamp, normalized but also retained raw. |
| RECOMMENDED | next_eligible_cycle | Server-provided next check/retry timestamp. |
| RECOMMENDED | publication_date | Latest and current dated artifact, if exposed. |
| RECOMMENDED | artifact_url | Publicly linked edition URL only. |
| RECOMMENDED | artifact_sha256 | Hash of linked edition representation or owner-supplied canonical manifest. |
| RECOMMENDED | browser | Product and exact version. |
| RECOMMENDED | device_viewport | Device class, CSS width/height, pixel ratio. |
| RECOMMENDED | javascript_enabled | Boolean. |
| RECOMMENDED | service_worker_state | None, installing, waiting, active, or unknown; include script hash when accessible locally. |
| RECOMMENDED | cache_state | Network, memory cache, disk cache, revalidated, service worker, intermediary hit, or unknown. |
| RECOMMENDED | cookie_names_hash | Prefer names or redacted inventory; never expose secret values. |
| RECOMMENDED | screenshot_filename | UTC-stamped screenshot name. |
| RECOMMENDED | raw_header_filename | UTC-stamped raw-header file. |
| RECOMMENDED | observer_notes | Concise factual notes. |
| RECOMMENDED | evidence_class | Exactly observed, reported, or inferred. |
| RECOMMENDED | related_observation_ids | Links to prior and comparison observations. |
Chronology template
RECOMMENDED — Normalize all events to UTC but retain the original timestamp and source timezone. Do not infer ordering from file modification times alone; use a stable tie-breaker such as process revision, event sequence, provider poll sequence, or append-log index.
| UTC time | Original time and zone | Source | Evidence class | Actor/view | Process | Rev | Stage | Provider state | Event | Next eligible time | Artifact | Confidence |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
YYYY-MM-DDThh:mm:ss.sssZ | Raw value | Status JSON | OBSERVED | Public status | dbp_… | 34 | queue | queued | Snapshot read | UTC timestamp | none | High |
… | … | Owner scheduler log | REPORTED | cron host A | dbp_… | 34 | queue | queued | Invocation started | … | none | Medium until raw log supplied |
… | … | Sanitized provider record | REPORTED | provider | operation fingerprint | — | — | completed | Provider terminal | — | output hash | Medium |
… | … | Public edition | OBSERVED | canonical origin | dbp_… | 41 | published | completed | Artifact visible | — | SHA-256 | High |
UTC chronology reconstruction method
RECOMMENDED — Reconstruct one chronology in six passes:
- RECOMMENDED — Preserve every raw timestamp exactly as supplied, including offset and timezone name. Add a normalized UTC column rather than replacing the original.
- RECOMMENDED — Group records first by target date, then process ID, then provider-operation fingerprint. A target date without a process ID is a reservation event, not proof of a process.
- RECOMMENDED — Order committed server transitions by monotonic process revision. Wall-clock timestamps can be wrong; a lower revision must never be treated as later authoritative state merely because its clock is ahead.
- RECOMMENDED — Place browser and cache observations around the server timeline using response
Date,Age, request IDs, statusgenerated_at, and local request times. Estimated origin-generation time for a cached response is approximately response receipt time minusAge, but only as an inference because intermediaries can transform or omit metadata. RFC 9111 definesAgeas the mechanism by which caches communicate estimated response age. - RECOMMENDED — Mark impossible relationships rather than silently correcting them: negative job age, a next-check before creation, a revision regression, “published” before artifact creation, or a poll event without an incremented poll sequence.
- RECOMMENDED — Identify the last indisputably durable event and the first expected event that did not occur. That boundary is the incident’s most useful localization.
RECOMMENDED — Use these precedence rules when timestamps conflict:
durably committed revision
> append-only event sequence
> provider terminal timestamp tied to stored operation fingerprint
> artifact manifest creation and read-back
> origin Date/generated_at
> cache-adjusted client observation
> browser-rendered relative time
INFERRED — For the sampled August 1 state, the last clearly exposed durable application event was the process snapshot at revision 34 with a recorded provider response. The first expected but unproven event was a successful bounded reconciliation after next_check_at, followed by a revision increase or explicit terminal/failure transition.
Request-sequence reference model
RECOMMENDED — The black-box observations should be interpreted against this safe target sequence. The observer performs only read operations; the scheduler owns all mutations.
sequenceDiagram
participant O as External observer
participant C as CDN / reverse proxy
participant W as Web PHP status projection
participant S as Authoritative supervisor state
participant J as Server scheduler
participant P as Async provider
participant A as Edition artifact store
O->>C: GET documented read-only status
C->>W: Forward or revalidate
W->>S: Read one committed snapshot
S-->>W: process_id, revision, target, stage, deadlines
W-->>C: JSON + no-store + request/snapshot IDs
C-->>O: Status representation
J->>S: Acquire transition lease with fencing token
S-->>J: Lease + expected revision
J->>P: Retrieve the stored provider operation
P-->>J: queued / in_progress / terminal result
J->>S: Compare-and-swap transition and append event
alt evidence qualifies
J->>S: Reserve composition with next revision
J->>S: Commit validated bilingual payload hash
J->>A: Write temporary immutable artifacts
J->>A: Atomic promote and read-back
A-->>J: Artifact hashes and URLs
J->>S: Mark published only after verified read-back
else evidence fails bounded rules
J->>S: Preserve batch, rejection report, retry/quarantine decision
end
O->>C: GET status and linked edition
C-->>O: Same published process revision and artifact identity
RECOMMENDED — A status request must never be required to perform the scheduler’s reconciliation. Black-box monitoring should observe the system, not become the system’s liveness mechanism.
HTTP, canonical-origin, scheduler, and asynchronous-job test matrices
HTTP, cache, release, and canonical-origin matrix
| Classification | Test | Expected healthy result | Failure interpretation | Evidence required |
|---|---|---|---|---|
| RECOMMENDED | Canonical hostname navigation | One redirect chain to the documented canonical origin; no application state emitted before canonicalization. | Alternate host may execute an old document root or expose independent state. | DNS, TLS names, hop headers, final canonical tag, release/process tuple. |
| RECOMMENDED | English versus Spanish status | Same process ID, revision, target, stage key, provider state, publication date, and artifact identity. | Localization layer or separate backend state diverges. | Raw HTML/JSON and semantic diff. |
| RECOMMENDED | Fresh private session | Same server tuple as ordinary session; no dependency on stale cookies or storage. | Session-scoped process projection or cache. | Cookies, body hashes, storage inventory. |
| RECOMMENDED | JavaScript disabled | Initial page does not claim a later stage than server status; core artifact links remain usable. | Client infers or fabricates status. | Screenshot and HTML body hash. |
| RECOMMENDED | Normal versus revalidated request | Same newest revision; cache metadata explains any reused representation. | Browser, CDN, or proxy is serving an older snapshot. | Age, ETag, Last-Modified, Cache-Status, Date, request ID. |
| RECOMMENDED | Conditional status request | Changed status returns new content; unchanged status can return 304 only when validators are correct. | ETag or modification metadata is decoupled from process revision. | Request/response headers and body hash. |
| RECOMMENDED | Service-worker controlled versus clean profile | Same status revision and release, or worker explicitly network-fetches status. | Worker cache masks origin state or runs stale JavaScript. | Worker script URL/hash, lifecycle state, request initiator. |
| RECOMMENDED | Desktop versus mobile | Semantic state identical. | Device-specific cache key, template, or backend routing. | Vary, user agent, viewport, semantic tuple. |
| RECOMMENDED | Two ordinary networks | Same canonical release and process lineage within propagation bounds. | DNS, CDN POP, or multi-origin drift. | Resolver answers, TLS endpoint, headers, release/process tuple. |
| RECOMMENDED | Status versus linked artifact | “Published” only when dated artifact returns successfully and its manifest identity matches status. | Supervisor/artifact split-brain. | Status snapshot, artifact response, hashes, index link. |
| RECOMMENDED | Asset release fingerprint | HTML release and JavaScript/CSS content hashes belong to one deployment. | Old HTML with new assets or old worker with new backend. | Asset URLs, hashes, source-map/build IDs if public. |
| RECOMMENDED | Header freshness contract | Status is demonstrably noncacheable or explicitly revalidated; journal pages have intentional bounded caching. | Dynamic status can remain stale across layers. | Actual headers from origin-equivalent and public paths. |
OBSERVED — Public API documentation reportedly characterizes the status endpoint as read-only and noncacheable, but documentation is not evidence that every production response carries the intended headers. Actual response headers must be captured from independent clients.
RECOMMENDED — Add Cache-Status at each controlled cache where practical, a stable origin request ID, and an X-Daily-Brief-Snapshot value containing release, process-short-ID, and revision. The values must be nonsecret and must be generated from the same committed snapshot as the body. RFC 9211 exists specifically to standardize cache-debug information.
RECOMMENDED — Version service-worker cache names and delete obsolete caches during activation. Record the worker release in a response/debug panel. A newly installed worker can wait before controlling existing pages, and an update check installs a new worker only when its script differs; therefore multiple open tabs can legitimately remain under an older worker until lifecycle conditions are met.
Scheduler and asynchronous-job matrix
| Classification | Lifecycle boundary | Public observation | Owner telemetry needed | Healthy result | Duplicate-work risk |
|---|---|---|---|---|---|
| RECOMMENDED | Eligibility to invocation | Target becomes eligible at configured time. | Scheduled fire time, actual start, host, actor, command hash. | Invocation begins within defined tolerance. | None if no work reserved yet. |
| RECOMMENDED | Invocation to reservation | New process or existing due process selected. | Reservation event, expected revision, lease/fencing token. | Exactly one writer receives authority. | High if two actors reserve independently. |
| RECOMMENDED | Reservation to provider create | No operation exists for current stage. | Durable intent record written before network call. | One operation tied to process, stage, and operation key. | Critical if create outcome is ambiguous and retried blindly. |
| RECOMMENDED | Provider create to ID persistence | Status reports operation present and ID recorded. | Operation fingerprint, provider create timestamp, commit revision. | Identifier is durable before lease release. | High if identifier is lost. |
| RECOMMENDED | Due poll to provider retrieval | next_check_at passes. | Poll-start, poll-result, latency, provider status, poll sequence. | Same operation retrieved; poll sequence increments. | Low when retrieving same ID. |
| RECOMMENDED | Terminal provider result to evidence preservation | Provider completes. | Raw-output hash, normalized evidence-batch hash, schema version. | Output retained immutably before validation. | None if only reading/preserving. |
| RECOMMENDED | Evidence preservation to validation | Batch evaluated. | Per-rule verdicts, validator release, accepted/rejected IDs. | Deterministic report references retained batch. | Low if validation is pure. |
| RECOMMENDED | Validation to retry/repair | Deficits remain. | Retry decision, ambiguity class, input lineage, stop counter. | New attempt is bounded and does not discard prior valid evidence. | Medium if it creates new provider work. |
| RECOMMENDED | Qualification to composition | Thresholds met. | Compose reservation and input manifest hash. | One compose operation starts. | High if operator and cron compose simultaneously. |
| RECOMMENDED | Composition to final validation | Bilingual payload returned. | Payload hash, schema version, language parity checks. | One retained candidate edition passes or is quarantined with evidence. | Medium if composition is recreated unnecessarily. |
| RECOMMENDED | Final validation to publication | Final payload valid. | Temp-write, flush, promote, read-back, manifest events. | One immutable edition becomes readable. | High if two different payloads target same date. |
| RECOMMENDED | Artifact to supervisor terminal state | Artifact read-back succeeds. | CAS update with expected revision and artifact hash. | Status reports published and exact artifact URL. | Low if CAS protects terminal transition. |
| RECOMMENDED | Supervisor to public convergence | New revision exposed. | Purge/revalidation event and synthetic checks. | All public views converge within SLO. | None. |
RECOMMENDED — Every scheduler invocation should record an outcome even when it performs no work: not-eligible, lease-contended, waiting-until, provider-polled, transition-committed, quarantined, or published. A missing invocation and an invocation that correctly deferred work must never look identical.
RECOMMENDED — Scheduler concurrency must be explicitly controlled. Scheduled-job systems can permit overlapping executions by default; for example, Kubernetes CronJobs have explicit Allow, Forbid, and Replace concurrency policies. Regardless of scheduler product, the application still needs one authoritative transition lease and revision check because scheduler-level exclusion does not cover browser or operator actors.
RECOMMENDED — Use a monotonic duration to determine whether a locally held lease needs renewal, but persist an absolute UTC expiry for diagnosis. Every state mutation must include the lease’s fencing token and the expected process revision. If either is stale, the write must fail without side effects.
RECOMMENDED — Reconciliation must be level-triggered rather than edge-triggered. At every invocation, read authoritative state and ask, “What action is now due?” Do not depend on one particular prior wake-up having occurred. This allows a missed cron tick to self-recover while retaining exactly-once state transitions through idempotency and compare-and-swap.
Retry contracts
RECOMMENDED — Retries are safe only when the ambiguity, deduplication mechanism, success condition, stop condition, and retained evidence are explicit. Idempotent operations are the prerequisite for safe automatic retries; backoff and jitter control retry pressure but do not themselves prevent duplicate side effects.
| Classification | Operation retried | Ambiguity addressed | Duplicate prevention | Success recognized by | Retry stops when | Evidence retained | Waiting versus failure |
|---|---|---|---|---|---|---|---|
| RECOMMENDED | Retrieve existing provider operation | Timeout, transient network error, or nonterminal status while polling a known ID | Never create; retrieve only the stored operation fingerprint | Terminal provider status plus retained output hash, or explicit terminal error | Terminal status, maximum operation age, cancellation, or quarantine deadline | Poll start/end, HTTP outcome class, provider status, response hash, poll sequence | Waiting has future next_check_at and unexpired max age; failure is terminal or overdue beyond policy. |
| RECOMMENDED | Provider create after definite pre-send failure | Connection failed before any bytes were sent and no operation could have been accepted | Durable operation key and one pending-create state; only one fenced writer | Stored provider operation identifier committed to process revision | Identifier committed, known terminal create error, or ambiguity becomes non-resolvable | Pre-send proof, attempt sequence, operation key, request hash | Waiting means one fenced create attempt is active; failure means no ID and no safe proof that retry cannot duplicate. |
| RECOMMENDED | Ambiguous provider create | Client lost response after the provider might have accepted work | Do not blindly recreate unless the provider supports an applicable idempotency mechanism or owner can reconcile by operation key | Existing operation is found and attached, or ambiguity is quarantined | Reconciled operation found, provider retention expires, or operator approves abandonment | Request hash, network phase, timestamps, operation key, provider search result | Ambiguous is a distinct quarantined state, not “failed” and not permission to create again. |
| RECOMMENDED | Evidence validation | Validator process crash or transient dependency failure against a retained batch | Pure validation keyed by evidence-batch hash and validator version | Deterministic validation report committed | Report committed, bounded internal failure count reached, or validator defect quarantined | Batch hash, rule version, verdicts, failure stack class | Waiting has retained input and next retry; failure has reproducible rule or runtime defect. |
| RECOMMENDED | Research repair pass | Qualified docket remains below explicit thresholds | Preserve accepted evidence; new provider operation keyed by process, stage, and repair round | New immutable batch merged without erasing earlier accepted items | Threshold met, max repair rounds reached, publication deadline exceeded, or no-progress rule fires | Input manifest, deficit vector, output batch hash, merge report | Waiting states exact deficits and due time; failure states exhausted rounds or repeated zero delta. |
| RECOMMENDED | Composition retrieval | Known composition operation remains nonterminal or network result is uncertain | Retrieve same operation; never start a second composition for same input manifest | Terminal payload passes schema parsing and is retained by hash | Terminal result, age limit, or quarantine | Operation fingerprint, input manifest, output hash, poll sequence | Same distinction as research retrieval. |
| RECOMMENDED | Atomic publication | Crash before or after final rename/read-back | Deterministic artifact name, content hash, create-if-absent/compare behavior, one fenced publisher | Final URL reads back expected hash and manifest | Verified match, detected conflicting hash, or bounded storage failure | Temp path, intended hash, rename result, read-back result, revision | Waiting means retryable storage error with no conflicting artifact; failure means permission/path conflict or mismatched existing content. |
| RECOMMENDED | Supervisor finalization | Artifact exists but CAS update timed out | CAS on process ID, expected revision, and exact artifact manifest hash | Supervisor terminal state references same artifact hash | CAS succeeds, newer equivalent terminal state observed, or conflict quarantined | CAS request/result, old/new revision, artifact hash | Waiting has verified artifact and retryable CAS; failure has a conflicting process or artifact. |
| RECOMMENDED | Cache convergence | Published origin is fresh but public page remains stale | Revalidation or targeted purge keyed to immutable publication event | Public probes see published revision and artifact link | Convergence SLO met or cache incident escalated | POP/browser observations, headers, body hashes | Waiting is within declared propagation bound; failure exceeds bound. |
Ranked fault tree and hypothesis analysis
RECOMMENDED — The diagram separates control-plane liveness, provider/evidence progression, publication, and visibility. A branch can coexist with another; for example, an evidence-validation defect can be hidden behind a stale status cache.
flowchart TD
A[Daily Brief is not current or views disagree]
A --> B[No authoritative cycle advances]
A --> C[Provider or evidence lifecycle does not advance]
A --> D[Composition or publication does not complete]
A --> E[Publication completed but is not visible]
A --> F[Multiple authorities or releases exist]
B --> B1[Scheduler never starts]
B --> B2[CLI exits before reservation]
B --> B3[Lease remains held or stale writer is not fenced]
B --> B4[Retry deadline comparison never becomes due]
B --> B5[Scheduler and web see different state]
C --> C1[Provider ID lost]
C --> C2[Known provider operation never polled]
C --> C3[Terminal output retrieved but not retained]
C --> C4[Binder rejects source identities]
C --> C5[Validation rejects all candidates]
C --> C6[Accepted evidence discarded between rounds]
D --> D1[Compose transition never reserved]
D --> D2[Composition terminal output fails validation]
D --> D3[Publication write or atomic promote fails]
D --> D4[Artifact written but supervisor CAS fails]
E --> E1[Origin/reverse-proxy/CDN cache is stale]
E --> E2[Browser or service worker is stale]
E --> E3[Artifact exists but journal link is missing]
E --> E4[Client displays inferred progress]
F --> F1[Alternate hostname serves old document root]
F --> F2[English and Spanish use different state roots]
F --> F3[Cron and web load different release/config]
F --> F4[Rollback left incompatible state schema]
F --> F5[Operator and cron race]
INFERRED — The probability estimates below are investigative priors, not measured frequencies. They are ranked from the August 1 public evidence and should be updated as telemetry arrives.
| Rank and classification | Hypothesis | Observable symptoms | Confidence increases if | Hypothesis is falsified if | Responsible layer | Severity | Prior probability | Safest next diagnostic action | Minimum telemetry | Self-recover? | Operator action safe? | Duplicate-work risk |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| INFERRED — A | Due provider reconciliation is not executing or not committing | Known operation, due time in past, unchanged revision/provider state, zero poll count | Scheduler heartbeat absent; no poll-start; or poll occurred with failed CAS | Revisions and poll sequence advance on schedule from fresh origin views | Scheduler, supervisor state, provider orchestration | Critical for Daily Brief | 24% | Obtain read-only scheduler invocation and transition-event excerpt for process/revision 34 | Invocation ID, actor, loaded release, lease result, poll result, CAS result | Possibly, if later cycle is level-triggered | Only a “reconcile same operation” action is safe | Low for retrieval; high if action creates new work |
| INFERRED — B | Public status is stale or assembled from non-atomic projections | Mixed generated_at/server time, poll event with zero counter, due-now state persists | Different fields originate from separate files or cache layers; fresh endpoint changes only some fields | One transactional snapshot has internally consistent event/counter/timestamps | Supervisor projection, origin cache, reverse proxy, CDN | High diagnostic impact | 18% | Capture raw headers/body hashes from two networks and compare with owner’s authoritative snapshot hash | Snapshot ID, commit revision, generated-at, cache headers, projection source | No, if projection builder is stuck | Cache purge is safe only after origin freshness is proven | None |
| INFERRED — C | Evidence binder/validator contract mismatch prevents any retained docket | 120 evidence items, zero exact binds, 14/14 rejected, 42 issues | Stable source IDs fail normalization; validator version differs from generation schema; accepted set remains zero across rounds | A retained evidence batch passes the same validator offline and composes successfully | Evidence validation, schema/versioning | Critical | 17% | Request sanitized evidence manifest and per-candidate rejection ledger, not raw secrets | Batch hash, candidate IDs, source IDs, rule codes, validator release | Unlikely without input/rule change | Revalidation of retained batch is safe | Medium only if operator starts new research |
| INFERRED — D | Cron and web runtimes use different release, configuration, state path, or filesystem | Web claims runtime consistency but cron fields null; production behavior differs from web tests | CLI fingerprint differs in SAPI, php.ini, user, cwd, timezone, document root, state inode/mount | CLI and web fingerprints match and both read the same snapshot hash | PHP CLI, web PHP, deployment, filesystem | Critical | 13% | Owner runs a nonsecret runtime-fingerprint command in both contexts and supplies sanitized output | Release hash, SAPI, PHP binary/version, ini paths, cwd, UID/GID, timezone, state-path identity | No | Diagnostic only is safe | None |
| INFERRED — E | Lease, lock, or fencing logic prevents transitions | Repeated lease contention, stale active owner, no transition despite due work | Lease expiration and holder clocks disagree; stale holder can write; token never changes | Each due cycle acquires or reports a valid live holder and stale tokens are rejected | Supervisor state, filesystem/database, clock | Critical | 9% | Inspect sanitized lease record and last ten acquisition outcomes | Holder/actor, issued time, monotonic age, expiry, fencing token, expected revision | Sometimes after expiry | Forced unlock is unsafe without fencing/owner proof | High |
| INFERRED — F | Public-page trigger, cron, and operator actions race | Revision conflicts, duplicate create attempts, stage regression, inconsistent tabs | Events show two actors on same expected revision or two operations for one stage | One writer token and one operation key cover all actors | Client synchronization, scheduler, operator path | Critical | 6% | Correlate actor IDs and transition attempts; do not manually restart | Actor, request ID, expected/current revision, operation key | Sometimes | Manual trigger unsafe until active operation reconciled | Critical |
| INFERRED — G | Provider operation completed but terminal state or output was not reconciled | Application remains queued; provider record is terminal | Sanitized provider status is completed/failed after app’s last poll | Provider remains genuinely queued and app polls correctly | Provider orchestration, scheduler | High | 5% | Owner queries the known operation through an authorized read-only method and supplies status/timestamps/hash | Operation fingerprint, terminal status/time, output presence | Yes if later poll works | Retrieve-only safe | Low |
| INFERRED — H | Browser, service worker, or intermediary cache masks current backend state | Different sessions or profiles show different revisions/releases | Clean profile or cache-bypassed read is newer; worker intercepts status | All independent clients receive same stale backend snapshot | Browser cache, service worker, CDN, proxy | Medium to high | 3% | Compare clean profile, JS-disabled, and two networks; record headers and worker state | Body hashes, ETag, Age, Cache-Status, worker script hash | May resolve on expiry/update | Local cache clear is safe; global purge only after origin verification | None |
| INFERRED — I | Alternate hostname or old document root serves a separate instance | Host-specific release, archive count, process, or assets | DNS/origin fingerprints and document structure differ | All known hosts redirect before application execution to one canonical release | Canonical host, deployment drift, multiple roots | Critical if confirmed | 2% | Test only publicly known host variants and redirect chains | DNS, TLS, redirects, release/build, document-root fingerprint | No | Redirect/config fix can be safe after inventory | Medium during cutover |
| INFERRED — J | Publication artifact was written but supervisor/index was not finalized | Dated edition exists while status is in progress or index omits it | Owner manifest identifies artifact and hash; journal lacks link | No artifact exists and pipeline never reached finalize | Publication write, supervisor, index generation | High | 1.5% | Ask owner for artifact manifest lookup by target date; do not path-scan | Artifact existence, hash, write time, manifest, supervisor revision | No | Finalize-existing-artifact may be safe after hash/process verification | High if it republishes different content |
| INFERRED — K | Clock/timezone mismatch keeps retry or lease perpetually ineligible | Due times remain in past/future inconsistently; negative ages | CLI, web, DB, and filesystem clocks/timezones differ | All comparisons use UTC instants and clocks are synchronized within tolerance | Timezone, system clock, PHP config | High | 1% | Compare sanitized UTC/monotonic samples from each actor | UTC wall time, monotonic uptime, PHP timezone, DB time | No | Time correction requires care with active lease | High if expiry suddenly releases stale work |
| INFERRED — L | Final composition/publication validation fails after currently hidden future transition | Compose output exists, no publication, final error loop | Compose attempts and payload hashes appear after research succeeds | Process has never started composition | Composition, final validation, permissions | High | 0.5% current snapshot | Keep branch instrumented; do not prioritize until compose begins | Compose operation, payload hash, validation report, write events | Possibly | Revalidate same retained payload is safe | Medium |
Detailed falsification logic for major layers
RECOMMENDED — Scheduler: The scheduler hypothesis is strengthened only by a missed expected invocation or a started invocation with no durable outcome. A null public heartbeat is insufficient. It is falsified when owner evidence shows on-time invocations whose actor, release, state path, lease result, and transition result are all recorded.
RECOMMENDED — PHP CLI runtime: The runtime-divergence hypothesis is strengthened by any difference in PHP binary, SAPI, loaded php.ini, scanned INI directory, extension set, open_basedir, timezone, process environment, working directory, user/group, chroot, document root, or application release. It is falsified only when these identities and the authoritative state object are shown to match the web runtime. PHP documentation confirms that FastCGI per-directory settings and FPM pool configuration can create such differences.
RECOMMENDED — Filesystem/database: This hypothesis is strengthened when two actors report different snapshot hashes at the same revision, when inode/mount/database identities differ, or when one actor can read but not atomically promote an artifact. It is falsified by an owner-supplied cross-runtime write/read probe performed in staging or against a dedicated diagnostic object—not against the live edition state.
RECOMMENDED — Supervisor state: This hypothesis is strengthened by revision regressions, mixed fields from different commits, absent compare-and-swap failures, or a terminal artifact that is not referenced by the supervisor. It is falsified by an append-only transition log in which every public snapshot maps to one committed revision and one snapshot hash.
RECOMMENDED — Provider orchestration: This hypothesis is strengthened when a stored operation is never retrieved after it becomes due, when create outcomes are ambiguous, or when terminal provider output lacks a retained application hash. It is falsified when the same operation is periodically retrieved, every result is committed, and terminal output is durably preserved before validation.
RECOMMENDED — Evidence validation: This hypothesis is strengthened by a nonempty provider batch, empty retained docket, stable rejection classes, or accepted evidence disappearing between revisions. It is falsified when the exact retained batch and validator release reproduce a qualified docket in a deterministic replay.
RECOMMENDED — Composition: This hypothesis is strengthened only after thresholds are met but no compose reservation occurs, or after a retained composition repeatedly fails explicit final rules. It is currently lower priority because the sampled process reported zero compose attempts.
RECOMMENDED — Publication write: This hypothesis is strengthened by a passed final validation followed by permission, path, disk, temp-write, rename, or read-back failures. It is falsified by a verified immutable artifact whose hash is referenced by the supervisor.
RECOMMENDED — Caches and service workers: This family is strengthened when the same URL produces different revisions by cache source, network, profile, or worker controller. It is falsified when fresh-origin and ordinary public views carry the same snapshot within the declared propagation objective. Service workers can replace network responses with cached objects, so they must be inspected separately from ordinary Cache-Control.
RECOMMENDED — Deployment drift: This family is strengthened by different release IDs, PHP/runtime fingerprints, process schemas, static-asset hashes, redirects, or state roots across host/language/SAPI. It is falsified only by a deployment manifest proving that all public entry points and scheduler actors resolve to the same immutable release.
Minimum telemetry, incident runbooks, and operator checklist
Minimum additional telemetry from the owner
RECOMMENDED — The owner should supply sanitized, read-only evidence for the affected target and process. Provider identifiers may be replaced with stable hashes; paths may be tokenized consistently; secrets and content requiring protection should be removed.
| Classification | Telemetry item | Minimum fields | Question answered |
|---|---|---|---|
| RECOMMENDED | Scheduler invocation ledger | Invocation ID, scheduled time, actual start/end, host, actor, exit class, target considered | Did the scheduler run? |
| RECOMMENDED | Runtime fingerprint | Release hash, PHP binary/version/SAPI, ini files, extensions hash, timezone, cwd, UID/GID, hostname/container ID | Did cron run the same application as web PHP? |
| RECOMMENDED | State-store identity | Redacted path/DSN fingerprint, filesystem/mount or database identity, schema version | Did all actors read the same state? |
| RECOMMENDED | Transition ledger | Process ID, old/new revision, event, actor, request ID, expected revision, CAS result | Where did progression stop? |
| RECOMMENDED | Lease ledger | Lock name, holder, fencing token, acquired/renewed/expires/released times, outcome | Is one writer permanently or incorrectly leased? |
| RECOMMENDED | Provider-operation ledger | Stable operation fingerprint, process/stage, create time, ID-persisted time, status observations, poll sequence | Was one operation created, retained, and reconciled? |
| RECOMMENDED | Provider terminal evidence | Stable operation fingerprint, terminal status/time, output-present boolean, output SHA-256 | Did provider work finish? |
| RECOMMENDED | Evidence-batch manifest | Batch hash, schema, candidate/source counts, source-ID namespace, parent batch | Was evidence retained immutably? |
| RECOMMENDED | Validation ledger | Candidate ID, rule code, accepted/rejected, validator release, input batch hash | Why were all candidates rejected? |
| RECOMMENDED | Composition ledger | Input manifest hash, operation fingerprint, attempts, terminal result, payload hash | Did composition start or succeed? |
| RECOMMENDED | Publication transaction | Temp-write, validation pass, atomic promote, read-back, artifact hash, index update, supervisor CAS | Did publication fail before or after artifact commit? |
| RECOMMENDED | Cache/deployment manifest | Origin release, CDN config version, service-worker release, asset manifest, purge events | Is stale content or drift masking progress? |
| RECOMMENDED | Clock sample | UTC wall time and monotonic uptime from scheduler, web runtime, store, and host | Are lease/retry comparisons coherent? |
| RECOMMENDED | Operator-action ledger | Actor, action type, target process/revision, result | Did a manual action race with cron? |
RECOMMENDED — The public status should expose a sanitized subset sufficient for black-box diagnosis: current UTC server time, status-generated time, scheduler last-start/last-finish/last-result, process ID and revision, lease state without sensitive host details, provider lifecycle and poll sequence, last meaningful transition, exact next due action, artifact existence, and release/runtime fingerprint.
Incident evidence-collection runbook for one publication cycle
RECOMMENDED — The following is a 24-hour read-only run. During daylight saving time, 8:00 a.m. America/Chicago is 13:00 UTC. The runbook should calculate the exact offset from the IANA timezone on the execution date rather than hard-code it.
| Classification | Relative time | Action | Evidence |
|---|---|---|---|
| RECOMMENDED | Cycle start | Create incident ID; synchronize observer clock; record timezone and browser versions. | Clock screenshot, tool versions, evidence directory manifest. |
| RECOMMENDED | At least 12 hours before eligibility | Capture one baseline status response from two approved networks and one clean browser profile. | Raw headers, body, SHA-256, process tuple, DNS/TLS/redirect record. |
| RECOMMENDED | One hour before eligibility | Capture English and Spanish pages once with JavaScript disabled and once in a clean JavaScript-enabled profile. | Screenshots, HTML hashes, asset and worker fingerprints. |
| RECOMMENDED | Fifteen minutes before eligibility | Start low-rate status sampling every five minutes. | Status body/header sequence. |
| RECOMMENDED | At eligibility boundary | Observe the documented read-only status; do not rely on a page view to trigger work. A designated owner actor may perform the approved trigger if the current design requires one. | Before/after snapshots and owner trigger ID, if any. |
| RECOMMENDED | First hour after eligibility | Sample status every five minutes; capture pages only when process revision or terminal state changes. | Revision timeline, due-time behavior, page/status convergence. |
| RECOMMENDED | Active provider phase | For each status change, record process revision, provider status, poll sequence, last progress, and next check. | Chronology rows and semantic diffs. |
| RECOMMENDED | Ten minutes after a missed next-check | Mark a liveness anomaly; do not manually restart. Ask owner for the corresponding scheduler invocation and lease outcome. | Public evidence plus sanitized owner record. |
| RECOMMENDED | Evidence/validation phase | Capture each revision that changes candidate, source, bind, validation, or deficit counts. | Batch/validation progression graph. |
| RECOMMENDED | Publication event | Fetch only the newly linked artifact, both language views, journal index, and status. | Artifact hashes, links, terminal revision, response headers. |
| RECOMMENDED | Two hours after publication | Repeat from a second network, clean profile, and JavaScript-disabled request. | Cache convergence evidence. |
| RECOMMENDED | If no publication by owner-defined deadline | Freeze evidence, classify the earliest missing transition, and request the minimum telemetry for that boundary. | Incident package and fault-tree update. |
| RECOMMENDED | End of 24 hours | Produce a UTC chronology, contradiction list, ranked hypotheses, and untouched raw-evidence manifest. | Signed/hash-listed evidence bundle. |
RECOMMENDED — Sampling should be event-sensitive: low frequency while no action is due, temporarily increased around the known next-check boundary, and reduced after the state becomes terminal. This avoids unauthorized load while still determining whether deadlines cause transitions.
RECOMMENDED — The observer must not press publication or recovery controls, construct undisclosed endpoints, cancel provider operations, clear server locks, or provoke duplicate work. The only browser changes allowed are local cache/worker inspection in isolated profiles.
Confirmation plan across multiple cycles
RECOMMENDED — The 72-hour plan must prove repeatability, not merely one successful recovery.
| Classification | Window | Goal | Required proof |
|---|---|---|---|
| RECOMMENDED | First 24 hours | Locate the first missing durable transition and collect one complete cycle. | Unified UTC chronology and owner telemetry at that boundary. |
| RECOMMENDED | Second 24 hours | Validate one remediation or instrumentation change under normal scheduling. | One process, one provider operation per stage, monotonic revisions, retained evidence, terminal artifact. |
| RECOMMENDED | Third 24 hours | Test convergence and restart tolerance without creating duplicate publication. | Scheduler restart or missed-tick recovery in staging or controlled production procedure; all public views converge. |
RECOMMENDED — During the second and third cycles, compare:
- RECOMMENDED — process creation time relative to eligibility;
- RECOMMENDED — provider operation count per process stage;
- RECOMMENDED — poll interval and poll-sequence monotonicity;
- RECOMMENDED — evidence retained across repair rounds;
- RECOMMENDED — time from provider terminal result to state transition;
- RECOMMENDED — time from final validation to readable artifact;
- RECOMMENDED — time from artifact commit to public-language and hostname convergence;
- RECOMMENDED — scheduler heartbeat continuity and runtime fingerprint consistency.
One-page operator checklist
| Classification | Check | Pass condition | If not met |
|---|---|---|---|
| RECOMMENDED | Identify authoritative process | Exactly one active process ID and target date | Stop; do not trigger or create work. |
| RECOMMENDED | Read current revision | Revision and snapshot token recorded before action | Refresh from authoritative read-only status. |
| RECOMMENDED | Check provider operation | Zero or one operation for current stage; known operation is reconciled first | Never create another until ambiguity is resolved. |
| RECOMMENDED | Check next due time | UTC next action is in future or an invocation exists after it | If overdue, inspect scheduler and lease—not provider-create. |
| RECOMMENDED | Check scheduler identity | Last invocation includes expected release/runtime/state-store identity | Escalate runtime/deployment drift. |
| RECOMMENDED | Check lease/fencing | Current holder is live; fencing token and expected revision match | Do not force unlock without stale-writer protection. |
| RECOMMENDED | Check evidence preservation | Provider output and every validation batch have immutable hashes | Do not start a replacement research pass. |
| RECOMMENDED | Check validation outcome | Rejections have candidate-level rule codes and retained inputs | Quarantine validator defect rather than erase evidence. |
| RECOMMENDED | Check composition | One compose operation per input manifest | Retrieve existing operation; do not duplicate. |
| RECOMMENDED | Check publication artifact | Final artifact exists, reads back, and matches expected hash | Do not mark published. |
| RECOMMENDED | Check supervisor | Terminal state references exact artifact and next revision | Retry CAS only with same process/artifact identity. |
| RECOMMENDED | Check public convergence | Status, English, Spanish, index, and linked artifacts agree | Diagnose caches/release drift; do not republish. |
| RECOMMENDED | Record action | Actor, UTC time, process, expected revision, action, result | An unlogged action must not be taken. |
| RECOMMENDED | Duplicate-work gate | Action cannot create a second provider operation or artifact | Obtain incident-lead approval or quarantine. |
Remediation priorities, acceptance criteria, and unanswered questions
Ranked remediation matrix
| Rank and classification | Remediation | Impact | Confidence | Effort | Dependencies | Rollback risk |
|---|---|---|---|---|---|---|
| RECOMMENDED — A | Make one server-owned reconciler solely responsible for lifecycle advancement; public GETs and browser polling become read-only | Very high | High | Medium | Scheduler reliability, status endpoint | Medium |
| RECOMMENDED — B | Introduce an append-only transition ledger with process ID, revision, actor, expected revision, fencing token, event, and outcome | Very high | High | Medium | State schema/migration | Low |
| RECOMMENDED — C | Add compare-and-swap transitions plus fencing tokens for every writer, including cron, browser-trigger path, and operator tools | Very high | High | High | Authoritative state store | Medium-high |
| RECOMMENDED — D | Persist provider operation intent and identifier durably; reconcile the same operation until terminal; quarantine ambiguous creates | Very high | High | Medium | Provider adapter, state schema | Medium |
| RECOMMENDED — E | Preserve provider output, normalized evidence batches, validation reports, and composition payloads as immutable hash-addressed evidence | Very high | High | Medium-high | Storage and retention policy | Low |
| RECOMMENDED — F | Correct evidence-binding contract with explicit source-ID namespace, canonicalization version, and candidate-level rejection ledger | Very high | Medium-high | High | Sanitized failing batch, validator replay | Medium |
| RECOMMENDED — G | Emit runtime fingerprints and state-store identity from web and scheduler actors | High | High | Low | Secret-redaction design | Low |
| RECOMMENDED — H | Make the public status one transactional snapshot with generated_at, process revision, request ID, and deliberate no-store behavior | High | High | Medium | Projection builder, cache config | Low |
| RECOMMENDED — I | Implement atomic publication transaction: temporary artifacts, validation, promote, read-back, manifest, then supervisor finalization | Very high | High | High | Filesystem/store semantics | Medium |
| RECOMMENDED — J | Use immutable edition URLs/assets and versioned page/index manifests; invalidate only mutable indexes/status views | High | High | Medium | Publication design, CDN config | Low |
| RECOMMENDED — K | Version and instrument service-worker caches; never cache dynamic status without explicit network-first/revalidation logic | Medium-high | Medium | Medium | Front-end deployment | Low |
| RECOMMENDED — L | Add external black-box synthetic monitoring for process freshness, artifact existence, language parity, and canonical-host convergence | High | High | Medium | Read-only probes, alert routing | Low |
| RECOMMENDED — M | Add bounded no-progress quarantine rather than resetting or silently abandoning a target | High | High | Medium | State machine and operator UI | Medium |
| RECOMMENDED — N | Define publication SLOs and alert on missed state transitions, not only HTTP availability | High | High | Low-medium | Metrics/alerts | Low |
RECOMMENDED — Black-box monitoring should be symptom-oriented: it should verify that a current edition becomes publicly readable, not merely that PHP returns 200. Google’s SRE guidance distinguishes black-box monitoring as observation of active user-visible symptoms and recommends synthetic transactions where real traffic may be absent.
Remediation design details
RECOMMENDED — Server-owned liveness: Remove production progress mutations from ordinary public page requests. A scheduler should run frequently enough that one missed tick does not miss the publication window. Each tick should reconcile the current state, not assume it is beginning a new attempt.
RECOMMENDED — One authoritative state transition: Model each mutation as:
transition(
process_id,
expected_revision,
fencing_token,
actor_id,
operation_key,
input_manifest_hash,
proposed_event
) -> committed_revision | conflict
RECOMMENDED — Durable provider intent: Before a provider create call, commit a state stating that creation is reserved for a specific process, stage, and operation key. After receiving an identifier, commit it immediately. If the response is lost after the provider might have accepted the request, enter create-outcome-ambiguous; do not pretend no operation exists.
RECOMMENDED — Evidence continuity: Never replace a retained evidence set with a later empty set. Store each batch immutably and derive a merged working set by deterministic rules. A repair pass should add or supersede evidence through explicit lineage, not mutate the historical record.
RECOMMENDED — Validation transparency: Every rejected candidate should identify the rule code, relevant source IDs, observed values, expected condition, validator release, and whether the failure is repairable. A summary count of 42 issues is useful for UI display but insufficient for incident reconstruction.
RECOMMENDED — Atomic publication: Construct English and Spanish artifacts and their manifest under temporary names, validate links and language parity, promote them to immutable final names, read them back, and only then commit the supervisor’s terminal state and mutable indexes. If a final file already exists, compare its content hash; an identical artifact is idempotent success, while a different artifact is a conflict requiring quarantine.
RECOMMENDED — Cache separation: Dynamic status should be generated from one current committed snapshot and should not be stored by browsers, service workers, or shared caches. Immutable dated editions may be cached for long periods because their contents do not change. Mutable journal indexes may use bounded cache lifetimes plus validators and explicit invalidation on publication. RFC 9111 provides the relevant cache-control and revalidation semantics.
RECOMMENDED — Canonical deployment: Redirect alternate hosts before loading application publication state. Include the immutable release ID and state-schema version in the status snapshot. The scheduler should verify the same expected release at startup and fail visibly rather than modify state from a mismatched rollback.
RECOMMENDED — Runtime parity: Capture PHP_SAPI, PHP version, loaded configuration path, scanned INI files, extension-manifest hash, timezone, current working directory, effective user/group, application release, and redacted state-store identity at every scheduler start. Do not expose a public phpinfo() page; PHP documentation notes that it reveals extensive environment and server data.
RECOMMENDED — Synthetic monitoring: Run read-only probes from at least two approved external locations. Check the status snapshot age, revision liveness, overdue next action, latest edition date, linked artifact availability, English/Spanish identity, canonical redirects, and cache headers. Synthetic checks must not initiate publication.
Production acceptance criteria
RECOMMENDED — Acceptance must be based on multiple real publication cycles, including at least one restart or missed-tick recovery exercise in a safe environment.
| Classification | Invariant or outcome | Acceptance proof |
|---|---|---|
| RECOMMENDED | Zero or one active Daily Brief process | Across three consecutive production cycles, no snapshot or transition log contains overlapping active process IDs. |
| RECOMMENDED | Zero or one active target date | Every active revision maps to one target; target remains unchanged until published, quarantined, or explicitly abandoned. |
| RECOMMENDED | Monotonic revisions | Revisions increase exactly on committed transitions; no public or owner view observes regression. |
| RECOMMENDED | At most one provider operation per active stage | Provider ledger contains one operation key/fingerprint per process-stage-round; retrieval retries do not create operations. |
| RECOMMENDED | One transition writer | Every mutation has a valid fencing token and expected revision; concurrent attempts produce harmless conflicts. |
| RECOMMENDED | Cross-language and cross-client convergence | English, Spanish, clean profiles, multiple tabs, and external probes report the same process/revision/target/publication within the convergence SLO. |
| RECOMMENDED | Canonical host unity | Every documented alternate host redirects before publication logic and exposes no independent process or release. |
| RECOMMENDED | No backward movement | Delayed requests, stale caches, and old workers cannot commit state; stale public views are detectable through snapshot metadata. |
| RECOMMENDED | Target continuity | A process stays tied to its date through retries and restarts; no new target supersedes it without a terminal abandonment record. |
| RECOMMENDED | Safe resumability | Killing the reconciler after provider create, after provider terminal, after validation, and before supervisor finalization resumes the same process without duplicate work in a controlled test. |
| RECOMMENDED | Scheduler liveness | Each expected cycle has a start and terminal invocation result within the declared tolerance. |
| RECOMMENDED | Provider reconciliation | Every queued/in-progress operation is polled at bounded intervals; terminal status is incorporated within the reconciliation SLO. |
| RECOMMENDED | Evidence retention | Provider output, normalized evidence, validation reports, and composition payload are hash-addressed and remain available through terminal retention policy. |
| RECOMMENDED | Validation diagnosability | Every rejected candidate has machine-readable reason codes and can be deterministically replayed with the recorded validator release. |
| RECOMMENDED | Composition completion | A qualified docket starts at most one composition operation and retains its terminal payload. |
| RECOMMENDED | Atomic bilingual publication | English and Spanish artifacts and manifest become readable as one publication transaction; no partial language edition is visible. |
| RECOMMENDED | Artifact/supervisor consistency | published status is impossible unless read-back confirms the exact artifact hash; every published artifact is referenced by the journal index. |
| RECOMMENDED | Cache correctness | Dynamic status never remains stale past its SLO; immutable editions retain stable content hashes; service-worker and CDN behavior is observable. |
| RECOMMENDED | User-visible freshness | On each of three consecutive days, the intended dated edition is published by the agreed deadline and externally verified. |
| RECOMMENDED | Failure safety | Injected transient retrieval, validator, write, and scheduler failures produce waiting or quarantine states with explicit next action, never silent reset or duplicate publication. |
| RECOMMENDED | Operator safety | The operator interface refuses actions that would create a second provider operation, use a stale revision, or overwrite a conflicting artifact. |
RECOMMENDED — A passing result is not “the progress bar moved.” A passing result is a traceable chain from scheduler invocation to one immutable bilingual edition, with one process lineage, one operation lineage per stage, retained evidence, an atomically verified artifact, and converged public views.
Unanswered questions
| Classification | Question | Why it matters |
|---|---|---|
| UNKNOWN | What scheduler product and exact cadence own Daily Brief reconciliation? | Determines expected invocation semantics and missed-run behavior. |
| UNKNOWN | Did any scheduler invocation occur after the sampled next_check_at on August 1? | Directly tests the leading liveness hypothesis. |
| UNKNOWN | Are the null cron fields uninitialized telemetry, missing projection data, or proof of no run? | Prevents a false conclusion from absent public data. |
| UNKNOWN | What does provider-poll-observed mean, and why can it coexist with poll_count=0? | May reveal projection inconsistency or counter-commit failure. |
| UNKNOWN | Is poll_count scoped to the current provider operation, entire process, or successful retrievals only? | Needed to interpret liveness correctly. |
| UNKNOWN | Does the public status body come from live state, a generated JSON artifact, or multiple retained component snapshots? | Explains mixed generation timestamps. |
| UNKNOWN | What are the exact cache headers returned by origin, reverse proxy, CDN, and service worker for status and journal pages? | Required to prove or exclude stale visibility. |
| UNKNOWN | Does any service worker control the Daily Brief or status URL, and what release is active in long-lived tabs? | Could explain session-specific divergence. |
| UNKNOWN | Do English and Spanish routes read one state object or generate separate snapshots? | Necessary for bilingual convergence. |
| UNKNOWN | Do canonical and www hostnames redirect before PHP application initialization? | Determines whether alternate hosts can mutate or expose separate state. |
| UNKNOWN | Which PHP binary, configuration files, user, working directory, and timezone does cron use? | Tests CLI/web divergence. |
| UNKNOWN | Do cron and web PHP see the same state-store identity and publication directory? | Tests split filesystem/document-root hypotheses. |
| UNKNOWN | Is the provider operation represented in the sampled state still queued, or did it subsequently become terminal? | Distinguishes provider waiting from missed reconciliation. |
| UNKNOWN | How is an ambiguous provider create resolved when the request may have succeeded but the identifier was not committed? | Determines duplicate-work safety. |
| UNKNOWN | What schema and source-ID namespace did the 120 evidence records use? | Central to the zero-bind outcome. |
| UNKNOWN | Were any candidates accepted in an earlier revision and later discarded? | Tests evidence-loss between attempts. |
| UNKNOWN | Are validation thresholds date-relative to Central time, UTC, source publication time, or retrieval time? | Could cause systematic freshness rejection. |
| UNKNOWN | Why were four automatic attempts exhausted while the process remained eligible and active? | Attempt accounting may conflate creation, polling, and repair. |
| UNKNOWN | What exact condition moves a process from active waiting to quarantined, abandoned, or terminal failure? | Prevents indefinite in-progress state. |
| UNKNOWN | Is there a maximum provider-operation age and a no-progress deadline distinct from retry count? | Needed to distinguish waiting from permanent failure. |
| UNKNOWN | Has composition ever succeeded for a failed process but been lost before finalization? | Tests later fault-tree branches. |
| UNKNOWN | Is publication performed through same-filesystem atomic promotion, database transaction, object-store conditional write, or another mechanism? | Determines the correct atomicity and idempotency controls. |
| UNKNOWN | Can an edition artifact exist without a journal-index update, and is there an owner-supported manifest lookup? | Tests artifact/index split-brain safely. |
| UNKNOWN | What deployment event preceded the first unreliable Daily Brief cycle? | May identify schema drift, rollback, or document-root mismatch. |
| UNKNOWN | Are old releases still reachable through any CDN origin, host mapping, language route, or scheduler path? | Tests deployment drift and rollback branches. |
| UNKNOWN | What production deadline and error budget define a successful Daily Brief? | Required for objective alerting and acceptance. |