From 53587e3ddc36757b891064e7fa215498fdf66903 Mon Sep 17 00:00:00 2001 From: Mao Nakamoto <41178744+maonakamoto@users.noreply.github.com> Date: Tue, 1 Sep 2026 06:05:08 +0200 Subject: [PATCH 1/2] chore: the org is bitbaum now, so the links should say so cd61f82 moved the deploy workflow to bitbaum/fleetcrown but stopped there. Everything else still named catomean: the "view source" links on /about and /security, the three URLs in ecosystem.ts behind them, the clone command in the README, the design-tokens git dependency in package.json, and the incident notes in the auto-merge sweep. None of it is broken today only because GitHub 301-redirects a renamed org. That redirect dies the moment anyone claims the catomean name, and it is not a guarantee to hang a dependency resolution on. npm ci resolves the new URL at the same commit sha, so the lockfile integrity is unchanged. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01S8e9btkzguNLS4b6ShGQ9H --- README.md | 2 +- docs/development/ui-guidelines.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- scripts/ci/auto-merge-sweep.sh | 6 +++--- src/app/about/page.tsx | 2 +- src/app/security/page.tsx | 2 +- src/lib/config/ecosystem.ts | 6 +++--- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 6e420fc..48ce6c4 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ Solon shares OrangeCat's tokens by name and value, and is dark-only. ## Quick start ```bash -git clone https://github.com/catomean/solon.git +git clone https://github.com/bitbaum/solon.git cd solon npm install diff --git a/docs/development/ui-guidelines.md b/docs/development/ui-guidelines.md index bbc0111..12b6e20 100644 --- a/docs/development/ui-guidelines.md +++ b/docs/development/ui-guidelines.md @@ -8,7 +8,7 @@ Not in this repo, and not in this document: | Where | Role | |---|---| -| **`@fleet/design-tokens`** ([repo](https://github.com/catomean/design-tokens)) | **Token SSOT** for all three products — every colour, face, radius, rhythm and measure, plus the self-hosted font files and the Tailwind preset. | +| **`@fleet/design-tokens`** ([repo](https://github.com/bitbaum/design-tokens)) | **Token SSOT** for all three products — every colour, face, radius, rhythm and measure, plus the self-hosted font files and the Tailwind preset. | | `src/app/globals.css` | Solon-specific rules only. Defining a token here **fails the build**. | | `tailwind.config.js` | Consumes the shared preset. Defines no colours, fonts or geometry. | | `scripts/design-system-check.js` | **Enforcement.** Run by `npm run design:check`, which `npm run verify` runs. | diff --git a/package-lock.json b/package-lock.json index 4189ed8..0b2061a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "solon", "version": "0.1.0", "dependencies": { - "@fleet/design-tokens": "github:catomean/design-tokens#v1.1.0", + "@fleet/design-tokens": "github:bitbaum/design-tokens#v1.1.0", "@noble/hashes": "2.4.0", "@noble/secp256k1": "3.1.0", "@prisma/adapter-pg": "^7.10.0", @@ -988,7 +988,7 @@ }, "node_modules/@fleet/design-tokens": { "version": "1.1.0", - "resolved": "git+ssh://git@github.com/catomean/design-tokens.git#dedda604c526dc35ae552b6b4616048ad16e8b59", + "resolved": "git+ssh://git@github.com/bitbaum/design-tokens.git#dedda604c526dc35ae552b6b4616048ad16e8b59", "license": "MIT" }, "node_modules/@humanfs/core": { diff --git a/package.json b/package.json index a9a38df..1adc42d 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "format:check": "prettier --check ." }, "dependencies": { - "@fleet/design-tokens": "github:catomean/design-tokens#v1.1.0", + "@fleet/design-tokens": "github:bitbaum/design-tokens#v1.1.0", "@noble/hashes": "2.4.0", "@noble/secp256k1": "3.1.0", "@prisma/adapter-pg": "^7.10.0", diff --git a/scripts/ci/auto-merge-sweep.sh b/scripts/ci/auto-merge-sweep.sh index 0a0b747..773f9cd 100644 --- a/scripts/ci/auto-merge-sweep.sh +++ b/scripts/ci/auto-merge-sweep.sh @@ -111,7 +111,7 @@ else # base quietly collecting more of them and getting harder to diagnose. But # when the PR *is* the repair, the same rule deadlocks the repo — the fix # cannot travel the path its own redness blocks, and only a human can move - # it. Seen in catomean/aoz-housing on 2026-08-07: E2E red on the base, the + # it. Seen in bitbaum/aoz-housing on 2026-08-07: E2E red on the base, the # fix sitting green in a PR, every sweep refusing politely. # # So identify WHICH jobs are red and let a PR through only if its own checks @@ -150,7 +150,7 @@ woken=0 # OLDEST FIRST. `gh pr list` returns newest-first, and this loop merges the # first eligible PR and stops — so the newest green PR wins every sweep and an -# older one can wait indefinitely. Observed in catomean/fleetcrown on +# older one can wait indefinitely. Observed in bitbaum/fleetcrown on # 2026-08-06: two consecutive sweeps merged the two newest PRs while three # older green ones were never even evaluated. With several agent sessions # opening PRs continuously, "newest wins" is starvation, and it starves the PR @@ -195,7 +195,7 @@ for number in $(printf '%s' "$prs_json" | jq -r 'sort_by(.number) | .[].number') # floor in August 2026, and every Dependabot PR opened before that day has # zero checks — so "has at least one check" can never become true and the # policy above parks them permanently. Found on 2026-08-14 in - # catomean/solon: 5 PRs from 2026-06-22/06-29, all MERGEABLE, all CLEAN, + # bitbaum/solon: 5 PRs from 2026-06-22/06-29, all MERGEABLE, all CLEAN, # none merged, none merge-able, because nothing had ever checked them. # CLEAN there means "nothing objected", not "verified" — the dangerous # reading, and exactly why the no-checks rule must stay. diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index 5feb4a8..2a774c6 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -104,7 +104,7 @@ export default function AboutPage() { Live governed state {" · "} Date: Tue, 1 Sep 2026 06:05:16 +0200 Subject: [PATCH 2/2] fix(verify): the local gate failed on files CI never sees MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `npm run verify` is the contract: green locally means green in CI. It was not. Two kinds of file that exist on a developer machine and never in CI were inside the gate's scope. The harness checks this repo out a second time under .claude/worktrees// for concurrent sessions. Git treats that as a separate worktree, but prettier, eslint and tsc read it as ordinary files — so `prettier --check .` failed on 88 files belonging to another branch, and tsc would have compiled that branch's half-finished code into this branch's verdict. .claude/settings.local.json is per-machine agent config, ignored only by the user's global gitignore, so prettier checked a file the repo does not even own. Both are now out of scope for all three tools, and both are ignored by this repo rather than by whatever the developer happens to have in ~/.config/git. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01S8e9btkzguNLS4b6ShGQ9H --- .gitignore | 7 +++++++ .prettierignore | 10 ++++++++++ eslint.config.mjs | 3 +++ tsconfig.json | 2 +- 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index a26d172..c7f578d 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,10 @@ playwright-report/ # typescript *.tsbuildinfo next-env.d.ts + +# nested git worktrees — the agent harness checks this repo out a second time +# under .claude/worktrees//, on its own branch with its own gate +.claude/worktrees/ + +# per-machine agent settings; the shared .claude/settings.json is committed +.claude/settings.local.json diff --git a/.prettierignore b/.prettierignore index b698663..ef97778 100644 --- a/.prettierignore +++ b/.prettierignore @@ -10,6 +10,16 @@ coverage *.min.js *.min.css +# Nested git worktrees. The agent harness checks a second copy of this repo out +# under .claude/worktrees//; prettier reads it as ordinary files and a +# clean tree fails --check on 80+ files that are not in this commit. Formatting +# them there is also wrong — that checkout has its own branch and its own gate. +.claude/worktrees + +# Per-machine agent settings. Never committed, absent in CI — so checking it +# locally can only ever produce a failure CI cannot see. +.claude/settings.local.json + # Generated during a build, so it is absent locally and present in CI — which # makes a clean local --check no evidence at all. Contentlayer's output also # uses import assertions, which prettier's parser rejects outright. diff --git a/eslint.config.mjs b/eslint.config.mjs index d7b1aea..d3f3610 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -12,6 +12,9 @@ const config = [ ignores: [ ".next/**", "node_modules/**", + // Nested git worktrees — a second checkout of this repo on its own + // branch, linted by its own gate, not by this one. + ".claude/worktrees/**", "next-env.d.ts", "playwright-report/**", "test-results/**", diff --git a/tsconfig.json b/tsconfig.json index e2620af..1a5b56a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -32,5 +32,5 @@ ".next/types/**/*.ts", ".next/dev/types/**/*.ts" ], - "exclude": ["node_modules", ".next"] + "exclude": ["node_modules", ".next", ".claude/worktrees"] }