fix: keep G14 generated state on gitops branch

This commit is contained in:
Codex
2026-05-27 10:14:24 +08:00
parent 278bbe1c6a
commit 336a9b2c2c
10 changed files with 188 additions and 154 deletions
+8 -6
View File
@@ -70,17 +70,19 @@ node scripts/deploy-desired-state-plan.mjs --promotion-commit <sha> --check
The desired-state plan reads `deploy/deploy.json`,
`deploy/artifact-catalog.dev.json`, `deploy/k8s/base/workloads.yaml`, and the
optional artifact report snapshot. `deploy/deploy.json` is the human-authored
runtime config truth source. Generated image identity lives in
`deploy/artifact-catalog.dev.json`; GitOps render overlays catalog image fields
and generated env mirrors such as `HWLAB_COMMIT_ID`, `HWLAB_IMAGE`,
runtime config truth source. Published image identity lives in
`G14-gitops:deploy/artifact-catalog.dev.json`; the source branch catalog is only
a seed contract for local checks. GitOps render overlays catalog image fields and
generated env mirrors such as `HWLAB_COMMIT_ID`, `HWLAB_IMAGE`,
`HWLAB_IMAGE_TAG`, and `HWLAB_SKILLS_COMMIT_ID` into runtime manifests.
The plan blocks if generated artifact identity leaks back into `deploy.json`,
or if `hwlab-cloud-api` loses the Code Agent provider Secret ref
`hwlab-code-agent-provider/openai-api-key`, the `OPENAI_API_KEY` env name, or
the DEV egress proxy base-url env. Promotion updates must refresh only
`deploy/artifact-catalog.dev.json` from a publish report before render/check;
report files are contextual evidence only and must not override source truth.
the DEV egress proxy base-url env. Promotion updates must refresh only the
workspace catalog from a publish report before render; Tekton writes the
refreshed catalog to `G14-gitops`, not back to the source branch. Report files
are contextual evidence only and must not override human-authored source truth.
This is source/dry-run support only. It does not prove a registry image exists,
does not build, pull, push, apply, restart, or touch PROD, and must not be used
+97 -97
View File
@@ -5,13 +5,13 @@
"profile": "dev",
"namespace": "hwlab-dev",
"endpoint": "http://74.48.78.17:16667",
"commitId": "8bdcff5",
"artifactState": "published",
"commitId": "278bbe1",
"artifactState": "contract-skeleton",
"publish": {
"ciPublished": true,
"registryVerified": true,
"provenance": "g14-ci-artifact:hwlab-g14-ci-poll-8bdcff56c580-collect",
"note": "Digest fields were copied from a successful DEV artifact publish report for this source commit."
"ciPublished": false,
"registryVerified": false,
"provenance": "not_available_until_publish",
"note": "Artifact identity was refreshed to this source commit, but no publish report proved registry digests."
},
"healthContract": {
"method": "GET",
@@ -66,11 +66,11 @@
"services": [
{
"serviceId": "hwlab-cloud-api",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:af46386",
"imageTag": "af46386",
"digest": "sha256:fe724e72e7cea3c93abe17085c4d885c78d34d18eb2a3c01f987d1971e2f4425",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -78,8 +78,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:43.480Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "8d533cb736c3bf30fe97ef0ddf3d24047cad1b78",
"componentInputHash": "7498160c36db86db76d3c1b103e397f2b2304248136d3b79eafe1ab69d4abeff",
@@ -101,11 +101,11 @@
},
{
"serviceId": "hwlab-cloud-web",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:af46386",
"imageTag": "af46386",
"digest": "sha256:3f5d4dcd1df4f736293d4223acb8104fd857e847a3a9a0acec4ef031ea333913",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-cloud-web:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -113,8 +113,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:45.158Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "8d533cb736c3bf30fe97ef0ddf3d24047cad1b78",
"componentInputHash": "fdd27830a0cef173fc07a2cab8cd469d67aaff9da12bb0195f188e323854f93a",
@@ -136,11 +136,11 @@
},
{
"serviceId": "hwlab-agent-mgr",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:af46386",
"imageTag": "af46386",
"digest": "sha256:5a55d6199b5bf2db4afa55a0be8cc6eae38f2dcac8a7b374ebbec2af2f36d71c",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-agent-mgr:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -148,8 +148,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:44.484Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "a56ea7e33ef67040cc9a8748c3759b4f9c87ca46",
"componentInputHash": "ce4aa5c0b74c873d3270a71d9481a8255571b574f024bd5980f18547b4361860",
@@ -171,11 +171,11 @@
},
{
"serviceId": "hwlab-agent-worker",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:af46386",
"imageTag": "af46386",
"digest": "sha256:03f09333657bb37ad059004aabb4484503f79866ba19272d5af9bf611bbb9c5d",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-agent-worker:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -183,8 +183,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:45.112Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "a56ea7e33ef67040cc9a8748c3759b4f9c87ca46",
"componentInputHash": "7b426c226ec6f6d4de516f58055f3bf26d911477a88ebeef320066b1903ef40f",
@@ -206,11 +206,11 @@
},
{
"serviceId": "hwlab-gateway",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-gateway:af46386",
"imageTag": "af46386",
"digest": "sha256:1f44666c01f11416fee24b2d671c2ddcea3b5a6c575fe16ad0cf5307315d35e6",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-gateway:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -218,8 +218,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:45.140Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "a56ea7e33ef67040cc9a8748c3759b4f9c87ca46",
"componentInputHash": "6c97b4f8e49ba46148dde9126a21f475356bfdd4d6826326799d03d68212002e",
@@ -241,11 +241,11 @@
},
{
"serviceId": "hwlab-gateway-simu",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:af46386",
"imageTag": "af46386",
"digest": "sha256:9b65bfff46f5fa206e7887340b9e7df2647eb4d0c186f9ad9796636551cd121b",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-gateway-simu:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -253,8 +253,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:45.127Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "a56ea7e33ef67040cc9a8748c3759b4f9c87ca46",
"componentInputHash": "184706b960dc00c23d6aacf35bde93558d422329635752cfb85796c6fe5e4820",
@@ -276,11 +276,11 @@
},
{
"serviceId": "hwlab-box-simu",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-box-simu:af46386",
"imageTag": "af46386",
"digest": "sha256:909fd838bf6fa7dc2b2eb7b2a868bde4d110aab1640272ee63dbcf6ae488b330",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-box-simu:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -288,8 +288,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:45.148Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "a56ea7e33ef67040cc9a8748c3759b4f9c87ca46",
"componentInputHash": "1dfe5c35338d049b996a27f628d8d7b64ddacfa51de07e4c1cbd4a0f19c289bf",
@@ -311,11 +311,11 @@
},
{
"serviceId": "hwlab-patch-panel",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:af46386",
"imageTag": "af46386",
"digest": "sha256:5d49ba34c8dc1e71eb5fedc769ea0759b4ab66d7665086fc773c2020fcd11a2b",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-patch-panel:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -323,8 +323,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:48.434Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "a56ea7e33ef67040cc9a8748c3759b4f9c87ca46",
"componentInputHash": "4b84d74569d7d847c886695014aa84236c678b19ceeaa7df1f80ff7aa06c00ed",
@@ -346,11 +346,11 @@
},
{
"serviceId": "hwlab-router",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-router:af46386",
"imageTag": "af46386",
"digest": "sha256:074539cf5a9aef2330c6dc8df96d0be76f5fbb940f8d0ad20f1d67cb1f299666",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-router:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -358,8 +358,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:48.571Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "a56ea7e33ef67040cc9a8748c3759b4f9c87ca46",
"componentInputHash": "a2e72fca1d0acb7b5db4ecf77ff5ffacae7e897e8d50920cae8b17fcb6e1e6fb",
@@ -381,11 +381,11 @@
},
{
"serviceId": "hwlab-tunnel-client",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:af46386",
"imageTag": "af46386",
"digest": "sha256:f1f200009731ba832dc26258b01c3abb4de711237728a95124822e0d056c70fe",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-tunnel-client:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -393,8 +393,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:48.544Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "a56ea7e33ef67040cc9a8748c3759b4f9c87ca46",
"componentInputHash": "58f4fc6f1b56c6074cdeae1d33bfe22f54072ef0d45351d3186cdcf15a3f1573",
@@ -416,11 +416,11 @@
},
{
"serviceId": "hwlab-edge-proxy",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:af46386",
"imageTag": "af46386",
"digest": "sha256:b9dbf6f08bfea10ec9ca9c15cd864e96eb37e483fcd8716513dd74533d8b3cf0",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -428,8 +428,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:48.521Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "a56ea7e33ef67040cc9a8748c3759b4f9c87ca46",
"componentInputHash": "497d88f5f34075f2ba064cdc10d3a80a236e96e4eab4ca71ae3138a751201315",
@@ -451,11 +451,11 @@
},
{
"serviceId": "hwlab-cli",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-cli:af46386",
"imageTag": "af46386",
"digest": "sha256:3908855f68043119452bd40109668c7a163c33bf048ddcf0cc9c1097ef741c5a",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-cli:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -463,8 +463,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:48.479Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "a56ea7e33ef67040cc9a8748c3759b4f9c87ca46",
"componentInputHash": "bff91d0ad2c23aceacc494cd4ad84e93d163c9bcae8815ac4018f2a0f37a0617",
@@ -486,11 +486,11 @@
},
{
"serviceId": "hwlab-agent-skills",
"commitId": "af46386",
"image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:af46386",
"imageTag": "af46386",
"digest": "sha256:8cdf6922fda03703288a796b107f9185c3635f2768bc0bcf9b8272bf33ae7547",
"publishState": "reused",
"commitId": "278bbe1",
"image": "127.0.0.1:5000/hwlab/hwlab-agent-skills:278bbe1",
"imageTag": "278bbe1",
"digest": "not_published",
"publishState": "skeleton-only",
"profile": "dev",
"namespace": "hwlab-dev",
"healthPath": "/health/live",
@@ -498,8 +498,8 @@
"publishEnabled": true,
"artifactRequired": true,
"artifactScope": "required",
"notPublishedReason": null,
"buildCreatedAt": "2026-05-27T00:14:48.439Z",
"notPublishedReason": "publish_not_run",
"buildCreatedAt": null,
"buildSource": null,
"componentCommitId": "a56ea7e33ef67040cc9a8748c3759b4f9c87ca46",
"componentInputHash": "33cc71d1216f9f523499c950c445b6d6d4ac604e8048c1a2c3a9561b3bdce9e8",