BrunoGao
1ae6eb6416
feat(health): stage Contabo production migration ( #360 )
...
Adds a manual-only Contabo canary path, Traefik overlays, fail-closed migration gates, and contract tests.
Refs lingjingwanxiang/ljwx-health#390
Refs lingjingwanxiang/ljwx-health#395
2026-08-02 17:20:07 +08:00
BrunoGao
6833e1253a
feat(ops): prefer cross-zone health replicas ( #359 )
...
Add zone-first and hostname-fallback soft scheduling preferences plus a deploy-gate contract test.
Refs https://github.com/lingjingwanxiang/ljwx-health/issues/390
Refs https://github.com/lingjingwanxiang/ljwx-health/issues/395
2026-08-02 09:17:13 +08:00
BrunoGao
94806b6876
Remove temporary LJWX Health legacy cleanup resources ( #358 )
...
Remove the successful one-shot cleanup hook and its ordinary least-privilege RBAC so Argo prunes the last temporary resources while preserving the audit evidence.
2026-08-01 05:15:05 +08:00
BrunoGao
96db8706b5
Delete retired LJWX Health hook orphans through GitOps ( #357 )
...
Run an exact-name, least-privilege PostSync deletion for the hook objects that Argo does not ordinary-prune. Keep temporary cleanup RBAC tracked for a final GitOps prune after observed deletion.
2026-08-01 05:05:03 +08:00
BrunoGao
188cd35e41
Adopt retired LJWX Health hooks for GitOps pruning ( #356 )
...
Temporarily adopt the exact retired hook object names as empty, permissionless ordinary resources so Argo CD can track and prune them through a follow-up GitOps revision.
2026-08-01 04:59:15 +08:00
BrunoGao
2b2cd69428
Retire legacy LJWX Health PostgreSQL schema paths ( #355 )
...
Retire the duplicate PostgreSQL SQL ConfigMap/init/repair path after verified production adoption, qualified restore, and the repaired N/N-1/N compatibility window. Preserve ClickHouse SQL, immutable audit history, backups, and signed digest-only schema delivery.
2026-08-01 04:49:03 +08:00
ljwx-release-bot
6cee4f8d41
chore(ljwx-health): promote ee2e655bd137 sha256:4cb7ffe007a4
2026-07-31 20:37:31 +00:00
ljwx-release-bot
08936fd1d7
chore(ljwx-health): promote ddddd7c6f37b sha256:09a84ab83ab0
2026-07-31 20:28:46 +00:00
ljwx-release-bot
1c86d14a90
chore(ljwx-health): promote ee2e655bd137 sha256:4cb7ffe007a4
2026-07-31 20:16:42 +00:00
BrunoGao
0f7f812907
ops(health): deactivate completed restore drill ( #354 )
2026-08-01 03:40:53 +08:00
ljwx-release-bot
cad2b157a8
chore(ljwx-health): promote ddddd7c6f37b sha256:09a84ab83ab0
2026-07-31 19:38:00 +00:00
ljwx-release-bot
989ef61e8e
chore(ljwx-health): promote cfe3a8f9c773 sha256:f53e6e3f0c8e
2026-07-31 19:25:31 +00:00
BrunoGao
7345fa7342
ops(health): restore latest qualified backup ( #353 )
2026-08-01 03:10:11 +08:00
BrunoGao
45256de506
fix(restore): authorize signed pre-adoption plan ( #352 )
2026-08-01 02:53:14 +08:00
BrunoGao
9f4c1fda01
fix(restore): allow exact k3s API endpoint ( #351 )
2026-08-01 02:35:42 +08:00
BrunoGao
8a7e6469d0
fix(restore): prepare volume modes before ownership ( #350 )
2026-08-01 02:23:29 +08:00
BrunoGao
6b220a414e
ops(health): run pre-adoption schema restore drill ( #349 )
2026-08-01 02:15:21 +08:00
BrunoGao
16d1c987cd
ops(postgres): schedule post-adoption differential backup ( #347 )
2026-08-01 02:08:51 +08:00
BrunoGao
5772d2f3d0
feat(restore): add application-level schema restore drill ( #348 )
...
* ops(health): smoke immutable app after schema restore
* ci: silence trap-only shellcheck paths
2026-08-01 02:07:42 +08:00
ljwx-release-bot
067a6baf56
chore(ljwx-health): promote ddddd7c6f37b sha256:09a84ab83ab0
2026-07-31 17:52:24 +00:00
ljwx-release-bot
bedb1058f9
chore(ljwx-health): promote cfe3a8f9c773 sha256:f53e6e3f0c8e
2026-07-31 16:23:23 +00:00
ljwx-release-bot
068ef334f5
chore(ljwx-health): promote 5797ba6d4463 sha256:3aeddea39f43
2026-07-31 15:28:09 +00:00
ljwx-release-bot
08ed4e22c6
chore(ljwx-health): promote 7566915f3417 sha256:9ef7bfe70e8b
2026-07-31 14:40:21 +00:00
ljwx-release-bot
75f392df7a
chore(ljwx-health): promote d234e1c247e3 sha256:2a0284a923f2
2026-07-31 13:38:25 +00:00
ljwx-release-bot
75c0c4bad3
chore(ljwx-health): promote 3e1c56e79981 sha256:ae6b78fe2358
2026-07-31 12:27:20 +00:00
BrunoGao
b236ed97ce
chore(ljwx-health): activate restore drill read boundary ( #346 )
2026-07-31 20:02:18 +08:00
BrunoGao
7de60242c5
feat(ljwx-health): project adopted schema release facts ( #345 )
2026-07-31 19:48:23 +08:00
BrunoGao
8dd9827602
fix(ljwx-health): resume completed schema upgrade retries ( #344 )
...
Verify the complete signed schema before retrying adoption-plan upgrades and report exact fingerprint mismatches.
2026-07-31 18:43:21 +08:00
BrunoGao
fc9dbaa9d1
fix(cluster): preserve registry-specific pull credentials ( #343 )
...
Sync Harbor and GHCR Docker credentials from distinct source Secrets, avoid client-side secret annotations, and preserve Harbor-only default ServiceAccount binding.
2026-07-31 18:33:34 +08:00
BrunoGao
f35f8a4c00
fix(ljwx-health): stage signed schema release before adoption ( #342 )
...
Create the immutable signed schema Release ConfigMap at PreSync wave -3 and preserve the ordering in future promotions.
2026-07-31 11:29:41 +08:00
BrunoGao
d02154f0d0
fix(ljwx-health): order schema bootstrap before PreSync job ( #341 )
...
Create bootstrap ServiceAccount and RBAC as wave -3 PreSync hooks before the wave -2 schema adoption Job.
2026-07-31 11:23:31 +08:00
ljwx-release-bot
65fac99336
chore(ljwx-health): promote 88dd0689d34a sha256:a07878a50086
2026-07-31 03:19:07 +00:00
BrunoGao
9d331f95c2
feat(ljwx-health): add isolated schema restore drill foundation ( #340 )
...
* feat(ljwx-health): add isolated schema restore drill foundation
* fix(ljwx-health): verify Cosign v3 custom bindings
* test(ljwx-health): cover production binding envelope
* fix(ljwx-health): isolate restore drill API token
* fix(ljwx-health): split restore drill cross-namespace RBAC
* fix(ljwx-health): annotate trap-only cleanup
2026-07-31 10:21:56 +08:00
BrunoGao
b0a034b238
fix(schema): bootstrap migrator with signed runner image ( #339 )
...
Refs #335 and lingjingwanxiang/ljwx-health#713 .
Use only the signed schema-runner image and resource-scoped Kubernetes API access for the one-time migrator credential bootstrap.
2026-07-31 09:04:38 +08:00
BrunoGao
1aa41d4c34
fix(postgres): make backup verification shell-free ( #338 )
...
Refs #335 and lingjingwanxiang/ljwx-health#713 .
Replace the failed report pod with shell-free verification and preserve the successful pgBackRest recovery chain.
2026-07-31 08:52:07 +08:00
BrunoGao
3ad88f6093
ops(postgres): add Phase 5 pre-adoption backup gate ( #337 )
...
Refs #335 and lingjingwanxiang/ljwx-health#713 .
Run and report the required GitOps-owned pgBackRest backup before schema adoption. The later cleanup PR removes this one-time Job after evidence is archived.
2026-07-31 08:45:03 +08:00
BrunoGao
7f8f3bc42a
feat(ljwx-health): consume signed schema bundles via GitOps ( #336 )
...
Closes #335 foundation slice
Refs lingjingwanxiang/ljwx-health#713
The schema package remains dormant until a validated v2 Release receipt activates it.
2026-07-31 08:20:20 +08:00
BrunoGao
c8b3d519ed
docs(db): classify LJWX Health schema bundle drift ( #334 )
...
Documents canonical-source drift classification for LJWX Health phase #709 .
Refs lingjingwanxiang/ljwx-health#709 .
2026-07-30 21:58:43 +08:00
ljwx-release-bot
0a1e82057c
chore(ljwx-health): promote d909ba7fc8a1 sha256:016ae017e2cd
2026-07-30 12:59:50 +00:00
BrunoGao
4f9185ff41
feat: enforce ljwx-health digest-only promotion ( #332 )
...
Refs #332
2026-07-30 20:21:36 +08:00
v3-lite-bot
1a4ef9a2a0
chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@fa70c01 -> sha256:6e095b75ea62
2026-07-30 08:01:19 +00:00
v3-lite-bot
3fbe0b1e5f
chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@27fcb11 -> sha256:83b5947d6405
2026-07-30 07:00:33 +00:00
v3-lite-bot
7c9d0f2b84
chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@faf6e6f -> sha256:d496b3284df9
2026-07-30 06:02:12 +00:00
v3-lite-bot
e689ca78b0
chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@5048b61 -> sha256:d9571ecf6c45
2026-07-30 05:09:52 +00:00
v3-lite-bot
fb2cd322ad
chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@75a9397 -> sha256:bf50c9e95d4c
2026-07-30 04:20:56 +00:00
v3-lite-bot
ba889e2764
chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@c1127e7 -> sha256:a06a79d556c9
2026-07-30 03:33:06 +00:00
v3-lite-bot
4ac6141c62
chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@66a8663 -> sha256:f89fe8e3ebe3
2026-07-30 02:42:37 +00:00
v3-lite-bot
ed803105c0
chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@26b2bdd -> sha256:17f51913a188
2026-07-30 01:48:16 +00:00
v3-lite-bot
04f4aca415
chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@f1480a9 -> sha256:0c46d4fcd04e
2026-07-30 00:50:31 +00:00
v3-lite-bot
2207d9bb5e
chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@634b0f4 -> sha256:050134f9fc33
2026-07-29 23:55:46 +00:00