Compare commits

...
Author SHA1 Message Date
autonomic-bot 65063efdaa config: subagents -> tinfoil/deepseek-v4-flash (cheaper, pay-per-use)
continuous-integration/drone/push Build is failing
Switch the general subagent model from opencode/deepseek-v4-pro (zen
endpoint, subject to workspace balance limits) to tinfoil/deepseek-v4-flash
(pay-per-use API, no rolling balance limit, cheaper than pro).

This completes the fleet-wide move to deepseek-flash on tinfoil: the upgrader
parent (LOOP_MODEL) and report (REPORT_MODEL) are set in upgrader.env, and
this changes the subagents. The hourly supervisor stays on glm-5.2.

Verified: tinfoil endpoint accepts deepseek-v4-flash (HTTP 200, 2.3s response).
Trial run next Friday (2026-08-21) to evaluate flash capability on the
upgrade workload; fall back to pro if it struggles on complex recipes.
2026-08-16 02:34:21 +00:00
autonomic-bot b1c9ec1464 upstream(gitea): release-notes sources
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
2026-08-14 02:35:20 +00:00
autonomic-bot a3e63660f3 Merge pull request 'AGENTS.md: ship work as PRs, self-merge, operator reviews retrospectively' (#19) from policy/pr-then-merge into main
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
2026-08-11 19:09:26 +00:00
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
4 changed files with 45 additions and 8 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 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.) 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`.
+19
View File
@@ -0,0 +1,19 @@
# gitea upstream sources
## gitea/gitea
- image: gitea/gitea
- source: https://github.com/go-gitea/gitea
- releases: https://github.com/go-gitea/gitea/releases
- security: https://blog.gitea.com/
## postgres
- image: postgres
- source: https://github.com/postgres/postgres
- releases: https://www.postgresql.org/docs/release/
- security: https://www.postgresql.org/support/security/
## mariadb
- image: mariadb
- source: https://github.com/MariaDB/server
- releases: https://mariadb.com/kb/en/release-notes/
- security: https://mariadb.com/kb/en/security/
+1 -1
View File
@@ -2,7 +2,7 @@
"$schema": "https://opencode.ai/config.json", "$schema": "https://opencode.ai/config.json",
"agent": { "agent": {
"general": { "general": {
"model": "opencode/deepseek-v4-pro" "model": "tinfoil/deepseek-v4-flash"
} }
} }
} }
@@ -110,7 +110,9 @@ def _register_site(domain: str, site: str) -> None:
.replace("__SITE__", site) .replace("__SITE__", site)
) )
out = lifecycle.exec_in_app(domain, ["/app/bin/plausible", "rpc", exs], service="app") 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: def _post_event(base_domain: str, site: str, name: str, pathname: str) -> int:
@@ -142,9 +144,9 @@ def _ingest_and_count(
last_status = None last_status = None
while True: while True:
last_status = _post_event(base_domain, site, name, pathname) last_status = _post_event(base_domain, site, name, pathname)
assert ( assert last_status == 202, (
last_status == 202 f"POST /api/event for {name!r} → HTTP {last_status} (expected 202)"
), f"POST /api/event for {name!r} → HTTP {last_status} (expected 202)" )
time.sleep(interval) time.sleep(interval)
raw = _ch(base_domain, count_sql) raw = _ch(base_domain, count_sql)
count = int(raw) if raw.isdigit() else 0 count = int(raw) if raw.isdigit() else 0
@@ -192,6 +194,6 @@ def test_custom_event_roundtrip(live_app):
live_app, live_app,
f"SELECT name FROM events_v2 WHERE pathname = '{pathname}' LIMIT 1", f"SELECT name FROM events_v2 WHERE pathname = '{pathname}' LIMIT 1",
) )
assert ( assert stored_name == event_name, (
stored_name == event_name f"custom event stored as {stored_name!r}, expected {event_name!r}"
), f"custom event stored as {stored_name!r}, expected {event_name!r}" )