Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit 1b5646deb8487d0517c3265976e3dd7ed86fd1c3
parent 63199cc69bf204e1a4b4e8ae8bde9fabc07d4e1e
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Mon, 28 Sep 2026 12:47:16 -0400

jobs: /jobs labels for the hub's and the homepage's build and deploy kinds

build-hub, deploy-hub, build-deploy-hub, build-homepage, deploy-homepage
and build-deploy-homepage had no JOB_KINDS entry, so /jobs showed their
raw machine kinds. Labels are the /sites lanes' own titles ("Build hub",
"Build & deploy homepage", …); queueKeyStrategy "custom" (BUILD_QUEUE /
DEPLOY_QUEUE), not drainable, not replayable, no needsMedia (they never
open a channel's data/ and carry no channelSlug). The hub's deploy-hub and
build-deploy-hub are in too, so the hub's trio is not half-labelled.

jobKinds.test.ts pins the six labels and drainability (ADDED_KINDS).

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

Diffstat:
Mcommon/jobs/jobKinds.test.ts | 12++++++++++++
Mcommon/jobs/jobKinds.ts | 53+++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 65 insertions(+), 0 deletions(-)

diff --git a/common/jobs/jobKinds.test.ts b/common/jobs/jobKinds.test.ts @@ -64,6 +64,18 @@ const ADDED_KINDS: Record<string, { label: string; drainable: boolean }> = { // "retry" on one would mean "start a second dispatcher". "auto-digest": { label: "Auto-digest runner", drainable: true }, "auto-backfill": { label: "Auto-backfill runner", drainable: true }, + // The hub's and the homepage's build and deploy (release 13 slice W1): /jobs + // showed them by their raw kinds. One child process each — a cancel stops + // it, there is nothing to drain. + "build-hub": { label: "Build hub", drainable: false }, + "deploy-hub": { label: "Deploy hub", drainable: false }, + "build-deploy-hub": { label: "Build & deploy hub", drainable: false }, + "build-homepage": { label: "Build homepage", drainable: false }, + "deploy-homepage": { label: "Deploy homepage", drainable: false }, + "build-deploy-homepage": { + label: "Build & deploy homepage", + drainable: false, + }, }; test("added kinds carry their pinned label and drainability", () => { diff --git a/common/jobs/jobKinds.ts b/common/jobs/jobKinds.ts @@ -513,6 +513,59 @@ const JOB_KINDS: Record<string, JobKindMeta> = { queueKeyStrategy: "platform", needsMedia: true, }, + // THE HUB'S AND THE HOMEPAGE'S BUILD AND DEPLOY (release 13 slice W1). They + // ran from /sites — the hub since release 7, the homepage since release 11 — + // with no entry here, so /jobs showed their raw machine kinds. The labels + // are the lanes' own titles on /sites (HubBuildButtons, HomepageBuildButtons). + // + // Queue: BUILD_QUEUE for a build, DEPLOY_QUEUE for a deploy or a + // build-and-deploy (the actions' `queueKey`), hence "custom". Neither + // drainable (one child process; stopping it is a cancel) nor replayable (no + // JobSpec: a replayed deploy would not know its preview branch). No + // `needsMedia`: they read the index and the export output, never a + // channel's `data/`, and carry no channelSlug for the guard to check. + "build-hub": { + kind: "build-hub", + label: "Build hub", + drainable: false, + replayable: false, + queueKeyStrategy: "custom", + }, + "deploy-hub": { + kind: "deploy-hub", + label: "Deploy hub", + drainable: false, + replayable: false, + queueKeyStrategy: "custom", + }, + "build-deploy-hub": { + kind: "build-deploy-hub", + label: "Build & deploy hub", + drainable: false, + replayable: false, + queueKeyStrategy: "custom", + }, + "build-homepage": { + kind: "build-homepage", + label: "Build homepage", + drainable: false, + replayable: false, + queueKeyStrategy: "custom", + }, + "deploy-homepage": { + kind: "deploy-homepage", + label: "Deploy homepage", + drainable: false, + replayable: false, + queueKeyStrategy: "custom", + }, + "build-deploy-homepage": { + kind: "build-deploy-homepage", + label: "Build & deploy homepage", + drainable: false, + replayable: false, + queueKeyStrategy: "custom", + }, // Replayable kinds that never had a JOB_KIND_LABELS entry: label omitted so // jobKindLabel() keeps falling back to the raw kind (unchanged behavior). "store-playlist": {