From 4206d2e6078ac9d7c5b425a7b827f420c4014f4e Mon Sep 17 00:00:00 2001 From: CuWilliams <142925529+CuWilliams@users.noreply.github.com> Date: Mon, 14 Sep 2026 18:19:09 -0230 Subject: [PATCH] Point the content conventions at the shared docs home MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The product-wide content rules now live in CuWilliams/shared-docs, under gfpricechecker/CONTENT_CONVENTIONS.md, alongside the platform-independent PRODUCT_DEFINITION.md. The iOS repo's claude.md became a pointer in GFPriceChecker#57; without the same change here the duplication this was meant to end simply continues in the other direction, with two repos each holding a full copy of a rule that is legal exposure. Claude.md's Content Conventions section gains a header naming the shared repo as the source and saying to change it there. What stays is deliberate: - The tax-compliance rule is repeated rather than merely linked. It is legal exposure, and nobody should have to open another repo to find out about it. - The website-specific sweep stays, because it greps *.html and *.json where the app's greps *.swift. Its --include patterns are now quoted: unquoted, zsh glob-expands them and the command fails outright with "no matches found", so the check silently never ran. - Use the canonical host, Validate the data files, and Describe the app as it currently works are website-specific and are not shared repo material. Also records that the stored tax ID is unencrypted, not just backup files. The shared CONTENT_CONVENTIONS.md and PRODUCT_DEFINITION.md were amended first. Verified before committing: node scripts/validate-data.js passes; the CRA sweep's only hits are terms.html:72 and :91, both disclaimers — the latter sits inside a "We do not guarantee that:" list — and the canonical-host sweep finds no bare apex URLs. The v1.2.0 reference matches CHANGELOG.md:65. Co-Authored-By: Claude Opus 5 --- Claude.md | 26 ++++++++++++++++++++++---- README.md | 2 ++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Claude.md b/Claude.md index 26b17b9..7c52fed 100644 --- a/Claude.md +++ b/Claude.md @@ -314,12 +314,24 @@ Dynamic content will be managed via JSON files in `/data/`: ## Content Conventions +**The product-wide rules live in +[`gfpricechecker/CONTENT_CONVENTIONS.md`](https://github.com/CuWilliams/shared-docs/blob/main/gfpricechecker/CONTENT_CONVENTIONS.md) +in the shared-docs repo**, which governs this site, the iOS app, and any future Android app. +Change them there, not here. The shared repo also holds +[`PRODUCT_DEFINITION.md`](https://github.com/CuWilliams/shared-docs/blob/main/gfpricechecker/PRODUCT_DEFINITION.md) +— the data model, the differential arithmetic and the export formats — which is the reference when +copy needs to describe how the app actually computes something. + +The sections below are the short version of the shared rules, plus the parts that are specific to +this site. The tax-compliance rule is repeated rather than merely linked because it is legal +exposure, and you should not have to open another repo to find out about it. + ### Don't claim tax compliance The app deliberately carries no Canada Revenue Agency branding in its interface. Agency references and specific tax line numbers were stripped out in April 2026 — tracking price differences is what the app does, and what a user does with those records at tax time is between them and their -accountant. **The site follows the same rule.** +accountant. **The site follows the same rule**, and has since v1.2.0 removed this class of claim. - Explain the Medical Expense Tax Credit as context for why the app exists. That's fair and useful. - Never describe the app's exports as CRA-compliant, approved, accepted, or endorsed. @@ -328,8 +340,10 @@ accountant. **The site follows the same rule.** Before merging copy changes, sweep for regressions: -``` -grep -rn "CRA\|Tax Compliant\|tax compliance\|Line 33099" --include=*.html --include=*.json . +```bash +# Quote the --include patterns: zsh expands them as globs otherwise. +grep -rn "CRA\|Tax Compliant\|tax compliance\|Line 33099" \ + --include='*.html' --include='*.json' . ``` Every surviving hit should be explanatory context, never a claim about the app's output. @@ -356,7 +370,11 @@ PR). The static pages have no such prompt and are the ones that quietly rot — ### Don't overclaim on privacy either Local-only storage, on-device text recognition, no accounts, no sync: all true, all worth saying. -But backup files are **not** encrypted. Don't say they are. +But backup files are **not** encrypted, and neither is the stored tax ID. Don't say they are. + +The full posture, including what is *not* covered, is in the shared +[`CONTENT_CONVENTIONS.md`](https://github.com/CuWilliams/shared-docs/blob/main/gfpricechecker/CONTENT_CONVENTIONS.md) +§4. If the app's posture changes, that file changes first. ### Use the canonical host in every absolute URL diff --git a/README.md b/README.md index 0ccea45..8460e80 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,8 @@ The check exists because these failures are otherwise invisible: a malformed fil The app deliberately carries no Canada Revenue Agency branding in its interface — tracking price differences is the app's job, and what a user does with those records at tax time is between them and their accountant. **The site follows the same rule.** Explain the Medical Expense Tax Credit as context for why the app exists, but don't describe the app's output as CRA-compliant, approved, or endorsed, and don't promise anyone a deduction. +That rule is not this repo's to change. It lives in [`gfpricechecker/CONTENT_CONVENTIONS.md`](https://github.com/CuWilliams/shared-docs/blob/main/gfpricechecker/CONTENT_CONVENTIONS.md) in the shared-docs repo, which governs this site, the iOS app, and any future Android app — along with the shared vocabulary and the platform-independent product definition. It is repeated here because it is legal exposure, not because this is where it is decided. + Beyond that, see [DESIGN-SYSTEM.md](DESIGN-SYSTEM.md) for design tokens and component patterns, and [Claude.md](Claude.md) for the fuller set of working notes. ## Releases