From 473eb504ec1ed88a4af2b2ffbb02bc55deb23c9c Mon Sep 17 00:00:00 2001 From: Paul Yuknewicz Date: Wed, 7 Oct 2026 21:46:06 -0700 Subject: [PATCH 1/2] Correct production README versions and Storage identity Match the root catalog to published SRE 0.4.1 and Storage 0.3.0 tags, and cover all six plugin install names and latest aliases in the existing documentation regression. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1f3ca85e-de77-4d16-aafb-9f5c4d1a5861 --- README.md | 6 +++--- test/production-links.test.mjs | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 078d818..f6456c1 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ copilot plugin install azure-functions-hosted-skills@azure-dev-tools copilot plugin install azure-resources-query@azure-dev-tools copilot plugin install azure-cost-health-check@azure-dev-tools copilot plugin install azure-sre-agent@azure-dev-tools -copilot plugin install azure-storage-canvas@azure-dev-tools +copilot plugin install azure-storage@azure-dev-tools copilot plugin install canvas-authoring@azure-dev-tools ``` @@ -37,8 +37,8 @@ the reproducible install points: | [Azure Resources Query](canvases/azure-resources-query/) | Find and inspect Azure resources with read-only Resource Graph queries. | 0.1.5 is tagged; `azure-resources-query-latest` points to that release. | | [Canvas Authoring](plugins/canvas-authoring/) | Add toolkit setup and starter apps to the native `create-canvas` workflow. | 0.1.1 is tagged; `canvas-authoring-latest` points to that release. Skill-only plugin, with no canvas panel. | | [Azure Cost Health Check](canvases/azure-cost-health-check/) | Review spend, forecasts, budgets, alerts, recommendations, and AI billing. | 0.4.5 is tagged; `azure-cost-health-check-latest` points to that release. | -| [Azure SRE Agent](canvases/azure-sre-agent/) | Connect to your SRE Agent, diagnose failing apps, and investigate incident threads. | 0.2.7 is tagged; `azure-sre-agent-latest` points to that release. | -| [Azure Storage canvas](canvases/azure-storage-canvas/) | Browse blobs, inspect statistics, download files, and plan storage transfers with Copilot. | 0.1.1; immutable and `azure-storage-canvas-latest` install links become usable after the reviewed merge and tag verification. | +| [Azure SRE Agent](canvases/azure-sre-agent/) | Connect to your SRE Agent, diagnose failing apps, and investigate incident threads. | 0.4.1 is tagged; `azure-sre-agent-latest` points to that release. | +| [Azure Storage](canvases/azure-storage/) | Browse blobs, inspect statistics, download files, and plan storage transfers with Copilot. | 0.3.0 is tagged; `azure-storage-latest` points to that release. | Native App marketplace installation has not been verified for every product; a source package or direct CLI install alone does not establish that the diff --git a/test/production-links.test.mjs b/test/production-links.test.mjs index 9462ff5..912e730 100644 --- a/test/production-links.test.mjs +++ b/test/production-links.test.mjs @@ -37,17 +37,22 @@ test("production catalog matches all installable plugins in order", () => { "canvas-authoring": ["Canvas Authoring", "plugins/canvas-authoring/"], "azure-cost-health-check": ["Azure Cost Health Check", "canvases/azure-cost-health-check/"], "azure-sre-agent": ["Azure SRE Agent", "canvases/azure-sre-agent/"], + "azure-storage": ["Azure Storage", "canvases/azure-storage/"], }; assert.equal(rows.length, manifest.plugins.length); for (const [index, { name, version }] of manifest.plugins.entries()) { const [label, path] = products[name]; assert.ok(rows[index].startsWith(`| [${label}](${path}) |`), `catalog order: ${label}`); assert.ok(existsSync(new URL(path, root)), `${label}: missing package`); - assert.ok(rows[index].includes(version), `${label}: current catalog version`); + assert.ok(rows[index].includes(`| ${version} is tagged; \`${name}-latest\` points to that release.`), + `${label}: current catalog version and latest alias`); + assert.ok(readme.includes(`copilot plugin install ${name}@azure-dev-tools`), + `${label}: catalog install name`); } assert.match(rows[2], /Skill-only plugin, with no canvas panel/); assert.match(readme, /copilot plugin install azure-sre-agent@azure-dev-tools/); assert.match(readme, /\[Azure SRE Agent\]\(canvases\/azure-sre-agent\/\)/); + assert.doesNotMatch(readme, /azure-storage-canvas/); }); test("SRE package has its catalog identity, official preview logo and customer connection steps", () => { From d49cf7f41ae953c034ea7d893b04fab71f003519 Mon Sep 17 00:00:00 2001 From: Paul Yuknewicz Date: Mon, 12 Oct 2026 14:05:39 -0700 Subject: [PATCH 2/2] Reject SHA-256 checksums in the version-independent root README Extend the root hash guard through 64 hexadecimal characters and cover short Git revisions, full Git commits, and SHA-256 checksums in the existing qualification regression. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1f3ca85e-de77-4d16-aafb-9f5c4d1a5861 --- test/production-links.test.mjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/production-links.test.mjs b/test/production-links.test.mjs index e4b918c..09f186f 100644 --- a/test/production-links.test.mjs +++ b/test/production-links.test.mjs @@ -56,7 +56,7 @@ function verifyRootCatalog(readme, catalog) { assert.match(readme, /Native App marketplace installation has not been verified for every product/); assert.match(readme, /a source package or direct CLI install alone does not establish that the\s+native listing is live/); assert.match(readme, /Each product README lists its prerequisites, safe prompts, first-run workflow,\s+version-pinned installation options, and product-specific safety behavior/); - assert.doesNotMatch(readme, /\b\d+\.\d+\.\d+\b|-latest\b|-v\d|\b[0-9a-f]{7,40}\b/, + assert.doesNotMatch(readme, /\b\d+\.\d+\.\d+\b|-latest\b|-v\d|\b[0-9a-f]{7,64}\b/, "release versions, tag aliases, and hashes belong in product release docs"); } @@ -110,7 +110,9 @@ test("root catalog: retains skill-only, pinned-install, and native marketplace q rootReadme.replace("Native App marketplace installation has not been verified for every product;", ""), rootReadme.replace("version-pinned installation options", "installation options"), `${rootReadme}\n0.4.1 is tagged; azure-sre-agent-latest points to that release.\n`, + `${rootReadme}\nSource revision: abcdef0\n`, `${rootReadme}\nRelease commit: bc8c3349df123c56eea4a957f8d63d3a4a8fd6e4\n`, + `${rootReadme}\nSHA-256 checksum: ${"a".repeat(64)}\n`, ]) { assert.throws(() => verifyRootCatalog(changed, manifest), assert.AssertionError); }