Skip to content

docs: finish the TreeQ rebrand, and correct what it uncovered - #74

Merged
Remote55 merged 3 commits into
mainfrom
docs/finish-treeq-rebrand
Aug 23, 2026
Merged

Remote55 merged 3 commits into
mainfrom
docs/finish-treeq-rebrand

Conversation

@Remote55

Copy link
Copy Markdown
Owner

Finishes the rename the repository has been half-way through since July, and
fixes three things the search turned up that were worse than a stale name.

What the rebrand actually needed

Less than expected. Both logo PNGs are wordless illustrations — byte-identical
to what shipped as CarbonScan AI — so nothing on the deployed site ever displayed
the old name, and the mark transferred without a redraw. The brand README claimed
otherwise and now doesn't.

CONTRIBUTING, LICENSE, assets/brand/README.md, docs/design/BRAND.md,
ONBOARDING, ARCHITECTURE, DATASETS and DEPLOYMENT now say TreeQ in prose.

What it uncovered, which mattered more

Three documents pointed at hosts that do not exist. DEPLOYMENT.md listed the
web app at carbonscan-ai.vercel.app (404) and the API at
api.carbonscan-ai.up.railway.app (never provisioned). API.md gave a production
base URL of api.carbonscan-ai.com (unregistered domain). All three stated as
fact.

DEVELOPMENT.md walks a new developer through setting up PostGIS and running
Alembic migrations for a database layer deleted in 927ae78 — no table backed it,
no endpoint read from it.

The website still offered a backend that was removed two commits earlier. After
NEXT_PUBLIC_API_URL came out of production, the landing hero still invited a
visitor to upload and get carbon, the viewer's card header still described the
round trip, and the no-backend panel said the calculation runs "live through the
API in the presentation" — a sentence written when a presenter had a local backend
open during NSC. A visitor would have found out by getting nothing.

The viewer's copy now switches on apiReady, which the component already had. The
landing CTA changed from ทดลองอัปโหลดไฟล์ to อัปโหลดดูการแยก 3 มิติ — uploading
still does real work in the browser; it's the carbon half that's gone, and the
button now promises only the half that's there.

CLAUDE.md

Loaded into every session, so its contents are standing instructions rather than
documentation. It described a three-person team, NSC 2026 with nine days to a
deadline, a PostgreSQL backend since removed, and a stated preference to optimise
for ทำให้กรรมการ NSC ว้าว.

That last line was pulling against the repository's entire discipline every
session. Rewritten to what's true: solo, open data only, and accuracy before
impressiveness.

Deliberately not touched

