Skip to content

Build Journal

Chronological log of every commit on main since the project started. The CI column reports lane outcomes: ✅ all-pass, ⚠️ mixed, ❌ all-fail, ⋯ no runs found. Each row links to the commit on GitHub.

When Author Commit CI Message
Craig Smith 6734c4b docs(prd): record pass 6 timestamp on 06-contribution-governance
Craig Smith da4069b docs(prd): Information Architect critic pass on 06-contribution-governance
Craig Smith f3140da docs(prd): P1 staff-engineer critic pass on 07-cluster-substrate
Craig Smith eca50c5 docs(prd): P2 sre critic pass on 07-cluster-substrate
Craig Smith 74a262a docs(prd): P3 security critic pass on 07-cluster-substrate
Craig Smith 6ff8fa4 docs(prd): P4 codex pass on 07-cluster-substrate
Craig Smith a96d559 docs(prd): bless 07-cluster-substrate.md
Craig Smith 34614cb docs(prd): UI/UX & Brand critic pass on 07-cluster-substrate
Craig Smith 7674f6c docs(prd): record pass 5 timestamp on 07-cluster-substrate
Craig Smith 0d34aff docs(prd): Technical Writer critic pass on 07-cluster-substrate
Craig Smith 2c266f6 docs(prd): Information Architect critic pass on 07-cluster-substrate
Craig Smith abfd212 docs(prd): record pass 7 timestamp on 07-cluster-substrate
Craig Smith 5a41ce4 docs(prd): P1 staff-engineer critic pass on 08-edge-profile-library
Craig Smith f3d29e5 docs(prd): P2 sre critic pass on 08-edge-profile-library
Craig Smith 334b863 docs(prd): P3 security pass on 08-edge-profile-library.md
Craig Smith 46148ad docs: PRD critique P4 codex pass on 08-edge-profile-library.md
Craig Smith ee208d7 docs(prd): bless 08-edge-profile-library.md
Craig Smith c5b7592 docs(prd): UI/UX & Brand critic pass on 08-edge-profile-library
Craig Smith f1244ab docs(prd): record pass 5 timestamp on 08-edge-profile-library
Craig Smith 88a4e12 docs(prd): Technical Writer critic pass on 08-edge-profile-library
Craig Smith e906774 docs(prd): record pass 6 timestamp on 08-edge-profile-library
Craig Smith 37710cd docs(prd): Information Architect critic pass on 08-edge-profile-library
Craig Smith c2f2570 docs(prd): P1 staff-engineer critic pass on 09-killer-feature-vmvolumemigration
Craig Smith a1d002a docs(prd): P2 sre critic pass on 09-killer-feature-vmvolumemigration
Craig Smith 6dc87df docs(prd): P3 security pass on 09-killer-feature-vmvolumemigration
Craig Smith 41df207 docs(prd): P1 staff-engineer critic pass on 10-surface
Craig Smith 8353b2f docs(prd): P2 sre critic pass on 10-surface
Craig Smith 02708b7 docs(prd): P3 security pass on 10-surface
Craig Smith a897c18 docs(prd): P4 codex pass on 09-killer-feature-vmvolumemigration.md
Craig Smith fec488b docs(prd): bless 09-killer-feature-vmvolumemigration.md
Craig Smith bdea13b docs(prd): ui-ux critic pass on 09-killer-feature-vmvolumemigration
Craig Smith c743d78 docs: PRD critique P4 codex pass on 10-surface.md
Craig Smith 842cc4c docs(prd): bless 10-surface.md
Craig Smith d5d2ebb docs(prd): ui-ux critic pass on 10-surface
Craig Smith 62ee4ac docs(prd): P1 staff-engineer critic pass on 11-release.md
Craig Smith efeb7a8 docs(prd): P2 sre critic pass on 11-release.md
Craig Smith c8dd21e docs(prd): P3 security critic pass on 11-release.md
Craig Smith 5701625 docs: PRD critique P4 codex pass on 11-release.md
Craig Smith edb9141 docs(prd): bless 11-release.md
Craig Smith 76aee4c docs(prd): ui-ux critic pass on 11-release
Craig Smith 6519350 chore(ralph): add stall detector + archive foundations state
Craig Smith ddf4473 chore(phase): start killer-feature phase
Craig Smith f284cbe feat(api): declare VMVolumeMigration v1alpha1 CRD (VVM-01)
Craig Smith 13c668b chore(prd): mark VVM-01 complete (CI verified: run 25641236908, attempt 1)
Craig Smith a5b6a17 feat(controllers): scaffold vmvolumemigration package (VVM-02)
Craig Smith 7d4098e chore(progress): CI failed for VVM-02 (run 25642087021, attempt 1)
Craig Smith 73f81aa fix(controllers): clear vmvolumemigration scaffold lint failures (VVM-02)
Craig Smith 93f9639 chore(prd): mark VVM-02 complete (CI verified: run 25642483366, attempt 2)
Craig Smith 59674db feat(api): codify VMVolumeMigration phase contract (VVM-03)
Craig Smith ec28975 chore(pause): killer-feature ralph paused at 2/38 (VVM-01..02 done)
Craig Smith d2f0b91 chore(prd): mark VVM-03 complete (CI verified out-of-band during pause)
Craig Smith 4e1bcd4 feat(controllers): auto-select csi-clone vs dd-copy in Planning (VVM-04)
Craig Smith 217d060 chore(prd): mark VVM-04 complete (CI verified: run 25651877898, attempt 1)
Craig Smith b96f950 feat(controllers): fail dd-copy in Planning when source VM is Running (VVM-05)
Craig Smith b8dd4fb chore(prd): mark VVM-05 complete (CI verified: run 25652578888, attempt 1)
Craig Smith 7078467 feat(controllers): persist strategySelected before side-effecting work (VVM-06)
Craig Smith 2c97ec6 chore(prd): mark VVM-06 complete (CI verified: run 25653344369, attempt 1)
Craig Smith c98c209 feat(controllers): ship encryption-capability probe primitives (VVM-07)
Craig Smith d1b9c65 chore(progress): CI failed for VVM-07 (run 25655096037, attempt 1)
Craig Smith 39ddc8f chore(progress): document VVM-07 wrapper false-positive (iteration 2)
Craig Smith 3dc2e7d chore(prd): mark VVM-07 complete (CI verified: run 25656150162, attempt 2)
Craig Smith 469ba77 feat(controllers): cache encryption-probe results in ConfigMap (VVM-08)
Craig Smith 7013ef1 chore(prd): mark VVM-08 complete (CI verified: run 25658400187, attempt 1)
Craig Smith 9fbe83a feat(controllers): force dd-copy + EncryptionProbeTimeout audit event (VVM-09)
Craig Smith f182f36 chore(prd): mark VVM-09 complete (CI verified: run 25659957426, attempt 1)
Craig Smith 4d6b01a feat(webhook): thinpool-headroom admission gate (VVM-10)
Craig Smith f1ff2f8 chore(prd): mark VVM-10 complete (CI verified: run 25663447287, attempt 1)
Craig Smith f2c5795 feat(controllers): pre-snapshot thinpool gate guard (VVM-11)
Craig Smith 41fa6a0 chore(progress): CI failed for VVM-11 (run 25664552053, attempt 1)
Craig Smith 0d3496a chore(progress): document VVM-11 wrapper false-positive (iteration 2)
Craig Smith e3a5f11 chore(progress): CI failed for VVM-11 (run 25665897109, attempt 2)
Craig Smith 5c439b2 chore(progress): document VVM-11 wrapper false-positive #2 (iteration 3)
Craig Smith c214761 chore(progress): CI failed for VVM-11 (run 25667906848, attempt 3)
Craig Smith 520b89d chore(progress): document VVM-11 wrapper false-positive #3 (iteration 4)
Craig Smith d54d89b chore(progress): CI failed for VVM-11 (run 25669657861, attempt 4)
Craig Smith d9247fa chore(progress): document VVM-11 wrapper false-positive #4 (iteration 5)
Craig Smith 28eb25a chore(progress): CI failed for VVM-11 (run 25671553715, attempt 5)
Craig Smith 164aea0 chore(progress): break VVM-11 wrapper false-positive cycle [skip ci]
Craig Smith a8b990a chore(prd): mark VVM-11 complete (wrapper false-positive recovery)
Craig Smith 7414a5c ci: cap ralph attempts at 3 + raise wrapper CI timeout 30m→90m + add workflow concurrency
Craig Smith a8df988 feat(controllers): csi-clone phase progression (VVM-12)
Craig Smith c6e0f72 chore(prd): mark VVM-12 complete (CI verified: run 25676145390, attempt 1)
Craig Smith b830754 feat(controllers): csi-clone Tier-A idempotency primitives (VVM-13)
Craig Smith 3d88e78 chore(progress): CI failed for VVM-13 (run 25677243075, attempt 2)
Craig Smith 35e411e fix(controllers): apply De Morgan's law to csi-clone idempotency tests (VVM-13)
Craig Smith 7dbab7b chore(prd): mark VVM-13 complete (CI verified: run 25679086244, attempt 3)
Craig Smith 7e27b97 feat(controllers): csi-clone target PVCs use WaitForFirstConsumer binding (VVM-14)
Craig Smith 9b4a3ed chore(progress): CI failed for VVM-14 (run 25681356823, attempt 1)
Craig Smith fcd6361 fix(controllers): hoist repeated SC name literals to test constants (VVM-14)
Craig Smith 5688361 chore(prd): mark VVM-14 complete (CI verified: run 25684411157, attempt 2)
Craig Smith 8792822 feat(controllers): dd-copy phase progression (VVM-15)
Craig Smith 3797b93 chore(prd): mark VVM-15 complete (CI verified: run 25685747243, attempt 1)
Craig Smith 7d2b008 feat(controllers): dd-copy Tier C checkpointing with stall detection (VVM-16)
Craig Smith ac2f2f1 chore(prd): mark VVM-16 complete (CI verified: run 25689822342, attempt 1)
Craig Smith e1a1072 feat(controllers): dd-copy Switching VM-stopped defense-in-depth gate (VVM-17)
Craig Smith 0434353 chore(prd): mark VVM-17 complete (CI verified: run 25690496285, attempt 1)
Craig Smith 0443aa7 feat(controllers): pre-migration snapshot ownership + retention surface (VVM-18)
Craig Smith 2ec66f3 chore(progress): CI failed for VVM-18 (run 25692769937, attempt 1)
Craig Smith 0676d93 fix(controllers): hoist repeated "uid-A" test literal to constant (VVM-18)
Craig Smith ba5032e chore(prd): mark VVM-18 complete (CI verified: run 25696810458, attempt 2)
Craig Smith 8a036dd feat(controllers): post-migration snapshot retention + persistent-failure surface (VVM-19)
Craig Smith 5df90f7 chore(progress): CI failed for VVM-19 (run 25701657918, attempt 1)
Craig Smith 973b066 fix(controllers): clear lint debt for VVM-19 post-migration snapshot
Craig Smith 94eb3c7 chore(progress): CI failed for VVM-19 (run 25704632373, attempt 2)
Craig Smith 3e3c4db ci(ralph): bump wrapper CI watch timeout 90m -> 180m
Craig Smith 3d20ecf chore(progress): CI failed for VVM-19 (run 25708496855, attempt 3)
Craig Smith 51d0a41 chore(progress): ralph self-paused — VVM-19 stuck at 3 attempts
Craig Smith 6d0fa04 ci(ralph): tag wrapper metadata commits with [skip ci]
Craig Smith f06115f chore(prd): mark VVM-19 complete (9/9 CI verified on 51d0a41 after runner unstick) [skip ci]
Craig Smith 8578228 feat(controllers): VVM-20 time-gated source-PVC reclaim with reference checks
Craig Smith 0304fb5 chore(progress): CI failed for VVM-20 (run 25768941970, attempt 1) [skip ci]
Craig Smith 5caa581 fix(controllers): clear VVM-20 lint debt in reclaim test files
Craig Smith b910786 chore(prd): mark VVM-20 complete (CI verified: run 25774046097, attempt 2) [skip ci]
Craig Smith d27c688 feat(controllers): VVM-21 ReclaimDeferred condition on reclaimSourceAfter:never opt-out
Craig Smith 9c62425 chore(prd): mark VVM-21 complete (CI verified: run 25779713875, attempt 1) [skip ci]
Craig Smith cc977a3 feat(controllers): VVM-22 dual-primary StorageClass override resolution
Craig Smith 84fb131 ci: disable setup-go GitHub cache on self-hosted runners
Craig Smith dce99d2 chore(progress): CI failed for VVM-22 (run 25780109341, attempt 1) [skip ci]
Craig Smith fc4445f chore(progress): VVM-22 iter-1 failure was concurrency cancellation [skip ci]
Craig Smith f45d886 chore(prd): mark VVM-22 complete (pre-CI) [skip ci]
Craig Smith e1bb045 feat(controllers): VVM-23 dual-primary handover fence for source virt-launcher
Craig Smith 6c6b427 chore(progress): CI failed for VVM-23 (run 25781305335, attempt 1) [skip ci]
Craig Smith 55dd0af fix(controllers): VVM-23 drop dead sourcePod param on newFenceVMI test helper
Craig Smith d9e8df1 chore(progress): CI failed for VVM-23 (run 25781740182, attempt 2) [skip ci]
Craig Smith 07d30b3 fix(controllers): VVM-23 drop dead migrationName param on newFenceVMI test helper
Craig Smith a715eef chore(prd): mark VVM-23 complete (CI verified: run 25782099467, attempt 3) [skip ci]
Craig Smith ca5e0bc feat(controllers): VVM-24 mutual-exclusion gate for in-flight dual-primary handovers
Craig Smith e925f30 chore(progress): CI failed for VVM-24 (run 25782867240, attempt 1) [skip ci]
Craig Smith 753ee58 chore: filter wrapper CI watch to --event push + mark VVM-24 complete [skip ci]
Craig Smith 4dfe157 chore: gitignore .claude/ (Claude Code session state) [skip ci]
Craig Smith 9b06791 feat(webhook): VVM-25 capability gates for strategy/RWX/dual-primary/block
Craig Smith 4d3d221 docs(progress): correct VVM-25 gate (e) behavior description
Craig Smith c837785 chore(prd): mark VVM-24 complete (pre-CI) [skip ci]
Craig Smith 6d7284c fix(webhook): VVM-25 satisfy goconst + slices.Contains lint passes
Craig Smith e221108 chore(progress): CI failed for VVM-25 (run 25784566115, attempt 1) [skip ci]
Craig Smith 595aaf5 test(webhook): VVM-25 pin advisor-not-consulted contract for dd-copy
Craig Smith a724915 chore(progress): CI failed for VVM-25 (run 25784818156, attempt 1) [skip ci]
Craig Smith 72ff282 test(webhook): VVM-25 lock §10.8 envelope tuple per gate
Craig Smith 8cbedf8 chore(progress): CI failed for VVM-25 (run 25785173131, attempt 2) [skip ci]
Craig Smith 4717870 chore(progress): ralph self-paused — VVM-25 stuck at 3 attempts [skip ci]
Craig Smith ecebcc0 chore(prd): mark VVM-25 complete (CI verified: run 25785431766, attempt 3) [skip ci]
Craig Smith 10af020 feat(webhook): VVM-26 mutual-exclusion gate against conflicting workflows
Craig Smith c7de661 chore(progress): CI failed for VVM-26 (run 25786946043, attempt 1) [skip ci]
Craig Smith fba2014 fix(lint): VVM-26 goconst findings in mutual-exclusion + capability tests
Craig Smith 0de6b06 chore(progress): CI failed for VVM-26 (run 25787115371, attempt 2) [skip ci]
Craig Smith b69cd1a fix(ci): install gh CLI in F-44 Branch Protection Verify workflow
Craig Smith c1a15aa chore(prd): mark VVM-26 complete (CI verified: run 25787847803, attempt 3) [skip ci]
Craig Smith 065968d feat(vmvolumemigration): VVM-27 webhook gate validates vmRef + requester SAR
Craig Smith b6c9c52 chore(progress): CI failed for VVM-27 (run 25789002168, attempt 1) [skip ci]
Craig Smith ec71c5a ✅ 8/8 fix(lint): VVM-27 goconst + revive findings in vmRef SAR gate tests
Craig Smith 88b28cc ✅ 1/1 chore(prd): mark VVM-27 complete (CI verified: run 25790153357, attempt 2) [skip ci]
Craig Smith 968f339 ⚠️ 7/9 feat(vmvolumemigration): VVM-28 emit chained audit events on phase transitions
Craig Smith fe3ec39 chore(progress): CI failed for VVM-28 (run 25790909057, attempt 1) [skip ci]
Craig Smith a3d6921 ✅ 9/9 fix(lint): VVM-28 goconst + unparam findings in audit chain
Craig Smith 38dea77 chore(prd): mark VVM-28 complete (CI verified: run 25791498162, attempt 2) [skip ci]
Craig Smith 3c3ad6f ⚠️ 7/9 feat(vmvolumemigration): VVM-29 Prometheus metric surface
Craig Smith 884b6cd chore(progress): CI failed for VVM-29 (run 25792407446, attempt 1) [skip ci]
Craig Smith fa56cd5 ✅ 9/9 fix(lint): VVM-29 goconst — hoist node="unknown" sentinel to const
Craig Smith da0dae0 chore(prd): mark VVM-29 complete (CI verified: run 25792938865, attempt 2) [skip ci]
Craig Smith 450fd15 ⚠️ 9/11 feat(vmvolumemigration): VVM-30 K8s Events vocabulary + per-CR debouncer
Craig Smith 92d5107 chore(progress): CI failed for VVM-30 (run 25794308339, attempt 1) [skip ci]
Craig Smith 77a2e59 ✅ 9/9 fix(lint): VVM-30 modernize (any, rangeint) + unparam dead-params
Craig Smith 8b06e45 chore(prd): mark VVM-30 complete (CI verified: run 25794566605, attempt 2) [skip ci]
Craig Smith 21cc0ef ⚠️ 7/9 test(vmvolumemigration): VVM-31 csi-clone happy-path integration test on cell-05
Craig Smith 2d89259 chore(progress): CI failed for VVM-31 (run 25795462368, attempt 1) [skip ci]
Craig Smith d769f79 ✅ 9/9 fix(lint): VVM-31 wrap long lines + use slices.Contains in csi-clone test
Craig Smith 44ac67b chore(prd): mark VVM-31 complete (CI verified: run 25796182847, attempt 2) [skip ci]
Craig Smith c95435c ⚠️ 7/9 test(vmvolumemigration): VVM-32 dd-copy happy-path integration test on cell-04
Craig Smith 937f168 chore(progress): CI failed for VVM-32 (run 25796865489, attempt 1) [skip ci]
Craig Smith 21f26fb ✅ 9/9 fix(lint): VVM-32 dedupe dd-copy reconcile-pump helper
Craig Smith 35a2ccd chore(prd): mark VVM-32 complete (CI verified: run 25797410566, attempt 2) [skip ci]
Craig Smith f0ab670 ⚠️ 7/9 test(vmvolumemigration): VVM-33 dd-copy Tier-C resume integration test
Craig Smith 52e5ad1 chore(progress): CI failed for VVM-33 (run 25798324879, attempt 1) [skip ci]
Craig Smith 22f8be3 ✅ 9/9 fix(lint): VVM-33 preallocate objs slice in tier-c resume test
Craig Smith 39fbe88 chore(prd): mark VVM-33 complete (CI verified: run 25798921357, attempt 2) [skip ci]
Craig Smith b5e577e ✅ 9/9 test(vmvolumemigration): VVM-34 thinpool admission gate integration test
Craig Smith 1ae62f7 chore(prd): mark VVM-34 complete (CI verified: run 25799700462, attempt 1) [skip ci]
Craig Smith ee17e26 ✅ 11/11 test(vmvolumemigration): VVM-35 dual-primary fence integration test
Craig Smith 39da0f8 chore(prd): mark VVM-35 complete (CI verified: run 25801214973, attempt 1) [skip ci]
Craig Smith db6a169 ✅ 9/9 test(vmvolumemigration): VVM-36 e2e-fake chainsaw suite for csi-clone on cell 5
Craig Smith 1912f5c chore(prd): mark VVM-36 complete (CI verified: run 25801767433, attempt 1) [skip ci]
Craig Smith d8173bc ✅ 9/9 test(vmvolumemigration): VVM-37 e2e-hardware chainsaw suite for dd-copy on cell 9
Craig Smith cfab2e6 chore(prd): mark VVM-37 complete (CI verified: run 25802941167, attempt 1) [skip ci]
Craig Smith d0e0f53 ⚠️ 7/9 feat(api): VVM-38 JSON API endpoints for vmvolumemigrations
Craig Smith 94afe63 chore(progress): CI failed for VVM-38 (run 25804352353, attempt 1) [skip ci]
Craig Smith beb0f36 ✅ 9/9 fix(api): VVM-38 modernize rangeint loops in ratelimit_test
Craig Smith 388f106 chore(prd): mark VVM-38 complete (CI verified: run 25804942872, attempt 2) [skip ci]
Craig Smith 8adb60b chore(phase): killer-feature 38/38 DONE; start surface phase [skip ci]
Craig Smith 1c9964f ⚠️ 3/9 feat(ui): SURF-01 embed Vite-built UI bundle + healthz validation
Craig Smith ee13ab8 chore(progress): CI failed for SURF-01 (run 25806525861, attempt 1) [skip ci]
Craig Smith d9cf966 ⚠️ 6/9 fix(build): SURF-01 parse-time seed ui/dist for fresh-clone GO_PKGS
Craig Smith 8ab2795 chore(progress): CI failed for SURF-01 (run 25807209621, attempt 2) [skip ci]
Craig Smith 0bbcddb ✅ 9/9 ci(workflows): SURF-01 wire npm + seed ui/dist for embed-touching lanes
Craig Smith 4c7ef76 chore(prd): mark SURF-01 complete (CI verified: run 25807993935, attempt 3) [skip ci]
Craig Smith 2844482 ✅ 9/9 feat(ui): SURF-02 inject nodewright-* meta tags into /ui/ index render
Craig Smith 02e7eea chore(prd): mark SURF-02 complete (CI verified: run 25809052083, attempt 1) [skip ci]
Craig Smith e46897e ✅ 11/11 feat(ui): SURF-03 strict CSP + OWASP-baseline headers on every /ui/ response
Craig Smith 689a283 chore(prd): mark SURF-03 complete (CI verified: run 25809851783, attempt 1) [skip ci]
Craig Smith 7ca4607 ⚠️ 6/9 feat(api): SURF-04 proxy-only /api/v1/ surface with bearer-token pass-through
Craig Smith 1c0e4a0 chore(progress): CI failed for SURF-04 (run 25811195646, attempt 1) [skip ci]
Craig Smith f56c320 ✅ 9/9 fix(api): SURF-04 satisfy lint + gosec on the proxy-only /api/v1/ surface
Craig Smith 076dd60 chore(prd): mark SURF-04 complete (CI verified: run 25812108846, attempt 2) [skip ci]
Craig Smith d2d7afc ✅ 9/9 feat(api): SURF-05 drop SSE stream on mid-watch bearer-token expiry
Craig Smith 91d7fc0 ⚠️ 38/41 chore(prd): mark SURF-05 complete (CI verified: run 25813045164, attempt 1) [skip ci]
Craig Smith 6781b61 feat(api): SURF-06 CSRF + same-origin gate matrix on mutating endpoints
Craig Smith 4e8c94a ⚠️ 7/9 chore(progress): SURF-06 iter-10 verification pass
Craig Smith 3444081 chore(progress): CI failed for SURF-06 (run 25903026462, attempt 1) [skip ci]
Craig Smith 6df651b ✅ 9/9 fix(api): SURF-06 hoist test-shared strings into named consts
Craig Smith 9ba7d4e chore(prd): mark SURF-06 complete (CI verified: run 25903444910, attempt 2) [skip ci]
Craig Smith 1cee372 ✅ 9/9 feat(ui): SURF-07 VMs list page with KubeVirt VM proxy projection
Craig Smith e02ee77 ⚠️ 0/2 chore(prd): mark SURF-07 complete (CI verified: run 25903941548, attempt 1) [skip ci]
Craig Smith d6e00ab ✅ 9/9 feat(ui): SURF-08 add Migrate-to-RWX button with capability-gated disable
Craig Smith 144b520 chore(prd): mark SURF-08 complete (CI verified: run 25904653220, attempt 1) [skip ci]
Craig Smith 654528f ✅ 9/9 feat(ui): SURF-09 add Migrate-to-RWX 5-step wizard shell
Craig Smith df3a85a chore(prd): mark SURF-09 complete (CI verified: run 25905138111, attempt 1) [skip ci]
Craig Smith 5f5e407 ✅ 9/9 feat(ui): SURF-10 add Strategy step + inline Stop VM CTA
Craig Smith fd3a8b2 ✅ 2/2 chore(prd): mark SURF-10 complete (CI verified: run 25905889238, attempt 1) [skip ci]
Craig Smith a33ab79 ✅ 9/9 feat(ui): SURF-11 add Target spec step with pre-fill + locked fields
Craig Smith ff22b54 chore(prd): mark SURF-11 complete (CI verified: run 25906440100, attempt 1) [skip ci]
Craig Smith 663f34f ⚠️ 1/10 feat(ui): SURF-12 add Snapshots step with pre/post toggles + retention
Craig Smith 66fdc1e ✅ 10/10 feat(ui): SURF-13 add Reclaim step dropdown for spec.reclaimSourceAfter
Craig Smith 958d909 ✅ 1/1 chore(prd): mark SURF-12 complete (CI verified: run 25910362845, attempt 2) [skip ci]
Craig Smith 3c352da ✅ 9/9 feat(ui): SURF-14 add Confirm step + Start submission + live-progress hand-off
Craig Smith 8bef7f6 ✅ 2/2 chore(prd): mark SURF-13 complete (CI verified: run 25911245551, attempt 1) [skip ci]
Craig Smith a3ff8df ⚠️ 8/9 feat(ui): SURF-15 add live-progress view with phase bar, per-volume cells, SHA256 indicator, and Abort
Craig Smith 6e138d1 chore(progress): CI failed for SURF-14 (run 25912155738, attempt 1) [skip ci]
Craig Smith b4884cb ✅ 9/9 revert: SURF-15 — restore SURF-14 CI window (bad commit header blocked verification)
Craig Smith f309360 chore(prd): mark SURF-14 complete (CI verified: run 25912712241, attempt 2) [skip ci]
Craig Smith bfb72c0 ✅ 9/9 feat(ui): SURF-15 live-progress view (phase bar, per-volume, abort)
Craig Smith 5631565 chore(prd): mark SURF-15 complete (CI verified: run 25913151051, attempt 1) [skip ci]
Craig Smith d8e211a ✅ 9/9 feat(ui): SURF-16 operations page (active + recent 7-day window)
Craig Smith 8d02899 chore(prd): mark SURF-16 complete (CI verified: run 25913817024, attempt 1) [skip ci]
Craig Smith fa43dcd ✅ 9/9 feat(ui): SURF-17 operation detail page (step history + audit sinks + intervention)
Craig Smith 096ffa4 chore(prd): mark SURF-17 complete (CI verified: run 25914643095, attempt 1) [skip ci]
Craig Smith 1c04129 ⚠️ 8/9 feat(ui): SURF-18 vendor brand color tokens with brand-sync drift check
Craig Smith 751dbdb chore(progress): CI failed for SURF-18 (run 25915369865, attempt 1) [skip ci]
Craig Smith 5933bea ✅ 9/9 fix(ci): SURF-18 silence gosec G304/G306/G703 on brand-sync CLI flags
Craig Smith cd00947 chore(prd): mark SURF-18 complete (CI verified: run 25915789364, attempt 2) [skip ci]
Craig Smith c4b9b3c ✅ 9/9 feat(ui): SURF-19 pin brand typography + WCAG-AA contrast contracts
Craig Smith 72e7b85 ✅ 2/2 chore(prd): mark SURF-19 complete (CI verified: run 25916428923, attempt 1) [skip ci]
Craig Smith b5abaed ✅ 9/9 feat(ui): SURF-20 pin Spectro Cloud logomark header + brand-sync vendoring
Craig Smith b84d736 chore(prd): mark SURF-20 complete (CI verified: run 25917176607, attempt 1) [skip ci]
Craig Smith e185cc6 ⚠️ 7/9 feat(chart): SURF-21 declare cert-manager as optional chart dependency
Craig Smith 03f7749 chore(progress): CI failed for SURF-21 (run 25917897240, attempt 1) [skip ci]
Craig Smith b1ad83f ✅ 9/9 fix(chart): SURF-21 wrap two test t.Errorf calls under 120-char lll cap
Craig Smith c4e7a38 chore(prd): mark SURF-21 complete (CI verified: run 25918403713, attempt 2) [skip ci]
Craig Smith d709c42 ✅ 9/9 feat(chart): SURF-22 render operator workload + EdgeProfile CR from helm install
Craig Smith 07dc800 chore(prd): mark SURF-22 complete (CI verified: run 25919228199, attempt 1) [skip ci]
Craig Smith 90cb619 ⚠️ 7/9 feat(chart): SURF-23 values.schema.json + surface remaining FR-23 knobs
Craig Smith c461f4f chore(progress): CI failed for SURF-23 (run 25920071424, attempt 1) [skip ci]
Craig Smith cdba18c ✅ 9/9 fix(chart): SURF-23 lint — hoist enum const, prefer any over interface{}
Craig Smith 2a204f8 chore(prd): mark SURF-23 complete (CI verified: run 25920703951, attempt 2) [skip ci]
Craig Smith 65ac5b0 ⚠️ 7/9 feat(chart): SURF-24 cosign-sign chart + SBOM/SLSA/vuln attestations
Craig Smith c3aa670 chore(progress): CI failed for SURF-24 (run 25921797168, attempt 1) [skip ci]
Craig Smith f450d4c ✅ 9/9 fix(chart): SURF-24 lint — split SLSA-generator regex literal across two strings (lll)
Craig Smith 5c6f5ee chore(prd): mark SURF-24 complete (CI verified: run 25922370859, attempt 2) [skip ci]
Craig Smith 0be3f72 ⚠️ 8/11 feat(chart): SURF-25 helm-test post-install acceptance Job + nwctl test acceptance
Craig Smith efdaa9b chore(progress): CI failed for SURF-25 (run 25923452265, attempt 1) [skip ci]
Craig Smith 7de37e7 ✅ 9/9 fix(chart): SURF-25 lint — errcheck/modernize/staticcheck + gosec G301
Craig Smith 0b8724b chore(prd): mark SURF-25 complete (CI verified: run 25924222004, attempt 2) [skip ci]
Craig Smith de3fa64 ci: restore build-tracker post-commit deploy hook under husky [skip ci]
Craig Smith d502a78 ✅ 9/9 feat(pack): SURF-26 packs/nodewright/manifest.yaml + pack-sync digest tool
Craig Smith 717d2aa chore(prd): mark SURF-26 complete (CI verified: run 25925200802, attempt 1) [skip ci]
Craig Smith bfcba26 ✅ 9/9 feat(pack): SURF-27 pack-release.yml + cosign sign/SBOM/SLSA/vuln lane
Craig Smith feb1ae3 chore(prd): mark SURF-27 complete (CI verified: run 25926357483, attempt 1) [skip ci]
Craig Smith 307afd7 ⚠️ 7/9 feat(docs): SURF-28 docs-publish.yml + docs-build/serve + runbook
Craig Smith 0665247 chore(progress): CI failed for SURF-28 (run 25927256250, attempt 1) [skip ci]
Craig Smith f350bda ✅ 9/9 fix(test): SURF-28 goconst — extract perm tokens to package constants
Craig Smith 643133a chore(prd): mark SURF-28 complete (CI verified: run 25927830992, attempt 2) [skip ci]
Craig Smith bebd237 ✅ 11/11 feat(docs): SURF-29 mkdocs nav → Getting Started/Arch/API/CLI/Runbooks/Notes
Craig Smith 43a760a chore(prd): mark SURF-29 complete (CI verified: run 25928650386, attempt 1) [skip ci]
Craig Smith 8adcf86 ⚠️ 7/9 feat(docs): SURF-30 spectrocloud-brand palette + Plus Jakarta Sans on docs site
Craig Smith 356c221 chore(progress): CI failed for SURF-30 (run 25929363025, attempt 1) [skip ci]
Craig Smith 199cf9d ✅ 9/9 fix(docs): SURF-30 satisfy lll + modernize lints on chart_surf30_test.go
Craig Smith b5c8189 chore(prd): mark SURF-30 complete (CI verified: run 25929907624, attempt 2) [skip ci]
Craig Smith dce3f31 ⚠️ 7/9 feat(docs): SURF-30A top-level README orientation + brand hero + badges
Craig Smith f1ca515 chore(progress): CI failed for SURF-30A (run 25930763570, attempt 1) [skip ci]
Craig Smith fb6cf6a ✅ 9/9 fix(docs): SURF-30A satisfy unparam on firstNLines helper
Craig Smith ec7da41 chore(prd): mark SURF-30A complete (CI verified: run 25931324837, attempt 2) [skip ci]
Craig Smith c0b6432 ✅ 9/9 feat(ui): SURF-31 WCAG 2.1 AA contrast contract + cypress-axe gate
Craig Smith 8e390ac ✅ 2/2 chore(prd): mark SURF-31 complete (CI verified: run 25932383323, attempt 1) [skip ci]
Craig Smith 87b62be ⚠️ 7/9 feat(ui): SURF-32 keyboard nav contract — skip link + Esc + Enter
Craig Smith 06290fe chore(progress): CI failed for SURF-32 (run 25933288947, attempt 1) [skip ci]
Craig Smith 5164e6d ⚠️ 8/9 fix(ui): SURF-32 use strings.Cut in CSS-block extractor
Craig Smith 7263259 chore(progress): CI failed for SURF-32 (run 25933821311, attempt 2) [skip ci]
Craig Smith 5dad4b9 ✅ 9/9 ci: SURF-32 free runner disk space before CodeQL build
Craig Smith 7751bfb chore(prd): mark SURF-32 complete (CI verified: run 25934423116, attempt 3) [skip ci]
Craig Smith b07a78b ⚠️ 7/9 feat(ui): SURF-33 pin accessible-label contract + cypress spec
Craig Smith 5a106ad chore(progress): CI failed for SURF-33 (run 25935274251, attempt 1) [skip ci]
Craig Smith bb19102 ✅ 9/9 fix(test): SURF-33 lint cleanup — split long t.Errorf + rangeint
Craig Smith 94f7bdf chore(prd): mark SURF-33 complete (CI verified: run 25935859782, attempt 2) [skip ci]
Craig Smith cd1e0f7 ✅ 9/9 feat(ui): SURF-34 add 9 per-cell cypress specs + static contract
Craig Smith e9e26b2 chore(prd): mark SURF-34 complete (CI verified: run 25936987490, attempt 1) [skip ci]
Craig Smith 1ddcdbb chore(phase): surface 35/35 DONE; start release phase [skip ci]
Craig Smith f8e4c89 ⚠️ 9/11 feat(release): REL-01 add release-preflight.sh + contract tests
Craig Smith a5fab10 chore(progress): CI failed for REL-01 (run 25937880208, attempt 1) [skip ci]
Craig Smith 0e07017 ✅ 9/9 fix(release): REL-01 satisfy lll + unparam lints
Craig Smith f62fdc6 chore(prd): mark REL-01 complete (CI verified: run 25938503108, attempt 2) [skip ci]
Craig Smith 5dec17e ✅ 9/9 feat(release): REL-02 add release-tag.sh signed-tag wrapper
Craig Smith 100c459 ✅ 2/2 chore(prd): mark REL-02 complete (CI verified: run 25939386338, attempt 1) [skip ci]
Craig Smith ee03880 ⚠️ 7/9 feat(release): REL-03 release.yml three-phase orchestrator + cleanup/wait scripts
Craig Smith 0e48d7e chore(progress): CI failed for REL-03 (run 25940927718, attempt 2) [skip ci]
Craig Smith ea9e590 ✅ 9/9 fix(release): REL-03 clear golangci-lint modernize+unparam in release_rel03_test.go
Craig Smith f4d101a ✅ 2/2 chore(prd): mark REL-03 complete (CI verified: run 25941445758, attempt 3) [skip ci]
Craig Smith 5f02fb2 ✅ 9/9 feat(release): REL-04 release-verify.sh + §7 error-code registry + §6.6 runbooks
Craig Smith 5e486ff chore(prd): mark REL-04 complete (CI verified: run 25943199684, attempt 3) [skip ci]
Craig Smith a7c51d5 chore(progress): ralph self-paused — REL-05 stuck at 3 attempts [skip ci]
Craig Smith bddcda1 feat(release): REL-05 RELEASE-NOTES generator + semantic-release contract
Craig Smith 002f284 ci(ralph): raise STALL_TIMEOUT 900->2400s for large release-doc stories [skip ci]
Craig Smith 5891c3d ✅ 2/2 chore(progress): ralph self-paused — REL-05 stuck at 3 attempts [skip ci]
Craig Smith 167ecc7 ✅ 9/9 ci: trigger CI verification for REL-05 release-notes artifacts
Craig Smith 0d5c4ab chore(prd): mark REL-05 complete (CI verified: 167ecc7 9/9 green) [skip ci]
Craig Smith bec9263 ✅ 9/9 feat(release): REL-06 Release-page artifact links + Phase-C composition
Craig Smith bb2d4e4 chore(prd): mark REL-06 complete (CI verified: run 25946063486, attempt 1) [skip ci]
Craig Smith 7901158 ⚠️ 9/11 feat(release): REL-07 online install playbook (docs/installation.md)
Craig Smith 04d22a4 chore(progress): CI failed for REL-07 (run 25946598069, attempt 1) [skip ci]
Craig Smith bd0cb0b ✅ 9/9 fix(release): REL-07 modernize/stringscut — strings.Cut in rel07Section test helper
Craig Smith 1a8fe96 chore(prd): mark REL-07 complete (CI verified: run 25947023755, attempt 2) [skip ci]
Craig Smith b2bc269 ✅ 9/9 feat(release): REL-08 disconnected/air-gapped install playbook (docs/installation-disconnected.md)
Craig Smith 6d7972e chore(prd): mark REL-08 complete (CI verified: run 25947629229, attempt 1) [skip ci]
Craig Smith c83a333 ✅ 9/9 feat(release): REL-09 versioned docs site via mike (FR-09)
Craig Smith ae187ce chore(prd): mark REL-09 complete (CI verified: run 25948184408, attempt 1) [skip ci]
Craig Smith e88fb3c ✅ 9/9 feat(release): REL-10 docs site embeds BLESSED critic-log audit trail (FR-10)
Craig Smith e3e4613 ✅ 2/2 chore(prd): mark REL-10 complete (CI verified: run 25948594234, attempt 1) [skip ci]
Craig Smith 6819f6b ⚠️ 7/9 feat(release): REL-11 dist// supply-chain bundle (FR-11)
Craig Smith 10ce712 chore(progress): CI failed for REL-11 (run 25949522670, attempt 1) [skip ci]
Craig Smith 369e5b1 ✅ 9/9 fix(release): REL-11 use slices.Contains (modernize lint, FR-11)
Craig Smith 2d6e843 chore(prd): mark REL-11 complete (CI verified: run 25949765883, attempt 2) [skip ci]
Craig Smith 22516f1 ⚠️ 6/9 feat(release): REL-12 nwctl release verify supply-chain verifier (FR-12)
Craig Smith e04079e chore(progress): CI failed for REL-12 (run 25950280410, attempt 1) [skip ci]
Craig Smith 04f4a91 ✅ 9/9 fix(release): REL-12 satisfy modernize/unparam/gosec (FR-12)
Craig Smith dcfd40d chore(prd): mark REL-12 complete (CI verified: run 25950561525, attempt 2) [skip ci]
Craig Smith 7f66027 ⚠️ 7/9 feat(release): REL-13 e2e-hardware.yml per-cell tag-push topology (FR-13)
Craig Smith 982adbd chore(progress): CI failed for REL-13 (run 25950970954, attempt 1) [skip ci]
Craig Smith f2f22a6 ✅ 9/9 fix(release): REL-13 satisfy modernize stringsseq/slicescontains (FR-13)
Craig Smith 7c8d128 chore(prd): mark REL-13 complete (CI verified: run 25951205397, attempt 2) [skip ci]
Craig Smith 00dcbe1 feat(release): REL-14 hardware-runner verification on tag (FR-14)
Craig Smith 3609357 fix(ralph): harden completion-detection against prose-quoted promise token [skip ci]
Craig Smith b61b51d ⚠️ 7/9 ci: trigger CI verification for REL-14 hardware-runner verification
Craig Smith 1821966 chore(progress): REL-14 committed code failed Fresh-clone + Lint [skip ci]
Craig Smith e76ddae ✅ 9/9 fix(release): REL-14 satisfy lll 120-col cap in hardware-verify test (FR-14)
Craig Smith 8c97585 chore(prd): mark REL-14 complete (CI verified: run 25952110859, attempt 1) [skip ci]
Craig Smith 29d6b28 ⚠️ 7/9 test(release): REL-15 pin FR-15 Known-Issues catalog content contract
Craig Smith 5e1ece1 chore(progress): CI failed for REL-15 (run 25952431189, attempt 1) [skip ci]
Craig Smith d8db3c1 ✅ 9/9 fix(release): REL-15 use strings.Cut to satisfy modernize (FR-15)
Craig Smith 62b43a5 chore(prd): mark REL-15 complete (CI verified: run 25952648955, attempt 2) [skip ci]
Craig Smith ea3136e docs(release): REL-16 author bash-DS coexistence playbook (FR-16)
Craig Smith 7613cde chore(progress): REL-16 iteration notes [skip ci]
Craig Smith 74ac700 chore(prd): mark REL-16 complete (pre-CI) [skip ci]
Craig Smith 425fe79 ✅ 11/11 docs(release): REL-17 author v0.2 cut-over staged-retirement section (FR-17)
Craig Smith 667b5de chore(prd): mark REL-17 complete (CI verified: run 25953219792, attempt 1) [skip ci]
Craig Smith eec2397 ✅ 9/9 docs(release): REL-18 author repo-root MIGRATION.md two-section summary (FR-18)
Craig Smith 250ecf1 chore(prd): mark REL-18 complete (CI verified: run 25953567233, attempt 1) [skip ci]
Craig Smith 6c006b3 ⚠️ 7/9 docs(release): REL-19 author docs/rollback.md three-section playbook (FR-19)
Craig Smith 6b95160 chore(progress): CI failed for REL-19 (run 25953935724, attempt 1) [skip ci]
Craig Smith dff453f ✅ 9/9 fix(release): REL-19 use strings.Cut in rel19Blocks (modernize lint)
Craig Smith e16d67e ⚠️ 0/1 chore(prd): mark REL-19 complete (CI verified: run 25954193779, attempt 2) [skip ci]
Craig Smith b2824b7 ✅ 9/10 docs(release): REL-20 in-flight-migration rollback checks + runbooks (FR-20)
Craig Smith 586841a chore(prd): mark REL-20 complete (CI verified: run 25954642829, attempt 1) [skip ci]
Craig Smith 30cd457 ✅ 9/9 docs(release): REL-21 post-release week-1 + audit-chain-break runbooks (FR-21)
Craig Smith 71ddba0 chore(prd): mark REL-21 complete (CI verified: run 25955082598, attempt 1) [skip ci]
Craig Smith 0fa1b1d ✅ 9/9 docs(support): REL-22 customer escalation map + drift guards (FR-22)
Craig Smith ec4e824 chore(prd): mark REL-22 complete (CI verified: run 25955529575, attempt 1) [skip ci]
Craig Smith 4f2f878 ✅ 11/11 docs(release): REL-23 GA-criteria release-channel map (FR-23)
Craig Smith 660e461 chore(prd): mark REL-23 complete (CI verified: run 25955932979, attempt 1) [skip ci]

Total commits: 365. CI column reflects all GitHub Actions runs against each commit SHA, regardless of which story the metrics attribute the iteration to.