Skip to content

Add reset button for maxed-out failed builds on versions page - #548

Merged
frostebite merged 2 commits into
mainfrom
feat/8192-docs-and-reset-button
Mar 27, 2026
Merged

Add reset button for maxed-out failed builds on versions page#548
frostebite merged 2 commits into
mainfrom
feat/8192-docs-and-reset-button

Conversation

@frostebite

@frostebite frostebite commented Mar 26, 2026

Copy link
Copy Markdown
Member

Summary

  • Show failure count (e.g., ⚠ (15/15)) next to failed build status icons on the versions page so admins can identify stuck builds at a glance
  • Add admin-only reset button that calls the new resetFailedBuilds backend endpoint to clear inflated failure counts so the Ingeminator can retry them

Context

The old 500 error loop (fixed in versioning-backend#84) artificially inflated failureCount on many builds past the max of 15. These builds are permanently stuck. The reset button provides a code-based way to fix them without manual Firestore edits.

Depends on

Test plan

  • Failed builds with failureCount >= 15 show count display (e.g., ⚠ (15/15))
  • Admin users see the reset button next to maxed-out failed builds
  • Clicking reset button calls resetFailedBuilds endpoint and shows toast feedback
  • Non-admin users do not see the reset button

🤖 Generated with Claude Code

…uilds

- Add troubleshooting entry for the AWS ECS containerOverrides 8192-byte
  limit with explanation and secret-pulling workaround
- Show failure count (e.g. "15/15") next to failed build status icons
- Add admin-only reset button that calls resetFailedBuilds endpoint to
  clear inflated failure counts so the Ingeminator retries them

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@frostebite
frostebite requested a review from webbertakken March 26, 2026 16:24
@github-actions

Copy link
Copy Markdown

Cat Gif

@coderabbitai

coderabbitai Bot commented Mar 26, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The changes add failure count tracking to build status displays and introduce a reset mechanism for builds experiencing repeated failures (15+), along with documentation for an AWS ECS containerOverrides payload size limit.

Changes

Cohort / File(s) Summary
Documentation
docs/09-troubleshooting/common-issues.mdx
Added new troubleshooting section documenting the AWS ECS/Fargate 8192-byte limit on containerOverrides JSON payload and three mitigation strategies: using secretSource, shortening custom env var values, and reducing the number of workflow env variables.
Build Status UI
src/components/docs/versions/builds/build-row.tsx
Updated failed build-status rendering to conditionally display a failure count suffix (⚠ (count/15)) when failureCount ≥ 15 by reading from build.meta?.failureCount.
Build Reset Logic
src/components/docs/versions/docker-image-link-or-retry-button.tsx
Added optional meta.failureCount property to Record type; introduced local resetRequested state; added resetFailedBuilds endpoint hook; implemented separate onRetryClick and onResetClick handlers with notify.promise patterns; conditionally rendered reset button with restart icon when failureCount ≥ 15.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • webbertakken

Poem

🐰 Hoppy hops through builds with glee,
Counting failures, one, two, three!
When fifteen strikes, a reset blooms,
Fresh starts chase away the glooms!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately captures the main changes: adding a reset button for failed builds that have reached the max failure count (15) on the versions page.
Description check ✅ Passed The description covers the main changes, provides context about the underlying issue, documents dependencies, and includes a test plan. All critical sections are present.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/8192-docs-and-reset-button

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

frostebite added a commit that referenced this pull request Mar 26, 2026
…#548

The 8192 troubleshooting entry and build reset button UI changes are
now in a separate PR (#548) targeting main.

The orchestrator-specific docs (AWS provider troubleshooting section
and secrets tip callout) remain here since those files only exist on
this branch.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
src/components/docs/versions/docker-image-link-or-retry-button.tsx (1)

55-79: Guard retry/reset actions against duplicate in-flight submissions.

A fast double-click can fire concurrent POSTs before the prior request settles. Add an in-flight guard and disable the button while pending.

Suggested refactor
   const [retryRequested, setRetryRequested] = useState<boolean>(false);
   const [resetRequested, setResetRequested] = useState<boolean>(false);
+  const [retryPending, setRetryPending] = useState<boolean>(false);
+  const [resetPending, setResetPending] = useState<boolean>(false);
@@
   const onRetryClick = async () => {
+    if (retryPending) return;
+    setRetryPending(true);
     try {
       setRetryRequested(true);
       await notify.promise(retryBuild(), {
@@
     } catch {
       setRetryRequested(false);
+    } finally {
+      setRetryPending(false);
     }
   };
@@
   const onResetClick = async () => {
+    if (resetPending) return;
+    setResetPending(true);
     try {
       setResetRequested(true);
       await notify.promise(resetBuild(), {
@@
     } catch {
       setResetRequested(false);
+    } finally {
+      setResetPending(false);
     }
   };
@@
-        <button type="button" onClick={onRetryClick} style={buttonStyle}>
+        <button type="button" onClick={onRetryClick} style={buttonStyle} disabled={retryPending}>
@@
-          <button type="button" onClick={onResetClick} style={buttonStyle}>
+          <button type="button" onClick={onResetClick} style={buttonStyle} disabled={resetPending}>

Also applies to: 88-97

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/docs/versions/docker-image-link-or-retry-button.tsx` around
lines 55 - 79, The onRetryClick and onResetClick handlers (and corresponding UI
buttons) currently allow concurrent POSTs on fast double-click; add an in-flight
guard using the existing state (e.g., retryRequested and resetRequested) so each
handler returns early if already true, set the flag before calling
notify.promise and only clear it in the catch/finally as appropriate, and ensure
the Retry/Reset button props use the same flags to disable the button while the
request is pending; reference onRetryClick, onResetClick, retryBuild,
resetBuild, setRetryRequested, setResetRequested, retryRequested and
resetRequested when making these changes.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/09-troubleshooting/common-issues.mdx`:
- Around line 380-389: The YAML example for the game-ci/unity-builder@v4 action
incorrectly places the Orchestrator inputs pullInputList and secretSource under
env: instead of under with:, so move pullInputList and secretSource into the
with: block alongside providerStrategy, targetPlatform, and gitPrivateToken;
update the snippet that references game-ci/unity-builder@v4 to ensure with:
contains providerStrategy, pullInputList, secretSource, targetPlatform and
gitPrivateToken and remove those keys from env:.

In `@src/components/docs/versions/docker-image-link-or-retry-button.tsx`:
- Around line 88-98: The icon-only action buttons rendered with onRetryClick and
onResetClick lack accessible names; add explicit aria-label attributes to the
retry and reset buttons (the elements using HiOutlineRefresh and MdRestartAlt)
so screen readers announce them (e.g., aria-label={`Retry build${retryRequested
? ' requested' : ''}`} and aria-label={`Reset failures
(${failureCount})${resetRequested ? ' requested' : ''}`}), keeping the existing
onClick handlers and visual styling intact.

---

Nitpick comments:
In `@src/components/docs/versions/docker-image-link-or-retry-button.tsx`:
- Around line 55-79: The onRetryClick and onResetClick handlers (and
corresponding UI buttons) currently allow concurrent POSTs on fast double-click;
add an in-flight guard using the existing state (e.g., retryRequested and
resetRequested) so each handler returns early if already true, set the flag
before calling notify.promise and only clear it in the catch/finally as
appropriate, and ensure the Retry/Reset button props use the same flags to
disable the button while the request is pending; reference onRetryClick,
onResetClick, retryBuild, resetBuild, setRetryRequested, setResetRequested,
retryRequested and resetRequested when making these changes.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 789eb13f-8525-4ad5-8c9b-3a8eeecb598e

📥 Commits

Reviewing files that changed from the base of the PR and between 6e1e7ea and 7d47f44.

📒 Files selected for processing (3)
  • docs/09-troubleshooting/common-issues.mdx
  • src/components/docs/versions/builds/build-row.tsx
  • src/components/docs/versions/docker-image-link-or-retry-button.tsx

Comment on lines +380 to +389
```yaml
- uses: game-ci/unity-builder@v4
env:
pullInputList: UNITY_LICENSE,UNITY_SERIAL,UNITY_EMAIL,UNITY_PASSWORD
secretSource: aws-secrets-manager
with:
providerStrategy: aws
targetPlatform: StandaloneLinux64
gitPrivateToken: ${{ secrets.GITHUB_TOKEN }}
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

game-ci/unity-builder v4 documentation for pullInputList and secretSource parameters syntax

💡 Result:

game-ci/unity-builder v4 includes Orchestrator features for advanced builds. The parameters pullInputList and secretSource are Orchestrator-specific inputs defined in action.yml. pullInputList: '[Orchestrator] Extend game ci by specifying a command to execute to pull input from external source e.g cloud storage. The command is formatted to replace "{0}" with the parameter parameter name.' Syntax example from related CLI/docs: with: pullInputList: 'UNITY_EMAIL,UNITY_PASSWORD' secretSource: 'gcloud secrets versions access 1 --secret="{0}"' secretSource relates to secrets handling in postBuildSteps/preBuildSteps (yaml format with keys image, secrets (name, value object array), command line string), and AWS CloudFormation secrets (array with Name and ValueFrom). These are used when orchestratorMode is enabled (local, k8s, aws). No basic builder docs cover them; they are advanced/CLI/orchestrator features. Latest v4.8.1 (2025-11-22). For full inputs, see https://github.com/game-ci/unity-builder/blob/main/action.yml

Citations:


Move pullInputList and secretSource from env: to with: block.

The code example incorrectly places pullInputList and secretSource under the env: block. According to the game-ci/unity-builder action.yml, these are Orchestrator-specific action inputs that must be configured under the with: block. Update the YAML to:

- uses: game-ci/unity-builder@v4
  with:
    providerStrategy: aws
    pullInputList: UNITY_LICENSE,UNITY_SERIAL,UNITY_EMAIL,UNITY_PASSWORD
    secretSource: aws-secrets-manager
    targetPlatform: StandaloneLinux64
    gitPrivateToken: ${{ secrets.GITHUB_TOKEN }}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/09-troubleshooting/common-issues.mdx` around lines 380 - 389, The YAML
example for the game-ci/unity-builder@v4 action incorrectly places the
Orchestrator inputs pullInputList and secretSource under env: instead of under
with:, so move pullInputList and secretSource into the with: block alongside
providerStrategy, targetPlatform, and gitPrivateToken; update the snippet that
references game-ci/unity-builder@v4 to ensure with: contains providerStrategy,
pullInputList, secretSource, targetPlatform and gitPrivateToken and remove those
keys from env:.

Comment on lines +88 to +98
<button type="button" onClick={onRetryClick} style={buttonStyle}>
<HiOutlineRefresh color={retryRequested ? 'orange' : 'red'} />
</button>
</Tooltip>
{isMaxedOut && (
<Tooltip
content={`Reset failure count (${failureCount}) so Ingeminator retries this build.`}
>
<button type="button" onClick={onResetClick} style={buttonStyle}>
<MdRestartAlt color={resetRequested ? 'orange' : '#b45309'} />
</button>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Add accessible names to icon-only action buttons.

Both action buttons are icon-only, so screen readers get unnamed controls. Add explicit aria-labels.

Suggested fix
-        <button type="button" onClick={onRetryClick} style={buttonStyle}>
+        <button
+          type="button"
+          onClick={onRetryClick}
+          style={buttonStyle}
+          aria-label={`Retry build ${buildId}`}
+        >
           <HiOutlineRefresh color={retryRequested ? 'orange' : 'red'} />
         </button>
@@
-          <button type="button" onClick={onResetClick} style={buttonStyle}>
+          <button
+            type="button"
+            onClick={onResetClick}
+            style={buttonStyle}
+            aria-label={`Reset failure count for build ${buildId}`}
+          >
             <MdRestartAlt color={resetRequested ? 'orange' : '#b45309'} />
           </button>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<button type="button" onClick={onRetryClick} style={buttonStyle}>
<HiOutlineRefresh color={retryRequested ? 'orange' : 'red'} />
</button>
</Tooltip>
{isMaxedOut && (
<Tooltip
content={`Reset failure count (${failureCount}) so Ingeminator retries this build.`}
>
<button type="button" onClick={onResetClick} style={buttonStyle}>
<MdRestartAlt color={resetRequested ? 'orange' : '#b45309'} />
</button>
<button
type="button"
onClick={onRetryClick}
style={buttonStyle}
aria-label={`Retry build ${buildId}`}
>
<HiOutlineRefresh color={retryRequested ? 'orange' : 'red'} />
</button>
</Tooltip>
{isMaxedOut && (
<Tooltip
content={`Reset failure count (${failureCount}) so Ingeminator retries this build.`}
>
<button
type="button"
onClick={onResetClick}
style={buttonStyle}
aria-label={`Reset failure count for build ${buildId}`}
>
<MdRestartAlt color={resetRequested ? 'orange' : '#b45309'} />
</button>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/docs/versions/docker-image-link-or-retry-button.tsx` around
lines 88 - 98, The icon-only action buttons rendered with onRetryClick and
onResetClick lack accessible names; add explicit aria-label attributes to the
retry and reset buttons (the elements using HiOutlineRefresh and MdRestartAlt)
so screen readers announce them (e.g., aria-label={`Retry build${retryRequested
? ' requested' : ''}`} and aria-label={`Reset failures
(${failureCount})${resetRequested ? ' requested' : ''}`}), keeping the existing
onClick handlers and visual styling intact.

This PR now only contains the reset button UI changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@frostebite frostebite changed the title Add 8192 troubleshooting entry and reset button for maxed-out builds Add reset button for maxed-out failed builds on versions page Mar 26, 2026
@github-actions

Copy link
Copy Markdown

Visit the preview URL for this PR (updated for commit 6750c86):

https://game-ci-5559f--pr548-feat-8192-docs-and-r-q719hc48.web.app

(expires Thu, 02 Apr 2026 16:37:04 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: 1f0574f15f83e11bfc148eae8646486a6d0e078b

@frostebite
frostebite merged commit c8eb279 into main Mar 27, 2026
9 checks passed
@frostebite
frostebite deleted the feat/8192-docs-and-reset-button branch March 27, 2026 18:30
frostebite added a commit that referenced this pull request May 3, 2026
* Add custom providers documentation for the plugin system

Document how to use custom providers via GitHub repos, NPM packages,
or local paths. Covers the ProviderInterface, supported source formats,
caching behavior, and a full example implementation. Also updates the
API reference to mention custom providers under providerStrategy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Comprehensive orchestrator documentation overhaul

- Restructure providers into dedicated section with overview, custom
  providers, community providers (with GitHub edit link), and
  GitHub/GitLab integration pages
- Rewrite API reference with proper tables, all missing parameters
  (orchestratorRepoName, githubOwner, allowDirtyBuild, postBuildSteps,
  preBuildSteps, customHookFiles, customCommandHooks, useCleanupCron),
  and environment variables (AWS_FORCE_PROVIDER, PURGE_REMOTE_BUILDER_CACHE,
  ORCHESTRATOR_AWS_STACK_WAIT_TIME, GIT_PRIVATE_TOKEN)
- Document premade rclone hooks and Steam deployment hooks
- Add S3/rclone workspace locking documentation
- Tighten language across all pages for clarity
- Add ASCII diagrams to introduction, caching, logging, and config override
- Add tasteful emoji to section headers
- Rename "Game-CI vs Orchestrator" to "Standard Game-CI vs Orchestrator Mode"
- Remove outdated Deno section from command line docs
- Improve examples with proper tables, workflow snippets, and cross-links

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Remove old standalone GitLab pages from versioned docs

Content already merged into the providers section at
07-providers/05-gitlab-integration.mdx

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Restructure Orchestrator docs: promote Providers to top-level, improve cross-linking

- Promote Providers from Advanced Topics to top-level section (05-providers/)
  with dedicated pages for AWS, Kubernetes, Local Docker, Local, Custom, Community,
  GitHub Integration, and GitLab Integration
- Move Secrets out of Advanced Topics to top-level (06-secrets.mdx)
- Rename custom-hooks to hooks throughout
- Remove all WIP/preview/release-status notices (project is stable)
- Fix floating {/* */} comment symbols in community-providers (use code block template)
- Update ASCII diagram in Game-CI vs Orchestrator to show CLI/any CI dispatch
- Add sidebar_label frontmatter for Game-CI vs Orchestrator page
- Add comprehensive cross-linking across all orchestrator docs:
  - Introduction links to providers, hooks, getting started, platforms
  - API Reference links to caching, hooks, providers, configuration override
  - Provider pages link to caching, hooks, API Reference sections
  - Getting Started links to provider setup guides and secrets
  - GitHub Integration links to API Reference for parameters and modes
  - Advanced Topics pages cross-reference each other and API Reference
- Fix all broken links from old directory structure
- Delete old directories (examples/github-examples, advanced-topics/providers)
- Run Prettier on all files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Merge Configuration Override into Secrets page, rename to Pull Secrets

- Merge configuration-override.mdx content into secrets.mdx as a section
- Delete standalone configuration-override page
- Rename "Configuration Override" to "Pull Secrets" in API reference
- Update all cross-links (command-line, GitLab integration, API reference)
- Fix logging: "Orchestrator job (Fargate task)" instead of "Fargate tasks"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix broken link: hooks directory has no index page

Link to container-hooks page instead of the hooks directory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add comprehensive GitHub Actions examples page

Complete workflow examples for every provider and common patterns:
- Minimal workflow, AWS Fargate, Kubernetes, Local Docker
- Async mode with GitHub Checks
- Scheduled garbage collection
- Multi-platform matrix builds
- Retained workspaces for faster rebuilds
- Container hooks (S3 upload + Steam deploy)
- Required secrets tables and cross-links to all relevant docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix ASCII diagram alignment in Game-CI vs Orchestrator

Equalize box widths and arrow spacing for consistent rendering.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add ASCII diagrams to custom providers, GitHub integration, and retained workspaces

- Custom Providers: plugin loading flow (source → fetch → ProviderInterface)
- GitHub Integration: async mode lifecycle (dispatch → return → Check updates)
- Retained Workspaces: workspace locking across concurrent builds

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add ASCII diagrams to container hooks, garbage collection, AWS, and providers overview

- Container Hooks: build pipeline with pre/post hook execution points
- Garbage Collection: resource lifecycle (normal cleanup vs stale → GC)
- AWS: CloudFormation resource stack (ECS, S3, CloudWatch, Kinesis)
- Providers Overview: decision flowchart for choosing a provider

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Replace provider decision tree with simple 4-across comparison

Shows each provider side-by-side with its key trait instead of
a decision flowchart.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix sidebar ordering: Secrets before Advanced Topics

Set Advanced Topics position to 7.0 so it renders after
Secrets (position 6 from filename).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Rename Premade Container Hooks to Built-In Hooks

Update title and all cross-references across container hooks,
command hooks, and GitHub Actions examples.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Rename Built-In Hooks file, move Custom Job out of Hooks, fix alignment

- Rename premade-container-jobs.mdx to built-in-hooks.mdx (fixes URL slug)
- Update all links from premade-container-jobs to built-in-hooks
- Rename "Pre-built Hooks" section header to "Built-In Hooks"
- Move Custom Job from hooks/ to advanced-topics/ (it's not a hook)
- Rename "Custom Jobs" to "Custom Job" (singular)
- Update API reference link to advanced-topics/custom-job
- Fix numbering conflicts in advanced-topics
- Fix retained workspace diagram alignment (remove emoji, align box walls)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix alignment of all ASCII diagrams across orchestrator docs

Remove emoji characters from diagrams (variable width across platforms
makes alignment impossible). Fix box wall alignment, arrow connections,
and consistent spacing in all 11 diagrams:
- Introduction (architecture overview)
- Caching (standard vs retained)
- Providers overview (4-across comparison)
- Container hooks (build pipeline)
- GitHub integration (async mode lifecycle)
- AWS (CloudFormation resource stack)
- Secrets (pull flow)
- Logging (log pipeline)
- Garbage collection (resource lifecycle)
- Custom providers (plugin loading)
- Retained workspaces (already fixed)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add Load Balancing documentation page

Documents how to route builds across multiple providers using
GitHub Actions scripting: platform-based routing, branch-based
routing, runner availability fallback, weighted distribution,
and async mode integration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add Storage, Architecture pages and Build Caching section

- Storage page: documents project files, build output, caches,
  S3 and rclone backends, LZ4 compression, workspace locking,
  large packages, and container file system layout
- Architecture page: describes build lifecycle, core components,
  provider system, workflow composition, hook system, configuration
  resolution, remote client, CLI modes, and source code map
- Caching page: add Build Caching section explaining automatic
  build output caching based on cache key

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix introduction diagram to list all supported CI platforms

The box previously said "GitHub Actions" which contradicted the
"Your Machine / CI" header. Now lists GitHub Actions, GitLab CI,
CLI, etc. to reflect that Orchestrator works from any entry point.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix ASCII diagram alignment in load balancing page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(orchestrator): build services — submodule profiles, caching, LFS, hooks

Adds a new advanced topics page documenting orchestrator build services:
- Submodule profiles (YAML, glob patterns, variant overlays)
- Local build caching (Library + LFS filesystem cache)
- Custom LFS transfer agents (elastic-git-storage, etc.)
- Git hooks (lefthook/husky detection, skip lists)

Related: game-ci/unity-builder#777

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(providers): add GCP Cloud Run and Azure ACI provider documentation

Covers storage type comparison tables, inputs, examples, and cross-links
to related providers. Both marked as experimental.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(orchestrator): CLI provider protocol documentation

Adds a new page documenting the CLI provider protocol that lets users
write orchestrator providers in any language (Go, Python, Rust, shell).

Covers: invocation model, JSON stdin/stdout protocol, streaming output,
subcommands with timeouts, shell example, CLI vs TypeScript comparison.

Related: game-ci/unity-builder#777

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(load-balancing): add built-in automatic fallback API section

Documents the new fallbackProviderStrategy, runnerCheckEnabled,
runnerCheckLabels, and runnerCheckMinAvailable inputs. Adds comparison
table for built-in vs manual fallback approaches.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(load-balancing): rewrite as comprehensive load balancing guide

Reframes page around intelligent provider routing with built-in API.
Adds retry-on-alternate, provider init timeout, async mode integration,
and decision table. Restructures manual scripting as secondary option.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(load-balancing): add workflow dispatch and reusable workflow routing examples

Add two new script-based routing patterns: dispatching to an alternate
workflow when self-hosted runners are busy, and using reusable workflows
for shared build config with dynamic provider routing. Updated the
comparison table with the new patterns.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(secrets): comprehensive secret sources documentation

Expand the Secrets page with premade source documentation (AWS Secrets
Manager, AWS Parameter Store, GCP Secret Manager, Azure Key Vault, env),
custom commands, YAML definitions, and migration from legacy
inputPullCommand. Covers all five cloud providers and the env source.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(secrets): add HashiCorp Vault as premade secret source

Documents hashicorp-vault (KV v2), hashicorp-vault-kv1 (KV v1), and
vault (shorthand alias). Covers VAULT_ADDR, VAULT_TOKEN, and VAULT_MOUNT
configuration with examples for both KV versions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add Orchestrator Jobs page and Custom LFS Agents page

New Jobs page explains the build lifecycle, job types (build, test,
custom editor method, custom job, async), pre/post build phases, and
execution by provider. Gives users a conceptual overview before diving
into advanced topics.

New LFS Agents page documents elastic-git-storage built-in support with
auto-install, version pinning, multiple storage backends, and custom
agent configuration.

Renamed api-reference from 04 to 05 to accommodate the new Jobs page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: test workflow engine and hot runner protocol

Add documentation for two new orchestrator features:
- Test Workflow Engine: YAML-based test suite definitions, taxonomy filters, structured results
- Hot Runner Protocol: extensible runner registration, persistent editor providers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add structured build output system page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: separate incremental sync protocol, update hot runner focus

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add massive projects and monorepo support advanced topics

Add two new documentation pages to the orchestrator advanced topics:
- 15-massive-projects.mdx: Two-level workspaces, move-centric caching,
  custom LFS agents, and performance tips for 100GB+ projects
- 16-monorepo-support.mdx: Submodule profiles, variant overlays,
  multi-product CI matrix, and framework configuration patterns

Closes game-ci/unity-builder#802
Closes game-ci/unity-builder#803

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add build reliability advanced topics page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add CI dispatch and infrastructure automation provider pages

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(docs): add missing sidebar_position frontmatter to advanced topics pages

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(orchestrator): Fix typos and formatting in documentation

- Change "first class" to "first-class" for proper hyphenation
- Update "cost saving" to "cost-saving" for consistency
- Add period after "e.g" to "e.g." in multiple locations
- Fix "effecient" to "efficient" spelling
- Fix "syncronization" to "synchronization" spelling
- Fix "signficantly" to "significantly" spelling
- Change "typescript" to "TypeScript" for proper capitalization
- Remove markdown code fence markers from status tables
- Reformat long command line example with line breaks for readability
- Fix "3Configuration" typo to "Configuration"
- Add missing comma in sentence for proper grammar

* Apply suggestion from @GabLeRoux

* docs(cli): add game-ci CLI documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(cli): correct flag names, defaults, and coverage to match implementation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: add integration branch update scripts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: update for standalone @game-ci/orchestrator package

- Add standalone package callout to introduction
- Update external links to point to orchestrator repo
- Add standalone package note to getting started
- Update CLI docs to reference orchestrator package for installation
- Update version output and update command references
- Remove temporary delete-me scripts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add dedicated AWS and Kubernetes example pages

Restores dedicated example pages for AWS and Kubernetes that were
removed during the docs restructure. These complement the provider
reference pages with copy-paste workflow examples.

Related: game-ci/unity-builder#819, #541

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: restore versioned_docs that were accidentally deleted

These frozen versioned docs (version-2, version-3) should not be
modified by the orchestrator documentation update.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: resolve broken Docusaurus links

- Rename 06b-cli-provider-protocol.mdx to 12-cli-provider-protocol.mdx
  (Docusaurus didn't recognize '06b' as a valid numeric prefix)
- Fix orchestrate-command link: ../providers → ../providers/overview
- Fix jobs link: advanced-topics/submodule-profiles → advanced-topics/build-services
- Fix build-services link: use relative path for cli-provider-protocol

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: replace npm install with GitHub Releases install scripts

Remove npm/npx installation references. Add PowerShell install script
for Windows. Fix install.sh URL to point to unity-builder repo where
the scripts live. Add environment variable options and manual download
section.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: update install URLs to point to orchestrator repo

Install scripts and releases live in game-ci/orchestrator, not
unity-builder. Updated all install URLs accordingly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* style: format orchestrator docs with prettier

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: remove em-dashes and convert ASCII diagram to mermaid

Replace all 336 em-dash characters with regular dashes across 37 docs
files. Convert remote-powershell ASCII box diagram to mermaid sequence
diagram.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* style: run prettier on documentation files

Fix formatting issues after em-dash removal.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: update CLI examples to use standalone orchestrator binary

Replace old "git clone unity-builder / yarn run cli" instructions with
the proper game-ci CLI install and usage from the orchestrator package.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add mermaid support and convert ASCII diagrams across orchestrator docs

- Enable @docusaurus/theme-mermaid for native diagram rendering
- Convert all ASCII box-drawing diagrams to mermaid flowcharts (22 files)
- Fix broken admonition syntax (:::info/:::caution blocks)
- Rewrite getting-started page with clear GitHub Actions and CLI sections

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: refine introduction and comparison pages for orchestrator

- Reposition orchestrator as advanced layer on top of unity-builder
- Emphasize benefits for projects of any size, not just large ones
- Add self-hosted runner complementarity (failover, load balancing)
- Expand "What Orchestrator Handles" with full lifecycle details
- Add "Choosing Your Setup" decision matrix to comparison page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: resolve cytoscape webpack export error and broken doc link

- Add webpack alias to redirect cytoscape UMD import to CJS bundle
- Fix broken markdown link to unity-builder (use GitHub URL)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: remove npm install step, add missing providers to overview

- Remove bogus npm install step from getting-started (orchestrator is
  built into unity-builder, no separate install needed)
- Add dispatch, experimental, and additional providers to overview page
- Clarify orchestrator is built-in and activates via providerStrategy

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: improve test workflow engine taxonomy framing

Replace "Adolescent" maturity label with "Stable" for clearer
terminology. Rename "Built-in Dimensions" to "Example Dimensions"
and add extensibility note to emphasize the taxonomy is a starting
point that projects can fully customize.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: document engine plugin system for game-engine agnostic orchestration

Add documentation for the new EnginePlugin interface that allows the
orchestrator to support non-Unity engines (Godot, Unreal, custom).

- New page: Advanced Topics > Engine Plugins — full guide covering the
  interface, plugin sources (npm, CLI, Docker), and authoring plugins
- Updated introduction to mention engine agnosticism
- Updated caching page to reference engine-aware cache folders
- Added engine/enginePlugin to API reference parameters
- Added --engine and --engine-plugin to CLI build command docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: reframe orchestrator as hardware-agnostic, not cloud-first

Update introduction, getting-started, and comparison pages to describe
the orchestrator as taking whatever hardware you give it, rather than
framing it as three distinct types (cloud, self-hosted, local).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: replace "hardware" with "machines" for beginner friendliness

Update all instances across docs and versioned docs to use
"machines" instead of "hardware" for clearer, more approachable
language.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: replace em dashes with hyphens and fix remaining "hardware"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: revert circleci em dash changes, fix remaining hardware refs

Revert em dash changes outside orchestrator subfolder. Fix remaining
"hardware" references in orchestrator docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: document AWS ECS 8192-byte containerOverrides limit and secret pulling workaround

Add troubleshooting entry for the Container Overrides 8192-byte limit
that AWS ECS/Fargate users can hit with complex workflows. Document the
connection between using secretSource/pullInputList and reducing the
override payload size. Cross-link from AWS provider docs and secrets docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: rename AWS section from Limitations to Troubleshooting

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add reset button for maxed-out failed builds on versions page

Show failure count (e.g., "15/15") next to failed build status icons.
Add a reset button (admin-only) that calls the new resetFailedBuilds
backend endpoint to clear inflated failure counts so the Ingeminator
can retry them automatically.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use destructured meta variable to satisfy lint rule

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* revert: move troubleshooting entry and reset button UI to dedicated PR #548

The 8192 troubleshooting entry and build reset button UI changes are
now in a separate PR (#548) targeting main.

The orchestrator-specific docs (AWS provider troubleshooting section
and secrets tip callout) remain here since those files only exist on
this branch.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: restore 8192 troubleshooting entry for orchestrator LTS 2.0.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Update docs/03-github-orchestrator/01-introduction.mdx

Co-authored-by: Gabriel Le Breton <lebreton.gabriel@gmail.com>

* Update docs/03-github-orchestrator/01-introduction.mdx

Co-authored-by: Gabriel Le Breton <lebreton.gabriel@gmail.com>

* Update docs/03-github-orchestrator/02-getting-started.mdx

Co-authored-by: Gabriel Le Breton <lebreton.gabriel@gmail.com>

* docs: address Gabe's review — provider tabs, OIDC auth, SSO note, GC clarification

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: improve garbage-collect description with safety warning

- Note that the base "game-ci" stack is preserved
- Remove mention of --garbageMaxAge (not actually wired in AWS provider)
- Add caution admonition about no dry-run/confirmation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Revert "docs: improve garbage-collect description with safety warning"

This reverts commit 66a738d.

* docs: add Unity Accelerator integration guide

Covers two approaches:
- Sidecar (per-build): start/stop accelerator via container hooks,
  persist cache to S3 between builds
- Persistent (shared): always-on EC2/ECS instance in same VPC

Includes full hook YAML examples, workflow config, troubleshooting,
and guidance on combining with Library caching.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: add cache checkpointing and survival guide

Documents three new caching features:
- cacheCheckpointInterval: periodic Library saves during build
- cacheSaveOnFailure: trap-based partial save on OOM/crash
- cacheRetentionDays: auto-purge old S3 entries

Includes decision tables, Mermaid diagrams, and guidance on
combining with Unity Accelerator for maximum resilience.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: add cache pre-warming examples to checkpointing guide

Shows three approaches: local tar + S3 upload, CLI cache-push,
and one-time local-docker build to seed the cache.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: align mermaid dependencies with lockfile

* fix: avoid mermaid policy-blocked dependencies

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Gabriel Le Breton <lebreton.gabriel@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants