You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Closes#15's naming question. Third in the stack — base is boundary-types (#22), which is based on readme-diagram-companion (#20). Merge #20 → #22 → this, and each retargets automatically.
Boris, today, choosing between the two contradictory recommendations sitting in #15:
graph-builder-spec, on the grounds that #19's corrected subtitle — "A declaration layer over Pydantic Graph Builder" — is what licenses it, and that graph-builder-spec reuses Pydantic's own noun rather than inventing one.
What moved
before
after
distribution
workflow-workbench
graph-builder-spec
import package
workflow_workbench
graph_builder_spec
frontend source
frontend/workflow-workbench/
frontend/graph-builder-spec/
built island
static/workflow-workbench.{js,css}
static/graph-builder-spec.{js,css}
182 references across 56 files, plus three directory renames and two renamed build artifacts. No alias, no shim — a missed call site is an ImportError at the import, not a silent change of behaviour, which is the same choice 0.2.0 made for NodeSpec(...) and 0.3.0 for coherence_check().
Two things deliberately NOT renamed
CHANGELOG entries for shipped releases. Those releases really were published as workflow-workbench; rewriting them would make history describe a name that did not exist then. The new entry says so explicitly, so a reader hitting uv lock --upgrade-package workflow-workbench further down knows why.
The GitHub repo itself.gh repo rename graph-builder-spec is outward-facing — it changes a public URL and every existing clone's remote — and it stays Boris's action.
GitHub redirects the old clone URL after a rename, so the git URL survives. The old distribution name does not — so their next uv sync fails on a name that no longer exists. Their rename PRs are open alongside this one, and their uv.lock is deliberately left untouched: the new URL does not resolve until gh repo rename runs, so a hand-edited lock would be an artifact nobody has validated. uv lock after the rename, not before.
1. merge #20, #22, this PR
2. gh repo rename graph-builder-spec <- yours
3. merge the two downstream PRs, then `uv lock` in each
Verification
296 tests green locally — ⛔ no CI in this repo, so one local run
graph_builder_spec.reference --check: both generated tables match
uv lock --check clean, and uv sync --extra evals resolves under the new name
the quickstart command runs: uv run python3 -m examples.greeting
git grep workflow_workbench\|workflow-workbench returns nothing outside the CHANGELOG
**`frontend/.../vite.config.ts` still said `name: "WorkflowWorkbenchIsland"`.**
Real, and mine: the rename script covered snake, kebab and "Workflow Workbench"
with a space — not PascalCase. **Tenth instance of this repo's pattern, and the
second I inflicted on the rename itself.** The sweep that finds it is
`git grep -in workbench`, which is the check that should have existed before the
script ran, not after the review.
⚠️ Measured before assuming it mattered: the iife `name` is referenced NOWHERE
else, and the committed bundle carries no global assignment at all
(`grep -oE "^(var|window\.|globalThis\.)" static/graph-builder-spec.js` -> none).
So this is cosmetic and needs no rebuild — there is no source/artifact drift.
**The review's other half was already fixed.** It read commit 4125ec3, which
predates 55d2451; `WORKFLOW_WORKBENCH_TOKEN` / `_STORE` are renamed and the
CHANGELOG documents them. Worth saying out loud because the review independently
found the gap I had just found — which is corroboration, not a second finding.
Also reworded four places where "workbench" meant THIS LIBRARY and now dangles
("no workbench in the file" -> "none of this library in the file"). Three
remaining uses are the common noun — "a workbench that can express everything is
just the engine with extra steps" — and stay.
296 tests green, both generated tables matching.
Both halves of the headline checked. One was real and mine; the other was already fixed.
name: "WorkflowWorkbenchIsland" in frontend/.../vite.config.ts — real
My rename script covered snake_case, kebab-case and "Workflow Workbench" with a space. Not
PascalCase. That is the tenth instance of this repo's recurring pattern and the second I
inflicted on the rename itself — the sweep that finds it is one command, git grep -in workbench,
and it belonged before the script ran rather than after the review.
Fixed to GraphBuilderSpecIsland. ⚠️ Measured before assuming it mattered:
grep -rn WorkflowWorkbenchIsland -> only the config. Nothing reads it.
grep -oE "^(var|window\.|globalThis\.)" static/*.js -> none. The iife name is not in the bundle.
So it is cosmetic and needs no rebuild — there is no source/artifact drift to chase.
The review ran on 4125ec3, which predates 55d2451. WORKFLOW_WORKBENCH_TOKEN and WORKFLOW_WORKBENCH_STORE are renamed, in the CHANGELOG table, and verified to fail closed — serve() raises SystemExit rather than binding non-localhost unauthenticated, so no alias is
needed.
Worth saying out loud rather than waving away: the review found that gap independently, minutes
after I did, which is corroboration of the same miss, not a second finding.
Also in this push
Four places where "workbench" meant this library and now dangles — "no workbench in the file"
→ "none of this library in the file". Three remaining uses are the common noun ("a workbench
that can express everything is just the engine with extra steps") and stay.
296 tests green, both generated tables matching. ⚠️ The review on record predates this push.
The reason will be displayed to describe this comment to others. Learn more.
Copilot review overview
🔵 Needs a closer look
The frontend lockfile and Vite IIFE name still retain superseded package identifiers.
Review effort: Balanced Findings: None
Previously missed (1)
In code that hasn't changed since last review
IIFE library name still uses old branding
frontend/graph-builder-spec/vite.config.ts:21
This is the remaining WorkflowWorkbench identifier after the rename. build.lib.name is the IIFE library/global name, so it should use the new package branding rather than retaining the old public identifier.
Boris, 2026-10-06, on the recommendation in #15:
graph-builder-spec, on the grounds that #19's corrected subtitle — "A
declaration layer over Pydantic Graph Builder" — is what licenses it, and
that graph-builder-spec reuses Pydantic's own noun rather than inventing one.
distribution workflow-workbench -> graph-builder-spec
import package workflow_workbench -> graph_builder_spec
frontend source frontend/workflow-workbench -> frontend/graph-builder-spec
built island static/workflow-workbench.* -> static/graph-builder-spec.*
No alias and no shim. A missed call site is an ImportError at the import, not a
silent change of behaviour — the same choice 0.2.0 made for `NodeSpec(...)` and
0.3.0 for `coherence_check()`.
⚠️ CHANGELOG entries for SHIPPED releases are left as written, and the new entry
says so. Those releases really were published as `workflow-workbench`; rewriting
them would make history describe a name that did not exist at the time.
⚠️ The GitHub repo rename is a separate, outward-facing action and is Boris's:
`gh repo rename graph-builder-spec`. Until it runs, the new clone URL does not
resolve — which is why the two downstream repos' `uv lock` must be regenerated
AFTER it, not in their rename PRs.
296 tests green locally, both generated tables regenerated and matching, and the
quickstart command runs. No CI in this repo, so that is one local run.
`WORKFLOW_WORKBENCH_TOKEN` and `WORKFLOW_WORKBENCH_STORE` survived the sweep,
because the script replaced three casings and not SCREAMING_CASE. Found by a
case-INSENSITIVE grep, which is the check that should have been written first.
Ninth instance of this repo's pattern, and the first one I inflicted on the
rename itself.
⚠️ Verified rather than assumed that this fails CLOSED: a stale
WORKFLOW_WORKBENCH_TOKEN is simply unset under the new name, and `serve()`
raises SystemExit rather than binding a non-localhost host unauthenticated
(serve.py:194). The process refuses to start; it does not start without a token.
That is what makes an alias unnecessary here.
296 tests green.
**`frontend/.../vite.config.ts` still said `name: "WorkflowWorkbenchIsland"`.**
Real, and mine: the rename script covered snake, kebab and "Workflow Workbench"
with a space — not PascalCase. **Tenth instance of this repo's pattern, and the
second I inflicted on the rename itself.** The sweep that finds it is
`git grep -in workbench`, which is the check that should have existed before the
script ran, not after the review.
⚠️ Measured before assuming it mattered: the iife `name` is referenced NOWHERE
else, and the committed bundle carries no global assignment at all
(`grep -oE "^(var|window\.|globalThis\.)" static/graph-builder-spec.js` -> none).
So this is cosmetic and needs no rebuild — there is no source/artifact drift.
**The review's other half was already fixed.** It read commit 4125ec3, which
predates 55d2451; `WORKFLOW_WORKBENCH_TOKEN` / `_STORE` are renamed and the
CHANGELOG documents them. Worth saying out loud because the review independently
found the gap I had just found — which is corroboration, not a second finding.
Also reworded four places where "workbench" meant THIS LIBRARY and now dangles
("no workbench in the file" -> "none of this library in the file"). Three
remaining uses are the common noun — "a workbench that can express everything is
just the engine with extra steps" — and stay.
296 tests green, both generated tables matching.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #15's naming question. Third in the stack — base is
boundary-types(#22), which is based onreadme-diagram-companion(#20). Merge #20 → #22 → this, and each retargets automatically.Boris, today, choosing between the two contradictory recommendations sitting in #15:
What moved
workflow-workbenchgraph-builder-specworkflow_workbenchgraph_builder_specfrontend/workflow-workbench/frontend/graph-builder-spec/static/workflow-workbench.{js,css}static/graph-builder-spec.{js,css}182 references across 56 files, plus three directory renames and two renamed build artifacts. No alias, no shim — a missed call site is an
ImportErrorat the import, not a silent change of behaviour, which is the same choice 0.2.0 made forNodeSpec(...)and 0.3.0 forcoherence_check().Two things deliberately NOT renamed
workflow-workbench; rewriting them would make history describe a name that did not exist then. The new entry says so explicitly, so a reader hittinguv lock --upgrade-package workflow-workbenchfurther down knows why.gh repo rename graph-builder-specis outward-facing — it changes a public URL and every existing clone's remote — and it stays Boris's action.Both downstream repos track
main, not a sha:GitHub redirects the old clone URL after a rename, so the git URL survives. The old distribution name does not — so their next
uv syncfails on a name that no longer exists. Their rename PRs are open alongside this one, and theiruv.lockis deliberately left untouched: the new URL does not resolve untilgh repo renameruns, so a hand-edited lock would be an artifact nobody has validated.uv lockafter the rename, not before.Verification
graph_builder_spec.reference --check: both generated tables matchuv lock --checkclean, anduv sync --extra evalsresolves under the new nameuv run python3 -m examples.greetinggit grep workflow_workbench\|workflow-workbenchreturns nothing outside the CHANGELOG