docs(facts): verified facts and status page #14
Labels
No labels
agent:implement
agent:research
docs
feature
ready
research
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-docs#14
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
https://docs.cl8y.comhas no single crawlable page that marketing and community members can check before making factual claims. Contract strings live on the/contractsstub. Methodology says this host will not invent statistics. Home and the four hubs do not say which products are live versus not claimed live, what is still under development, what this host will not assert, or when those facts last changed.Ship one prerendered verified facts and status page on a new allowlisted path so a human can answer, from HTML with JavaScript off:
VITE_INDEXER_ORIGINis set).src/data/contracts.ts(do not invent extras).Bundle (do not split into links / contracts / live / roadmap / limitations / security / changelog tickets). Do not put this manuscript on
/(Start Here,code/cl8y-docs#9),/contracts(address list only),/methodology(sourcing rules), or the how-to / FAQ paths owned by #10–#13.v0 platform work (#3) already shipped crawl files, unique titles, and stub routes. Full manuscripts were out of scope there.
Parent / siblings (do not re-implement)
code/cl8y-docs#3 — v0 host + stubs; out of scope: “Full methodology/guide manuscripts (stubs only).”code/cl8y-docs#9 — Start Here on/(newcomer product map + diagram + token purposes). Cite and link; do not expand that ticket into a facts ledger.code/cl8y-docs#10 / #11 / #12 — how-to manuscripts. Different reader job.code/cl8y-docs#13 — token/treasury FAQ on the reserved UST1 path. Different reader job; do not register/ust1here.docs/ARCHITECTURE.md§4 / §12 / INVARIANTS 13–14 — closed route allowlist; no unverified stats; no unpublished marketingcontent/guides/.src/pages/ContractsPage.tsx+src/data/contracts.ts— reuse the same five first-party strings; this page must not grow a second address book.code/CL8Y-web— marketing homepage (cl8y.com). Different deployable; link it, do not copy that SPA.Current codebase
Facts are scattered stubs, not a claims-check page:
src/pages/HomePage.tsx— host chrome + four hub links. No live/planned table, no changelog.src/pages/ContractsPage.tsx+src/data/contracts.ts— Terra Classic CL8Y CW20, CL8Y/cLUNC pair, BSC CL8Y, MegaETH CL8Y, nativeuluna. No official-link list beyond those strings.src/pages/MethodologyPage.tsx/SourcesPage.tsx— sourcing policy; not a product status ledger.src/pages/MarketsPage.tsx— “see DEX / indexer”; no live/planned inventory.src/seo.ts— sevenDocsPathvalues; prerender and sitemap are derived fromROUTES.src/lib/dexHref.ts— closedCAMPAIGNS(seven ids). Unknown campaign throws.src/components/Layout.tsx— nav is Home / Methodology / Markets / Contracts / Guides.scripts/prerender.mjs— writesdist/**/index.htmland rewritessitemap.xmlfromROUTES.e2e/crawl.spec.ts+src/verify-dist.test.ts— unique titles/canonicals for the seven v0 paths.Architecture §4 purpose of
/contractsstays “first-party addresses already published.” This issue adds/facts(title seed: Facts and status · CL8Y docs) and amends the closed allowlist, sitemap loc set, and campaign vocabulary in the same PR. Do not reuse/or/contractsas the share URL for this ledger.Duplicates / already implemented
/; not live/planned/changelogcontent/guides/If
/factsalready exists with unique title/canonical, the seven sections above in prerendered HTML, and AC1–AC12 pass, close as implemented — do not duplicate.Why the new implementation is needed
Operators and community members currently have no first-party URL that is honest about what is true today.
/contractsis an address stub./is (or will be) a newcomer map. Without this page:This is documentation copy + one new prerendered route. No new host, no wallet UI, no Coolify SKU pick.
Constraints / guardrails
Route. One new path:
/facts. Canonicalhttps://docs.cl8y.com/facts(no trailing slash). Title must stay unique vs existing routes (Facts and status · CL8Y docsor equivalent). Do not add/status(easy to confuse with operator uptime),/changelogas a second loc, or/ust1.Allowlist amendment (same PR). Update
docs/ARCHITECTURE.md§4,docs/INVARIANTS.mdcampaign list,src/seo.tsDocsPath/ROUTES,src/lib/dexHref.tsCAMPAIGNS,src/App.tsx,src/components/Layout.tsxnav,e2e/crawl.spec.ts, andsrc/lib/dexHref.test.tsclosed-campaign snapshot.scripts/prerender.mjsalready followsROUTES— do not hardcode a second loc list.Reader. Marketer, community member, or support person checking a claim. Short sentences. Not a trading tutorial, not Start Here, not an incident / Coolify / host status page.
Official links (required, first-party only). Build with
URL(not string concat, notwindow.location, not visitor query). Closed set:https://docs.cl8y.com(this host)VITE_DEX_ORIGINvia existingdexHref(utm_campaign=facts)https://bridge.cl8y.com(same helper pattern as #9 if it lands; otherwise a tested constant)https://cl8y.comVITE_INDEXER_ORIGINis set and equalshttps://indexer.dex.cl8y.comrel="noopener noreferrer"iftarget="_blank". No CoinGecko / CMC / DeFiLlama / CEX / Telegram / Discord as “official.” Nojavascript:,data:, protocol-relative, or?url=redirectors.Contracts. Render the exact strings from
src/data/contracts.ts. Do not invent a sixth address. Link internally to/contracts. If a string is not in that module, omit it (fail closed).Live vs not claimed live. Name only products that already have a first-party public surface:
/contractsstringsdexHref/https://dex.cl8y.comhttps://bridge.cl8y.comAnything else is not claimed live unless it already appears as a first-party public surface in this repo or the linked first-party origins above. Do not list GameFi / PROTOCASS / Karnyx / TigerHunt. Do not lead with memecoin / “expensive token” / Autoscarcity / “the future of DeFi.”
Planned / under development. This section is not a product roadmap invented in docs. Allowed rows:
Do not copy issue bodies. Do not mention operator hosts, VMs, Coolify, tokens, or queue ids.
Limitations (required). At least: this host is static and is not a live metrics dashboard; it does not embed TVL/volume/fee %; DEX campaign query params are first-touch (DEX drops unknown keys after apply — ARCHITECTURE §10); this page is not a wallet and does not execute swaps or bridges; unknown docs paths 404. Do not invent SLA minutes or audit grades.
Security notes (required, honest). This is not a security issue and not a disclosure inbox. Allowed copy only:
/contracts(or this page’s copy ofcontracts.ts); ignore unofficial pastes.Do not apply
security/high-riskbecause this section exists.Dated changelog. Static entries in a content module (ISO date + one-line fact change). First entry is the ship of this page. Do not generate dates at build time (that would rewrite the changelog every image). Do not scrape git log into HTML. Later fact changes (new official link, new
contracts.tsstring, live-row add/remove) add a new dated line in the same PR that changes the fact.Claims. No fee, TVL, volume, ranking, collateral ratio, circulating supply, or APY figures unless already printed as first-party constants in this repo (they are not). No CoinGecko/CMC/DeFiLlama as proof.
BANNED_CURRENT_COPYstays; do not add a USTR/UST1 exception on/facts(that exception is #9/only). Name CMM without those tickers, or point at Start Here / #13.CTAs. New campaign id
facts(closed vocabulary). DEX CTA stilldexHrefwith execute ids, not tickers. Do not make “Buy CL8Y” a button.Nav / hubs. Add Facts (or Facts and status) to
Layoutnav and a hub line on/plus/guidesindex (one link each). Do not duplicate the full manuscript on those pages.No wallet / trading UI. No wagmi, WalletConnect, LCD keys, or DEX screens.
Do not publish ops internals, unpublished marketing manuscripts, or extra contract addresses.
Relevant files
src/pages/FactsPage.tsx(new)src/content/facts.ts(new, preferred)src/data/contracts.tssrc/seo.tssrc/App.tsx/factssrc/components/Layout.tsxsrc/lib/dexHref.tsfactssrc/lib/dexHref.test.tssrc/pages/HomePage.tsx/GuidesPage.tsx/factssrc/lib/(small helper OK)e2e/crawl.spec.tssrc/verify-dist.test.tsROUTES; add body sniff for required headingsdocs/ARCHITECTURE.md§4 / §10 campaign list / §12docs/INVARIANTS.mdscripts/prerender.mjs/factsonlyRecommended direction
src/content/facts.ts(official links, live rows, limitations, security notes, changelog). Unit-test: forbidden claim patterns, banned copy, hrefs arehttps://first-party origins, contract strings deep-equalcontracts.ts, changelog dates are explicit ISO strings in source.FactsPage: H1 Facts and status; sections in the order in Summary; DEX CTA viadexHref{ campaign: "facts" }; other links viaURL.seo.tsso prerender + sitemap cannot drift.dexHref.Acceptance criteria
GET /factsprerendered HTML (no JS) contains headings (or equivalent labeled sections) for official links, contracts, live products, planned/under development, limitations, security, and a dated changelog.contracts.tsstrings exactly, and no additionalterra1/0xcontract-shaped strings.utm_campaign=facts.Date.now()/ build timestamps.<title>unique (Facts and status · CL8Y docsor equivalent); canonicalhttps://docs.cl8y.com/facts. Sitemap loc set is previous seven plus this one. Unknown paths still 404./(and/guides) link to/facts./contractsremains the address stub (may link here; do not move the only address list off/contracts).UST1/USTRdo not appear on/facts.npm test,npm run typecheck,npm run build+ dist unique-title tests, Playwright 5 workers stay green.CAMPAIGNSsnapshot document/facts/facts.Given a marketer or community member opens the prerendered
/factspageWhen they read Facts and status without executing JavaScript
Then they can copy official first-party links and contract strings, see which products this host claims live versus not, see known limitations and honest security notes, and see a dated changelog, with no invented statistics and no unofficial roadmap
Test plan (functional paths)
dist/facts/index.htmlcontracts.ts; no extraterra1/0xbodieshttps://onlydexHrefdefault pair +utm_campaign=factssitemap.xmlhttps://docs.cl8y.com/facts; still no DEX loc/,/guides, Layout nav/facts/contracts,/methodologyGET /no-such-pageandGET /status/statusis explicitly not shipped — it must 404)facts.tsTest plan (copy safety)
Not a DeFi attack suite. Keep host crawl/CTA tests from #3 green.
/factsjavascript:/data:/ protocol-relative official href/facts/onlycontracts.tsDate.now()Verification criteria
npm test&&npm run typecheck&& productionnpm run buildwith requiredVITE_*.npm run test:dist(unique titles/canonicals including/facts)./factsbody sniff for the seven sections + contract strings; crawl MIME tests unchanged./factsand confirm a marketer can answer “what is official, what is live, what we will not claim” from the page alone.scripts/check-origins.mjsstill fail-closed without HTTPS origins.Out of scope
/facts.code/CL8Y-web,code/ustr-cmm, the Bridge monorepo, or the DEX SPA (read-only for names/origins).Sitemap:pointer (marketing#2).First-pass model recommendation
Recommendation: grok-high
Rationale: This is a new public source-of-truth route, not docs/test-only maintenance of an existing stub. It amends the closed architecture allowlist, sitemap loc set, and
dexHrefcampaign vocabulary, and it publishes official links plus the first-party contract strings. Expected files spanFactsPage/factscontent module,seo.ts,App.tsx,Layout.tsx,dexHref+ tests, crawl/dist assertions, andARCHITECTURE.md/INVARIANTS.md— more than three production files and a cross-cutting prerender contract. Composer fails those criteria (local three-file edit, no allowlist/protocol change, no contracts topic). Risk is claim-safety: a wrong “live” row or invented address becomes canonical marketing copy. Verify with unique-title/canonical dist tests, Playwright 5 workers, copy greps, and a no-JS read of/facts. Control-plane calibration: unlike a single RCA document (PR #170) or a test-helper tweak (#164), this is closer to a cross-module change (new route + crawl contract) than a one-file copy edit.