2 Commits
Author SHA1 Message Date
mathiasandClaude Opus 4.8 6a3ea77af5 docs: correct G3 (hollow CI runs), record live deployment
CD / Detect unsubstituted template (push) Successful in 1s
CD / Lint / Test / Vet (push) Successful in 4s
CD / Build & Import (push) Successful in 12s
CD / Deploy via GitOps (push) Has been skipped
runs 16-18 were fake-green (template guard skipped all jobs, template-go-web#9);
CI genuinely green from run 19. cad-atlas now live on koala k3s via Flux
(infra k3s/apps/cad-atlas). CI deploy-job auto-deploy tracked in #2.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 16:09:18 +02:00
mathiasandClaude Opus 4.8 68adfe7e01 fix(ci): correct CD guard so real jobs run (F8)
CD / Detect unsubstituted template (push) Successful in 0s
CD / Lint / Test / Vet (push) Successful in 7s
CD / Build & Import (push) Successful in 12s
CD / Deploy via GitOps (push) Failing after 0s
The guard grepped for the substituted module path, which always matches a
generated repo's own go.mod → is_template=true → check/build/deploy all
skipped (fake-green CI, nothing ever built/deployed). Detect leftover
__PLACEHOLDER__ tokens instead — verified: substituted repo runs CI, raw
template skips. Template-wide fix: template-go-web#9.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 16:01:32 +02:00
2 changed files with 12 additions and 2 deletions
+5 -1
View File
@@ -19,8 +19,12 @@ jobs:
steps:
- uses: actions/checkout@v4
- id: detect
# Detect an UNSUBSTITUTED template by the leftover __PLACEHOLDER__ tokens.
# Must not grep for the substituted module path — that pattern is itself
# substituted at generate time, so it would match every real child repo's
# own go.mod and skip all CI forever (template-go-web bug, see repo #).
run: |
if grep -q 'git.d-ma.be/mathias/cad-atlas' go.mod; then
if grep -qE '__[A-Z_]+__' go.mod; then
echo "is_template=true" >> "$GITHUB_OUTPUT"
else
echo "is_template=false" >> "$GITHUB_OUTPUT"
+7 -1
View File
@@ -12,7 +12,7 @@ Oath holds. Methodology: brain `wiki/homelab/decisions/inception-sprint-and-oath
|---|--------|--------|----------|
| G1 | Repo born from template on Gitea, dispatch-eligible | ✅ | `create_project_from_template`, `.dispatch-allow`, dispatch-allowlisted |
| G2 | Self-contained context + brain deep-links + external refs | ✅ | `.context/PROJECT.md`, `README.md` |
| G3 | Green CI on main: build · vet · lint · test (TDD) | ✅ | CI runs 1617 green; `internal/web/handler_test.go` |
| G3 | Green CI on main: build · vet · lint · test (TDD) | ✅ | Genuinely green from run 19 (commit 68adfe7). NOTE: runs 1618 were *hollow* — a template guard bug (template-go-web#9) skipped every job; fixed here. `internal/web/handler_test.go` |
| G4 | Genesis learning persisted to brain, linked from repo | ✅ | `wiki/homelab/decisions/cad-atlas-audit-chain-is-viz-data.md` |
| G5 | Discovered findings filed as tracker issues | ✅ | template-go-web#8, local-dev#20 |
| G6 | SemVer tag marks the milestone (closing act) | ✅ | `v0.1.0` |
@@ -26,6 +26,12 @@ Oath holds. Methodology: brain `wiki/homelab/decisions/inception-sprint-and-oath
| S2 | Oath covered in the viz (stages 03 + 06) | ✅ | var-go Oath nodes in the atlas |
| S3 | `var-go/oath` enforces cad-atlas's own PRs | ⏸ **deferred → #1** | var-go v1 candidate is a toy self-test; module not cross-repo consumable. See honesty rule. |
## Deployment
Live on koala k3s: namespace `cad-atlas`, 1 replica, served via ClusterIP `cad-atlas:80 → :8080`
(manifests in `mathias/infra` `k3s/apps/cad-atlas/`, reconciled by Flux). First deploy was
GitOps-direct; the CI `deploy` job auto-deploys future pushes once `INFRA_DEPLOY_KEY` is set (#2).
## The honesty rule
A clause blocked by an external dependency is **descoped and tracked, never marked satisfied**