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

Global

Workspace countries/_global/ — not a market. The leading underscore means cross-country work on the shared cms.

Runs 59
last 3h ago
Failed 3
5.1%
Spent $54.65
API-equivalent, all time
Open questions 1
oldest 6 days

Guardrails

countries/_global/country.yaml — every run is admitted against these
Spent today $0.68
$0.68ceiling $30.00
Spent this month $12.88
$12.88ceiling $100
Cash this month $0
$0ceiling $10.00
Agent runs today 1
1ceiling 10
On exceed
alert reported and carried on — API-equivalent dollars are a quota proxy, not money
A task may declare
autonomy autonomouspr · at most 200 turns · at most 120 min
Per-run ceiling
$15.00 — alert only, a finished run is already spent
Warns at
80%
Refused so far
nothing has been refused
Declared, not enforced
Read country.yaml
# Not a country: cross-country maintenance of the shared cms monorepo (see
# CLAUDE.md). Field reference: ../COUNTRY.md.

identity:
  name: Global

guardrails:
  autonomy_allowed: [autonomous, pr]
  turns_max: 200
  minutes_max: 120
  budget:
    run_max_usd: 15
    daily_max_usd: 30
    monthly_max_usd: 100
    monthly_spend_max_usd: 10            # real money
    runs_per_day: 10
    on_exceed: alert
