CI (SIAX Cloud) / security (push) Successful in 31s
CI (SIAX Cloud) / integration (push) Successful in 42s
Security Scan (SIAX Cloud) / security (push) Successful in 44s
CI (SIAX Cloud) / quality (push) Successful in 1m6s
CI (SIAX Cloud) / security (pull_request) Successful in 30s
CI (SIAX Cloud) / integration (pull_request) Successful in 37s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 26s
CI (SIAX Cloud) / quality (pull_request) Successful in 1m2s
Six documents on main assert that no Coolify app has been provisioned for 0pt and
that cd.yml's COOLIFY_APP_ID is a literal placeholder whose guard fails the job on
purpose. That is no longer true, and the gap is not cosmetic: it means a merge to
main silently ships to production while the repo's own docs promise it cannot.
Measured, not assumed:
* repo Actions secret COOLIFY_TOKEN exists, created 2026-08-31T11:34:34Z
(GET /api/v1/repos/sax3l/0pt/actions/secrets)
* repo Actions variable COOLIFY_APP_ID exists with a real 24-character value,
not the "TODO-no-coolify-app-provisioned-yet" literal
(GET /api/v1/repos/sax3l/0pt/actions/variables)
* both guards in .gitea/workflows/cd.yml therefore pass; on the push to main at
1ff34410 (2026-09-06) the job "Deploy to Coolify / deploy" (run 11695, job
26295) finished SUCCESS with "coolify deploy HTTP 200" in its log
Deliberately NOT claimed: that the Coolify app builds, starts or serves, or that
0pt.app DNS points at it rather than Vercel. Nobody probed the running site, and
every corrected passage says so explicitly rather than replacing one unverified
claim with another.
Corrected: README.md "Deploy", docs/02-architecture.md hosting callout,
docs/architecture/decisions/0001 (consequence annotated, decision untouched --
an ADR is a historical record), docs/runbook/incident.md (the symptom row is now
inverted: the risk is an unintended deploy, not a red job),
docs/compliance/GOLDEN-STANDARD-REPORT.md D4 (❌ -> ⚠️, not ✅, because "webhook
accepted" is not "app serves"), docs/compliance/INVENTORY.md CI row.
Falsifiable check over all six files (stale claim present without a correction
marker = red):
origin/main -> FAIL (12 findings)
this branch -> PASS
mutation: drop only the README bullet -> FAIL
mutation: drop only the runbook correction -> FAIL
The check initially passed vacuously on docs/02-architecture.md because PR #32 had
already put the string "CORRECTED 2026-09-06" in that file for an unrelated reason;
the marker was made specific so the check could actually fail there too.
Docs only. No workflow files, no .gitignore, no source.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Architecture Decision Records — 0pt
BACKLOG P1-2. One file per decision, numbered sequentially, never renumbered or deleted (superseded decisions get a new ADR that says so, per the convention below).
| ADR | Title | Status |
|---|---|---|
| 0001 | Deploy target is Coolify, not Vercel | Accepted (migration not yet executed) |
| 0002 | /api/0pt/* auth is fleet Zitadel Bearer, not NextAuth |
Accepted and implemented |
| 0003 | Lakehouse format is Apache Iceberg (pointer to n0d ADR-0030) |
Accepted (owned by n0d) |
Deliberately not yet written here
Two decisions the original BACKLOG (P1-2) named explicitly are not written as ADRs in this pass, on purpose:
- Payments provider (Stripe vs. Revolut vs. Hyperswitch). Gated on the account owner's decision (BACKLOG P1-23) — writing an ADR that presents a choice as "accepted" before it's actually been decided would misrepresent the repo's own state, which is exactly what this whole documentation pass is trying to stop doing.
- The
services/scrapers/*keep-vs-remove question. Explicitly out of scope for this pass — seeSECURITY.mdand the dated, attributed provenance record already maintained for that decision elsewhere in this repo's compliance docs. Not duplicated here.
Convention
New ADR: NNNN-short-kebab-title.md, next sequential number, status one of
Proposed / Accepted / Superseded by ADR-NNNN / Rejected. Record the
date the decision was actually made (from git log/commit history where
possible), not just the date the ADR file was written, when they differ —
see 0001–0003 for the pattern.