diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8a39baf..2b48ea6 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,9 +1,10 @@
name: ci
-# The org profile README is the company homepage (yellowpine.com redirects here), so its
-# invariants are tested: assets resolve, brand SVGs are real vectors, and — because the
-# tests fetch without credentials — every linked repo is publicly visible and every
-# product link is live. The weekly cron catches links that die between pushes.
+# The org profile README is the org's front page on GitHub (the company homepage itself is
+# yellowpine.com, built from yellow-pine/yellow-pine.github.io, not from here). The README's
+# invariants are what this workflow tests: assets resolve, brand SVGs are real vectors, and —
+# because the tests fetch without credentials — every linked repo is publicly visible and
+# every product link is live. The weekly cron catches links that die between pushes.
on:
push:
branches: [main]
diff --git a/README.md b/README.md
index 4662eed..b2ffc80 100644
--- a/README.md
+++ b/README.md
@@ -1,25 +1,30 @@
-# .github — the Yellow Pine homepage
+# .github — the Yellow Pine org profile
-Organization-wide GitHub configuration for **Yellow Pine**. Because yellowpine.com
-redirects to [github.com/yellow-pine](https://github.com/yellow-pine), the org profile
-rendered from this repository **is** the company homepage.
+Organization-wide GitHub configuration for **Yellow Pine**. The company homepage is
+[yellowpine.com](https://yellowpine.com). The org profile rendered from this repository is
+what every visitor to [github.com/yellow-pine](https://github.com/yellow-pine) lands on, so
+it is held to the publish rule below and to the invariants in [`tests/`](tests/) — but it is
+not the homepage itself.
## Contents
-- [`profile/README.md`](profile/README.md) — the public org profile / homepage.
+- [`profile/README.md`](profile/README.md) — the public org profile.
- [`brand/`](brand/) — the canonical public brand library: hand-cleaned SVG masters
(logo, dark variant, tile icon, bare mark), palette, and usage rules. The full Brandmark
export archive and raster generators live in the private `yellow-pine/brand-assets` repo.
-- [`tests/`](tests/) — homepage invariants, run by [CI](.github/workflows/ci.yml) on every
+- [`tests/`](tests/) — profile invariants, run by [CI](.github/workflows/ci.yml) on every
push and weekly: every referenced asset exists, brand SVGs are real vectors, every
linked repo is publicly visible **without auth** (nothing private can leak onto the
- homepage), and every product link is live.
+ profile), and every product link is live.
## The publish rule
-A project appears on the homepage only if it is a public repo, or a private repo with a
-live public website. The tests enforce the mechanical half of this: they fetch every
-`github.com/yellow-pine/*` link anonymously and fail on anything not public.
+A project is publishable — on the profile, on yellowpine.com, anywhere Yellow Pine speaks
+publicly — only if it is a public repo, or a private repo with a live public website. The
+rule is company-wide; what is scoped is the enforcement. The tests here cover the mechanical
+half **for the profile**: they fetch every `github.com/yellow-pine/*` link anonymously and
+fail on anything not public. The website repo inherits the rule and enforces it the same way
+against its own page.
```sh
npm test # run the invariants locally
diff --git a/brand/design/build-boards.mjs b/brand/design/build-boards.mjs
index 8dda3e2..42abe7f 100644
--- a/brand/design/build-boards.mjs
+++ b/brand/design/build-boards.mjs
@@ -304,7 +304,7 @@ ${FOOT}`);
Terminal
➜ ~/code gh repo view yellow-pine/.github
-
The Yellow Pine homepage — org profile, public brand library, and org-wide config.
+
The Yellow Pine org profile, public brand library, and org-wide config.
➜ ~/code git push # built with 💛 by a tiny human team and a fleet of agents
diff --git a/brand/design/canvas/Applications.dc.html b/brand/design/canvas/Applications.dc.html
index 2c541ee..2a32722 100644
--- a/brand/design/canvas/Applications.dc.html
+++ b/brand/design/canvas/Applications.dc.html
@@ -39,7 +39,7 @@ Browser tabs
Terminal
➜ ~/code gh repo view yellow-pine/.github
-
The Yellow Pine homepage — org profile, public brand library, and org-wide config.
+
The Yellow Pine org profile, public brand library, and org-wide config.
➜ ~/code git push # built with 💛 by a tiny human team and a fleet of agents
diff --git a/package.json b/package.json
index 88239ae..0a2be8e 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "@yellow-pine/dot-github",
"private": true,
- "description": "Org-wide GitHub configuration + the public Yellow Pine profile (the company homepage).",
+ "description": "Org-wide GitHub configuration + the public Yellow Pine profile and brand library.",
"type": "module",
"scripts": {
"test": "node --test tests/profile.test.mjs tests/design.test.mjs",
diff --git a/tests/profile.test.mjs b/tests/profile.test.mjs
index 94b5ff4..9be1754 100644
--- a/tests/profile.test.mjs
+++ b/tests/profile.test.mjs
@@ -1,13 +1,13 @@
-// Invariants for the Yellow Pine org homepage (profile/README.md) and the brand library.
+// Invariants for the Yellow Pine org profile (profile/README.md) and the brand library.
//
-// yellowpine.com redirects to github.com/yellow-pine, so profile/README.md IS the company
-// homepage — these tests are the gate that keeps it publishable:
+// The company homepage is yellowpine.com. profile/README.md is what every visitor to
+// github.com/yellow-pine lands on — these tests are the gate that keeps it publishable:
//
// 1. Every relative asset a README references must exist in the repo.
// 2. Every github.com/yellow-pine/* link must be reachable WITHOUT auth — the publish
// rule expressed without naming any repo: a link to a private repo 404s for the
// anonymous public and fails here.
-// 3. Every external product link must be live (a dead product link on the homepage is
+// 3. Every external product link must be live (a dead product link on the profile is
// worse than no link).
// 4. brand/ must hold real vector SVGs (light + dark logo, icon) — no raster embeds.
//
@@ -84,7 +84,7 @@ const skipNetwork = process.env.SKIP_NETWORK === '1';
test('profile/README.md exists and is substantial', () => {
assert.ok(existsSync(join(repoRoot, PROFILE)), 'profile/README.md missing');
- assert.ok(read(PROFILE).length > 500, 'profile/README.md is too thin to be the homepage');
+ assert.ok(read(PROFILE).length > 500, 'profile/README.md is too thin to be the org profile');
});
test('every local asset referenced by a README exists', () => {
@@ -119,11 +119,11 @@ test('brand SVGs are real vectors', () => {
}
});
-// --- the homepage's links must hold up for the anonymous public --------------------
+// --- the profile's links must hold up for the anonymous public ---------------------
test('every yellow-pine GitHub link is publicly reachable without auth', { skip: skipNetwork }, async () => {
const orgLinks = externalLinks().filter((u) => u.startsWith('https://github.com/yellow-pine'));
- assert.ok(orgLinks.length >= 1, 'homepage should link at least one yellow-pine repo');
+ assert.ok(orgLinks.length >= 1, 'the profile should link at least one yellow-pine repo');
for (const url of orgLinks) {
const status = await fetchStatus(url);
assert.equal(status, 200, `${url} is not publicly visible without auth (HTTP ${status})`);