TaskDoesPolicyNextLast 12Spent
sentry-triageWeekly Sentry triage of the cms, telecom and renovation repos — fix what is safely code-fixable, one draft PR per repo, journal the rest. Ignores third-party noise.prin 18h $32.71
sentry-verifyCheck whether merged sentry-triage fixes actually deployed and actually worked, and resolve in Sentry the issues whose errors stopped. The ones still bleeding are left open and come back on the triage worklist as FIX-FAILED. Deterministic, no LLM.autonomousin 17h $0
monthly-reportMonthly "what Country OS did" report for every workspace — one Google Doc per country plus the cross-country one, each on a stable link updated in place. Journal + ledger + GitHub only; the business/traffic view is tn:business-review.autonomousin 23d $3.21
pr-reviewProcess human review feedback on open countryos/global/* draft PRs — apply requested changes, answer questions, revert rejected fixes, and record the rejected patterns in memory so future runs never repeat them.prin 21h $15.04
price-watchWeekly check that each provider's published prices still match orchestrator/src/rates/*.json, and announce anything a human has to settle. Writes no rate: a difference becomes an entry in _global/decisions.md.autonomouson demand $0
price-parser-repairRepair a pricing-page parser after a provider redesigns its page, once a human has settled what the price actually is. Opens a draft PR; never edits a rate table.pron demand $0
decisions-answerRecord a human answer to an open platform decision (OS-001, OS-002…) in _global's decisions.md — approve, reject, or note a conditional reply that arrived by Google Chat.autonomouson demand $2.97
decisions-escalateAnnounce platform decisions to Google Chat and defects to GitHub the day they are opened, and re-raise anything still unanswered. Deterministic, no LLM. Without it _global's register is write-only — which is the failure the register exists to fix, one level up.autonomousin 20h $0

Spend by month

2026-08: $41.762026-09: $12.88 0809

The brief this workspace runs on

countries/_global/CLAUDE.md · every run reads it first
Read CLAUDE.md

Country OS — _global

This is not a country. It is the cross-country workspace: repo-wide and platform-wide maintenance that isn't tied to any single country's business — work that benefits every site. Tasks here own the health of the shared application repos (Sentry triage, PR review follow-up), not a market.

Country workspaces (de, tn, …) run their business. This one runs the plumbing underneath all of them. If a task only makes sense for one country, it belongs in that country's workspace, not here.

Historically these tasks lived in countries/fr/ because France is Selectra's main country and the cms was "its" repo — that conflation ended 2026-08-11 when this workspace was created. The fr history (journal, triage records, review rules) moved here unchanged: it is this workspace's history.

Where things live

The repos are declared in orchestrator/src/repos.yaml — that file is the source of truth for where each clone is, which branch to work from, and which Sentry project reports on it. A run is told the same facts in its prompt. All are Laravel.

cms — the monorepo hosting every site. No admin UI, content is Blade files in git.

  • Sites: sites/<domain>/ (pages, config)
  • Shared verticals/data: departments/<name>/
  • App code: app/ (controllers, services), routes/
  • The monorepo has its own Claude skills — use them when relevant.

telecom — the telecom comparator (comparateur.selectra.info/telecom). France live, Belgium in progress. A single application, standard Laravel layout.

renovation — the Renovation API, part of Web Sales Telecom. A single application, standard Laravel layout.

Each repo has its own CLAUDE.md. When you are working in one, it governs — read it before you change anything there.

Hard rules

  1. Maintenance, not features. Fixes here must be minimal, mechanical and low-risk: handle the exact failing case, no refactors, no behavior changes on the happy path. Human teams own every site's roadmap.
  2. All changes go through git branches named countryos/global/<date>-<topic> (no underscore — reviewers see this name), then a DRAFT PR to that repo's base branch — never commit to a base branch directly, never merge or mark a PR ready. One repo per branch and per PR: they are separate remotes with separate reviewers, and a branch spanning two of them cannot be reviewed by either.
  3. Never invent factual data. If a fix needs a real-world fact (tariff, phone number, address), stop and flag it instead of guessing.
  4. Never touch vendor/, dependency manifests (composer.*, package*), CI/deploy config, or .env* files.
  5. Match each site's language and the conventions of the code you edit.
  6. memory/review-feedback.md is binding. It holds rules distilled from human PR reviews. Read it before changing any code; never ship a pattern a reviewer has rejected. If a rule seems to forbid the only viable fix, classify the issue REPORT instead of overriding the rule.
  7. As few comments as possible in the code you ship. A comment says why, and only when the reason is genuinely unusual. Delete it and re-read the code: if it still makes sense, it stays deleted. Configuration files are the exception — see the full rule and its worked examples in memory/review-feedback.md.
  8. Blast radius is what the repo makes it. In cms, a fix in app/ or departments/ serves dozens of sites in several languages: "safe for the site that errored" is not the bar, "safe for every site touching this code" is. In telecom and renovation — single applications — shared code has one caller set you can actually read, so the same caution would just be superstition. Judge the reach of the code you are touching, in the repo you are touching it.

Memory

memory/journal.md is your run journal — read it at the start of every run, append a dated entry at the end. Durable lessons go to memory/ as separate files.

Journal

54 entries
pr-review pr-review

Ran gh pr list --state open --json number,title,headRefName,isDraft --jq '.[] | select(.headRefName | startswith("countryos/"))' in cms — zero results. Cross-checked via gh pr list --state all --search "head:countryos/global": all five countryos/global/ PRs to…

pr-review pr-review

Ran gh pr list --state open --json number,title,headRefName,isDraft --jq '.[] | select(.headRefName | startswith("countryos/"))' in cms — one result: PR #19418 (countryos/tn/2026-09-05-content-calculateur-facture-steg, Tunisia, not ours). Confirmed via gh pr l…

pr-review pr-review

Ran gh pr list --state open --json number,title,headRefName,isDraft --jq '.[] | select(.headRefName | startswith("countryos/"))' in cms — zero results. Confirmed via gh pr view 18722 that PR #18722 (countryos/global/2026-09-02-sentry-fixes) is still MERGED (me…

pr-review pr-review

Ran gh pr list --state open --json number,title,headRefName,isDraft --jq '.[] | select(.headRefName | startswith("countryos/"))' in cms — zero results. gh pr view 18722 confirms it MERGED at 2026-09-02T09:48:16Z (same-day merge from yesterday's sentry-triage r…

pr-review pr-review

This run's repo grant was cms only (base develop), so checked that repo alone, matching this task's own scope. gh pr list --state open --json number,title,headRefName,isDraft --jq '.[] | select(.headRefName | startswith("countryos/"))' returned two: PR #18722…

Monthly report

Google Doc
Country OS — Cross-country
Updated
01/09/2026 08:11

2026-08 fragment

2026-07 fragment

Latest runs

all 64
WhenTaskWhat it reportedCost
08/09/2026 09:00pr-reviewNo open Country OS PRs found this cycle — all five `countryos/global/*` PRs remain merged since #18722 on 2026-09-02, and the previously-open other-co…$0.68ok
08/09/2026 08:00decisions-escalateNothing to announce (1 open, all seen within the last 7 days).$0skipped
08/09/2026 05:00sentry-verifyNothing to resolve.$0skipped
07/09/2026 12:41decisions-escalateNothing to announce (1 open, all seen within the last 7 days).$0skipped
07/09/2026 09:00pr-reviewNo open `countryos/global/*` PR exists — all five to date are merged, and the only open Country OS PR right now (#19418, Tunisia's STEG calculator) ha…$0.73ok
07/09/2026 08:00decisions-escalateNothing to announce (1 open, all seen within the last 7 days).$0ok
07/09/2026 05:00sentry-verifyNothing to resolve.$0error
06/09/2026 08:00decisions-escalateNothing to announce (1 open, all seen within the last 7 days).$0ok
06/09/2026 05:00sentry-verifyNothing to resolve.$0error
05/09/2026 08:00decisions-escalateNothing to announce (1 open, all seen within the last 7 days).$0ok
05/09/2026 05:00sentry-verify2 issue(s) resolved.$0ok
04/09/2026 09:00pr-reviewNo open Country OS PRs exist in `cms` — PR #18722 (the last `countryos/global/*` PR) has been merged since 2026-09-02, and no other open PR uses a `co…$0.75ok
04/09/2026 08:00decisions-escalateNothing to announce (1 open, all seen within the last 7 days).$0ok
04/09/2026 05:00sentry-verifyNothing to resolve.$0error
03/09/2026 09:00pr-reviewNo open Country OS PRs exist anywhere — PR #18722 (yesterday's sentry-triage fix) already merged with only the auto-merge bot's scope-check comment an…$0.73ok