Compare commits

..
Author SHA1 Message Date
cc-ci de658cf40a AGENTS.md: ship work as PRs, self-merge, operator reviews retrospectively
continuous-integration/drone/push Build is failing
Operator policy (2026-08-11), matching cc-ci-orchestrator. Branch, PR, merge once
verified, operator reviews after. The PR is not a gate - it is how the work stays
legible - so the description carries what changed, why, and the evidence.

Recipe repos are explicitly excluded: created and verified, never agent-merged.
2026-08-11 19:09:12 +00:00
autonomic-bot 92ac9a4a4a Merge pull request 'style(plausible): ruff format the rewritten event-tracking fixture' (#18) from fix/plausible-format into main
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
2026-08-11 14:59:05 +00:00
cc-ci 4bc92c44eb style(plausible): ruff format the rewritten event-tracking fixture
continuous-integration/drone/push Build is failing
Self-inflicted: the rewrite in eecc4aa left the file unformatted, which the push
lint gate flags. Formatting only - no behaviour change.

(Note for the operator: the gate is red on main for unrelated reasons - 90 other
files also fail ruff format, and tests/unit/test_f211_sso_skip.py fails ruff
check C420. Neither is touched here; both predate this branch.)
2026-08-11 14:58:51 +00:00
autonomic-bot 8aa21356af Merge pull request 'fix(plausible): register a team so v3 ingests events; widen post-restore health wait' (#17) from fix/plausible-v3-custom-tests into main
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
Verified GREEN (level 5/5) on cc-ci against plausible PR head 867ebfaf, twice: once with the SQL fixture, once with the app-native rewrite. Regression sample green.
2026-08-11 14:52:06 +00:00
2 changed files with 25 additions and 7 deletions
+16
View File
@@ -36,3 +36,19 @@ Two kinds of tests live here — run them on **different** cadences:
A red test is information. Never skip, delete, or relax a test to make a run green — fix the root
cause or record it in `machine-docs/DEFERRED.md`. (This is a standing build guardrail.)
## Ship work as PRs, merge them yourself, operator reviews retrospectively
Work on this repo goes: **branch → PR → merge it yourself once verified → operator reviews
retrospectively.** Do not commit straight to `main`, and do not wait for review before merging — the
invocation is the authorization, and blocking would stall the CI this repo runs.
The PR is therefore not a gate; it is how the work stays legible after the fact. Write the
description to be read later: what changed, why, and the evidence it works (harness output, a
verified run, a before/after number). A PR that says "fix test" has failed at its only job.
The same policy covers `recipe-maintainers/cc-ci-orchestrator`. It does **NOT** cover recipe repos —
any `coop-cloud/<recipe>` or its mirror is created and verified but **never agent-merged**, because
those change what deploys on other people's infrastructure.
Before editing a test, read `tests/STYLE.md`.
@@ -110,7 +110,9 @@ def _register_site(domain: str, site: str) -> None:
.replace("__SITE__", site)
)
out = lifecycle.exec_in_app(domain, ["/app/bin/plausible", "rpc", exs], service="app")
assert f"CCCI_SITE_OK {site}" in out, f"could not provision site {site!r} via the app: {out.strip()[-400:]}"
assert f"CCCI_SITE_OK {site}" in out, (
f"could not provision site {site!r} via the app: {out.strip()[-400:]}"
)
def _post_event(base_domain: str, site: str, name: str, pathname: str) -> int:
@@ -142,9 +144,9 @@ def _ingest_and_count(
last_status = None
while True:
last_status = _post_event(base_domain, site, name, pathname)
assert (
last_status == 202
), f"POST /api/event for {name!r} → HTTP {last_status} (expected 202)"
assert last_status == 202, (
f"POST /api/event for {name!r} → HTTP {last_status} (expected 202)"
)
time.sleep(interval)
raw = _ch(base_domain, count_sql)
count = int(raw) if raw.isdigit() else 0
@@ -192,6 +194,6 @@ def test_custom_event_roundtrip(live_app):
live_app,
f"SELECT name FROM events_v2 WHERE pathname = '{pathname}' LIMIT 1",
)
assert (
stored_name == event_name
), f"custom event stored as {stored_name!r}, expected {event_name!r}"
assert stored_name == event_name, (
f"custom event stored as {stored_name!r}, expected {event_name!r}"
)