fix(public): mirror TinyStudio identity and the Website Appraisal in llms.txt/offer.md - #19
Conversation
…llms.txt/offer.md The machine-readable pair (llms.txt and its mirror offer.md) now carries the same identity facts as the homepage and audit page: TinyStudio is the business behind tinystudio.io, the same-name businesses it is not, the operator, and the no-base-city statement. The offer sections describe the current Website Appraisal in the site's own words and point at pricing.html for price and terms instead of restating them, replacing the retired Website Correction / founder-pilot / MSP-buyer framing. check-site.mjs and test-agent-ui.mjs now fail loudly when identity or disambiguation facts drift between the pair, when the pair stops linking each other, when llms.txt stops pointing at the audit page's evidence artifact, when either file restates a dollar amount or refund language, or when either file revives the retired offer framing. Source citations must now carry a title and be unique within a run. The AI-search evidence fixture stays byte-identical; historical runs, states and captures are untouched, and no live engine run is claimed. Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
nish3451 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.
📝 WalkthroughWalkthroughThe PR replaces Website Correction messaging with Website Appraisal messaging. It synchronizes identity and offer facts across ChangesWebsite Appraisal identity and validation
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with 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.
Inline comments:
In `@docs/evidence/ai-search/2026-08-08-llms-offer-identity-mirror.md`:
- Around line 107-111: Declare the fenced command block’s language as sh by
updating the fence around the commands near npm run check, npm test, and git
diff --check; leave the commands unchanged.
In `@scripts/check-site.mjs`:
- Around line 709-734: Expand the stale-content validation in the check-site
guard to reject textual prices such as “USD 500” and “500 dollars,” money-back
guarantee wording, and standalone “Managed IT” or “MSP” terms in addition to the
existing checks. Apply identical patterns and failure expectations in the
corresponding validation logic in test-agent-ui.mjs so the test mirrors the
guard.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: aaed9d47-58dd-4a37-9988-d91615618055
📒 Files selected for processing (6)
docs/evidence/ai-search/2026-08-08-llms-offer-identity-mirror.mdevidence-fixtures/ai-search/README.mdpublic/llms.txtpublic/offer.mdscripts/check-site.mjsscripts/test-agent-ui.mjs
| ``` | ||
| npm run check | ||
| npm test | ||
| git diff --check | ||
| ``` |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Declare the fenced-block language.
markdownlint-cli2 reports MD040 for this command block. Use sh as the fence language.
Proposed fix
-```
+```sh
npm run check
npm test
git diff --check</details>
<!-- suggestion_start -->
<details>
<summary>📝 Committable suggestion</summary>
> ‼️ **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.
```suggestion
🧰 Tools
🪛 markdownlint-cli2 (0.23.2)
[warning] 107-107: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 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 `@docs/evidence/ai-search/2026-08-08-llms-offer-identity-mirror.md` around
lines 107 - 111, Declare the fenced command block’s language as sh by updating
the fence around the commands near npm run check, npm test, and git diff
--check; leave the commands unchanged.
Source: Linters/SAST tools
| const staleOfferPhrases = [ | ||
| "Website Correction", | ||
| "founder pilot", | ||
| "founder-pilot", | ||
| "Managed IT, MSP" | ||
| ]; | ||
| for (const phrase of staleOfferPhrases) { | ||
| if (llms.toLowerCase().includes(phrase.toLowerCase())) { | ||
| failures.push(`llms.txt must not revive the retired offer framing: ${phrase}`); | ||
| } | ||
| if (offer.toLowerCase().includes(phrase.toLowerCase())) { | ||
| failures.push(`offer.md must not revive the retired offer framing: ${phrase}`); | ||
| } | ||
| } | ||
| if (/\$\s?\d/.test(llms)) { | ||
| failures.push("llms.txt must not restate a dollar amount; pricing.html owns the price."); | ||
| } | ||
| if (/\$\s?\d/.test(offer)) { | ||
| failures.push("offer.md must not restate a dollar amount; pricing.html owns the price."); | ||
| } | ||
| if (/\brefund\w*\b/i.test(llms)) { | ||
| failures.push("llms.txt must not restate refund terms; pricing.html owns them."); | ||
| } | ||
| if (/\brefund\w*\b/i.test(offer)) { | ||
| failures.push("offer.md must not restate refund terms; pricing.html owns them."); | ||
| } |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Block alternate price, refund, and MSP wording.
/\$\s?\d/ accepts price claims such as USD 500 and 500 dollars. /\brefund\w*\b/ accepts refund claims such as money-back guarantee. The exact "Managed IT, MSP" match accepts retired buyer wording such as MSPs.
These forms violate the documented content contract but pass this guard. Add patterns for textual dollar amounts, money-back language, and individual Managed IT and MSP terms. Apply the same patterns in scripts/test-agent-ui.mjs so the test verifies the guard.
🤖 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/check-site.mjs` around lines 709 - 734, Expand the stale-content
validation in the check-site guard to reject textual prices such as “USD 500”
and “500 dollars,” money-back guarantee wording, and standalone “Managed IT” or
“MSP” terms in addition to the existing checks. Apply identical patterns and
failure expectations in the corresponding validation logic in test-agent-ui.mjs
so the test mirrors the guard.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 13feb88941
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| failures.push(`offer.md must not revive the retired offer framing: ${phrase}`); | ||
| } | ||
| } | ||
| if (/\$\s?\d/.test(llms)) { |
There was a problem hiding this comment.
Detect dollar amounts written without a dollar sign
The new drift guard is documented as preventing these machine-readable files from restating dollar amounts, but /\$\s?\d/ only rejects forms such as $2,500. If a later edit uses common alternatives such as USD 2,500, 2,500 USD, or 2,500 dollars, both this check and the matching UI test pass, allowing duplicated pricing to become stale relative to pricing.html. Validate the other dollar-denominated forms as well.
Useful? React with 👍 / 👎.
What this is
Repository-only clarification of the machine-readable identity and offer
surfaces (
public/llms.txtand its mirrorpublic/offer.md), promoting therefined candidate 2 patch (commit
13feb88) with the deterministic guardskept and tightened.
/home/nish/.local/bin/test-gate npm run check;/home/nish/.local/bin/test-gate npm test;git diff --check;sgscanWhat changed
public/llms.txtgains a machine-readable## Identitysection (first-party facts only: business behind tinystudio.io, the same-name businesses this TinyStudio is not, operator, no-base-city statement), links its mirror (offer.md) and the audit page that embeds the AI-search evidence artifact.public/offer.mdgains the reciprocal mirror link and both files' offer sections now describe the current Website Appraisal in the site's own words, pointing atpricing.htmlfor price and terms. Retired Website Correction / founder-pilot / MSP-buyer wording removed; no dollar amounts or refund language restated.scripts/check-site.mjsandscripts/test-agent-ui.mjsfail loudly on drift of identity/disambiguation facts between the pair, missing mirror links, stale offer framing, restated price/refund terms, and source citations without a title or duplicated within a run.evidence-fixtures/ai-search/README.mddocuments the mirror rules;docs/evidence/ai-search/2026-08-08-llms-offer-identity-mirror.mdrecords the pass.Deliberately unchanged
evidence-fixtures/ai-search/evidence.jsonandcontrolled-questions.jsonare byte-identical (git hashes unchanged). Historical runs, states (found/wrong/absent/not-tested) and verbatim captures are untouched.Verification (all passed)
/home/nish/.local/bin/test-gate npm run check— TinyStudio.io checks passed/home/nish/.local/bin/test-gate npm test— 51 worker + 15 UI tests, 0 failuresgit diff --check— cleansgscan— exit 0; warnings only in pre-existing baseline files (.github/workflows/ci.yml,public/agent-desk.html,public/audit.html,public/index.html,src/worker.js,study/harvest.py,study/scan.py); none in changed filesSummary by CodeRabbit
Content Updates
Documentation
Quality Improvements