Skip to content

Instantly share code, notes, and snippets.

@sdboyer
Created February 9, 2026 04:55
Show Gist options
  • Select an option

  • Save sdboyer/30ba9b5a22a283de45c474d2d9724f0b to your computer and use it in GitHub Desktop.

Select an option

Save sdboyer/30ba9b5a22a283de45c474d2d9724f0b to your computer and use it in GitHub Desktop.
Txtar diff report for PR #28479
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Poolio Txtar Diff Report</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, monospace; background: #f5f5f5; color: #333; }
header { background: #1a1a2e; color: #eee; padding: 16px 24px; }
header h1 { font-size: 18px; font-weight: 600; margin-bottom: 4px; }
header .meta { font-size: 12px; color: #aaa; }
.toolbar { display: flex; align-items: center; gap: 16px; padding: 12px 24px; background: #fff; border-bottom: 1px solid #ddd; font-size: 13px; flex-wrap: wrap; }
.toolbar .stat { display: flex; gap: 4px; }
.toolbar .stat-label { color: #888; }
.toolbar .stat-value { font-weight: 600; }
.toolbar .added { color: #22863a; }
.toolbar .removed { color: #cb2431; }
.toolbar .sep { border-left: 1px solid #ddd; height: 20px; }
.btn { background: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; padding: 4px 10px; font-size: 12px; cursor: pointer; font-family: inherit; }
.btn:hover { background: #e0e0e0; }
.btn.active { background: #0366d6; color: #fff; border-color: #0366d6; }
.legend { display: flex; gap: 16px; padding: 8px 24px; background: #fafafa; border-bottom: 1px solid #eee; font-size: 11px; }
.legend-item { display: flex; align-items: center; gap: 4px; }
.legend-swatch { width: 14px; height: 14px; border-radius: 2px; border: 1px solid #ccc; }
.swatch-no-output { background: #e8e8e8; }
.swatch-unchanged { background: #fff; }
.swatch-changed { background: #fff3cd; }
.swatch-added { background: #d4edda; }
.swatch-removed { background: #f8d7da; }
.matrix-container { overflow: auto; padding: 16px 24px; max-height: 70vh; }
table.matrix { border-collapse: collapse; font-size: 11px; }
table.matrix th, table.matrix td { border: 1px solid #ddd; }
table.matrix th { background: #f0f0f0; font-weight: 600; position: sticky; z-index: 1; }
table.matrix thead th { top: 0; }
table.matrix th.origin { z-index: 2; left: 0; top: 0; min-width: 140px; padding: 4px 8px; text-align: left; }
table.matrix th.row-hdr { position: sticky; left: 0; z-index: 1; text-align: left; padding: 4px 8px; background: #f0f0f0; white-space: nowrap; max-width: 200px; overflow: hidden; text-overflow: ellipsis; }
table.matrix th.col-hdr { padding: 4px 2px; width: 28px; min-width: 28px; max-width: 28px; height: 120px; vertical-align: bottom; }
table.matrix th.col-hdr span { display: block; writing-mode: vertical-lr; text-orientation: mixed; transform: rotate(180deg); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-height: 110px; font-size: 10px; }
table.matrix td.cell { width: 28px; min-width: 28px; max-width: 28px; height: 22px; cursor: pointer; padding: 0; text-align: center; font-size: 9px; line-height: 22px; }
table.matrix td.cell:hover { outline: 2px solid #0366d6; outline-offset: -2px; }
table.matrix td.cell.active { outline: 2px solid #0366d6; outline-offset: -2px; }
.c-no-output { background: #e8e8e8; }
.c-unchanged { background: #fff; }
.c-changed { background: #fff3cd; }
.c-added { background: #d4edda; }
.c-removed { background: #f8d7da; }
.detail-panel { margin: 0 24px 24px; background: #fff; border: 1px solid #ddd; border-radius: 4px; display: none; }
.detail-panel.active { display: block; }
.detail-header { padding: 12px 16px; border-bottom: 1px solid #eee; display: flex; justify-content: space-between; align-items: flex-start; }
.detail-header-left { flex: 1; }
.detail-title { font-size: 14px; font-weight: 600; }
.detail-subtitle { font-size: 12px; color: #666; margin-top: 2px; }
.close-btn { cursor: pointer; color: #888; font-size: 20px; line-height: 1; padding: 0 4px; }
.close-btn:hover { color: #333; }
.detail-descriptions { display: flex; gap: 16px; padding: 10px 16px; border-bottom: 1px solid #eee; }
.desc-box { flex: 1; background: #f9f9fb; border: 1px dashed #d0d0d8; border-radius: 4px; padding: 8px 12px; min-height: 48px; }
.desc-box .desc-label { font-size: 10px; font-weight: 600; color: #888; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; }
.desc-box .desc-src { font-size: 11px; color: #0366d6; word-break: break-all; margin-bottom: 2px; }
.desc-box .desc-text { font-size: 12px; color: #aaa; font-style: italic; }
.detail-stats { padding: 8px 16px; border-bottom: 1px solid #eee; font-size: 12px; color: #555; display: flex; gap: 16px; }
.detail-stats .add { color: #22863a; font-weight: 600; }
.detail-stats .del { color: #cb2431; font-weight: 600; }
.detail-body { padding: 0; max-height: 60vh; overflow-y: auto; }
.file-diff { border-bottom: 1px solid #eee; }
.file-diff:last-child { border-bottom: none; }
.file-diff-header { padding: 8px 16px; background: #f8f8f8; font-size: 12px; font-weight: 600; display: flex; justify-content: space-between; }
.file-diff-stats { font-weight: normal; }
.file-diff-stats .add { color: #22863a; }
.file-diff-stats .del { color: #cb2431; }
.badge { display: inline-block; font-size: 10px; font-weight: 600; padding: 1px 6px; border-radius: 3px; margin-left: 6px; }
.badge-added { background: #d4edda; color: #155724; }
.badge-removed { background: #f8d7da; color: #721c24; }
.badge-modified { background: #fff3cd; color: #856404; }
pre.diff { margin: 0; padding: 8px 16px; font-size: 11px; line-height: 1.5; overflow-x: auto; background: #fafafa; }
pre.diff .diff-add { background: #e6ffed; color: #22863a; display: block; }
pre.diff .diff-del { background: #ffeef0; color: #cb2431; display: block; }
pre.diff .diff-hunk { color: #6f42c1; font-weight: 600; display: block; }
pre.diff .diff-ctx { display: block; }
</style>
</head>
<body>
<header>
<h1>Poolio Txtar Diff Report</h1>
<div class="meta">
Commit: HEAD
&middot; 2026-02-08 23:54:11
</div>
</header>
<div class="toolbar">
<div class="stat">
<span class="stat-label">Suites:</span>
<span class="stat-value">5/28 changed</span>
</div>
<div class="stat">
<span class="stat-label">Cases:</span>
<span class="stat-value">9/14 affected</span>
</div>
<div class="stat">
<span class="stat-label">Lines:</span>
<span class="stat-value added">+116</span>
<span class="stat-value removed">-14</span>
</div>
<div class="sep"></div>
<button class="btn" id="transpose-btn" title="Swap rows and columns">Transpose</button>
</div>
<div class="legend">
<div class="legend-item"><div class="legend-swatch swatch-no-output"></div> No output</div>
<div class="legend-item"><div class="legend-swatch swatch-unchanged"></div> Unchanged</div>
<div class="legend-item"><div class="legend-swatch swatch-changed"></div> Changed</div>
<div class="legend-item"><div class="legend-swatch swatch-added"></div> Added</div>
<div class="legend-item"><div class="legend-swatch swatch-removed"></div> Removed</div>
</div>
<div class="matrix-container" id="matrix-container"></div>
<div class="detail-panel" id="detail-panel">
<div class="detail-header">
<div class="detail-header-left">
<div class="detail-title" id="detail-title"></div>
<div class="detail-subtitle" id="detail-subtitle"></div>
</div>
<span class="close-btn" id="detail-close">&times;</span>
</div>
<div class="detail-descriptions" id="detail-descriptions">
<div class="desc-box">
<div class="desc-label" id="desc-suite-label">Suite</div>
<div class="desc-src" id="desc-suite-src"></div>
<div class="desc-text" id="desc-suite-text">No description</div>
</div>
<div class="desc-box">
<div class="desc-label" id="desc-case-label">Case</div>
<div class="desc-src" id="desc-case-src"></div>
<div class="desc-text" id="desc-case-text">No description</div>
</div>
</div>
<div class="detail-stats" id="detail-stats"></div>
<div class="detail-body" id="detail-body"></div>
</div>
<script>
var cellData = {"bundle-generate-all-artifacts/bundle-generate":{"status":"added","fileDiffs":[{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue","status":"modified","linesAdded":11,"linesRemoved":1,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue\n@@ -2,7 +2,10 @@\n // Components are the fundamental building blocks that make up a release bundle.\n package framework\n \n-import \"time\"\n+import (\n+\t\"strings\"\n+\t\"time\"\n+)\n \n // Pattern for 40-character lowercase git SHA\n #GitSHA: =~\"^[a-f0-9]{40}$\"\n@@ -77,6 +80,13 @@\n \t// Source repository information for the component.\n \t// Used for changelog generation and tracking component provenance.\n \tsource?: #Source\n+\n+\t// Release series for this component. Controls which platform release series\n+\t// can include this component. Components with releaseSeries: \"main\" (the default)\n+\t// can be included in any series. Components with a specific series (e.g., \"acme\")\n+\t// can only be included in that series, and will prompt for confirmation if\n+\t// included in a different series.\n+\treleaseSeries: *\"main\" | =~\"^[a-z0-9][a-z0-9-]*$\" \u0026 strings.MaxRunes(32)\n \n \t// Allow subtypes to add additional fields\n \t...\n"},{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue","status":"modified","linesAdded":3,"linesRemoved":0,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue\n@@ -18,6 +18,9 @@\n \t// Release info - present in first-party components\n \trelease?: _\n \tsource?: _\n+\n+\t// Release series - which platform release series this component belongs to\n+\treleaseSeries?: _\n \n \t// Upstream info - present in external components\n \tupstream?: _\n"},{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue","status":"modified","linesAdded":8,"linesRemoved":0,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue\n@@ -1,10 +1,18 @@\n package framework\n+\n+import \"strings\"\n \n // #PlatformRelease represents a complete platform release.\n // It unifies the manifest metadata with component configuration definitions.\n #PlatformRelease: {\n \t// platformVersion is the version number of this platform release\n \tplatformVersion!: string\n+\n+\t// series identifies the release series for this platform release.\n+\t// The main series (default) uses versions like \"2025.01.23-0\".\n+\t// Named series use versions like \"2025.01.23-0-acme\".\n+\t// Series names are case-insensitive and normalized to lowercase.\n+\tseries: *\"main\" | =~\"^[a-z0-9][a-z0-9-]*$\" \u0026 strings.MaxRunes(32)\n \n \t// components lists all components included in this platform release\n \t// with their versions and commit SHAs for immutability tracking\n"}],"linesAdded":22,"linesRemoved":1,"totalFiles":30,"expectsError":false},"bundle-generate-all-artifacts/bundle-generate-full-tank":{"status":"added","fileDiffs":[{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue","status":"modified","linesAdded":11,"linesRemoved":1,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue\n@@ -2,7 +2,10 @@\n // Components are the fundamental building blocks that make up a release bundle.\n package framework\n \n-import \"time\"\n+import (\n+\t\"strings\"\n+\t\"time\"\n+)\n \n // Pattern for 40-character lowercase git SHA\n #GitSHA: =~\"^[a-f0-9]{40}$\"\n@@ -77,6 +80,13 @@\n \t// Source repository information for the component.\n \t// Used for changelog generation and tracking component provenance.\n \tsource?: #Source\n+\n+\t// Release series for this component. Controls which platform release series\n+\t// can include this component. Components with releaseSeries: \"main\" (the default)\n+\t// can be included in any series. Components with a specific series (e.g., \"acme\")\n+\t// can only be included in that series, and will prompt for confirmation if\n+\t// included in a different series.\n+\treleaseSeries: *\"main\" | =~\"^[a-z0-9][a-z0-9-]*$\" \u0026 strings.MaxRunes(32)\n \n \t// Allow subtypes to add additional fields\n \t...\n"},{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue","status":"modified","linesAdded":3,"linesRemoved":0,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue\n@@ -18,6 +18,9 @@\n \t// Release info - present in first-party components\n \trelease?: _\n \tsource?: _\n+\n+\t// Release series - which platform release series this component belongs to\n+\treleaseSeries?: _\n \n \t// Upstream info - present in external components\n \tupstream?: _\n"},{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue","status":"modified","linesAdded":8,"linesRemoved":0,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue\n@@ -1,10 +1,18 @@\n package framework\n+\n+import \"strings\"\n \n // #PlatformRelease represents a complete platform release.\n // It unifies the manifest metadata with component configuration definitions.\n #PlatformRelease: {\n \t// platformVersion is the version number of this platform release\n \tplatformVersion!: string\n+\n+\t// series identifies the release series for this platform release.\n+\t// The main series (default) uses versions like \"2025.01.23-0\".\n+\t// Named series use versions like \"2025.01.23-0-acme\".\n+\t// Series names are case-insensitive and normalized to lowercase.\n+\tseries: *\"main\" | =~\"^[a-z0-9][a-z0-9-]*$\" \u0026 strings.MaxRunes(32)\n \n \t// components lists all components included in this platform release\n \t// with their versions and commit SHAs for immutability tracking\n"}],"linesAdded":22,"linesRemoved":1,"totalFiles":45,"expectsError":false},"bundle-generate-all-artifacts/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-all-artifacts/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-all-artifacts/component-all-ready":{"status":"added","fileDiffs":[{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue","status":"modified","linesAdded":11,"linesRemoved":1,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue\n@@ -2,7 +2,10 @@\n // Components are the fundamental building blocks that make up a release bundle.\n package framework\n \n-import \"time\"\n+import (\n+\t\"strings\"\n+\t\"time\"\n+)\n \n // Pattern for 40-character lowercase git SHA\n #GitSHA: =~\"^[a-f0-9]{40}$\"\n@@ -77,6 +80,13 @@\n \t// Source repository information for the component.\n \t// Used for changelog generation and tracking component provenance.\n \tsource?: #Source\n+\n+\t// Release series for this component. Controls which platform release series\n+\t// can include this component. Components with releaseSeries: \"main\" (the default)\n+\t// can be included in any series. Components with a specific series (e.g., \"acme\")\n+\t// can only be included in that series, and will prompt for confirmation if\n+\t// included in a different series.\n+\treleaseSeries: *\"main\" | =~\"^[a-z0-9][a-z0-9-]*$\" \u0026 strings.MaxRunes(32)\n \n \t// Allow subtypes to add additional fields\n \t...\n"},{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue","status":"modified","linesAdded":3,"linesRemoved":0,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue\n@@ -18,6 +18,9 @@\n \t// Release info - present in first-party components\n \trelease?: _\n \tsource?: _\n+\n+\t// Release series - which platform release series this component belongs to\n+\treleaseSeries?: _\n \n \t// Upstream info - present in external components\n \tupstream?: _\n"},{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue","status":"modified","linesAdded":8,"linesRemoved":0,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue\n@@ -1,10 +1,18 @@\n package framework\n+\n+import \"strings\"\n \n // #PlatformRelease represents a complete platform release.\n // It unifies the manifest metadata with component configuration definitions.\n #PlatformRelease: {\n \t// platformVersion is the version number of this platform release\n \tplatformVersion!: string\n+\n+\t// series identifies the release series for this platform release.\n+\t// The main series (default) uses versions like \"2025.01.23-0\".\n+\t// Named series use versions like \"2025.01.23-0-acme\".\n+\t// Series names are case-insensitive and normalized to lowercase.\n+\tseries: *\"main\" | =~\"^[a-z0-9][a-z0-9-]*$\" \u0026 strings.MaxRunes(32)\n \n \t// components lists all components included in this platform release\n \t// with their versions and commit SHAs for immutability tracking\n"}],"linesAdded":22,"linesRemoved":1,"totalFiles":30,"expectsError":false},"bundle-generate-all-artifacts/component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-all-artifacts/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-all-artifacts/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-all-artifacts/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-all-artifacts/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-all-artifacts/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-all-artifacts/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-all-artifacts/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-all-artifacts/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":21,"expectsError":false},"bundle-generate-full/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":36,"expectsError":false},"bundle-generate-full/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full/component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full/component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-minimal/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-generate-minimal/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-generate-minimal/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-minimal/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-minimal/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-generate-minimal/component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-minimal/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-minimal/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-minimal/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-minimal/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-minimal/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-minimal/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-minimal/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-minimal/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-selective-artifacts/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-generate-selective-artifacts/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-generate-selective-artifacts/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-selective-artifacts/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-selective-artifacts/component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-selective-artifacts/component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-selective-artifacts/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-selective-artifacts/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-selective-artifacts/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-selective-artifacts/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-selective-artifacts/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-selective-artifacts/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-selective-artifacts/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-selective-artifacts/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-release/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":4,"expectsError":false},"bundle-spec-release/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":4,"expectsError":false},"bundle-spec-release/bundle-spec-invalid-array":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-release/bundle-spec-mixed-valid-invalid":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-release/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":4,"expectsError":false},"bundle-spec-release/component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-release/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-release/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-release/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-release/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-release/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-release/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-release/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-release/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":12,"expectsError":false},"component-build/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":20,"expectsError":false},"component-build/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":22,"expectsError":false},"component-build/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build/component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build/component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":4,"expectsError":false},"component-build/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":6,"expectsError":false},"component-codegen/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":6,"expectsError":false},"component-codegen/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":6,"expectsError":false},"component-codegen/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen/component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen/component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-codegen/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-list/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-list/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-list/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-list/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-list/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-list/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-list/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-list/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-list/component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-list/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-list/component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-list/forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-list/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-list/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release/bundle-generate":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release/bundle-generate-full-tank":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release/component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release/component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":15,"expectsError":false},"component-release/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release/component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":6,"expectsError":false},"component-release/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release/platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":9,"expectsError":false},"component-release/prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":9,"expectsError":false},"component-show-all/bundle-generate":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/bundle-generate-full-tank":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-all/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-basic/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-basic/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-basic/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-basic/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-basic/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-basic/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-basic/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-basic/component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-basic/component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-basic/component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-basic/component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-basic/forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-basic/platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-basic/prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-broken/bundle-generate":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/bundle-generate-full-tank":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-broken/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds-json/bundle-generate":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds-json/bundle-generate-full-tank":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds-json/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds-json/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds-json/component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds-json/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds-json/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds-json/component-builds-prune":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-builds-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-builds-json/stdout.txt\n+++ b/out/component-show-builds-json/stdout.txt\n@@ -32,6 +32,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n }\n \n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-builds-json/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds-json/component-release":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-builds-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-builds-json/stdout.txt\n+++ b/out/component-show-builds-json/stdout.txt\n@@ -45,6 +45,7 @@\n },\n \"githubRepo\": \"example/repo\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n }\n \n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-builds-json/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds-json/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds-json/platform-builds-prune":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-builds-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-builds-json/stdout.txt\n+++ b/out/component-show-builds-json/stdout.txt\n@@ -38,6 +38,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n }\n \n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-builds-json/prune-builds-edge-cases":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-builds-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-builds-json/stdout.txt\n+++ b/out/component-show-builds-json/stdout.txt\n@@ -32,6 +32,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n }\n \n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-builds/bundle-generate":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds/bundle-generate-full-tank":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds/component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds/component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-builds/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds/component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-builds/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-builds/platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-builds/prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-releases-json/bundle-generate":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-releases-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-releases-json/stdout.txt\n+++ b/out/component-show-releases-json/stdout.txt\n@@ -14,6 +14,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"releases\": [\n {\n \"metadata\": {\n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-releases-json/bundle-generate-full-tank":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-releases-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-releases-json/stdout.txt\n+++ b/out/component-show-releases-json/stdout.txt\n@@ -14,6 +14,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"releases\": [\n {\n \"metadata\": {\n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-releases-json/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases-json/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases-json/component-all-ready":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-releases-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-releases-json/stdout.txt\n+++ b/out/component-show-releases-json/stdout.txt\n@@ -14,6 +14,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"releases\": [\n {\n \"metadata\": {\n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-releases-json/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases-json/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases-json/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases-json/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases-json/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases-json/component-types-external-dockerfile":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-releases-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-releases-json/stdout.txt\n+++ b/out/component-show-releases-json/stdout.txt\n@@ -22,6 +22,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"releases\": [\n {\n \"metadata\": {\n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-releases-json/forge-preonboarding":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-releases-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-releases-json/stdout.txt\n+++ b/out/component-show-releases-json/stdout.txt\n@@ -19,6 +19,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"releases\": [\n {\n \"metadata\": {\n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-releases-json/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases-json/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-releases/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-releases/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-releases/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases/component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-releases/forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-show-releases/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-show-releases/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-validate/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-validate/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-validate/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-validate/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-validate/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-validate/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-validate/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-validate/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-validate/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-validate/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-validate/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-validate/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-validate/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-validate/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate-no-builtin-aliases/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"pdm-generate-no-builtin-aliases/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"pdm-generate-no-builtin-aliases/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate-no-builtin-aliases/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate-no-builtin-aliases/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"pdm-generate-no-builtin-aliases/component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate-no-builtin-aliases/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate-no-builtin-aliases/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate-no-builtin-aliases/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate-no-builtin-aliases/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate-no-builtin-aliases/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate-no-builtin-aliases/forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"pdm-generate-no-builtin-aliases/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate-no-builtin-aliases/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"pdm-generate/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"pdm-generate/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"pdm-generate/component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate/forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"pdm-generate/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"pdm-generate/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-config-show/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-config-show/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-config-show/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-config-show/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-config-show/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-config-show/component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-config-show/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-config-show/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-config-show/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-config-show/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-config-show/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-config-show/forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-config-show/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-config-show/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-create-transient/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"platform-release-create-transient/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"platform-release-create-transient/bundle-spec-invalid-array":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-create-transient/bundle-spec-mixed-valid-invalid":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-create-transient/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"platform-release-create-transient/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-create-transient/component-build-push":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-create-transient/component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"platform-release-create-transient/component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-create-transient/component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"platform-release-create-transient/component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"platform-release-create-transient/forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"platform-release-create-transient/platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"platform-release-create-transient/prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"platform-release-create/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"platform-release-create/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"platform-release-create/bundle-spec-invalid-array":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-create/bundle-spec-mixed-valid-invalid":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-create/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"platform-release-create/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-create/component-build-push":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-create/component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"platform-release-create/component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-create/component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"platform-release-create/component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"platform-release-create/forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"platform-release-create/platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"platform-release-create/prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"platform-release-list-json/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-list-json/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-list-json/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list-json/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list-json/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-list-json/component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list-json/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list-json/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list-json/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list-json/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list-json/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list-json/forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-list-json/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list-json/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list/bundle-generate":{"status":"changed","fileDiffs":[{"sectionName":"out/platform-release-list/stdout.txt","status":"modified","linesAdded":3,"linesRemoved":2,"unifiedDiff":"--- a/out/platform-release-list/stdout.txt\n+++ b/out/platform-release-list/stdout.txt\n@@ -1,4 +1,4 @@\n-VERSION TYPE COMPONENT COUNT\n-------- ---- ---------------\n-v0.0.1 release 6\n+VERSION SERIES TYPE COMPONENT COUNT\n+------- ------ ---- ---------------\n+v0.0.1 main release 6\n \n"}],"linesAdded":3,"linesRemoved":2,"totalFiles":1,"expectsError":false},"platform-release-list/bundle-generate-full-tank":{"status":"changed","fileDiffs":[{"sectionName":"out/platform-release-list/stdout.txt","status":"modified","linesAdded":4,"linesRemoved":3,"unifiedDiff":"--- a/out/platform-release-list/stdout.txt\n+++ b/out/platform-release-list/stdout.txt\n@@ -1,5 +1,5 @@\n-VERSION TYPE COMPONENT COUNT\n-------- ---- ---------------\n-1.20251203 release 7\n-1.20251208 release 10\n+VERSION SERIES TYPE COMPONENT COUNT\n+------- ------ ---- ---------------\n+1.20251203 main release 7\n+1.20251208 main release 10\n \n"}],"linesAdded":4,"linesRemoved":3,"totalFiles":1,"expectsError":false},"platform-release-list/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list/component-all-ready":{"status":"changed","fileDiffs":[{"sectionName":"out/platform-release-list/stdout.txt","status":"modified","linesAdded":5,"linesRemoved":4,"unifiedDiff":"--- a/out/platform-release-list/stdout.txt\n+++ b/out/platform-release-list/stdout.txt\n@@ -1,6 +1,6 @@\n-VERSION TYPE COMPONENT COUNT\n-------- ---- ---------------\n-1.20251203 release 7\n-1.20251208 release 10\n-1.20251211 release 11\n+VERSION SERIES TYPE COMPONENT COUNT\n+------- ------ ---- ---------------\n+1.20251203 main release 7\n+1.20251208 main release 10\n+1.20251211 main release 11\n \n"}],"linesAdded":5,"linesRemoved":4,"totalFiles":1,"expectsError":false},"platform-release-list/component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list/forge-preonboarding":{"status":"changed","fileDiffs":[{"sectionName":"out/platform-release-list/stdout.txt","status":"modified","linesAdded":3,"linesRemoved":2,"unifiedDiff":"--- a/out/platform-release-list/stdout.txt\n+++ b/out/platform-release-list/stdout.txt\n@@ -1,4 +1,4 @@\n-VERSION TYPE COMPONENT COUNT\n-------- ---- ---------------\n-v0.0.1 release 6\n+VERSION SERIES TYPE COMPONENT COUNT\n+------- ------ ---- ---------------\n+v0.0.1 main release 6\n \n"}],"linesAdded":3,"linesRemoved":2,"totalFiles":1,"expectsError":false},"platform-release-list/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-list/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show-json/bundle-generate":{"status":"added","fileDiffs":[{"sectionName":"out/platform-release-show-json/stdout.txt","status":"modified","linesAdded":6,"linesRemoved":0,"unifiedDiff":"--- a/out/platform-release-show-json/stdout.txt\n+++ b/out/platform-release-show-json/stdout.txt\n@@ -16,6 +16,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"atlas\",\n@@ -40,6 +41,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"core-api\",\n@@ -67,6 +69,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"pool\",\n@@ -94,6 +97,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"splash\",\n@@ -121,6 +125,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vs-extension\",\n@@ -148,6 +153,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vscode-extension\",\n"}],"linesAdded":6,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-show-json/bundle-generate-full-tank":{"status":"added","fileDiffs":[{"sectionName":"out/platform-release-show-json/stdout.txt","status":"modified","linesAdded":7,"linesRemoved":0,"unifiedDiff":"--- a/out/platform-release-show-json/stdout.txt\n+++ b/out/platform-release-show-json/stdout.txt\n@@ -17,6 +17,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"atlas\",\n@@ -42,6 +43,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"core-api\",\n@@ -64,6 +66,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"web-assistant\",\n@@ -91,6 +94,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"pool\",\n@@ -118,6 +122,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"splash\",\n@@ -145,6 +150,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vs-extension\",\n@@ -172,6 +178,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vscode-extension\",\n"}],"linesAdded":7,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-show-json/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show-json/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show-json/component-all-ready":{"status":"added","fileDiffs":[{"sectionName":"out/platform-release-show-json/stdout.txt","status":"modified","linesAdded":7,"linesRemoved":0,"unifiedDiff":"--- a/out/platform-release-show-json/stdout.txt\n+++ b/out/platform-release-show-json/stdout.txt\n@@ -17,6 +17,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"atlas\",\n@@ -41,6 +42,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"core-api\",\n@@ -62,6 +64,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"web-assistant\",\n@@ -89,6 +92,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"pool\",\n@@ -116,6 +120,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"splash\",\n@@ -143,6 +148,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vs-extension\",\n@@ -170,6 +176,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vscode-extension\",\n"}],"linesAdded":7,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-show-json/component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show-json/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show-json/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show-json/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show-json/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show-json/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show-json/forge-preonboarding":{"status":"added","fileDiffs":[{"sectionName":"out/platform-release-show-json/stdout.txt","status":"modified","linesAdded":6,"linesRemoved":0,"unifiedDiff":"--- a/out/platform-release-show-json/stdout.txt\n+++ b/out/platform-release-show-json/stdout.txt\n@@ -16,6 +16,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"atlas\",\n@@ -45,6 +46,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"core-api\",\n@@ -72,6 +74,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"pool\",\n@@ -99,6 +102,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"splash\",\n@@ -126,6 +130,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vs-extension\",\n@@ -153,6 +158,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vscode-extension\",\n"}],"linesAdded":6,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-show-json/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show-json/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-show/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-show/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-show/component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show/component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show/component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show/forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-release-show/platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-release-show/prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"tank-prune-builds/bundle-generate":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"tank-prune-builds/bundle-generate-full-tank":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"tank-prune-builds/bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"tank-prune-builds/bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"tank-prune-builds/component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"tank-prune-builds/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"tank-prune-builds/component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"tank-prune-builds/component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"tank-prune-builds/component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"tank-prune-builds/component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"tank-prune-builds/component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"tank-prune-builds/forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"tank-prune-builds/platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"tank-prune-builds/prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"workspace-discovery/bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"workspace-discovery/bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"workspace-discovery/bundle-spec-invalid-array":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"workspace-discovery/bundle-spec-mixed-valid-invalid":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"workspace-discovery/component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"workspace-discovery/component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"workspace-discovery/component-build-push":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"workspace-discovery/component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"workspace-discovery/component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"workspace-discovery/component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"workspace-discovery/component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"workspace-discovery/forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"workspace-discovery/platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"workspace-discovery/prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false}};
var report = {"gitRef":"HEAD","repoURL":"https://github.com/poolsideai/forge","linkRef":"HEAD","generatedAt":"2026-02-08T23:54:11.927429-05:00","cases":[{"name":"bundle-generate","sourcePath":"cmd/poolio/testdata/bundle-generate.txtar","hasWorkspace":true,"hasTank":true,"inputChanged":false,"componentCount":0},{"name":"bundle-generate-full-tank","sourcePath":"cmd/poolio/testdata/bundle-generate-full-tank.txtar","hasWorkspace":true,"hasTank":true,"inputChanged":false,"componentCount":0},{"name":"bundle-spec-invalid-array","sourcePath":"cmd/poolio/testdata/bundle-spec-invalid-array.txtar","hasWorkspace":true,"hasTank":false,"tags":{"expect-error/bundle-spec-release":"Validates that array-style components are rejected","expect-error/platform-release-create":"no released components, platform create should fail","expect-error/platform-release-create-transient":"no released components, platform create should fail"},"expectErrors":["bundle-spec-release","platform-release-create","platform-release-create-transient"],"inputChanged":false,"componentCount":0},{"name":"bundle-spec-mixed-valid-invalid","sourcePath":"cmd/poolio/testdata/bundle-spec-mixed-valid-invalid.txtar","hasWorkspace":true,"hasTank":false,"tags":{"expect-error/bundle-spec-release":"Second spec (z-invalid-array-components) should fail validation","expect-error/platform-release-create":"no released components, platform create should fail","expect-error/platform-release-create-transient":"no released components, platform create should fail"},"expectErrors":["bundle-spec-release","platform-release-create","platform-release-create-transient"],"inputChanged":false,"componentCount":0},{"name":"component-all-ready","sourcePath":"cmd/poolio/testdata/component-all-ready.txtar","hasWorkspace":true,"hasTank":true,"inputChanged":false,"componentCount":0},{"name":"component-broken-cue","sourcePath":"cmd/poolio/testdata/component-broken-cue.txtar","hasWorkspace":true,"hasTank":true,"tags":{"expect-error/component-build":"building component bad-schema","expect-error/component-validate":"loading local component bad-schema fails","expect-error/platform-release-create":"no released components","expect-error/platform-release-create-transient":"no released components"},"expectErrors":["component-build","component-validate","platform-release-create","platform-release-create-transient"],"inputChanged":false,"componentCount":3},{"name":"component-build-push","sourcePath":"cmd/poolio/testdata/component-build-push.txtar","hasWorkspace":true,"hasTank":false,"tags":{"- Clean build":"should be eligible for push","- Dirty build":"should be rejected (dirty: true in metadata)","- No metadata":"should be rejected (missing metadata.json)","Three scenarios are tested":"","expect-error/platform-release-create":"no released components, platform create should fail","expect-error/platform-release-create-transient":"no released components, platform create should fail"},"expectErrors":["platform-release-create","platform-release-create-transient"],"inputChanged":false,"componentCount":0},{"name":"component-builds-prune","sourcePath":"cmd/poolio/testdata/component-builds-prune.txtar","hasWorkspace":false,"hasTank":true,"tags":{"expect-error/platform-release-create":"no released components, platform create should fail","expect-error/platform-release-create-transient":"no released components, platform create should fail"},"expectErrors":["platform-release-create","platform-release-create-transient"],"inputChanged":false,"componentCount":0},{"name":"component-codegen-simple","sourcePath":"cmd/poolio/testdata/component-codegen-simple.txtar","hasWorkspace":true,"hasTank":false,"tags":{"expect-error/platform-release-create":"no released components, platform create should fail","expect-error/platform-release-create-transient":"no released components, platform create should fail"},"expectErrors":["platform-release-create","platform-release-create-transient"],"inputChanged":false,"componentCount":1},{"name":"component-release","sourcePath":"cmd/poolio/testdata/component-release.txtar","hasWorkspace":true,"hasTank":true,"tags":{"expect-error/platform-release-create":"no released components, platform create should fail","expect-error/platform-release-create-transient":"no released components, platform create should fail"},"expectErrors":["platform-release-create","platform-release-create-transient"],"inputChanged":false,"componentCount":0},{"name":"component-types-external-dockerfile","sourcePath":"cmd/poolio/testdata/component-types-external-dockerfile.txtar","hasWorkspace":true,"hasTank":true,"tags":{"Test component types":"external image and dockerfile build","This tests":"","expect-error/platform-release-create":"no released components, platform create should fail","expect-error/platform-release-create-transient":"no released components, platform create should fail"},"expectErrors":["platform-release-create","platform-release-create-transient"],"inputChanged":false,"componentCount":2},{"name":"forge-preonboarding","sourcePath":"cmd/poolio/testdata/forge-preonboarding.txtar","hasWorkspace":false,"hasTank":true,"inputChanged":false,"componentCount":0},{"name":"platform-builds-prune","sourcePath":"cmd/poolio/testdata/platform-builds-prune.txtar","hasWorkspace":false,"hasTank":true,"tags":{"Setup":"3 platform-builds with varying ages, 3 component-builds","expect-error/platform-release-create":"no released components, platform create should fail","expect-error/platform-release-create-transient":"no released components, platform create should fail"},"expectErrors":["platform-release-create","platform-release-create-transient"],"inputChanged":false,"componentCount":0},{"name":"prune-builds-edge-cases","sourcePath":"cmd/poolio/testdata/prune-builds-edge-cases.txtar","hasWorkspace":false,"hasTank":true,"tags":{"expect-error/platform-release-create":"no released components, platform create should fail","expect-error/platform-release-create-transient":"no released components, platform create should fail"},"expectErrors":["platform-release-create","platform-release-create-transient"],"inputChanged":false,"componentCount":0}],"suites":[{"name":"bundle-generate-all-artifacts","sourcePath":"cmd/poolio/bundle/generate_txtar_test.go:77","casesWithOutput":3,"casesSkipped":11,"casesWithDiffs":3,"consistentFileCount":false},{"name":"bundle-generate-full","casesWithOutput":2,"casesSkipped":12,"casesWithDiffs":0,"consistentFileCount":false},{"name":"bundle-generate-minimal","sourcePath":"cmd/poolio/bundle/generate_txtar_test.go:20","casesWithOutput":3,"casesSkipped":11,"casesWithDiffs":0,"consistentFileCount":true},{"name":"bundle-generate-selective-artifacts","sourcePath":"cmd/poolio/bundle/generate_txtar_test.go:137","casesWithOutput":2,"casesSkipped":12,"casesWithDiffs":0,"consistentFileCount":true},{"name":"bundle-spec-release","sourcePath":"cmd/poolio/bundlespec/release_txtar_test.go:17","casesWithOutput":5,"casesSkipped":9,"casesWithDiffs":0,"consistentFileCount":true},{"name":"component-build","sourcePath":"cmd/poolio/component/build_txtar_test.go:17","casesWithOutput":6,"casesSkipped":8,"casesWithDiffs":0,"consistentFileCount":false},{"name":"component-codegen","sourcePath":"cmd/poolio/component/codegen_txtar_test.go:12","casesWithOutput":6,"casesSkipped":8,"casesWithDiffs":0,"consistentFileCount":false},{"name":"component-list","sourcePath":"cmd/poolio/component/list_txtar_test.go:13","casesWithOutput":7,"casesSkipped":7,"casesWithDiffs":0,"consistentFileCount":true},{"name":"component-release","sourcePath":"cmd/poolio/component/release_txtar_test.go:15","casesWithOutput":5,"casesSkipped":9,"casesWithDiffs":0,"consistentFileCount":false},{"name":"component-show-all","sourcePath":"cmd/poolio/component/show_txtar_test.go:69","casesWithOutput":1,"casesSkipped":13,"casesWithDiffs":0,"consistentFileCount":true},{"name":"component-show-basic","sourcePath":"cmd/poolio/component/show_txtar_test.go:24","casesWithOutput":11,"casesSkipped":3,"casesWithDiffs":0,"consistentFileCount":true},{"name":"component-show-broken","sourcePath":"cmd/poolio/component/show_txtar_test.go:254","casesWithOutput":1,"casesSkipped":13,"casesWithDiffs":0,"consistentFileCount":true},{"name":"component-show-builds","sourcePath":"cmd/poolio/component/show_txtar_test.go:33","casesWithOutput":5,"casesSkipped":9,"casesWithDiffs":0,"consistentFileCount":true},{"name":"component-show-builds-json","sourcePath":"cmd/poolio/component/show_txtar_test.go:42","casesWithOutput":5,"casesSkipped":9,"casesWithDiffs":4,"consistentFileCount":true},{"name":"component-show-releases","sourcePath":"cmd/poolio/component/show_txtar_test.go:51","casesWithOutput":6,"casesSkipped":8,"casesWithDiffs":0,"consistentFileCount":true},{"name":"component-show-releases-json","sourcePath":"cmd/poolio/component/show_txtar_test.go:60","casesWithOutput":6,"casesSkipped":8,"casesWithDiffs":5,"consistentFileCount":true},{"name":"component-validate","sourcePath":"cmd/poolio/component/validate_txtar_test.go:14","casesWithOutput":4,"casesSkipped":10,"casesWithDiffs":0,"consistentFileCount":true},{"name":"pdm-generate","sourcePath":"cmd/poolio/bundle/pdm_txtar_test.go:15","casesWithOutput":4,"casesSkipped":10,"casesWithDiffs":0,"consistentFileCount":true},{"name":"pdm-generate-no-builtin-aliases","sourcePath":"cmd/poolio/bundle/pdm_txtar_test.go:72","casesWithOutput":4,"casesSkipped":10,"casesWithDiffs":0,"consistentFileCount":true},{"name":"platform-release-config-show","sourcePath":"cmd/poolio/release/config_show_txtar_test.go:14","casesWithOutput":4,"casesSkipped":10,"casesWithDiffs":0,"consistentFileCount":true},{"name":"platform-release-create","sourcePath":"cmd/poolio/release/platform-release_txtar_test.go:15","casesWithOutput":14,"casesSkipped":0,"casesWithDiffs":0,"consistentFileCount":false},{"name":"platform-release-create-transient","sourcePath":"cmd/poolio/release/platform-release_txtar_test.go:47","casesWithOutput":14,"casesSkipped":0,"casesWithDiffs":0,"consistentFileCount":false},{"name":"platform-release-list","sourcePath":"cmd/poolio/release/list_txtar_test.go:13","casesWithOutput":4,"casesSkipped":10,"casesWithDiffs":4,"consistentFileCount":true},{"name":"platform-release-list-json","sourcePath":"cmd/poolio/release/list_txtar_test.go:22","casesWithOutput":4,"casesSkipped":10,"casesWithDiffs":0,"consistentFileCount":true},{"name":"platform-release-show","sourcePath":"cmd/poolio/release/show_txtar_test.go:15","casesWithOutput":4,"casesSkipped":10,"casesWithDiffs":0,"consistentFileCount":true},{"name":"platform-release-show-json","sourcePath":"cmd/poolio/release/show_txtar_test.go:24","casesWithOutput":4,"casesSkipped":10,"casesWithDiffs":4,"consistentFileCount":true},{"name":"tank-prune-builds","sourcePath":"cmd/poolio/pep/tank_prune_builds_txtar_test.go:18","casesWithOutput":5,"casesSkipped":9,"casesWithDiffs":0,"consistentFileCount":true},{"name":"workspace-discovery","sourcePath":"pkg/distribution/workspace/discovery_txtar_test.go:14","casesWithOutput":14,"casesSkipped":0,"casesWithDiffs":0,"consistentFileCount":true}],"matrix":{"bundle-generate-all-artifacts":{"bundle-generate":{"status":"added","fileDiffs":[{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue","status":"modified","linesAdded":11,"linesRemoved":1,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue\n@@ -2,7 +2,10 @@\n // Components are the fundamental building blocks that make up a release bundle.\n package framework\n \n-import \"time\"\n+import (\n+\t\"strings\"\n+\t\"time\"\n+)\n \n // Pattern for 40-character lowercase git SHA\n #GitSHA: =~\"^[a-f0-9]{40}$\"\n@@ -77,6 +80,13 @@\n \t// Source repository information for the component.\n \t// Used for changelog generation and tracking component provenance.\n \tsource?: #Source\n+\n+\t// Release series for this component. Controls which platform release series\n+\t// can include this component. Components with releaseSeries: \"main\" (the default)\n+\t// can be included in any series. Components with a specific series (e.g., \"acme\")\n+\t// can only be included in that series, and will prompt for confirmation if\n+\t// included in a different series.\n+\treleaseSeries: *\"main\" | =~\"^[a-z0-9][a-z0-9-]*$\" \u0026 strings.MaxRunes(32)\n \n \t// Allow subtypes to add additional fields\n \t...\n"},{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue","status":"modified","linesAdded":3,"linesRemoved":0,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue\n@@ -18,6 +18,9 @@\n \t// Release info - present in first-party components\n \trelease?: _\n \tsource?: _\n+\n+\t// Release series - which platform release series this component belongs to\n+\treleaseSeries?: _\n \n \t// Upstream info - present in external components\n \tupstream?: _\n"},{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue","status":"modified","linesAdded":8,"linesRemoved":0,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue\n@@ -1,10 +1,18 @@\n package framework\n+\n+import \"strings\"\n \n // #PlatformRelease represents a complete platform release.\n // It unifies the manifest metadata with component configuration definitions.\n #PlatformRelease: {\n \t// platformVersion is the version number of this platform release\n \tplatformVersion!: string\n+\n+\t// series identifies the release series for this platform release.\n+\t// The main series (default) uses versions like \"2025.01.23-0\".\n+\t// Named series use versions like \"2025.01.23-0-acme\".\n+\t// Series names are case-insensitive and normalized to lowercase.\n+\tseries: *\"main\" | =~\"^[a-z0-9][a-z0-9-]*$\" \u0026 strings.MaxRunes(32)\n \n \t// components lists all components included in this platform release\n \t// with their versions and commit SHAs for immutability tracking\n"}],"linesAdded":22,"linesRemoved":1,"totalFiles":30,"expectsError":false},"bundle-generate-full-tank":{"status":"added","fileDiffs":[{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue","status":"modified","linesAdded":11,"linesRemoved":1,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue\n@@ -2,7 +2,10 @@\n // Components are the fundamental building blocks that make up a release bundle.\n package framework\n \n-import \"time\"\n+import (\n+\t\"strings\"\n+\t\"time\"\n+)\n \n // Pattern for 40-character lowercase git SHA\n #GitSHA: =~\"^[a-f0-9]{40}$\"\n@@ -77,6 +80,13 @@\n \t// Source repository information for the component.\n \t// Used for changelog generation and tracking component provenance.\n \tsource?: #Source\n+\n+\t// Release series for this component. Controls which platform release series\n+\t// can include this component. Components with releaseSeries: \"main\" (the default)\n+\t// can be included in any series. Components with a specific series (e.g., \"acme\")\n+\t// can only be included in that series, and will prompt for confirmation if\n+\t// included in a different series.\n+\treleaseSeries: *\"main\" | =~\"^[a-z0-9][a-z0-9-]*$\" \u0026 strings.MaxRunes(32)\n \n \t// Allow subtypes to add additional fields\n \t...\n"},{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue","status":"modified","linesAdded":3,"linesRemoved":0,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue\n@@ -18,6 +18,9 @@\n \t// Release info - present in first-party components\n \trelease?: _\n \tsource?: _\n+\n+\t// Release series - which platform release series this component belongs to\n+\treleaseSeries?: _\n \n \t// Upstream info - present in external components\n \tupstream?: _\n"},{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue","status":"modified","linesAdded":8,"linesRemoved":0,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue\n@@ -1,10 +1,18 @@\n package framework\n+\n+import \"strings\"\n \n // #PlatformRelease represents a complete platform release.\n // It unifies the manifest metadata with component configuration definitions.\n #PlatformRelease: {\n \t// platformVersion is the version number of this platform release\n \tplatformVersion!: string\n+\n+\t// series identifies the release series for this platform release.\n+\t// The main series (default) uses versions like \"2025.01.23-0\".\n+\t// Named series use versions like \"2025.01.23-0-acme\".\n+\t// Series names are case-insensitive and normalized to lowercase.\n+\tseries: *\"main\" | =~\"^[a-z0-9][a-z0-9-]*$\" \u0026 strings.MaxRunes(32)\n \n \t// components lists all components included in this platform release\n \t// with their versions and commit SHAs for immutability tracking\n"}],"linesAdded":22,"linesRemoved":1,"totalFiles":45,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"added","fileDiffs":[{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue","status":"modified","linesAdded":11,"linesRemoved":1,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/component.cue\n@@ -2,7 +2,10 @@\n // Components are the fundamental building blocks that make up a release bundle.\n package framework\n \n-import \"time\"\n+import (\n+\t\"strings\"\n+\t\"time\"\n+)\n \n // Pattern for 40-character lowercase git SHA\n #GitSHA: =~\"^[a-f0-9]{40}$\"\n@@ -77,6 +80,13 @@\n \t// Source repository information for the component.\n \t// Used for changelog generation and tracking component provenance.\n \tsource?: #Source\n+\n+\t// Release series for this component. Controls which platform release series\n+\t// can include this component. Components with releaseSeries: \"main\" (the default)\n+\t// can be included in any series. Components with a specific series (e.g., \"acme\")\n+\t// can only be included in that series, and will prompt for confirmation if\n+\t// included in a different series.\n+\treleaseSeries: *\"main\" | =~\"^[a-z0-9][a-z0-9-]*$\" \u0026 strings.MaxRunes(32)\n \n \t// Allow subtypes to add additional fields\n \t...\n"},{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue","status":"modified","linesAdded":3,"linesRemoved":0,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/concrete.cue\n@@ -18,6 +18,9 @@\n \t// Release info - present in first-party components\n \trelease?: _\n \tsource?: _\n+\n+\t// Release series - which platform release series this component belongs to\n+\treleaseSeries?: _\n \n \t// Upstream info - present in external components\n \tupstream?: _\n"},{"sectionName":"out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue","status":"modified","linesAdded":8,"linesRemoved":0,"unifiedDiff":"--- a/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue\n+++ b/out/bundle-generate-all-artifacts/output/cue.mod/pkg/github.com/poolsideai/forge/pkg/distribution/framework/platform.cue\n@@ -1,10 +1,18 @@\n package framework\n+\n+import \"strings\"\n \n // #PlatformRelease represents a complete platform release.\n // It unifies the manifest metadata with component configuration definitions.\n #PlatformRelease: {\n \t// platformVersion is the version number of this platform release\n \tplatformVersion!: string\n+\n+\t// series identifies the release series for this platform release.\n+\t// The main series (default) uses versions like \"2025.01.23-0\".\n+\t// Named series use versions like \"2025.01.23-0-acme\".\n+\t// Series names are case-insensitive and normalized to lowercase.\n+\tseries: *\"main\" | =~\"^[a-z0-9][a-z0-9-]*$\" \u0026 strings.MaxRunes(32)\n \n \t// components lists all components included in this platform release\n \t// with their versions and commit SHAs for immutability tracking\n"}],"linesAdded":22,"linesRemoved":1,"totalFiles":30,"expectsError":false},"component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"bundle-generate-full":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":21,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":36,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"bundle-generate-minimal":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"bundle-generate-selective-artifacts":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"bundle-spec-release":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":4,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":4,"expectsError":false},"bundle-spec-invalid-array":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":4,"expectsError":false},"component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"component-build":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":12,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":20,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":22,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":4,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"component-codegen":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":6,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":6,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":6,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"component-list":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"component-release":{"bundle-generate":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full-tank":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":15,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":6,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":9,"expectsError":false},"prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":9,"expectsError":false}},"component-show-all":{"bundle-generate":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full-tank":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"component-show-basic":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false}},"component-show-broken":{"bundle-generate":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full-tank":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"component-show-builds":{"bundle-generate":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full-tank":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false}},"component-show-builds-json":{"bundle-generate":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full-tank":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-builds-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-builds-json/stdout.txt\n+++ b/out/component-show-builds-json/stdout.txt\n@@ -32,6 +32,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n }\n \n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-builds-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-builds-json/stdout.txt\n+++ b/out/component-show-builds-json/stdout.txt\n@@ -45,6 +45,7 @@\n },\n \"githubRepo\": \"example/repo\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n }\n \n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-builds-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-builds-json/stdout.txt\n+++ b/out/component-show-builds-json/stdout.txt\n@@ -38,6 +38,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n }\n \n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"prune-builds-edge-cases":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-builds-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-builds-json/stdout.txt\n+++ b/out/component-show-builds-json/stdout.txt\n@@ -32,6 +32,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n }\n \n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false}},"component-show-releases":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"component-show-releases-json":{"bundle-generate":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-releases-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-releases-json/stdout.txt\n+++ b/out/component-show-releases-json/stdout.txt\n@@ -14,6 +14,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"releases\": [\n {\n \"metadata\": {\n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-releases-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-releases-json/stdout.txt\n+++ b/out/component-show-releases-json/stdout.txt\n@@ -14,6 +14,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"releases\": [\n {\n \"metadata\": {\n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-releases-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-releases-json/stdout.txt\n+++ b/out/component-show-releases-json/stdout.txt\n@@ -14,6 +14,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"releases\": [\n {\n \"metadata\": {\n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-releases-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-releases-json/stdout.txt\n+++ b/out/component-show-releases-json/stdout.txt\n@@ -22,6 +22,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"releases\": [\n {\n \"metadata\": {\n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"forge-preonboarding":{"status":"added","fileDiffs":[{"sectionName":"out/component-show-releases-json/stdout.txt","status":"modified","linesAdded":1,"linesRemoved":0,"unifiedDiff":"--- a/out/component-show-releases-json/stdout.txt\n+++ b/out/component-show-releases-json/stdout.txt\n@@ -19,6 +19,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"releases\": [\n {\n \"metadata\": {\n"}],"linesAdded":1,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"component-validate":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"pdm-generate":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"pdm-generate-no-builtin-aliases":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"platform-release-config-show":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"platform-release-create":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-spec-invalid-array":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true}},"platform-release-create-transient":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"bundle-spec-invalid-array":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":3,"expectsError":false},"platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true},"prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":2,"expectsError":true}},"platform-release-list":{"bundle-generate":{"status":"changed","fileDiffs":[{"sectionName":"out/platform-release-list/stdout.txt","status":"modified","linesAdded":3,"linesRemoved":2,"unifiedDiff":"--- a/out/platform-release-list/stdout.txt\n+++ b/out/platform-release-list/stdout.txt\n@@ -1,4 +1,4 @@\n-VERSION TYPE COMPONENT COUNT\n-------- ---- ---------------\n-v0.0.1 release 6\n+VERSION SERIES TYPE COMPONENT COUNT\n+------- ------ ---- ---------------\n+v0.0.1 main release 6\n \n"}],"linesAdded":3,"linesRemoved":2,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"changed","fileDiffs":[{"sectionName":"out/platform-release-list/stdout.txt","status":"modified","linesAdded":4,"linesRemoved":3,"unifiedDiff":"--- a/out/platform-release-list/stdout.txt\n+++ b/out/platform-release-list/stdout.txt\n@@ -1,5 +1,5 @@\n-VERSION TYPE COMPONENT COUNT\n-------- ---- ---------------\n-1.20251203 release 7\n-1.20251208 release 10\n+VERSION SERIES TYPE COMPONENT COUNT\n+------- ------ ---- ---------------\n+1.20251203 main release 7\n+1.20251208 main release 10\n \n"}],"linesAdded":4,"linesRemoved":3,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"changed","fileDiffs":[{"sectionName":"out/platform-release-list/stdout.txt","status":"modified","linesAdded":5,"linesRemoved":4,"unifiedDiff":"--- a/out/platform-release-list/stdout.txt\n+++ b/out/platform-release-list/stdout.txt\n@@ -1,6 +1,6 @@\n-VERSION TYPE COMPONENT COUNT\n-------- ---- ---------------\n-1.20251203 release 7\n-1.20251208 release 10\n-1.20251211 release 11\n+VERSION SERIES TYPE COMPONENT COUNT\n+------- ------ ---- ---------------\n+1.20251203 main release 7\n+1.20251208 main release 10\n+1.20251211 main release 11\n \n"}],"linesAdded":5,"linesRemoved":4,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"changed","fileDiffs":[{"sectionName":"out/platform-release-list/stdout.txt","status":"modified","linesAdded":3,"linesRemoved":2,"unifiedDiff":"--- a/out/platform-release-list/stdout.txt\n+++ b/out/platform-release-list/stdout.txt\n@@ -1,4 +1,4 @@\n-VERSION TYPE COMPONENT COUNT\n-------- ---- ---------------\n-v0.0.1 release 6\n+VERSION SERIES TYPE COMPONENT COUNT\n+------- ------ ---- ---------------\n+v0.0.1 main release 6\n \n"}],"linesAdded":3,"linesRemoved":2,"totalFiles":1,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"platform-release-list-json":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"platform-release-show":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"platform-release-show-json":{"bundle-generate":{"status":"added","fileDiffs":[{"sectionName":"out/platform-release-show-json/stdout.txt","status":"modified","linesAdded":6,"linesRemoved":0,"unifiedDiff":"--- a/out/platform-release-show-json/stdout.txt\n+++ b/out/platform-release-show-json/stdout.txt\n@@ -16,6 +16,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"atlas\",\n@@ -40,6 +41,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"core-api\",\n@@ -67,6 +69,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"pool\",\n@@ -94,6 +97,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"splash\",\n@@ -121,6 +125,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vs-extension\",\n@@ -148,6 +153,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vscode-extension\",\n"}],"linesAdded":6,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"added","fileDiffs":[{"sectionName":"out/platform-release-show-json/stdout.txt","status":"modified","linesAdded":7,"linesRemoved":0,"unifiedDiff":"--- a/out/platform-release-show-json/stdout.txt\n+++ b/out/platform-release-show-json/stdout.txt\n@@ -17,6 +17,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"atlas\",\n@@ -42,6 +43,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"core-api\",\n@@ -64,6 +66,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"web-assistant\",\n@@ -91,6 +94,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"pool\",\n@@ -118,6 +122,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"splash\",\n@@ -145,6 +150,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vs-extension\",\n@@ -172,6 +178,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vscode-extension\",\n"}],"linesAdded":7,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"added","fileDiffs":[{"sectionName":"out/platform-release-show-json/stdout.txt","status":"modified","linesAdded":7,"linesRemoved":0,"unifiedDiff":"--- a/out/platform-release-show-json/stdout.txt\n+++ b/out/platform-release-show-json/stdout.txt\n@@ -17,6 +17,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"atlas\",\n@@ -41,6 +42,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"core-api\",\n@@ -62,6 +64,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"web-assistant\",\n@@ -89,6 +92,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"pool\",\n@@ -116,6 +120,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"splash\",\n@@ -143,6 +148,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vs-extension\",\n@@ -170,6 +176,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vscode-extension\",\n"}],"linesAdded":7,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"added","fileDiffs":[{"sectionName":"out/platform-release-show-json/stdout.txt","status":"modified","linesAdded":6,"linesRemoved":0,"unifiedDiff":"--- a/out/platform-release-show-json/stdout.txt\n+++ b/out/platform-release-show-json/stdout.txt\n@@ -16,6 +16,7 @@\n \"branch\": \"main\",\n \"githubRepo\": \"poolsideai/atlas\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"atlas\",\n@@ -45,6 +46,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"image\"\n },\n \"name\": \"core-api\",\n@@ -72,6 +74,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"pool\",\n@@ -99,6 +102,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"splash\",\n@@ -126,6 +130,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vs-extension\",\n@@ -153,6 +158,7 @@\n },\n \"githubRepo\": \"poolsideai/forge\"\n },\n+ \"releaseSeries\": \"main\",\n \"type\": \"binary\"\n },\n \"name\": \"vscode-extension\",\n"}],"linesAdded":6,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-builds-prune":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"prune-builds-edge-cases":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false}},"tank-prune-builds":{"bundle-generate":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-generate-full-tank":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-invalid-array":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-codegen-simple":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-types-external-dockerfile":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"forge-preonboarding":{"status":"no-output","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false}},"workspace-discovery":{"bundle-generate":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-generate-full-tank":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"bundle-spec-invalid-array":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"bundle-spec-mixed-valid-invalid":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-all-ready":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-broken-cue":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-build-push":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-codegen-simple":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":0,"expectsError":false},"component-release":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"component-types-external-dockerfile":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"forge-preonboarding":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"platform-builds-prune":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false},"prune-builds-edge-cases":{"status":"unchanged","linesAdded":0,"linesRemoved":0,"totalFiles":1,"expectsError":false}}},"summary":{"totalCases":14,"changedCases":9,"totalSuites":28,"suitesWithDiffs":5,"totalLinesAdded":116,"totalLinesRemoved":14}};
var caseIndex = {};
report.cases.forEach(function(c) { caseIndex[c.name] = c; });
var suiteIndex = {};
report.suites.forEach(function(s) { suiteIndex[s.name] = s; });
var transposed = false;
function getCell(suite, caseName) {
return cellData[suite + '/' + caseName];
}
function cssClass(status) {
return 'c-' + status;
}
function renderMatrix() {
var container = document.getElementById('matrix-container');
var rowItems = transposed ? report.cases : report.suites;
var colItems = transposed ? report.suites : report.cases;
var rowLabel = transposed ? 'Case' : 'Suite';
var colLabel = transposed ? 'Suite' : 'Case';
var table = document.createElement('table');
table.className = 'matrix';
var thead = document.createElement('thead');
var hrow = document.createElement('tr');
var origin = document.createElement('th');
origin.className = 'origin';
origin.textContent = rowLabel + ' \\ ' + colLabel;
hrow.appendChild(origin);
colItems.forEach(function(col) {
var th = document.createElement('th');
th.className = 'col-hdr';
var span = document.createElement('span');
span.textContent = col.name;
span.title = col.name;
th.appendChild(span);
hrow.appendChild(th);
});
thead.appendChild(hrow);
table.appendChild(thead);
var tbody = document.createElement('tbody');
rowItems.forEach(function(row) {
var tr = document.createElement('tr');
var th = document.createElement('th');
th.className = 'row-hdr';
th.textContent = row.name;
th.title = row.name;
tr.appendChild(th);
colItems.forEach(function(col) {
var suite = transposed ? col.name : row.name;
var caseName = transposed ? row.name : col.name;
var cell = getCell(suite, caseName);
var td = document.createElement('td');
td.className = 'cell ' + cssClass(cell ? cell.status : 'no-output');
td.dataset.suite = suite;
td.dataset['case'] = caseName;
if (cell && cell.fileDiffs && cell.fileDiffs.length > 0) {
td.title = '+' + cell.linesAdded + '/-' + cell.linesRemoved;
}
td.addEventListener('click', onCellClick);
tr.appendChild(td);
});
tbody.appendChild(tr);
});
table.appendChild(tbody);
container.innerHTML = '';
container.appendChild(table);
}
function onCellClick() {
var suite = this.dataset.suite;
var caseName = this.dataset['case'];
var cell = getCell(suite, caseName);
var ci = caseIndex[caseName];
var si = suiteIndex[suite];
document.querySelectorAll('td.cell.active').forEach(function(el) { el.classList.remove('active'); });
this.classList.add('active');
var panel = document.getElementById('detail-panel');
if (!cell || !cell.fileDiffs || cell.fileDiffs.length === 0) {
document.getElementById('detail-title').textContent = suite + ' / ' + caseName;
document.getElementById('detail-subtitle').textContent = cell ? cell.status : 'no output';
populateDescBoxes(suite, caseName, si, ci);
document.getElementById('detail-stats').innerHTML = '<span style="color:#999">No diffs to display</span>';
document.getElementById('detail-body').innerHTML = '';
panel.classList.add('active');
return;
}
document.getElementById('detail-title').textContent = suite + ' / ' + caseName;
document.getElementById('detail-subtitle').textContent = cell.status + ' \u2014 ' + cell.fileDiffs.length + ' file(s)';
populateDescBoxes(suite, caseName, si, ci);
document.getElementById('detail-stats').innerHTML =
'<span class="add">+' + cell.linesAdded + '</span>' +
'<span class="del"> -' + cell.linesRemoved + '</span>' +
'<span> across ' + cell.totalFiles + ' file(s)</span>' +
(cell.expectsError ? '<span style="margin-left:8px;color:#856404">expects error</span>' : '');
var body = document.getElementById('detail-body');
body.innerHTML = '';
cell.fileDiffs.forEach(function(fd) {
var div = document.createElement('div');
div.className = 'file-diff';
var hdr = document.createElement('div');
hdr.className = 'file-diff-header';
var nameSpan = document.createElement('span');
nameSpan.textContent = fd.sectionName;
var badge = document.createElement('span');
badge.className = 'badge badge-' + fd.status;
badge.textContent = fd.status;
nameSpan.appendChild(badge);
var stats = document.createElement('span');
stats.className = 'file-diff-stats';
stats.innerHTML = '<span class="add">+' + fd.linesAdded + '</span> <span class="del">-' + fd.linesRemoved + '</span>';
hdr.appendChild(nameSpan);
hdr.appendChild(stats);
div.appendChild(hdr);
if (fd.unifiedDiff) {
var pre = document.createElement('pre');
pre.className = 'diff';
fd.unifiedDiff.split('\n').forEach(function(line) {
var span = document.createElement('span');
if (line.startsWith('@@')) {
span.className = 'diff-hunk';
} else if (line.startsWith('+') && !line.startsWith('+++')) {
span.className = 'diff-add';
} else if (line.startsWith('-') && !line.startsWith('---')) {
span.className = 'diff-del';
} else {
span.className = 'diff-ctx';
}
span.textContent = line;
pre.appendChild(span);
});
div.appendChild(pre);
}
body.appendChild(div);
});
panel.classList.add('active');
}
function makeSourceLink(container, sourcePath) {
container.innerHTML = '';
if (!sourcePath) return;
if (report.repoURL && report.linkRef) {
var parts = sourcePath.split(':');
var url = report.repoURL + '/blob/' + report.linkRef + '/' + parts[0];
if (parts.length > 1) url += '#L' + parts[1];
var a = document.createElement('a');
a.href = url;
a.target = '_blank';
a.rel = 'noopener';
a.textContent = sourcePath;
container.appendChild(a);
} else {
container.textContent = sourcePath;
}
}
function populateDescBoxes(suite, caseName, si, ci) {
document.getElementById('desc-suite-label').textContent = 'Suite: ' + suite;
makeSourceLink(document.getElementById('desc-suite-src'), si ? si.sourcePath : '');
document.getElementById('desc-suite-text').textContent = si ? (si.casesWithDiffs + '/' + si.casesWithOutput + ' cases with diffs') : 'No description';
document.getElementById('desc-case-label').textContent = 'Case: ' + caseName;
makeSourceLink(document.getElementById('desc-case-src'), ci ? ci.sourcePath : '');
document.getElementById('desc-case-text').textContent = describeCaseInfo(ci);
}
function describeCaseInfo(ci) {
if (!ci) return 'No description';
var parts = [];
if (ci.componentCount > 0) parts.push(ci.componentCount + ' component(s)');
if (ci.hasWorkspace) parts.push('workspace');
if (ci.hasTank) parts.push('tank');
if (ci.inputChanged) parts.push('inputs changed');
if (ci.expectErrors && ci.expectErrors.length > 0) parts.push('expects errors: ' + ci.expectErrors.join(', '));
return parts.length > 0 ? parts.join(' \u00b7 ') : 'No description';
}
document.getElementById('detail-close').addEventListener('click', function() {
document.getElementById('detail-panel').classList.remove('active');
document.querySelectorAll('td.cell.active').forEach(function(el) { el.classList.remove('active'); });
});
document.getElementById('transpose-btn').addEventListener('click', function() {
transposed = !transposed;
this.classList.toggle('active', transposed);
document.getElementById('detail-panel').classList.remove('active');
renderMatrix();
});
renderMatrix();
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment