0% 5h quota used · resets in 2h live · 08/09/2026 12:03 CEST

1 open question

Country OS may open an entry; it may never close one. The channel beside each entry is where you answer.

_global/OS-004 — `DirectoryApiClient` upstream timeout — a graceful-degrade fix was already rejected in review, and the failure keeps growing unaddressed

permalink
decision open 6d last told 6d ago opened by _global:sentry-triage (run 2026-09-02T04-00-00-3fe0bc) Selectra-Dev/cms

Reply to the Google Chat message — any wording. A model reads it, and tn:decisions-answer writes it down.

What is failing. App\Directory\DirectoryApiClient::fetch() calls cities-api.app.production.aws.selectra.io with no rescue()/try-catch around the HTTP call. A connection timeout throws ConnectionException before a Response exists, so it escapes uncaught and 500s every directory page on every site that uses this shared client. Two shortIds, same file, same root cause, different sites:

shortId events (this run) site / route
CMS-8K 883 (was 582 on 2026-07-29, 241 on 2026-07-02) companiadeluz.es, comparadorluz.com, mercato-libero.it, tarifasgasluz.com, tarifasdeagua.es, and the Spain-energy/Italy-telecom/Portugal-* directory pages generally
CMS-112 716 at last triage 2026-08-12, not re-checked this run tarifasdeagua.es, /oficinas/{province}/{city}

Why this is a decision, not a routine fix. A fix already shipped once — rescue(fn () => ..., null), reporting to Sentry by default, exactly the shape memory/review-feedback.md says is normally acceptable — and a human reviewer (@aurian) reverted it anyway: "hiding the upstream timeout behind a clean null degrade removes the only signal that cities-api is failing. Leaving this unhandled so it surfaces (Sentry / 500) is the correct behavior here." (PR #8898, 2026-07-14). That is a considered call that a 500 is the intended signal for this specific client, not an oversight — so a triage run cannot apply the review-feedback rule's normal "rescue() that still reports is fine" reading here; it was tried and explicitly rejected for this call site.

Why it is coming to you now instead of staying a REPORT row. This has been re-classified REPORT at every triage since 2026-07-02 (five runs) with no design proposed and no GitHub issue opened — the event count has grown 3.7x in that time (241 → 883) with nothing to show a human ever saw it outside a journal entry that scrolls away. That is precisely the failure this register exists to stop.

What is being asked. Whether cities-api going down should keep 500ing directory pages indefinitely (current behavior, deliberately preserved by the revert), or whether there is an acceptable middle design — e.g. a distinct "upstream degraded" response/status that is visibly different from a normal 200 (so it can't be mistaken for "working") but doesn't crash the request, or an uptime/alerting hook outside Sentry-issue-count that would let a graceful fallback stay actionable. Sizing that trade-off is exactly the human judgment call PR #8898 asked for and never got a follow-up design for.


Resolved

Answered

9 entries
EntryAskedTypeStatusOpenedSettledTook
_global/OS-00329k Sentry events from workflow rows orphaned by our own namespace renamereportresolved2026-08-312026-09-011d
_global/OS-001`laravel-workflow` is abandoned upstream, with no successor chosendecisionresolved2026-08-272026-09-015d
_global/OS-002MySQL replica connection pool exhausted, hitting live trafficreportresolved2026-08-272026-08-281d
tn/TN-003Write the STEG tariff figures in one placedecisionresolved2026-08-182026-08-191d
tn/TN-002`FAQPage` regression on `/steg/numero-vert` — shared componentreportresolved2026-08-172026-08-2710d
tn/TN-005Add Python to the orchestrator image?decisionrejected2026-08-2118d
tn/TN-001Authorise recurring content productiondecisionresolved2026-07-152026-08-1935d
tn/TN-004Does the redevance depend on subscribed power?decisionresolved2026-08-182026-08-180d
tn/TN-000VAT base for a STEG billdecisionresolved2026-08-182026-08-180d

Approval records

data/approvals/ · the other gate
RequestOpenedAnswerWaitedToken
tn:seo-fixes02/07/2026 19:23approved16missued

One approval record in the system's whole history. That is why decisions.md exists: a gate nobody walks through is not a gate.

de has no decisions.md. Only Tunisia keeps a register today; any workspace can start one.