Context
Operator-flagged 2026-05-25 during PR #11951 cycle-1: the acme family (acme/app, acme/docs, acme-corp/widgets, tenant-acme, etc.) is widely used as a placeholder across operator-facing cloud-deployment docs and test fixtures. The acme and acme-corp GitHub orgs both actually exist, so using their namespace as a placeholder risks (a) misdirecting operators who try to clone the example, (b) name-collision if those orgs ever publish a repo with the matching slug, and (c) implying association with a real third-party org. PR #11951 fixed acme-corp/widgets → neomjs/create-app in the new "Server-Side Pull Mode" section but did NOT touch the rest of the codebase.
The Problem
grep -rni "acme" across the tracked codebase (excluding ACME-TLS-protocol references and devindex tracking data) surfaces ~30+ placeholder uses in operator-facing docs + test fixtures. None of these were introduced by PR #11951 — they predate it — but they share the same substrate-quality concern.
The Architectural Reality
Per the new memory entry feedback_example_placeholders_no_third_party_namespaces, operator-facing example identifiers (org names, repo slugs, clone URLs, env-var values) MUST NOT collide with real third-party GitHub org namespaces. Approved replacement strategies:
- Neomjs-owned repos:
neomjs/create-app, neomjs/neo. Operator-suggested approach for tenant-ingestion shape-illustrative examples.
- RFC-reserved domains:
https://example.com/... for URL placeholders that don't need git-host shape.
- Explicit angle-bracket placeholders:
<your-tenant-org>/<your-tenant-repo> for snippets that read as "substitute here."
The Fix
Rename surfaces across two categories:
Operator-facing docs (learn/agentos/cloud-deployment/)
HookWiring.md (2 lines): NEO_KB_REPO_SLUG="acme/app" + --repo-slug acme/app
Configuration.md (1 line): acme/app in env-var description
TenantIngestionModel.md (lines 53-54): acme/app, acme/docs in the Repository Identity examples block. The new "Server-Side Pull Mode" section already uses neomjs/create-app — Repository Identity examples should harmonize.
Day0Tutorial.md (5+ lines): acme/app in env exports, ingestion payload examples, command-line invocations
Recommended replacement: neomjs/create-app for the primary example; if a second-repo example is needed for the multi-repo case (e.g. acme/app + acme/docs showing same tenant with two repos), use neomjs/neo as the second slot.
Test fixtures (test/playwright/unit/)
KbTenantHealthHelper.spec.mjs (3 occurrences): tenant-acme / acme-web test-fixture identifiers — used in assertion strings that surface in the test-output rendered markdown
GitMirror.spec.mjs (line 158): 'https://token:secret@example.com/acme/repo.git' — note this is testing the secret-redaction path so the format must remain credential-bearing; only the acme/repo part needs renaming
kbPushClient.spec.mjs (8+ occurrences): acme/app as repoSlug across multiple it(...) blocks
Recommended replacement for test fixtures: tenant-a / tenant-a/repo-x style explicit-placeholder identifiers (or neomjs/... for consistency). Test fixtures don't need to be operator-readable, but consistency-with-docs reduces cognitive load when an operator reads a test for documentation purposes.
Acceptance Criteria
Out of Scope
- ACME-TLS-protocol references in
PipelineWiring.md and adjacent (legitimate technical term, not a placeholder)
apps/devindex/resources/data/visited.json real-repo tracking entries (acme-dns/acme-dns, go-acme/lego, etc.) — these track real public repos for devindex, not placeholders
apps/devindex/resources/data/tracker.json real GitHub user entries (jacmet)
- Memory Core / KB data that may have
acme/* in stored chunks (handled by next KB resync, not this PR)
Avoided Traps
- DON'T: do a blanket
sed s/acme/neomjs/g — that would corrupt ACME-protocol mentions in PipelineWiring.md
- DON'T: rename one file in isolation — operators read across the cloud-deployment guide tree; mixed
acme/app and neomjs/create-app is worse than either alone
- DON'T: change credential-bearing URL test fixtures in
GitMirror.spec.mjs in a way that defeats the secret-redaction test — keep token:secret@ shape, only rename the acme/repo path component
Empirical Anchor
Operator flag 2026-05-25 during PR #11951 cycle-1 review: "the github org actually exists! the repo does not (at least not public). does it make sense to use an unrelated org for examples? we could e.g. use neomjs/create-app or other own repos instead." Memory entry feedback_example_placeholders_no_third_party_namespaces codifies the discipline.
Authored by: [Claude Opus 4.7] (Claude Code)
Context
Operator-flagged 2026-05-25 during PR #11951 cycle-1: the
acmefamily (acme/app,acme/docs,acme-corp/widgets,tenant-acme, etc.) is widely used as a placeholder across operator-facing cloud-deployment docs and test fixtures. Theacmeandacme-corpGitHub orgs both actually exist, so using their namespace as a placeholder risks (a) misdirecting operators who try to clone the example, (b) name-collision if those orgs ever publish a repo with the matching slug, and (c) implying association with a real third-party org. PR #11951 fixedacme-corp/widgets→neomjs/create-appin the new "Server-Side Pull Mode" section but did NOT touch the rest of the codebase.The Problem
grep -rni "acme"across the tracked codebase (excluding ACME-TLS-protocol references and devindex tracking data) surfaces ~30+ placeholder uses in operator-facing docs + test fixtures. None of these were introduced by PR #11951 — they predate it — but they share the same substrate-quality concern.The Architectural Reality
Per the new memory entry
feedback_example_placeholders_no_third_party_namespaces, operator-facing example identifiers (org names, repo slugs, clone URLs, env-var values) MUST NOT collide with real third-party GitHub org namespaces. Approved replacement strategies:neomjs/create-app,neomjs/neo. Operator-suggested approach for tenant-ingestion shape-illustrative examples.https://example.com/...for URL placeholders that don't need git-host shape.<your-tenant-org>/<your-tenant-repo>for snippets that read as "substitute here."The Fix
Rename surfaces across two categories:
Operator-facing docs (
learn/agentos/cloud-deployment/)HookWiring.md(2 lines):NEO_KB_REPO_SLUG="acme/app"+--repo-slug acme/appConfiguration.md(1 line):acme/appin env-var descriptionTenantIngestionModel.md(lines 53-54):acme/app,acme/docsin the Repository Identity examples block. The new "Server-Side Pull Mode" section already usesneomjs/create-app— Repository Identity examples should harmonize.Day0Tutorial.md(5+ lines):acme/appin env exports, ingestion payload examples, command-line invocationsRecommended replacement:
neomjs/create-appfor the primary example; if a second-repo example is needed for the multi-repo case (e.g.acme/app+acme/docsshowing same tenant with two repos), useneomjs/neoas the second slot.Test fixtures (
test/playwright/unit/)KbTenantHealthHelper.spec.mjs(3 occurrences):tenant-acme/acme-webtest-fixture identifiers — used in assertion strings that surface in the test-output rendered markdownGitMirror.spec.mjs(line 158):'https://token:secret@example.com/acme/repo.git'— note this is testing the secret-redaction path so the format must remain credential-bearing; only theacme/repopart needs renamingkbPushClient.spec.mjs(8+ occurrences):acme/appas repoSlug across multipleit(...)blocksRecommended replacement for test fixtures:
tenant-a/tenant-a/repo-xstyle explicit-placeholder identifiers (orneomjs/...for consistency). Test fixtures don't need to be operator-readable, but consistency-with-docs reduces cognitive load when an operator reads a test for documentation purposes.Acceptance Criteria
acme/*andacme-corp/*placeholders inlearn/agentos/cloud-deployment/*.mdreplaced withneomjs/create-app(primary) orneomjs/neo(secondary slot for multi-repo examples), or angle-bracket placeholders where context calls for "substitute here" styletenant-a/tenant-a/repo-xORneomjs/...for consistency); test assertions updated to matchgrep -rni "acme" learn/agentos/cloud-deployment/ test/playwright/unit/ai/services/knowledge-base/ test/playwright/unit/ai/scripts/maintenance/returns zero placeholder hits (legitimate ACME-protocol references inPipelineWiring.mdare NOT in scope)Out of Scope
PipelineWiring.mdand adjacent (legitimate technical term, not a placeholder)apps/devindex/resources/data/visited.jsonreal-repo tracking entries (acme-dns/acme-dns,go-acme/lego, etc.) — these track real public repos for devindex, not placeholdersapps/devindex/resources/data/tracker.jsonreal GitHub user entries (jacmet)acme/*in stored chunks (handled by next KB resync, not this PR)Avoided Traps
sed s/acme/neomjs/g— that would corrupt ACME-protocol mentions inPipelineWiring.mdacme/appandneomjs/create-appis worse than either aloneGitMirror.spec.mjsin a way that defeats the secret-redaction test — keeptoken:secret@shape, only rename theacme/repopath componentEmpirical Anchor
Operator flag 2026-05-25 during PR #11951 cycle-1 review: "the github org actually exists! the repo does not (at least not public). does it make sense to use an unrelated org for examples? we could e.g. use neomjs/create-app or other own repos instead." Memory entry
feedback_example_placeholders_no_third_party_namespacescodifies the discipline.Authored by: [Claude Opus 4.7] (Claude Code)