From 2159f2841fd2b042a91b3985316eb10079956745 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 8 Jul 2026 00:08:24 +0000 Subject: [PATCH 1/2] Initial plan From 140e786cff8cb8e20c16c8ca3c02fbe5c90216d2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 8 Jul 2026 00:19:10 +0000 Subject: [PATCH 2/2] fix(doc-healer): add artifact production gate to Step 2 artifact constant check Before treating a missing artifacts.md entry as a documentation gap, the healer now verifies the artifact is actually produced by checking: 1. Whether the artifact name appears in upload-artifact steps in any .github/workflows/*.lock.yml file or in pkg/workflow/js/ helpers 2. Whether the job builder is not a no-op stub (return nil, nil) Forward-declared constants like EvalsArtifactName (whose buildEvalsJob returns nil) are now skipped rather than incorrectly flagged as gaps. Closes #44133 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/daily-doc-healer.lock.yml | 2 +- .github/workflows/daily-doc-healer.md | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/workflows/daily-doc-healer.lock.yml b/.github/workflows/daily-doc-healer.lock.yml index 48e980ac7c6..c9aece8edf5 100644 --- a/.github/workflows/daily-doc-healer.lock.yml +++ b/.github/workflows/daily-doc-healer.lock.yml @@ -1,4 +1,4 @@ -# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"283644454236b24594f3efcd9afb342d7e7f580641379d752baf9f6d2c61dd1c","body_hash":"bc10f76bd3b0353558153480a45adf7865442394994f1e2b5a492c87fdad15a0","strict":true,"agent_id":"claude","agent_model":"${{ needs.activation.outputs.model_size }}","engine_versions":{"claude":"2.1.201"}} +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"283644454236b24594f3efcd9afb342d7e7f580641379d752baf9f6d2c61dd1c","body_hash":"af57da59ed52380a4185c16498c985083189e258025499b906f6871db7b27b0d","strict":true,"agent_id":"claude","agent_model":"${{ needs.activation.outputs.model_size }}","engine_versions":{"claude":"2.1.201"}} # gh-aw-manifest: {"version":1,"secrets":["ANTHROPIC_API_KEY","GH_AW_AGENT_TOKEN","GH_AW_CI_TRIGGER_TOKEN","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GH_AW_OTEL_GRAFANA_AUTHORIZATION","GH_AW_OTEL_GRAFANA_ENDPOINT","GH_AW_OTEL_SENTRY_AUTHORIZATION","GH_AW_OTEL_SENTRY_ENDPOINT","GITHUB_TOKEN"],"actions":[{"repo":"actions/cache/restore","sha":"55cc8345863c7cc4c66a329aec7e433d2d1c52a9","version":"v6.1.0"},{"repo":"actions/cache/save","sha":"55cc8345863c7cc4c66a329aec7e433d2d1c52a9","version":"v6.1.0"},{"repo":"actions/checkout","sha":"9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0","version":"v7.0.0"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e","version":"v6.4.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.27.26","digest":"sha256:b283b1f037d2e068532fe178a06f2944696c3933ba11604979134e7896ac6f8c","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.27.26@sha256:b283b1f037d2e068532fe178a06f2944696c3933ba11604979134e7896ac6f8c"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.26","digest":"sha256:1743dbac9bf4225f3acfdcbce4f77f5a3e61e22b2e929305525f00196693c015","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.26@sha256:1743dbac9bf4225f3acfdcbce4f77f5a3e61e22b2e929305525f00196693c015"},{"image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.26","digest":"sha256:6006b1c579ca550e023697b5dfd832ae03361328a4c0f2eb49fb181a6b8d7a4b","pinned_image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.26@sha256:6006b1c579ca550e023697b5dfd832ae03361328a4c0f2eb49fb181a6b8d7a4b"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.27.26","digest":"sha256:d4647c3bfaf80889eb1dbd3d4e2063340cbf94c0ca6c5747bbfc8507b12f3485","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.27.26@sha256:d4647c3bfaf80889eb1dbd3d4e2063340cbf94c0ca6c5747bbfc8507b12f3485"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.3.33","digest":"sha256:f0e1f1d562f01e737f3ef125cb4d7057ff87a68a97927f5ea9fd6d3f5091da06","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.3.33@sha256:f0e1f1d562f01e737f3ef125cb4d7057ff87a68a97927f5ea9fd6d3f5091da06"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:529d02eb970b1161aa25c593a9c3df57fdfad5a8add328cb3b6eccef66f3183b","pinned_image":"ghcr.io/github/gh-aw-node@sha256:529d02eb970b1161aa25c593a9c3df57fdfad5a8add328cb3b6eccef66f3183b"},{"image":"ghcr.io/github/github-mcp-server:v1.5.0","digest":"sha256:e25564dccc9110a70a77b9df560cbde11aa392fcb5f08b9abe5c4ebc6d146ea4","pinned_image":"ghcr.io/github/github-mcp-server:v1.5.0@sha256:e25564dccc9110a70a77b9df560cbde11aa392fcb5f08b9abe5c4ebc6d146ea4"}]} # This file was automatically generated by gh-aw. DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md # diff --git a/.github/workflows/daily-doc-healer.md b/.github/workflows/daily-doc-healer.md index a127083d15e..06e47ac806d 100644 --- a/.github/workflows/daily-doc-healer.md +++ b/.github/workflows/daily-doc-healer.md @@ -155,7 +155,22 @@ find docs/src/content/docs -name '*.md' -o -name '*.mdx' grep -Pn "ArtifactName\s*=" pkg/constants/constants.go pkg/constants/job_constants.go ``` -For each constant found, verify that the artifact name value is listed in `docs/src/content/docs/reference/artifacts.md`. If a constant is missing from the reference page, treat it as a documentation gap and add it. +For each constant found: + +a. **First, confirm the artifact is actually produced** before treating a missing `artifacts.md` entry as a documentation gap. For each constant with value `""`, run: + +```bash +grep -rn "name: " .github/workflows/*.lock.yml +grep -rn '""' pkg/workflow/js/ +``` + +An artifact is **produced** if its name appears in the `name:` field of an `actions/upload-artifact` step in any generated `.github/workflows/*.lock.yml` file, or in the JS upload helpers under `pkg/workflow/js/`. + +b. **Also check that the corresponding job builder is not a no-op stub**. If the job builder function that would emit this artifact returns `nil` unconditionally (for example, `buildEvalsJob` has `return nil, nil` and a `TODO` comment), the artifact is not yet implemented. + +c. If the constant exists but the artifact is **not** produced by any workflow (no match in lock.yml files or JS helpers, or the job builder is a no-op stub), **skip it** — it is a forward-declared constant for an unimplemented feature, not a documentation gap. + +d. Only if the artifact **is** produced, verify that the artifact name value is listed in `docs/src/content/docs/reference/artifacts.md`. If a confirmed-produced artifact is missing from the reference page, treat it as a documentation gap and add it. Only proceed with issues where you can confirm the documentation gap still exists.