Skip to content
This repository was archived by the owner on Oct 12, 2026. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
31fe318
fix(public): disambiguate Tiny Studio identity across every public pa…
nish3451 Aug 11, 2026
502304f
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 12, 2026
0e1d996
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 12, 2026
ce0ade5
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 12, 2026
91b740c
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 12, 2026
0e73835
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 12, 2026
d75595f
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 12, 2026
202f30e
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 12, 2026
01a99d4
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 12, 2026
28faa2e
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 12, 2026
8b77b38
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 12, 2026
cb1e66d
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 13, 2026
b5f565f
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 13, 2026
2cb9a53
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 13, 2026
37353b6
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 13, 2026
a0ce985
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 13, 2026
d9029fc
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 13, 2026
98930ec
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 13, 2026
101cb6e
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 13, 2026
1f0852f
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 13, 2026
050f3ab
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 13, 2026
9cbab67
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 13, 2026
4f5e7a3
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 13, 2026
9edde4d
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
29e06d2
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
c27a272
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
d06e240
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
f827fd3
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
053e479
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
e292a66
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
3bb8495
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
2a9cf9a
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
e14a8c5
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
f56cc9a
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
93d0056
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
32b4247
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
0a24660
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
87be3d1
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 14, 2026
aed59bd
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
8c2be54
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
5c8cfdc
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
34a257f
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
352b994
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
e5a20a9
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
c82bcfd
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
1385f2e
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
d7490ce
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
90f3660
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
dd06039
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
c7c4a23
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
932ea17
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
4703a5d
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
eab71f5
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 15, 2026
4676540
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 17, 2026
2e2de22
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 17, 2026
c0686b3
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 17, 2026
1ef018f
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 17, 2026
e01660e
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 17, 2026
2fd9015
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 17, 2026
f532678
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 17, 2026
39ea4c1
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 18, 2026
da3fa8d
Merge branch 'main' into fix/lane1-public-brand-disambiguation-ai-sur…
nish3451 Aug 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion public/contact/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
"@type": "Organization",
"@id": "https://tinystudio.in/#organization",
"name": "Tiny Studio",
"url": "https://tinystudio.in/"
"alternateName": "tinystudio.in",
"url": "https://tinystudio.in/",
"description": "Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with other apps or studios that use the name Tiny Studio."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Refresh sitemap timestamps for the changed pages

When this SEO-focused change is deployed, every URL whose structured data was updated still advertises an older lastmod date (August 9–11) in public/sitemap.xml, despite these pages changing on August 13. Crawlers that rely on lastmod to prioritize recrawling may therefore delay discovering the new disambiguation; update the corresponding sitemap entries alongside the JSON-LD changes.