why
docs/decisions/, proposal/, docs/superpowers/, AI_AGENT_CONTEXT, SESSION_HANDOFF DOCUMENT_STATUS classifies these as historical. An ADR edited after the fact is no longer a record of a decision.
carbonscan-api, carbonscan-ml, @carbonscan/*, bucket carbonscan-uploads, APP_NAME Renaming breaks an editable install until pip runs again, and the bucket is live infrastructure. Separate blast radius.
GitHub repo slug Needs a decision, not a commit.

TASKS.md gets a banner rather than a rewrite — its five phases are built around
the NSC timeline and a Flutter app deleted under ADR 0007, and at the repo root
with no banner it read as a current task list.

One thing found while reading

AI_AGENT_CONTEXT's caution banner tells the reader to trust the manifest and
then quotes Demol DBH MAE as 1.1673846154 cm, which is not what the manifest
says. The body stays historical; the banner is current guidance and is now correct
at 0.898318.

Verification

sync_truth --check   ok
scripts/tests        148 passed
apps/web             31 files, 210 tests, type-check clean, build clean

🤖 Generated with Claude Code

Remote55 and others added 3 commits August 23, 2026 19:41
…line

CLAUDE.md is loaded into every session in this repository, so its contents are
not documentation - they are standing instructions. It described a project that
stopped existing in August: a three-person team with a Person A and a Person B,
NSC 2026 with proposal and final-report deadlines, nine days remaining, a
PostgreSQL and PostGIS backend that has since been removed, RunPod GPU that was
never used, and a stated preference to optimise for "ทำให้กรรมการ NSC ว้าว".

That last line is the one that mattered. A standing instruction to impress
competition judges, in a repository whose entire discipline is that published
numbers must be re-derivable, was pulling in the opposite direction every
session. It now says accuracy comes before impressiveness, and that figures come
from running something rather than from memory.

Rewritten to what is true: solo, no institution, no scanner, no GPU, open data
only. The evidence rules that actually govern work here - sync_truth, the
fail-closed gate, commit the result whatever it says, never recalibrate on the
cohort you measure with. The two validation cohorts and what they do not cover.
And the machine constraint, because a full test suite on this laptop costs 29
minutes and once left 93 GB of scratch behind.

REBRAND, WHERE IT IS HONEST TO REBRAND

CONTRIBUTING, LICENSE, the brand README and BRAND.md now say TreeQ. The logo
needed nothing: both PNGs are wordless illustrations, byte-identical to what
shipped under the old name, so nothing on the deployed site ever displayed
"CarbonScan" and the rename cost the mark nothing. The brand README said
otherwise and now says this.

Deliberately NOT renamed: docs/decisions/, proposal/, docs/proposal/,
AI_AGENT_CONTEXT, SESSION_HANDOFF, DEVELOPMENT_PLAN, and everything under
docs/superpowers/. DOCUMENT_STATUS classifies those as historical, and an ADR
whose text is edited after the fact is no longer a record of a decision.

TASKS.md gets a banner instead of a rewrite. Its five phases are built around
the NSC timeline, a three-person team, and a Flutter app deleted under ADR 0007;
at the repository root with no banner it read as a current task list. It is now
labelled historical and listed as such in DOCUMENT_STATUS.

ONE THING FOUND WHILE READING

AI_AGENT_CONTEXT's caution banner tells the reader to trust the manifest and
then quotes Demol DBH MAE as 1.1673846154 cm, which is not what the manifest
says. The body of that file is historical and stays as written; the banner is
current guidance and is now correct at 0.898318.

    sync_truth --check   ok
    scripts/tests        148 passed

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ts ago

Removing NEXT_PUBLIC_API_URL from production was the right call - it stopped the
site pointing at a Cloudflare tunnel that no longer resolved. What it did not do
was tell the copy.

Three places went on describing a flow that cannot happen. The landing hero
invited a visitor to upload a point cloud and get carbon. The viewer's card
header described the round trip - send this file to the backend, run the
pipeline, get an estimate with provenance. And the panel that appears when no
backend is configured said the carbon calculation runs "live through the API in
the presentation", a sentence written when a presenter had a local backend open
during NSC and meaningless now.

This is the defect the evidence gates exist to catch, arriving as prose instead
of as a number. A visitor clicking through would have found out by getting
nothing.

The viewer's two descriptions now switch on apiReady, which the component
already had. With no backend it says plainly that the separation runs in the
browser, the carbon step needs a pipeline that is not deployed, and the
reviewed result is on /demo. The core demo figures stay but are labelled as what
they are - a fixed-seed synthetic fixture proving the pipeline reruns to the
same answer - rather than sitting unqualified next to the words "carbon
estimate", where they read as a measurement.

The landing CTA changes from "ทดลองอัปโหลดไฟล์" to "อัปโหลดดูการแยก 3 มิติ".
Uploading still works and still does real work; it is the carbon half that is
gone, and the button now promises only the half that is there.

page.test.tsx binds each landing label to its route, so it failed on the rename.
The label is the thing under test and it changed on purpose; the expectation is
updated with a note saying why.

    apps/web   31 files, 210 tests, type-check clean, build clean

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Chasing the old brand name through the docs turned up something worse than a
stale name. DEPLOYMENT.md's targets table listed the web app at
carbonscan-ai.vercel.app, which 404s, and the API at
api.carbonscan-ai.up.railway.app, which was never provisioned. API.md gave a
production base URL of api.carbonscan-ai.com, a domain nobody registered. Three
addresses, none reachable, all stated as fact.

The table is kept with the intended shape visible, because a plan is worth
recording, but every row now says what is actually there: the web app live at
its real URL, the API not deployed and NEXT_PUBLIC_API_URL unset, the database
removed outright.

DEVELOPMENT.md is the same failure aimed at a person rather than a service. Its
Database Setup section walks a new developer through starting a PostGIS
container and running Alembic migrations for a layer deleted in 927ae78 - no
table backed it, no endpoint read from it. Following that section sets up
infrastructure the code will never connect to. It now says so, and is kept
because the migration files are still in the tree and someone will ask.

ARCHITECTURE.md still described heterogeneous input as point clouds or multiple
RGB photos. ADR 0007 removed the photo path a year ago.

The brand renames themselves are the small part: ONBOARDING, ARCHITECTURE,
DATASETS and DEPLOYMENT now say TreeQ in prose.

PROJECT_SPEC's outstanding-rebrand note is corrected to list what actually
remains - the GitHub repo slug and the package identifiers - and to state
plainly that historical documents and ADRs are excluded on purpose, because
editing a record after the fact is not a rebrand.

STILL NOT DONE, AND DELIBERATELY

carbonscan-api, carbonscan-ml, @carbonscan/types, @carbonscan/design-tokens, the
carbonscan-uploads Supabase bucket, and APP_NAME with the test that asserts it.
Renaming those breaks an editable install until pip runs again, and the bucket
name is live infrastructure. Separate job, separate blast radius.

    sync_truth --check   ok
    scripts/tests        148 passed

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

vercel Bot commented Aug 23, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
treeqcarbon Ready Ready Preview Aug 23, 2026 12:58pm

@Remote55
Remote55 merged commit b68e332 into main Aug 23, 2026
9 checks passed
@Remote55
Remote55 deleted the docs/finish-treeq-rebrand branch August 23, 2026 13:02

This branch was successfully deployed

1 active deployment
Preview — 275ddaea Deployed Aug 23, 2026 by vercel[bot]
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.

1 participant