Skip to content

security(docs,src): remove client tenant hostnames from the tree - #671

Merged
ssdavidai merged 1 commit into
mainfrom
phase0/scrub-client-hostnames
Aug 17, 2026
Merged

security(docs,src): remove client tenant hostnames from the tree#671
ssdavidai merged 1 commit into
mainfrom
phase0/scrub-client-hostnames

Conversation

@ssdavidai

Copy link
Copy Markdown
Owner

What

27 occurrences of <client>.alfred.black were tracked across source, tests, docs and the Makefile — the earliest dating to 2026-05-29. This repository is public and a tenant hostname identifies a client.

The worst one, and why this isn't cosmetic: deploy/README.md carried an explicit hostname → principal table, mapping each tenant hostname to the person it belongs to. Replaced with a pointer to the ALFRED_FLEET_HOSTS secret.

Almost every other occurrence was an incident reference in a comment — "On <host> (2026-05-27) Composio finished authenticating Gmail". The information is worth keeping and the identity is not, so those now read "a client tenant" and retain the date and the symptom.

Two were functional, not prose

A blanket substitution would have broken both:

  • Makefile's FLEET ?= default listed the whole roster. The naive replacement turned it into FLEET ?= home.alfred.black a client tenant a client tenant …. It is now empty, with the roster passed explicitly or exported from the secret.
  • The same substitution left "the a client tenant incident" in four files.

Both were caught before commit by actually exercising the Makefile rather than eyeballing the diff.

Smoke evidence

client hostnames remaining in the tree:  NONE

Makefile verified by parsing and exercising both paths, since it was the one behavioural change:

make -n sync-compose-fleet          -> parses
make -n FLEET="example.test" ...    -> parses, honours the override

Everything else is comment-only; ci-check covers the source files.

Deliberately not in this PR

home.alfred.black72 hits across 38 files. It is the operator's own dev tenant rather than a client, and it appears in test fixtures that assert on it (process.env.DOMAIN = "home.alfred.black", avatar URLs, TwiML URLs). Scrubbing it is a larger sweep with real test churn, and whether it counts as something to hide is a judgement call I shouldn't make silently.

🤖 Generated with Claude Code

This repository is public and a tenant hostname identifies a client. 27
occurrences of `<client>.alfred.black` were tracked across source, tests, docs
and the Makefile — the earliest dating to 2026-05-29.

Worst of them, and the reason this is not merely cosmetic: deploy/README.md
carried an explicit hostname-to-principal TABLE, mapping each tenant hostname
to the person it belongs to. That is replaced by a pointer to the
ALFRED_FLEET_HOSTS secret.

Almost every other occurrence was an incident reference in a comment ("On
<host> (2026-05-27) Composio finished authenticating Gmail"). The information
is worth keeping, the identity is not, so they now read "a client tenant" and
retain the date and the symptom.

Two were functional rather than prose, and were handled rather than blindly
substituted:

  * Makefile's `FLEET ?=` default listed the whole roster. It is now empty,
    with the roster passed explicitly or exported from the secret. The blanket
    replacement had turned that line into repeated prose; caught before commit
    by parsing the Makefile and exercising both the default and explicit-FLEET
    paths.
  * The same substitution left "the a client tenant incident" in four files.

`home.alfred.black` is deliberately untouched here — it is the operator's own
dev tenant rather than a client, and it appears far more widely (72 hits across
38 files, including test fixtures that assert on it). That is a larger sweep
and a separate decision.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ssdavidai
ssdavidai merged commit e0c0895 into main Aug 17, 2026
14 of 15 checks passed
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