Useful? React with 👍 / 👎.

},
{
"@type": "ContactPage",
Expand Down
4 changes: 3 additions & 1 deletion public/drishti/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
"@type": "Organization",
"@id": "https://tinystudio.in/#organization",
"name": "Tiny Studio",
"url": "https://tinystudio.in/"
"alternateName": "tinystudio.in",
"url": "https://tinystudio.in/",
"description": "Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with other apps or studios that use the name Tiny Studio."
},
{
"@type": "WebPage",
Expand Down
4 changes: 3 additions & 1 deletion public/drishti/privacy/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
"@type": "Organization",
"@id": "https://tinystudio.in/#organization",
"name": "Tiny Studio",
"url": "https://tinystudio.in/"
"alternateName": "tinystudio.in",
"url": "https://tinystudio.in/",
"description": "Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with other apps or studios that use the name Tiny Studio."
},
{
"@type": "WebPage",
Expand Down
4 changes: 3 additions & 1 deletion public/drishti/support/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
"@type": "Organization",
"@id": "https://tinystudio.in/#organization",
"name": "Tiny Studio",
"url": "https://tinystudio.in/"
"alternateName": "tinystudio.in",
"url": "https://tinystudio.in/",
"description": "Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with other apps or studios that use the name Tiny Studio."
},
{
"@type": "ContactPage",
Expand Down
2 changes: 1 addition & 1 deletion public/llms.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Tiny Studio

Tiny Studio is a small product company behind Promptly, Drishti, and 0509.
Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with any other app or studio that uses the name Tiny Studio.

## Public pages

Expand Down
4 changes: 3 additions & 1 deletion public/privacy-choices/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
"@type": "Organization",
"@id": "https://tinystudio.in/#organization",
"name": "Tiny Studio",
"url": "https://tinystudio.in/"
"alternateName": "tinystudio.in",
"url": "https://tinystudio.in/",
"description": "Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with other apps or studios that use the name Tiny Studio."
},
{
"@type": "WebPage",
Expand Down
4 changes: 3 additions & 1 deletion public/privacy/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
"@type": "Organization",
"@id": "https://tinystudio.in/#organization",
"name": "Tiny Studio",
"url": "https://tinystudio.in/"
"alternateName": "tinystudio.in",
"url": "https://tinystudio.in/",
"description": "Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with other apps or studios that use the name Tiny Studio."
},
{
"@type": "WebPage",
Expand Down
4 changes: 3 additions & 1 deletion public/promptly/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
"@type": "Organization",
"@id": "https://tinystudio.in/#organization",
"name": "Tiny Studio",
"url": "https://tinystudio.in/"
"alternateName": "tinystudio.in",
"url": "https://tinystudio.in/",
"description": "Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with other apps or studios that use the name Tiny Studio."
},
{
"@type": "WebPage",
Expand Down
4 changes: 3 additions & 1 deletion public/promptly/privacy/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
"@type": "Organization",
"@id": "https://tinystudio.in/#organization",
"name": "Tiny Studio",
"url": "https://tinystudio.in/"
"alternateName": "tinystudio.in",
"url": "https://tinystudio.in/",
"description": "Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with other apps or studios that use the name Tiny Studio."
},
{
"@type": "WebPage",
Expand Down
4 changes: 3 additions & 1 deletion public/promptly/support/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
"@type": "Organization",
"@id": "https://tinystudio.in/#organization",
"name": "Tiny Studio",
"url": "https://tinystudio.in/"
"alternateName": "tinystudio.in",
"url": "https://tinystudio.in/",
"description": "Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with other apps or studios that use the name Tiny Studio."
},
{
"@type": "ContactPage",
Expand Down
2 changes: 2 additions & 0 deletions public/support/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
"@type": "Organization",
"@id": "https://tinystudio.in/#organization",
"name": "Tiny Studio",
"alternateName": "tinystudio.in",
"url": "https://tinystudio.in/",
"description": "Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with other apps or studios that use the name Tiny Studio.",
Comment on lines +38 to +40

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve the support identity in the static-site generator

When npm run site:prepare is run, prepare-static-site-bundle.mjs removes this generated support schema and rebuilds it from supportSchema, which still lacks both alternateName and the new identity description. The prepared public/support/index.html therefore loses these additions; reproducing that sequence makes test-public-brand-disambiguation.mjs fail four checks. Add the same fields to supportSchema so preparation remains idempotent and does not undo the support-page fix.

Useful? React with 👍 / 👎.

"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer support",
Expand Down
4 changes: 3 additions & 1 deletion public/terms/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
"@type": "Organization",
"@id": "https://tinystudio.in/#organization",
"name": "Tiny Studio",
"url": "https://tinystudio.in/"
"alternateName": "tinystudio.in",
"url": "https://tinystudio.in/",
"description": "Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with other apps or studios that use the name Tiny Studio."
},
{
"@type": "WebPage",
Expand Down
2 changes: 1 addition & 1 deletion scripts/prepare-static-site-bundle.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ const supportSchema = {

const llmsTxt = `# Tiny Studio

Tiny Studio is a small product company behind Promptly, Drishti, and 0509.
Tiny Studio is the independent product company at tinystudio.in behind Promptly, Drishti, and 0509. It is not affiliated with any other app or studio that uses the name Tiny Studio.

## Public pages

Expand Down
56 changes: 44 additions & 12 deletions scripts/test-public-brand-disambiguation.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { readFileSync } from "node:fs"
import { readFileSync, readdirSync } from "node:fs"
import { fileURLToPath } from "node:url"
import { dirname, join } from "node:path"

Expand Down Expand Up @@ -45,6 +45,16 @@ const bodyText = (html) =>
.replace(/\s+/g, " ")
.trim()

// Every deployed HTML page (index.html under public/, mirroring the
// structured-data test).
const publicHtmlFiles = (dir = "public") =>
readdirSync(join(ROOT, dir), { withFileTypes: true }).flatMap((entry) => {
const path = join(dir, entry.name)
if (entry.isDirectory()) return publicHtmlFiles(path)
if (entry.isFile() && entry.name === "index.html") return [path]
return []
})

console.log("test-public-brand-disambiguation: Tiny Studio entity stays distinct from unrelated tiny studio brands")

console.log("A. the homepage says plainly what Tiny Studio is and is not")
Expand All @@ -58,32 +68,54 @@ ok(
"homepage copy states Tiny Studio is not affiliated with other apps or studios using the name"
)

console.log("B. the homepage Organization entity carries distinguishing identity")
const org = orgNode(HOME)
ok(org !== null, "homepage JSON-LD carries the Tiny Studio organization node")
if (org) {
ok(org.name === "Tiny Studio", "organization name is Tiny Studio")
ok(org.alternateName === "tinystudio.in", "organization alternateName is tinystudio.in")
ok(org.url === "https://tinystudio.in/", "organization url is the tinystudio.in home")
console.log("B. every public page's Organization entity carries distinguishing identity")
for (const file of publicHtmlFiles()) {
const html = read(file)
const org = orgNode(html)
ok(org !== null, `${file} carries the Tiny Studio organization node`)
if (!org) continue
ok(org.name === "Tiny Studio", `${file} organization name is Tiny Studio`)
ok(org.alternateName === "tinystudio.in", `${file} organization alternateName is tinystudio.in`)
ok(org.url === "https://tinystudio.in/", `${file} organization url is the tinystudio.in home`)
ok(
typeof org.description === "string" && org.description.length > 0,
"organization carries a description"
`${file} organization carries a description`
)
ok(
org.description &&
org.description.includes("tinystudio.in") &&
org.description.includes("Promptly") &&
org.description.includes("Drishti") &&
org.description.includes("0509"),
"organization description names the unique products and home so the entity cannot be mistaken for another tiny studio"
`${file} organization description names the unique products and home so the entity cannot be mistaken for another tiny studio`
)
ok(
org.description && org.description.includes("not affiliated"),
"organization description states it is not affiliated with other tiny studio brands"
`${file} organization description states it is not affiliated with other tiny studio brands`
)
}
Comment on lines +71 to 96

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Assert the complete Organization identity statement.

The check validates the domain, product names, and the generic not affiliated substring. It does not validate independent product company. A page can omit the core independence claim and still pass this test. Require the specific identity phrases or compare the description with a canonical value.

Proposed validation
   ok(
     org.description &&
+      org.description.includes("independent product company at tinystudio.in") &&
       org.description.includes("tinystudio.in") &&
       org.description.includes("Promptly") &&
       org.description.includes("Drishti") &&
       org.description.includes("0509"),
     `${file} organization description names the unique products and home so the entity cannot be mistaken for another tiny studio`
   )
   ok(
-    org.description && org.description.includes("not affiliated"),
+    org.description &&
+      org.description.includes("It is not affiliated with other apps or studios that use the name Tiny Studio"),
     `${file} organization description states it is not affiliated with other tiny studio brands`
   )
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
console.log("B. every public page's Organization entity carries distinguishing identity")
for (const file of publicHtmlFiles()) {
const html = read(file)
const org = orgNode(html)
ok(org !== null, `${file} carries the Tiny Studio organization node`)
if (!org) continue
ok(org.name === "Tiny Studio", `${file} organization name is Tiny Studio`)
ok(org.alternateName === "tinystudio.in", `${file} organization alternateName is tinystudio.in`)
ok(org.url === "https://tinystudio.in/", `${file} organization url is the tinystudio.in home`)
ok(
typeof org.description === "string" && org.description.length > 0,
"organization carries a description"
`${file} organization carries a description`
)
ok(
org.description &&
org.description.includes("tinystudio.in") &&
org.description.includes("Promptly") &&
org.description.includes("Drishti") &&
org.description.includes("0509"),
"organization description names the unique products and home so the entity cannot be mistaken for another tiny studio"
`${file} organization description names the unique products and home so the entity cannot be mistaken for another tiny studio`
)
ok(
org.description && org.description.includes("not affiliated"),
"organization description states it is not affiliated with other tiny studio brands"
`${file} organization description states it is not affiliated with other tiny studio brands`
)
}
console.log("B. every public page's Organization entity carries distinguishing identity")
for (const file of publicHtmlFiles()) {
const html = read(file)
const org = orgNode(html)
ok(org !== null, `${file} carries the Tiny Studio organization node`)
if (!org) continue
ok(org.name === "Tiny Studio", `${file} organization name is Tiny Studio`)
ok(org.alternateName === "tinystudio.in", `${file} organization alternateName is tinystudio.in`)
ok(org.url === "https://tinystudio.in/", `${file} organization url is the tinystudio.in home`)
ok(
typeof org.description === "string" && org.description.length > 0,
`${file} organization carries a description`
)
ok(
org.description &&
org.description.includes("independent product company at tinystudio.in") &&
org.description.includes("tinystudio.in") &&
org.description.includes("Promptly") &&
org.description.includes("Drishti") &&
org.description.includes("0509"),
`${file} organization description names the unique products and home so the entity cannot be mistaken for another tiny studio`
)
ok(
org.description &&
org.description.includes("It is not affiliated with other apps or studios that use the name Tiny Studio"),
`${file} organization description states it is not affiliated with other tiny studio brands`
)
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/test-public-brand-disambiguation.mjs` around lines 71 - 96, Update
the Organization description assertions in the publicHtmlFiles loop to require
the canonical independence wording, including the exact phrase “independent
product company,” alongside the existing domain, product, and non-affiliation
checks. Ensure pages missing this core identity statement fail validation.


console.log("C. npm test/ci wiring")
console.log("C. the AI-facing llms.txt carries the same identity statement")
const llmsTxt = read("public/llms.txt")
ok(
llmsTxt.includes("independent product company at tinystudio.in"),
"llms.txt identifies Tiny Studio as the independent product company at tinystudio.in"
)
ok(
llmsTxt.includes("not affiliated with any other app or studio that uses the name Tiny Studio"),
"llms.txt states Tiny Studio is not affiliated with other apps or studios using the name"
)
const bundle = read("scripts/prepare-static-site-bundle.mjs")
ok(
bundle.includes("independent product company at tinystudio.in"),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Scope the assertion to the llmsTxt template

Once supportSchema is updated with the same organization description required by public/support/index.html, this whole-file bundle.includes(...) check can succeed from that unrelated schema even if the independent-company wording is removed from llmsTxt. In that scenario the test remains green while npm run site:prepare publishes a regressed llms.txt; inspect the llmsTxt template specifically or validate the generator's output instead.

Useful? React with 👍 / 👎.

"the llms.txt generator template keeps the independent-company identity"
)
ok(
bundle.includes("not affiliated with any other app or studio that uses the name Tiny Studio"),
"the llms.txt generator template keeps the non-affiliation statement"
)

console.log("D. npm test/ci wiring")
const pkg = JSON.parse(read("package.json"))
ok(
pkg.scripts.test.includes("test-public-brand-disambiguation.mjs"),
Expand Down