Commit Graph
308 Commits
Author SHA1 Message Date
siax-ci fb45e369cf chore(release-chain): evidence for sha-0b53c4bfd5c6 [skip ci] 2026-09-15 13:12:49 +00:00
admin 0b53c4bfd5 fix(deps): lockfile för des1gn-m0-mergen — @siax/ui 0.4.1 saknades i pnpm-lock (parallellsessionens merge tog package.json utan lås-regenerering; ERR_PNPM_OUTDATED_LOCKFILE bröt quality/integration/release-chain)
masterplan-lock / check (push) Successful in 4s
CI (SIAX Cloud) / integration (push) Successful in 29s
CI (SIAX Cloud) / quality (push) Successful in 40s
Deploy to Coolify / deploy (push) Successful in 56s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Successful in 56s
CI (SIAX Cloud) / security (push) Failing after 1m26s
Security Scan (SIAX Cloud) / security (push) Failing after 1m31s
2026-09-15 15:11:52 +02:00
admin 18d57a1e99 Merge remote-tracking branch 'origin/feat/des1gn-m0'
masterplan-lock / check (push) Successful in 4s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Failing after 6s
CI (SIAX Cloud) / integration (push) Failing after 8s
CI (SIAX Cloud) / security (push) Successful in 14s
CI (SIAX Cloud) / quality (push) Failing after 31s
Security Scan (SIAX Cloud) / security (push) Successful in 30s
Deploy to Coolify / deploy (push) Failing after 10m28s
2026-09-15 15:00:47 +02:00
siax-ci f6977c4742 chore(release-chain): evidence for sha-7f3df904b741 [skip ci] 2026-09-15 12:51:13 +00:00
admin 7f3df904b7 ci: re-trigger (integration dog på runner-glitch: OCI chdir /workspace — stale-runner-mönstret, rerun räcker)
masterplan-lock / check (push) Successful in 11s
CI (SIAX Cloud) / security (push) Successful in 15s
Security Scan (SIAX Cloud) / security (push) Successful in 18s
CI (SIAX Cloud) / integration (push) Successful in 25s
CI (SIAX Cloud) / quality (push) Successful in 32s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Successful in 1m32s
Deploy to Coolify / deploy (push) Successful in 1m35s
2026-09-15 14:49:41 +02:00
siax-ci 8e5fa88b54 chore(release-chain): evidence for sha-6a125e10ccc3 [skip ci] 2026-09-15 12:39:15 +00:00
admin 6a125e10cc ci(release-chain): re-trigger — siax-ci-identiteten fullt verifierad (release-ci-team authorize=write via DB; API:felt vägrar skriva permission-fältet; registry-push PUSH_OK som siax-ci)
masterplan-lock / check (push) Successful in 10s
CI (SIAX Cloud) / security (push) Successful in 16s
CI (SIAX Cloud) / quality (push) Successful in 36s
Security Scan (SIAX Cloud) / security (push) Successful in 37s
CI (SIAX Cloud) / integration (push) Failing after 45s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Successful in 2m51s
Deploy to Coolify / deploy (push) Successful in 2m59s
2026-09-15 14:36:26 +02:00
admin b383464795 ci(release-chain): re-trigger efter DELETE+PUT-sekretesrotation (PUT skriver ej över existerande Gitea-secrets — känd bugg)
masterplan-lock / check (push) Successful in 7s
CI (SIAX Cloud) / security (push) Successful in 15s
Security Scan (SIAX Cloud) / security (push) Successful in 18s
CI (SIAX Cloud) / integration (push) Successful in 28s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Failing after 33s
CI (SIAX Cloud) / quality (push) Successful in 35s
Deploy to Coolify / deploy (push) Failing after 9m58s
2026-09-15 14:08:14 +02:00
admin 101dea83ae ci(release-chain): verifierar den dedikerade identiteten siax-ci (REGISTRY_USER/TOKEN + SIAX_CI_TOKEN roterade från interim admin-token; org-team release-ci + repo-collaborator write)
masterplan-lock / check (push) Successful in 3s
CI (SIAX Cloud) / security (push) Successful in 13s
Security Scan (SIAX Cloud) / security (push) Successful in 14s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Failing after 20s
CI (SIAX Cloud) / integration (push) Successful in 47s
CI (SIAX Cloud) / quality (push) Successful in 1m30s
Deploy to Coolify / deploy (push) Failing after 10m51s
2026-09-15 13:56:17 +02:00
siax-ci fcfd6bca1e M0: DES1GN-distribution — @siax/ui 0.4.1 + @siax/config + kanonisk import-kedja
masterplan-lock / check (push) Successful in 4s
CI (SIAX Cloud) / quality (push) Failing after 8s
CI (SIAX Cloud) / integration (push) Failing after 8s
CI (SIAX Cloud) / security (push) Successful in 15s
Security Scan (SIAX Cloud) / security (push) Successful in 31s
masterplan-lock / check (pull_request) Successful in 4s
CI (SIAX Cloud) / quality (pull_request) Failing after 8s
CI (SIAX Cloud) / integration (pull_request) Failing after 9s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 13s
CI (SIAX Cloud) / security (pull_request) Successful in 31s
Token-VÄRDEN ägs av @siax/ui; token→Tailwind-mappningen ägs av @siax/config.
Ingen in-repo token-kopia (M0-kontraktet). Bygg-CSS verifierad: SIAX-purple
(#5326cc = oklch 0.45) + Inter + text-accent utility genererad.
2026-09-15 12:51:47 +02:00
siax-ci 508a2f34de chore(release-chain): evidence for sha-8be11b6485d3 [skip ci] 2026-09-15 03:45:04 +00:00
admin 8be11b6485 fix(deps): package.json postcss-specifier ^8.5.28 (renovate PR#63:s package.json del glömdes i lockfile-merge-committen — lock:en pekar redan på ^8.5.28/8.5.28)
masterplan-lock / check (push) Successful in 8s
CI (SIAX Cloud) / quality (push) Successful in 37s
Security Scan (SIAX Cloud) / security (push) Successful in 15s
CI (SIAX Cloud) / security (push) Successful in 45s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Successful in 1m0s
Deploy to Coolify / deploy (push) Successful in 1m33s
CI (SIAX Cloud) / integration (push) Successful in 1m30s
2026-09-15 05:43:13 +02:00
admin 38bf3520cd Merge PR #63 (renovate: postcss 8.5.28) — lockfile semantiskt löst (main:s autoprefixer 10.5.5 + postcss uppdaterad i range), frozen-lockfile grön
masterplan-lock / check (push) Successful in 5s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Failing after 8s
Security Scan (SIAX Cloud) / security (push) Successful in 13s
CI (SIAX Cloud) / quality (push) Failing after 31s
CI (SIAX Cloud) / security (push) Successful in 32s
CI (SIAX Cloud) / integration (push) Failing after 33s
Deploy to Coolify / deploy (push) Failing after 10m15s
2026-09-15 05:24:14 +02:00
siax-ci 2417954536 chore(release-chain): evidence for sha-a285c2f45f78 [skip ci] 2026-09-15 03:22:20 +00:00
admin a285c2f45f Merge PR #62 (renovate: autoprefixer 10.5.5)
masterplan-lock / check (push) Successful in 4s
Security Scan (SIAX Cloud) / security (push) Successful in 15s
CI (SIAX Cloud) / integration (push) Successful in 26s
CI (SIAX Cloud) / security (push) Successful in 38s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Successful in 52s
CI (SIAX Cloud) / quality (push) Successful in 53s
Deploy to Coolify / deploy (push) Successful in 57s
2026-09-15 05:20:27 +02:00
siax-ci 9d51e021ed chore(release-chain): evidence for sha-570352eb80d2 [skip ci] 2026-09-15 03:17:55 +00:00
admin 094d6e87e0 Merge branch 'main' into renovate/dev-dependencies-(non-major)
CI (SIAX Cloud) / security (pull_request) Successful in 14s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 12s
CI (SIAX Cloud) / security (push) Successful in 15s
Security Scan (SIAX Cloud) / security (push) Successful in 14s
CI (SIAX Cloud) / integration (pull_request) Successful in 24s
CI (SIAX Cloud) / quality (pull_request) Successful in 32s
masterplan-lock / check (pull_request) Successful in 39s
masterplan-lock / check (push) Successful in 44s
CI (SIAX Cloud) / integration (push) Successful in 1m21s
CI (SIAX Cloud) / quality (push) Successful in 1m41s
2026-09-15 03:17:49 +00:00
admin dd28b52e49 Merge branch 'main' into renovate/autoprefixer-10.x-lockfile
masterplan-lock / check (pull_request) Successful in 4s
CI (SIAX Cloud) / security (pull_request) Successful in 14s
Security Scan (SIAX Cloud) / security (push) Successful in 13s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 13s
CI (SIAX Cloud) / integration (pull_request) Successful in 25s
CI (SIAX Cloud) / integration (push) Successful in 27s
CI (SIAX Cloud) / quality (push) Successful in 35s
CI (SIAX Cloud) / security (push) Successful in 45s
masterplan-lock / check (push) Successful in 45s
CI (SIAX Cloud) / quality (pull_request) Successful in 1m31s
2026-09-15 03:17:38 +00:00
admin 570352eb80 Merge pull request 'chore(deps): update dependency @types/react-dom to v19.2.7' (#61) from renovate/react-monorepo into main
masterplan-lock / check (push) Successful in 3s
CI (SIAX Cloud) / security (push) Successful in 13s
Security Scan (SIAX Cloud) / security (push) Successful in 13s
CI (SIAX Cloud) / integration (push) Successful in 25s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Successful in 1m7s
Deploy to Coolify / deploy (push) Successful in 1m11s
CI (SIAX Cloud) / quality (push) Successful in 1m40s
2026-09-15 03:16:47 +00:00
Renovate d8835d6e21 chore(deps): update dependency postcss to v8.5.28
renovate/stability-days Updates have met minimum release age requirement
masterplan-lock / check (push) Successful in 5s
masterplan-lock / check (pull_request) Successful in 3s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 21s
CI (SIAX Cloud) / security (push) Successful in 27s
CI (SIAX Cloud) / security (pull_request) Successful in 27s
CI (SIAX Cloud) / integration (push) Successful in 38s
CI (SIAX Cloud) / integration (pull_request) Successful in 39s
CI (SIAX Cloud) / quality (pull_request) Successful in 1m2s
CI (SIAX Cloud) / quality (push) Successful in 1m6s
Security Scan (SIAX Cloud) / security (push) Successful in 1m40s
2026-09-15 03:01:21 +00:00
Renovate 08b057f08e chore(deps): update dependency autoprefixer to v10.5.5
renovate/stability-days Updates have met minimum release age requirement
masterplan-lock / check (pull_request) Successful in 5s
CI (SIAX Cloud) / security (push) Successful in 20s
Security Scan (SIAX Cloud) / security (push) Successful in 21s
CI (SIAX Cloud) / security (pull_request) Successful in 23s
CI (SIAX Cloud) / integration (pull_request) Successful in 25s
CI (SIAX Cloud) / integration (push) Successful in 34s
CI (SIAX Cloud) / quality (pull_request) Successful in 40s
masterplan-lock / check (push) Successful in 1m6s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 1m11s
CI (SIAX Cloud) / quality (push) Successful in 1m44s
2026-09-15 03:01:15 +00:00
Renovate 53e2d39ce7 chore(deps): update dependency @types/react-dom to v19.2.7
renovate/stability-days Updates have met minimum release age requirement
masterplan-lock / check (pull_request) Successful in 3s
masterplan-lock / check (push) Successful in 4s
CI (SIAX Cloud) / security (pull_request) Successful in 13s
CI (SIAX Cloud) / security (push) Successful in 13s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 14s
Security Scan (SIAX Cloud) / security (push) Successful in 19s
CI (SIAX Cloud) / quality (push) Successful in 1m0s
CI (SIAX Cloud) / integration (push) Failing after 1m25s
CI (SIAX Cloud) / quality (pull_request) Successful in 1m26s
CI (SIAX Cloud) / integration (pull_request) Successful in 1m37s
2026-09-15 03:01:09 +00:00
siax-ci 92edfe668c chore(release-chain): evidence for sha-90ca9d6ec08b [skip ci] 2026-09-15 02:56:55 +00:00
admin 90ca9d6ec0 ci: re-trigger release+cd efter gate-retry-fixen (PR#60 mergad) — forväntan: signatur-fast-racet overlevs av retryen, cosign-verify GRÖN, Coolify-redeploy authoriserad av verifierad digest
masterplan-lock / check (push) Successful in 3s
CI (SIAX Cloud) / security (push) Successful in 13s
CI (SIAX Cloud) / integration (push) Successful in 26s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Successful in 27s
Security Scan (SIAX Cloud) / security (push) Successful in 29s
CI (SIAX Cloud) / quality (push) Successful in 33s
Deploy to Coolify / deploy (push) Successful in 41s
2026-09-15 04:56:26 +02:00
admin 3ad992961d Merge pull request 'fix(cd): signed-artifact-gate får retry på "no signatures found" (sign-racet mätt live)' (#60) from fix/cd-gate-verify-retry into main
masterplan-lock / check (push) Successful in 4s
CI (SIAX Cloud) / quality (push) Successful in 32s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Failing after 46s
CI (SIAX Cloud) / security (push) Successful in 49s
Security Scan (SIAX Cloud) / security (push) Successful in 48s
CI (SIAX Cloud) / integration (push) Successful in 55s
Deploy to Coolify / deploy (push) Successful in 56s
2026-09-15 02:55:41 +00:00
admin 5669a0e9e7 fix(cd): gate får retry på 'no signatures found' — 8-sekunders-racet mellan release.yml:s push och cosign-sign mät live 2026-09-15 (pull 02:36:45, verify-fail 02:37:03, sign fast 02:37:11); hård fail kvar för äkta verify-fel
masterplan-lock / check (push) Successful in 5s
Security Scan (SIAX Cloud) / security (push) Successful in 14s
CI (SIAX Cloud) / security (push) Successful in 15s
CI (SIAX Cloud) / integration (push) Successful in 25s
CI (SIAX Cloud) / quality (push) Successful in 34s
masterplan-lock / check (pull_request) Successful in 7s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 15s
CI (SIAX Cloud) / security (pull_request) Successful in 24s
CI (SIAX Cloud) / integration (pull_request) Successful in 25s
CI (SIAX Cloud) / quality (pull_request) Successful in 35s
2026-09-15 04:50:53 +02:00
siax-ci 8de7e379e0 chore(release-chain): evidence for sha-2265dbb9a7cf [skip ci] 2026-09-15 02:37:09 +00:00
admin 2265dbb9a7 ci(release-chain): re-trigger #2 — REGISTRY/SIAX_CI_TOKEN tillbaka på admin-identitet (siax-bots ci-approvers-team har permission none -> 401 pa registry-push; dedikerad registry-user = rotationsobjekt) + push-whitelist klar
masterplan-lock / check (push) Successful in 3s
CI (SIAX Cloud) / security (push) Successful in 14s
Security Scan (SIAX Cloud) / security (push) Successful in 13s
CI (SIAX Cloud) / integration (push) Successful in 25s
Deploy to Coolify / deploy (push) Failing after 26s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Successful in 31s
CI (SIAX Cloud) / quality (push) Successful in 35s
2026-09-15 04:36:37 +02:00
admin 745d22437c ci(release-chain): re-trigger efter sekretesfix (SIAX_CI_TOKEN/REGISTRY -> siax-bot; push-whitelist admin+ci-approvers) — förra runen: steg 0-11 grön (bygg/push/SBOM/cosign-sign+verify), endast evidence-push nekad av protection
masterplan-lock / check (push) Successful in 4s
Security Scan (SIAX Cloud) / security (push) Successful in 12s
CI (SIAX Cloud) / security (push) Successful in 14s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Failing after 40s
CI (SIAX Cloud) / integration (push) Successful in 44s
CI (SIAX Cloud) / quality (push) Successful in 1m27s
Deploy to Coolify / deploy (push) Failing after 10m2s
2026-09-15 04:21:37 +02:00
admin 00e69518de Merge branch 'main' of https://git.siax.io/sax3l/0pt 2026-09-15 04:21:37 +02:00
admin b1311678ac Merge pull request 'feat(release-chain): bygg→push→SBOM→cosign-sign→verify + signed-artifact-gate i cd.yml (kl0ud/st0re-mönstret)' (#59) from fix/wire-signed-digest-to-deploy into main
Deploy to Coolify / deploy (push) Failing after 55s
masterplan-lock / check (push) Successful in 4s
CI (SIAX Cloud) / security (push) Successful in 15s
Security Scan (SIAX Cloud) / security (push) Successful in 14s
CI (SIAX Cloud) / quality (push) Successful in 33s
Release chain (P007 pattern) / Build, push, SBOM, sign, record evidence (push) Failing after 59s
CI (SIAX Cloud) / integration (push) Successful in 2m18s
2026-09-15 02:05:11 +00:00
admin 2ea63f46d1 Merge branch 'main' into fix/wire-signed-digest-to-deploy
masterplan-lock / check (push) Successful in 4s
masterplan-lock / check (pull_request) Successful in 4s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 13s
CI (SIAX Cloud) / security (pull_request) Successful in 15s
CI (SIAX Cloud) / integration (push) Successful in 25s
CI (SIAX Cloud) / quality (push) Successful in 34s
CI (SIAX Cloud) / quality (pull_request) Successful in 36s
CI (SIAX Cloud) / security (push) Successful in 52s
Security Scan (SIAX Cloud) / security (push) Successful in 51s
CI (SIAX Cloud) / integration (pull_request) Successful in 1m26s
2026-09-15 02:01:42 +00:00
admin c7b429e999 Merge release-chain (från fix/wire-signed-digest-to-deploy): release.yml (bygg→push→SBOM→cosign-sign→verify→evidence-commit) + signed-artifact-gate i cd.yml + cosign.pub (nytt nyckelpar 2026-09-15; private i COSIGN_PRIVATE_KEY + Infisical /0pt/) 2026-09-15 03:58:10 +02:00
admin a403424f47 fix(release-chain): cosign.pub = nyckelparet som sätts i repo-secrets (genererat 2026-09-15; det offline-genererade paret från 09-14 saknas i den här sessionen — nytt par, private-del går endast till repo-secret COSIGN_PRIVATE_KEY + Infisical)
masterplan-lock / check (push) Successful in 5s
Security Scan (SIAX Cloud) / security (push) Successful in 13s
CI (SIAX Cloud) / security (push) Successful in 14s
CI (SIAX Cloud) / integration (push) Successful in 1m6s
CI (SIAX Cloud) / quality (push) Successful in 1m27s
masterplan-lock / check (pull_request) Successful in 4s
CI (SIAX Cloud) / security (pull_request) Successful in 12s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 14s
CI (SIAX Cloud) / quality (pull_request) Successful in 34s
CI (SIAX Cloud) / integration (pull_request) Successful in 51s
2026-09-15 03:55:59 +02:00
admin d637f41669 Merge PR #58 (engine: fail-closed X-Internal-Token-gate + commit-kedja i services/api)
masterplan-lock / check (push) Successful in 4s
CI (SIAX Cloud) / security (push) Successful in 14s
Deploy to Coolify / deploy (push) Successful in 19s
CI (SIAX Cloud) / integration (push) Successful in 25s
Security Scan (SIAX Cloud) / security (push) Successful in 44s
CI (SIAX Cloud) / quality (push) Successful in 1m38s
2026-09-15 03:45:28 +02:00
admin ff11216813 feat(engine): fail-closed X-Internal-Token-gate + commit-kedja (GIT_SHA) i services/api
masterplan-lock / check (push) Successful in 3s
masterplan-lock / check (pull_request) Successful in 10s
Security Scan (SIAX Cloud) / security (push) Successful in 14s
CI (SIAX Cloud) / security (push) Successful in 17s
CI (SIAX Cloud) / security (pull_request) Successful in 17s
CI (SIAX Cloud) / integration (push) Successful in 25s
CI (SIAX Cloud) / quality (push) Successful in 35s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 40s
CI (SIAX Cloud) / integration (pull_request) Successful in 49s
CI (SIAX Cloud) / quality (pull_request) Successful in 56s
- X-Internal-Token skickades av edgen men verifierades ALDRIG — gate som
  raw-ASGI-middleware: INTERNAL_TOKEN satt => alla routes utom /health kräver
  exakt token, 401 (constant-time) annars. Ospecificerad token = inert (dev).
- Dockerfile: ARG GIT_SHA + OCI-label + /health.reporting revision
- compose var redan skriven för INTERNAL_TOKEN — motorn hade bara aldrig
  deployats med den
- tester: tests/test_internal_token_gate.py (3: off/public/401-pass) — hela
  services/api-sviten 62 passed, 2 skipped (dokumenterade known-gaps), 0 fail
2026-09-15 03:38:43 +02:00
admin 201653a8e9 Merge PR #57 (operational-state evidence 2026-09-15)
Deploy to Coolify / deploy (push) Successful in 2s
masterplan-lock / check (push) Successful in 4s
CI (SIAX Cloud) / security (push) Successful in 13s
Security Scan (SIAX Cloud) / security (push) Successful in 16s
CI (SIAX Cloud) / integration (push) Successful in 26s
CI (SIAX Cloud) / quality (push) Successful in 56s
2026-09-15 03:17:10 +02:00
admin 31671beb46 docs(evidence): färska prober 2026-09-15 — runtime healthy i SIAX Cloud (health ok/ready 200/headers live, edge-DB 60 tabeller), 0pt.app fortfarande Vercel 402 (DNS-cutover = Simon-punkt); operationalState förblir ärligt 'down'
masterplan-lock / check (pull_request) Successful in 4s
masterplan-lock / check (push) Successful in 9s
CI (SIAX Cloud) / security (push) Successful in 15s
CI (SIAX Cloud) / security (pull_request) Successful in 17s
Security Scan (SIAX Cloud) / security (push) Successful in 18s
CI (SIAX Cloud) / integration (push) Successful in 26s
CI (SIAX Cloud) / quality (push) Successful in 35s
CI (SIAX Cloud) / quality (pull_request) Successful in 34s
CI (SIAX Cloud) / integration (pull_request) Successful in 48s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 40s
2026-09-15 03:13:28 +02:00
admin 59018443de Merge PR #56 (prod-merge-pass): PII-Gate GDPR-guardrail + realinfra-migration-test + security headers & repo-honesty doctor (omsluter PR #44)
Deploy to Coolify / deploy (push) Successful in 1s
masterplan-lock / check (push) Successful in 3s
CI (SIAX Cloud) / security (push) Successful in 13s
Security Scan (SIAX Cloud) / security (push) Successful in 12s
CI (SIAX Cloud) / quality (push) Successful in 38s
CI (SIAX Cloud) / integration (push) Successful in 2m19s
2026-09-15 02:50:13 +02:00
Simon AxelssonandClaude Opus 5 8ebc90ffa3 fix(security,repo-honesty): real security headers + a doctor that checks truth, not presence
masterplan-lock / check (pull_request) Successful in 4s
masterplan-lock / check (push) Successful in 7s
CI (SIAX Cloud) / security (pull_request) Successful in 17s
CI (SIAX Cloud) / security (push) Successful in 18s
CI (SIAX Cloud) / quality (push) Successful in 39s
CI (SIAX Cloud) / integration (pull_request) Successful in 41s
CI (SIAX Cloud) / integration (push) Successful in 44s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 1m37s
Security Scan (SIAX Cloud) / security (push) Successful in 1m35s
CI (SIAX Cloud) / quality (pull_request) Successful in 3m4s
Two defects of the same kind: the repo asserted things about itself that were
not true, and nothing in it could tell.

A. CHANGELOG.md claimed CSP/HSTS/X-Frame-Options since 2026-08. `main`
   contained none of it -- a repo-wide grep for
   `content-security-policy|strict-transport-security|x-frame-options` matched
   exactly one file, CHANGELOG.md itself. The only header on 0pt.app was
   Vercel's own HSTS default, which does not survive the move to
   Coolify/Traefik that siax.config.json and .gitea/workflows/cd.yml are
   already pointed at.

   - next.config.mjs: `headers()` on `/(.*)` with CSP (frame-ancestors 'none',
     base-uri 'self', object-src 'none', form-action 'self'), HSTS,
     X-Frame-Options DENY, X-Content-Type-Options, Referrer-Policy,
     Permissions-Policy; plus poweredByHeader: false. Same idiom as
     sax3l/siax-io's next.config.mjs.
   - Carve-outs re-derived against THIS tree, not inherited: the stale
     `ci/security-headers-and-scanning` branch (8d2ff73, 142 commits behind)
     carried a `form-action https://checkout.stripe.com` allowance justified
     by a redirect that is actually `window.location.href`, which form-action
     does not govern -- dropped rather than kept as decorative permission.
     frame-src is derived from NOCODB_BASE_URL/METABASE_SITE_URL, the same env
     the components/embed.tsx iframe is configured from, so wiring that
     component up cannot be silently blanked by this header (the failure
     sax3l/siax-io recorded as SIO-013). 'unsafe-eval' is dev-only.
   - tests/security/security-headers.test.ts: blocking regression gate inside
     `pnpm run test`, i.e. the required "CI (SIAX Cloud) / quality" context.
     Asserts against expectations written out in the test, not imported from
     the config. Proven to fail: removing X-Frame-Options -> `pnpm run test`
     exits 1; weakening frame-ancestors to 'self' -> exits 1.

B. scripts/siax-doctor.mjs validated that siax.repo.json fields were PRESENT,
   never what they said. Measured on this tree: operationalState "running"
   (false) and "down" (true) both gave 40/40, exit 0, byte-identical output.

   - Value checks (enums, git.siax.io const, fleet node pattern, bare-hostname
     form), cross-file consistency (declared prod hostnames must appear in
     this repo's own siax.config.json / contracts/openapi.yaml, and vice
     versa), and GOV-06 substantiation: operationalState must be backed by a
     dated probe record in evidence/operational-state.json that agrees with
     it. Liveness is not knowable offline; whether a liveness CLAIM is backed
     is. Offline, deterministic, no network -- CI can never go red for want of
     an internet connection.
   - `--live` (opt-in) probes the declared hosts for real and checks the
     headers on the wire; `--write-evidence` refreshes the record. Not wired
     into CI on purpose.
   - tests/repo/siax-doctor.test.ts runs the doctor inside `pnpm run test` and
     asserts the negative cases against fixture trees (SIAX_DOCTOR_ROOT), so
     the "cannot fail" defect cannot come back.

C. CHANGELOG.md is now true. The header claim stands; the four claims it was
   bundled with (Trivy --exit-code 1, gitleaks, SHA-pinned actions, SBOM +
   license artifacts) are still false on main and are listed as not
   implemented instead of left asserted. All four live in .gitea/workflows/**,
   a protected path on this repo, so they need an authorised workflow change.

Nothing under .gitea/workflows/** or .gitignore is touched.

Verified: pnpm run typecheck exit 0; pnpm run test exit 0 (74 files / 965
tests passed, up from 72/945); pnpm run build exit 0 and the built
.next/routes-manifest.json carries all six headers; node scripts/siax-doctor.mjs
55/55 exit 0; --live 57/57 exit 0. eslint on the new files exit 0 (repo lint is
advisory and its 17 pre-existing problems are unchanged).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 02:43:32 +02:00
adminandClaude Sonnet 5 d41f30535b fix(test): replay full migration chain in source-registry realinfra test
tests/p0/source-registry-postgres.realinfra.test.ts only applied
sql/002_source_registry.sql before running assertions. sql/007_ingestion_plane.sql
later added opt_sources.owner_id, and src/repositories/postgres-source-repository.ts's
INSERT has named that column ever since -- but nothing caught the drift because
SOURCE_REGISTRY_TEST_DATABASE_URL is never set in CI (.gitea/workflows/ci.yml has no
job that sets it), so this suite has silently skipped in every CI run.

Verified against a real disposable Postgres 16 container: before this fix, all 7
tests failed with `column "owner_id" of relation "opt_sources" does not exist`;
after replaying every sql/*.sql file in order (same pattern already used by
tests/analytics/analytics-domain-postgres.realinfra.test.ts), all 7 pass.

Found while auditing 0pt's Analytics/BI layer (MetricFlow/Cube/ClickHouse/
Trino/DuckDB) and standing up real Postgres/ClickHouse containers to verify
those claims for real; this bug is adjacent (source registry, not analytics)
but was directly encountered and is a small, safe, test-only fix.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 02:40:52 +02:00
admin 17bd1b40a0 feat(0pt): record legitimate-interest stance — B2B contacts, company-linked only
Recorded decision (Simon 2026-08-31): personal data may be stored under
legitimate interest ONLY as business contacts bound to a company/org entity.
Gate enforces it: legitimate_interest requires purpose=business_contact and
entity_linked_only=true; recordStored() requires entity_id (orgnr/rgs/LEI,
hashed) and refuses person-only rows. +1 test; suite 167 pass | 1 skip;
typecheck clean.
2026-09-15 02:40:52 +02:00
admin 12080fc517 feat(0pt): PII-Gate GDPR-guardrail for personal-data sources (fail-closed)
PiiGateService makes any future personal-data source (ratsit.se and other
directory domains) technically GDPR-OK before the first byte is stored:
- recorded legal basis (art. 6) with basis_ref evidence, no policy => fail-closed
- data minimisation via field allowlist (art. 5(1)(c))
- storage limitation + enforceRetention purge (art. 5(1)(e))
- sha256-only identity keys + log redaction (art. 25/32)
- accessStatement / erase subject-rights surfaces (art. 15/17)
- robots/rate confirmation required for web+api sources; no stealth/bypass
- audit trail via AUD0 at risk L3 (0pt.pii_*)
- gate enabled by default in SourceQueryService

10 new tests; full suite 166 pass | 1 skip; typecheck (blocking gate) clean.
2026-09-15 02:40:52 +02:00
admin 9cf797b5c8 Merge pull request 'feat(toolchain): 0pt-pilot — mise task-kontrakt (node/pnpm pinat) + lefthook + template-pin + dokumentation (W3, pilot 2/3)' (#55) from feat/selected-toolchain-pilot into main
Deploy to Coolify / deploy (push) Successful in 2s
masterplan-lock / check (push) Successful in 8s
CI (SIAX Cloud) / security (push) Successful in 14s
Security Scan (SIAX Cloud) / security (push) Successful in 28s
CI (SIAX Cloud) / quality (push) Successful in 34s
CI (SIAX Cloud) / integration (push) Successful in 41s
2026-09-14 21:03:46 +00:00
admin 61b593b4c0 fix(toolchain): check = typecheck (lint ar CI-advisory: legacy-noise) — lint som separat task, dokumenterat
masterplan-lock / check (push) Successful in 4s
masterplan-lock / check (pull_request) Successful in 4s
CI (SIAX Cloud) / security (pull_request) Successful in 14s
CI (SIAX Cloud) / quality (push) Successful in 32s
CI (SIAX Cloud) / integration (pull_request) Successful in 26s
CI (SIAX Cloud) / quality (pull_request) Successful in 35s
CI (SIAX Cloud) / security (push) Successful in 45s
Security Scan (SIAX Cloud) / security (push) Successful in 45s
CI (SIAX Cloud) / integration (push) Failing after 45s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 1m13s
2026-09-14 23:01:15 +02:00
admin 45b2d65d42 feat(toolchain): 0pt-pilot — mise task-kontrakt (node 22.13.0/pnpm 9.15.9) + lefthook + template-pin + README/AGENTS (W3, pilot 2/3)
masterplan-lock / check (push) Successful in 4s
CI (SIAX Cloud) / security (push) Successful in 14s
Security Scan (SIAX Cloud) / security (push) Successful in 23s
CI (SIAX Cloud) / integration (push) Successful in 25s
CI (SIAX Cloud) / quality (push) Successful in 34s
2026-09-14 22:59:02 +02:00
adminandClaude Sonnet 5 5a0429d46b fix(ci): add SBOM+sign release chain and gate Coolify redeploy on it
masterplan-lock / check (push) Successful in 4s
CI (SIAX Cloud) / security (push) Successful in 13s
CI (SIAX Cloud) / quality (push) Successful in 32s
Security Scan (SIAX Cloud) / security (push) Successful in 52s
CI (SIAX Cloud) / integration (push) Successful in 1m35s
0pt had no SBOM/sign/digest chain at all (re-confirmed live before this
change: no cosign/syft/sbom hit anywhere under .gitea/workflows/, only doc
mentions in CHANGELOG.md/docs/architecture/ARCHITECTURE.md). Applies the
same two-part pattern already proven on sax3l/cl0ud and sax3l/st0re
(fix/wire-signed-digest-to-deploy, 2026-09-14):

1. .gitea/workflows/release.yml (new): builds the image, pushes it to
   git.cloud.siax.io/sax3l/0pt:sha-<12>, SBOMs it (syft), signs it (cosign,
   key-based), verifies the signature in the same run, and commits
   source-bundle/production-evidence records back to the repo.
2. .gitea/workflows/cd.yml: the `deploy` job now polls the registry for
   this exact commit's release-chain image and cosign-verifies it (against
   the committed cosign.pub) before calling Coolify's deploy endpoint --
   fails closed (10 min timeout) if release.yml never produced a verifiable
   artifact for this sha. Added AFTER the existing guard step, which still
   fails closed first on 0pt's real, pre-existing blocker: no Coolify
   Application is provisioned for 0pt yet (COOLIFY_APP_ID is a literal
   placeholder). This gate is wired ahead of that so it's already in place
   the day the app is provisioned, instead of a second follow-up change.

Honest limitation carried over from cl0ud/st0re/h0st: once provisioned,
0pt's Coolify Application is expected to use the `dockerfile` build pack
(per siax.config.json), so Coolify would still perform its own independent
docker build rather than pulling the signed image, and /api/v1/deploy has
no digest parameter to pin against -- true digest-pinning needs a
production Coolify resource-type decision, out of CI-YAML scope. This gate
proves a signed, verified build of the exact commit exists before
authorizing any deploy call; it does not prove byte-identical output from
Coolify's own rebuild.

cosign.pub is a fresh, 0pt-specific keypair generated offline for this
change. NOT YET SET on sax3l/0pt (release.yml/cd.yml's gate will fail
closed until present): REGISTRY_USER, REGISTRY_TOKEN, COSIGN_PRIVATE_KEY,
COSIGN_PASSWORD, SIAX_CI_TOKEN repo secrets.

Validated without live Coolify/registry access: YAML-parsed all 2 files,
bash -n syntax-checked all 19 embedded run: blocks, and dry-ran the actual
verification logic -- the RepoDigests filter and bounded poll-retry loop
against mocked scenarios, plus a real cosign sign+verify round-trip
(offline signing-config, local throwaway registry container) proving the
gate's cosign verify command genuinely passes on the correct key/digest and
fails closed on a wrong key and on an unsigned image.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 11:45:53 +02:00
admin c0457343b8 Merge pull request 'fix(security): add SSRF guard to Fabric/OneLake adapter's sqlEndpoint' (#54) from fix/fabric-onelake-ssrf-guard into main
Deploy to Coolify / deploy (push) Successful in 2s
masterplan-lock / check (push) Successful in 3s
Security Scan (SIAX Cloud) / security (push) Successful in 15s
CI (SIAX Cloud) / security (push) Successful in 16s
CI (SIAX Cloud) / quality (push) Successful in 36s
CI (SIAX Cloud) / integration (push) Successful in 47s
2026-09-13 15:39:20 +00:00
adminandClaude Sonnet 5 4caf122129 fix(security): add SSRF guard to Fabric/OneLake adapter's sqlEndpoint
masterplan-lock / check (push) Successful in 7s
CI (SIAX Cloud) / security (push) Successful in 19s
Security Scan (SIAX Cloud) / security (push) Successful in 27s
CI (SIAX Cloud) / quality (push) Successful in 33s
CI (SIAX Cloud) / integration (push) Successful in 46s
masterplan-lock / check (pull_request) Successful in 4s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 16s
CI (SIAX Cloud) / integration (pull_request) Successful in 1m11s
CI (SIAX Cloud) / security (pull_request) Successful in 17s
CI (SIAX Cloud) / quality (pull_request) Successful in 35s
connection_config.sqlEndpoint on POST /api/0pt/sources/{sourceId}/query
was passed straight from the request body to the mssql TDS driver as the
outbound connection target, with only its http(s):// scheme stripped —
no hostname allowlist or private/loopback/link-local/cloud-metadata
guard. This route already requires a Zitadel bearer token + tenant match
(P014 tenant guard), so this was not anonymously exploitable, but it is
the exact SSRF shape found and exploited-in-principle elsewhere in this
estate tonight (press0), so it's worth closing as defense-in-depth.

Adds src/lib/security/ssrf-guard.ts: resolves the endpoint's hostname
and rejects any address in a private/loopback/link-local/cloud-metadata/
unspecified range (RFC1918, 127.0.0.0/8, 169.254.0.0/16 incl. the
169.254.169.254 metadata address, ::1, fc00::/7, fe80::/10, IPv4-mapped
IPv6), failing closed on DNS resolution errors. The range-check logic is
ported 1:1 from press0's src/lib/security/ssrf-guard.ts built the same
night for the same bug class against a fetch()-based URL there; this
module's surface differs because sqlEndpoint is a bare host[:port], not
a fetchable URL. The DNS lookup is injectable (mirrors this adapter's
existing fetchImpl pattern) so tests are hermetic.

FabricOneLakeAdapter.getPool() now calls the guard before loadDriver()/
getToken()/opening the TDS pool, so a blocked target never reaches a
real outbound connection attempt or spends an AAD token exchange.

Tests: new tests/p0/fabric-onelake-ssrf-guard.test.ts unit-tests the
guard module directly (range boundaries, IPv4-mapped-IPv6 bypass
attempt, fail-closed on DNS failure/empty answer). New adapter-level
tests in tests/p0/fabric-onelake-adapter.test.ts prove (a) a
private-IP-resolving sqlEndpoint is rejected before fetch/connect is
ever called, (b) a literal loopback sqlEndpoint is rejected the same
way, and (c) a normal external Fabric hostname still passes the guard
and completes the query — the guard doesn't false-block legitimate
targets. Existing adapter tests are updated to inject a deterministic
DNS resolver so they stay hermetic instead of depending on real DNS.

Full suite: 997 passed, 0 failed, 184 skipped (self-skipping realinfra
tests with no live backend this run). typecheck and lint clean on all
touched files.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 02:18:23 +02:00
admin 4a4ec6a575 Merge pull request 'fix(prod): close legacy storage fallbacks in orders/subscriptions/blobs' (#51) from fix/production-storage-fallbacks into main
Deploy to Coolify / deploy (push) Failing after 2s
masterplan-lock / check (push) Successful in 6s
CI (SIAX Cloud) / security (push) Successful in 14s
CI (SIAX Cloud) / integration (push) Successful in 25s
Security Scan (SIAX Cloud) / security (push) Successful in 30s
CI (SIAX Cloud) / quality (push) Successful in 37s
2026-09-10 22:59:06 +00:00