Skip to content

Migrate /lp/agents to design tokens + shared components - #124

Merged
filipagr merged 35 commits into
mainfrom
filipa/fil-690-migrate-lp-agents
Aug 19, 2026
Merged

Migrate /lp/agents to design tokens + shared components#124
filipagr merged 35 commits into
mainfrom
filipa/fil-690-migrate-lp-agents

Conversation

@filipagr

Copy link
Copy Markdown
Collaborator

Summary

  • Rewrites AgentsLandingPage off ~60 inline style={{ fontFamily, color: "#..." }} objects onto the shared token components (Hero, LandingPrimitives, Button, Pill, IconTile, TextLink, FeatureList, CodeBlock, Table) — the same pattern used by Barcelona, backup-dr, and egress.
  • Replaces the hand-rolled tabbed code viewer + regex syntax highlighter with the shared CodeBlock, and the raw <table> cost breakdown with the shared Table primitive. Removes dead code (PricingCtaBlock, unused DEV_FEATURES/COST_ROWS).
  • Extends two shared components to cover gaps this page surfaced:
    • Pill: adds a neutral tone (zinc tokens) for status pills with no brand meaning (e.g. "Coming soon" on a card that isn't itself a highlight).
    • LandingPrimitives: adds a size override to SectionHeading, mirroring the override SectionSub already has, for headings that sit in a narrower column than the standard section width.
  • Fixes a FIL-843 copy-accuracy hit on this page: the "Storage your agents can rely on" card and the routeMeta.mjs unfurl description both claimed unsupported verifiability ("audit-ready visibility into storage integrity", "integrity proven daily") and geo-redundancy ("worldwide", "distributed and redundant"). Pivoted to the real GA regions (US + EU) and standard S3 durability/no-egress framing, matching the pattern from the FIL-818 (enterprise-backup) fix.
  • No new design tokens were needed. The two-column AWS-vs-Fil-One cost card and the pricing card are page-local compositions of existing brand/zinc tokens (not extracted into shared components, since they're only used on this one page).

Part of FIL-690.

Test plan

  • tsc --noEmit passes
  • eslint on changed files passes (no new warnings)
  • Verified in browser at desktop and mobile (375px) viewports: hero, comparison table/cost card, code block tabs, value props, use-case cards, pricing + next-steps all render correctly and two-column grids stack on mobile
  • Grepped the page for FIL-843-flagged terms (verifiable/cryptographic/worldwide/redundant/etc.) — none remain

🤖 Generated with Claude Code

Rewrite AgentsLandingPage from ~60 inline fontFamily/hex-color style
objects to the shared token components (Hero, LandingPrimitives,
Button, Pill, IconTile, TextLink, FeatureList, CodeBlock, Table),
matching the /lp/* pattern established by Barcelona/backup-dr/egress.

Replace the hand-rolled tabbed code viewer and regex syntax
highlighter with the shared CodeBlock component, and the raw <table>
cost breakdown with the shared Table primitive. Drop dead code
(PricingCtaBlock, unused DEV_FEATURES/COST_ROWS data).

Extend two shared components to cover gaps surfaced by this page:
- Pill: add a `neutral` tone (zinc tokens) for status pills with no
  brand meaning, e.g. "Coming soon" on a card that isn't a highlight.
- LandingPrimitives: add a `size` override to SectionHeading, mirroring
  SectionSub's existing override, for headings in narrower columns.

Correct marketing copy against the console technical source-of-truth
per FIL-843: the "Storage your agents can rely on" card and the
routeMeta.mjs unfurl description both claimed unsupported
verifiability ("audit-ready visibility into storage integrity",
"integrity proven daily") and geo-redundancy ("worldwide",
"distributed and redundant") — pivoted to the real GA regions (US +
EU) and standard S3 durability/no-egress framing.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
fil-one Ready Ready Preview Aug 19, 2026 7:09pm

Request Review

Convert GenomicsLandingPage from a hand-rolled 218-line page (radial
glow div, inline fontFamily/hex everywhere, raw <table>) to a
LandingPageConfig on the shared LandingPage shell.

Extend LandingPage with an optional `features` section (icon/title/
description grid via the existing FeatureCard), since this shape
recurs across the remaining /lp/* pages and the shell didn't have it.

Correct copy against the console technical source-of-truth (FIL-843):
the hero, a problem card, and the features grid claimed "recurring
integrity verification" every ~24 hours and "11 nines durability" —
neither is implemented or documented anywhere in the source-of-truth
doc (no CID/proof/seal on any object; no durability figure exists).
Pivoted to real capabilities instead: Object Lock retention (1 day -
100 years), $0 egress on re-analysis, and flat per-TB pricing at any
scale. Replaced the "integrity assumption" problem card (also
premised on the fabricated verification claim) with a real
differentiator (archive-tier retrieval delay). Fixed the matching
routeMeta.mjs unfurl description.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert MlTrainingLandingPage from a hand-rolled 237-line page to a
LandingPageConfig. Dropped the fsspec/PyArrow code sample from the
"proof" section — the same fsspec-compatibility claim is already
stated in the features grid, and the shell has no side-by-side
code+table section shape, so keeping it would mean a one-off custom
section for a single page.

No FIL-843 copy hits on this page — all claims are pricing math and
framework compatibility, both verifiable as-is.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert AgentLoopsLandingPage from a hand-rolled 266-line page to a
LandingPageConfig. Dropped the boto3 code sample from the "proof"
section for the same reason as ml-training: the S3-compatibility
claim is already stated in the features grid, and the shell has no
side-by-side code+table section shape.

No FIL-843 copy hits — all claims are pricing math and framework
compatibility, both verifiable as-is.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert MetroLandingPage from a hand-rolled 230-line page to a
LandingPageConfig. This page's whole premise was a FIL-843 hit: the
hero, all three problem cards, and the features grid built the value
prop around "a global network of storage providers" removing a
proximity/speed tradeoff. Per the console source-of-truth doc, only
two regions are GA (eu-west-1 France, us-east-1 Michigan) — there is
no global network to point to.

Repositioned the page's argument from geography to tiering: the real
differentiator is that Fil One is always-hot, S3-compatible storage
with no egress, unlike hyperscalers who charge a premium for hot
storage or push you to archive tiers with retrieval delays. Rewrote
the hero description, all three problem cards, and the "Global
network of providers" feature accordingly. The pricing comparison
table itself was untouched (pure rate-card math, no geo claim).
Fixed the matching routeMeta.mjs unfurl description.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert MediaLandingPage from a hand-rolled 220-line page to a
LandingPageConfig. No FIL-843 copy hits — all claims are pricing math
and S3-compatibility.

Also fixed a real correctness bug found while converting the
comparison table: the source file's own code comments recomputed the
GCP and Azure 50 TB egress figures ($5,734.40 and $4,290.56) after
finding the original EGRESS_ROWS values wrong, but the corrected
numbers were never actually applied to the rendered table — it still
showed the stale $5,222/$5,427 (GCP) and $4,096/$4,280 (Azure)
figures the comments say are incorrect. Used the corrected math,
which now matches the footnote's methodology exactly.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert CostTickerLandingPage from a hand-rolled 172-line page to a
LandingPageConfig. No FIL-843 copy hits — all claims are pricing
math. No redundant pricing section to drop; this page was already
lean (problem, comparison, features, closing CTA).

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert GamingLandingPage from a hand-rolled 195-line page to a
LandingPageConfig. Reshaped the cost-at-scale table: the original had
one row per scale point (1/10/100/500 TB) with separate AWS-storage/
AWS-egress/AWS-total/Fil-One columns, which doesn't fit the shared
PriceComparisonTable's per-provider-row highlighting. Flipped it to
rows=providers (AWS S3 Standard, Fil One), columns=scale points — same
numbers, but the Fil One row now gets proper highlight treatment
across all four columns.

Fixed a FIL-843 hit in routeMeta.mjs (not the page itself): the
unfurl description claimed "Durable, verifiable storage" — not
backed by anything in the console source-of-truth doc. Replaced with
the real claim (S3-compatible, zero egress).

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert ExitFirstLandingPage from a hand-rolled 175-line page to a
LandingPageConfig. Dropped the migrate-off rclone code sample from
the "proof" section (same rationale as other conversions: the
S3-parity claim is already in the features grid).

Fixed a FIL-843 hit: the fourth feature card claimed "Integrity-
verified data... every object is verified approximately every 24
hours" — the same fabricated verification cadence used on the
Genomics page, not backed by anything in the console source-of-truth
doc. Replaced with a real, on-thesis claim: the exit itself is
testable today, for free, rather than only discovered under duress.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert AffordableLandingPage from a hand-rolled 193-line page to a
LandingPageConfig.

Fixed a FIL-843 hit: the fourth feature card claimed "Recurring
integrity checks... every stored object is verified approximately
every 24 hours" — the same fabricated verification cadence as
Genomics and Exit-First. Replaced with a real, non-duplicate claim:
flat per-TB pricing that doesn't change with scale.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert DataControlLandingPage from a hand-rolled 169-line page to a
LandingPageConfig. This page's entire premise was built on the
fabricated "~24-hour integrity verification" claim — it appeared in
the hero, a problem card, a whole dedicated "trust" section, the
first feature card, and the closing CTA heading ("Verifiable
integrity"). None of it is backed by the console source-of-truth doc
(no CID/proof/verification exists on any object).

Repositioned "control" around what's actually real: an EU region
endpoint (eu-west-1, GA), $0 exit egress, and standard S3 tooling.
Dropped the dedicated "trust" section (its EU-endpoint and exit-cost
cards moved into features; the fabricated verification card became a
real encryption-at-rest/in-transit claim, worded to avoid implying
customer-held keys per the source-of-truth doc). Kept the
`{{NEEDS PROOF: operator-pinning capability}}` placeholder as-is —
this is one of the pages tracked by FIL-1046, not something to
fabricate an answer for. Fixed the matching routeMeta.mjs
description.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
filipa-filecoin and others added 5 commits August 18, 2026 16:42
Convert MigrateFromS3LandingPage from a hand-rolled 633-line page to
shared components (Hero, LandingPrimitives, CodeBlock,
PriceComparisonTable, FeatureCard, CtaBanner, TextLink). Kept it
hand-composed rather than the LandingPage config shell, same as
Agents — the before/after code-diff section doesn't map onto the
shell's problem/comparison/workloads/features/metrics skeleton.
Reused CodeBlock's existing tabs for the two before/after snippets
(Python, Node.js) instead of hand-rolled <pre> blocks.

Fixed a FIL-843 hit: the fourth feature card claimed "Recurring
integrity verification... every object is verified approximately
every 24 hours" — the same fabricated claim found on Genomics,
Exit-First, Affordable, and Data-Control. Replaced with a real,
non-duplicate claim about flat pricing at any scale.

Left one claim untouched: routeMeta.mjs's "Fully S3-compatible" is a
separately tracked issue (FIL-890, "5 locations" sitewide) with its
own scope, not part of this pass.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert RagStorageLandingPage from a hand-rolled 636-line page to a
LandingPageConfig. Dropped the corpus.py code sample from the "proof"
section (S3-compatibility already stated in the features grid); the
2-row cost comparison maps onto the shared comparison table via a
"breakdown" note column plus a total column.

Fixed a FIL-843 hit in routeMeta.mjs: the unfurl description claimed
"verifiable integrity" — not backed by anything in the console
source-of-truth doc. Removed it, no replacement needed since the rest
of the description already covers the real claims (S3-compatible,
no egress).

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert ArchivalLandingPage from a hand-rolled 482-line page to a
LandingPageConfig. This is one of the pages FIL-843 names directly
("archival 'integrity proven daily'") — its whole premise was built
on the fabricated "~24-hour integrity verification" claim: the hero,
a problem card, a comparison-table column, a feature card, the
features section heading, and the closing CTA heading all referenced
it, plus an unverified "11 nines durability" feature.

Repositioned around what's real: no retrieval/egress fees (the
actual differentiator vs. Glacier's retrieval tiers), no archive-tier
rehydration wait, S3-compatible restore, and Object Lock retention
(1 day - 100 years) for compliance use cases. The comparison table
dropped its fabricated "integrity verification" column entirely,
keeping the three real cost columns. Fixed the matching routeMeta.mjs
title and description (also named in FIL-843's own description).

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert DigitalPreservationLandingPage from a hand-rolled 470-line
page to a LandingPageConfig. This page's entire thesis was the
fabricated verification claim — even its title was "Preservation you
can verify." Per the console source-of-truth doc, no such
verification exists (no CID/proof on any object).

Reframed honestly around what's real: reading the collection back
costs $0 in egress, so *the customer* can run their own fixity checks
as often as their program requires, instead of rationing them to once
a year on metered storage. This preserves the page's real argument
(infrequent fixity checks are risky and expensive elsewhere) without
claiming Fil One verifies anything itself. Dropped the fabricated
"11 nines durability" feature, replaced with a real one (no
archive-tier rehydration delay, Object Lock retention). The
comparison table's "integrity verification" column is gone entirely
those three columns; three real cost columns remain.

Fixed the matching routeMeta.mjs title (was literally "Preservation
you can verify, not just trust") and description.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert WebScrapingLandingPage from a hand-rolled 594-line page to a
LandingPageConfig. Dropped the scraper.py code sample from the
"proof" section (S3-compatibility already stated in the features
grid), same as agent-loops/ml-training.

Fixed a FIL-843 hit in routeMeta.mjs: the unfurl description claimed
"S3-compatible and verifiable" — not backed by anything in the
console source-of-truth doc. Removed "and verifiable."

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
filipa-filecoin and others added 17 commits August 18, 2026 16:50
Convert LogRetentionLandingPage from a hand-rolled 582-line page to a
LandingPageConfig. Dropped the vector.toml code sample from the
"proof" section (S3-compatibility already stated in the features
grid).

Fixed a FIL-843 hit: the fourth feature card claimed "Tamper-evident
audit logs by default" — "tamper-evident" is explicitly in the
verifiability family the audit flags. Replaced with "Immutable audit
logs by default," which accurately describes what Object Lock does
(prevents alteration/deletion during retention) without implying
tamper detection, which doesn't exist. Left the SOC 2/ISO 27001/HIPAA
compliance-framework naming as-is — that's separately tracked under
FIL-891 ("needs a named covered entity and scope"), not this pass's
scope. Fixed the matching routeMeta.mjs "verifiable" claim.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert CheckpointsLandingPage from a hand-rolled 599-line page to a
LandingPageConfig. Dropped the checkpoint.py code sample from the
"proof" section (S3-compatibility already stated in the features
grid).

Fixed a FIL-843 hit in routeMeta.mjs: the unfurl description claimed
"S3-compatible, durable, and verifiable" — not backed by anything in
the console source-of-truth doc. Removed "durable, and verifiable."

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert MultiCloudLandingPage from a hand-rolled 609-line page to a
LandingPageConfig. This is one of the pages FIL-843 names directly.

Fixed the hit: the fourth feature card claimed "Integrity
verification... every stored object is verified approximately every
24 hours" — the same fabricated claim seen on several other pages.
Replaced with a real, non-duplicate capability (Object Lock retention,
1 day - 100 years) that also fits this page's portability/compliance
angle. Fixed the matching routeMeta.mjs "verifiable" claim.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert GrantFundedLandingPage from a hand-rolled 465-line page to a
LandingPageConfig. This is one of the pages FIL-843 names directly.

Fixed the hit: the third feature card claimed "Integrity
verification, ~24 h... satisfying integrity expectations of funder
data retention requirements" — the same fabricated claim seen
elsewhere. Replaced with a real capability fitting this page's
long-retention angle (no archive-tier rehydration wait, so whoever
inherits the data after the grant closes gets instant access). Also
softened two "verifiable" references in the problem-section copy that
described funder *expectations* rather than a claim we make — left
those as accurate descriptions of the customer's problem, since the
page's actual solution is cost predictability, not verification.
Fixed the matching routeMeta.mjs description.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…laim

Convert CollectionsAccessLandingPage from a hand-rolled 456-line page
to a LandingPageConfig.

Fixed a FIL-843 hit: the fourth feature card and routeMeta.mjs both
claimed "11 nines durability" — unconfirmed anywhere in the console
source-of-truth doc (no durability figure exists). Replaced with a
real, on-theme capability: Object Lock retention (1 day - 100 years)
for the archival master files behind IIIF derivatives.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert StartupsLandingPage from a hand-rolled 578-line page to a
LandingPageConfig. No FIL-843 copy hits — all claims are pricing
math. Reshaped the cost-at-scale table the same way as Gaming: rows
flipped from scale-points to providers (AWS S3 Standard, Fil One),
columns as the four scale points, so the Fil One row gets proper
highlight treatment across all columns.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert Web3PivotLandingPage from a hand-rolled 233-line page to a
LandingPageConfig. This page's entire thesis rested on a specific
fabricated technical claim: "every stored object receives a CID and
is verified via Filecoin Proof of Spacetime approximately every 24
hours." Per the console source-of-truth doc, no CID, deal, seal
state, or proof exists on any customer object — this is explicitly
called out as not implemented or evidenced.

Repositioned around what's real and true: Fil One is genuinely an
S3-compatible object storage platform built on Filecoin infrastructure
(a factual architecture description, distinct from claiming per-
object cryptographic proof), with no egress fees and no vendor
lock-in. Dropped the before/after code-diff "proof" section (its
"CID issued per object, verified on Filecoin" comment was the
specific violation) and the fabricated feature card, replacing it
with the honest infrastructure claim. Fixed the matching
routeMeta.mjs title/description, which also claimed "decentralized"
storage without evidence for the customer-facing service.

Extended LandingPage's hero.badge to accept a ReactNode (not just a
string), since a later Web3/agent-knowledge page needs a custom
AnnouncementBadge-style "Coming soon" badge instead of a plain Pill.

Discussed with the user before this rewrite, given it touches the
site's Web3-audience positioning rather than a single-card fix; same
treatment is planned for /lp/web3-native and /lp/web3-fintech, which
carry the identical claim (and, on web3-fintech, tie it to regulatory
audit-trail language for exchanges/custody providers).

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert Web3NativeLandingPage from a hand-rolled 251-line page to a
LandingPageConfig, following the same treatment as web3-pivot.

Dropped the entire "Proof/connection" section: a code sample plus a
"What's verifiable" stat-card grid built around "CID per object",
"Proof of Spacetime", and "11 nines durability" — none backed by the
console source-of-truth doc. The problem section didn't need changes
(its IPFS/Arweave/cost argument never claimed per-object
verification). Fixed the one fabricated feature card and every
"decentralized"/"Filecoin-backed" reference in the hero, CTA, and
routeMeta.mjs title/description, replacing with the factual "built on
Filecoin infrastructure" framing plus the real differentiators (no
egress, no lock-in).

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert Web3FintechLandingPage from a hand-rolled 253-line page to a
LandingPageConfig — the most aggressive of the three Web3 pages, and
the one that tied the fabricated claim to regulated-audience
language.

Dropped the "How it works" section entirely: a code sample plus an
"integrity callout" grid asserting CID issuance, Proof of Spacetime
verification "continuously, on-chain," an unverified "distributed
across an independent network of Filecoin storage providers... no
AWS failure mode reaches the storage layer" redundancy claim, and
"11 nines durability." None of this is backed by the console
source-of-truth doc.

Rewrote the "audit gap" problem card, which had claimed "cryptographic
per-object verification is the audit trail regulators are starting to
ask for" — a false compliance claim to a regulated audience (MiCA/
BitLicense). Reframed around a real, verifiable capability instead:
documented data location and portability. Replaced the two fabricated
feature cards with real claims (built on Filecoin infrastructure as
a factual architecture description; $0 exit egress). Fixed the
matching routeMeta.mjs title/description.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert AgentKnowledgeLandingPage from a hand-rolled 233-line page to
a LandingPageConfig. No FIL-843 copy hits.

Extended two shared components to cover this page's "coming soon"
feature pattern instead of hand-rolling it:
- FeatureCard gained optional `badge` (status tag, e.g. "Coming soon")
  and `cta` (trailing waitlist link) props.
- LandingPage's `features` item type and hero.badge (ReactNode,
  from the previous commit) now pass through to support it — this
  page's hero uses a real AnnouncementBadge instead of a plain Pill,
  and two feature cards get a neutral "Coming soon" tag plus a
  "Join the waitlist" link.

Adapted the problem cards to ProblemCards' fixed label+catch+body
shape: the original had two cards with no separate catch line (the
label doubled as the heading), so added brief catch lines for those.

Full test suite (112 tests) passes after the FeatureCard signature
change.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert DataSovereigntyLandingPage from a hand-rolled 493-line page to
a LandingPageConfig. The page's own copy was already clean (EU
endpoint, S3 compat, no egress — no fabricated claims), but its
routeMeta.mjs entry was far more aggressive than the page: "Own your
data with cryptographic proof... verifiable custody" — a full CID/
proof-style claim in the unfurl description despite the on-page copy
never making it. Rewrote to match the page's real, honest content.

Dropped the "trust/region" code-sample section (single illustrative
snippet, redundant with the features grid). Kept the
`{{NEEDS PROOF: operator-pinning capability}}` placeholder verbatim —
this is the second page carrying it (after data-control), part of the
FIL-1046 tracked set, not something to fabricate an answer for.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Both data-control and data-sovereignty had a fourth feature card
carrying a literal "{{NEEDS PROOF: ...}}" placeholder, inherited
as-is from the pre-migration source. This is exactly the pattern
FIL-1046 tracks as a live bug (placeholder text shipped to
production), not something to preserve — drop the slot entirely
(3-column grid) rather than fabricate a claim to fill it.

Follow-up to the data-control and data-sovereignty commits earlier in
this branch.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert VersioningLandingPage from a hand-rolled 216-line page to a
LandingPageConfig. This page is named directly in FIL-843's own
description ("/lp/versioning 'cryptographic integrity guarantees'"),
found in routeMeta.mjs — fixed, along with removing "Filecoin"
without qualifying it as infrastructure.

Also fixed violations of the console doc's specific versioning rules
(§13): "restore any object to an earlier point in time" and "enable
versioning" (implying a toggle on an existing bucket) are both
explicitly banned — versioning is view/download/delete only, and is
chosen once at bucket creation, not toggled later. Replaced "Restore
any prior state by version ID" with "Download any prior version by
ID" throughout (hero, CTA subhead), and reworded the features list to
say versioning is "configured when the bucket is created" rather than
implying it's an anytime toggle. Dropped the code sample, which
called `put_bucket_versioning` on an already-created bucket — exactly
the operation the doc says isn't supported.

Fixed a fabricated feature card ("Integrity verification... every 24
hours"), replacing it with a real, relevant capability: pairing
versioning with Object Lock retention.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert ComplianceLandingPage from a hand-rolled 495-line page to a
LandingPageConfig. The most severe case yet: the hero itself was
"Prove your data is intact. Don't take our word for it," targeting
fintech/health/regulated audiences with the fabricated 24-hour
verification claim — the highest-stakes audience for a false
compliance claim on this whole site.

Rewrote the thesis around real, demonstrable controls instead of an
unverifiable promise: Object Lock (WORM) retention, version history,
and encryption at rest/in transit. Reworded the problem cards that
implied Fil One provides "observable integrity" verification (it
doesn't) toward the real gap these controls close — untracked
overwrites and missing evidence retention. Dropped the "How integrity
works" section entirely (built on the fabricated ~24h cadence claim
and unverified "11 nines durability").

Preserved and promoted the one genuinely good piece of copy on this
page: an honest "Cert status: in pursuit" disclosure stating Fil One
does not hold SOC 2 Type II or ISO 27001 today. This is exactly the
kind of accurate, unhedged compliance copy the audit wants — moved it
into the primary features grid instead of leaving it buried in a
section being cut.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert GoGlobalLandingPage from a hand-rolled 170-line page to a
LandingPageConfig. Reshaped the cost-at-scale table the same way as
Gaming/Startups: rows flipped from scale-points to providers.

Fixed a Metro-style geo overclaim: the problem section and hero
description claimed embedding Fil One gives customers a "global
network" / "global storage layer" — only two regions are GA (US +
EU) per the console source-of-truth doc, not a global network.
Reworded to the real claim (multi-region, US and EU) while keeping
the "go global" framing where it describes the *customer's own
product* reaching a global audience over the internet, which doesn't
depend on how many storage regions sit underneath it. Fixed the
matching routeMeta.mjs description.

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… claims

Convert RegionalCloudLandingPage from a hand-rolled 154-line page to
a LandingPageConfig. Dropped the fourth feature card, which carried
a literal "{{NEEDS PROOF: specific regions and geographies...}}"
placeholder — same treatment as data-control and data-sovereignty,
per instruction not to preserve these (3-column grid instead of
fabricating an answer).

Also fixed a geo overclaim: the hero said "Offer global storage
without building it" while the page's own badge targets "regional or
sovereign cloud offerings" — internally inconsistent, and "global"
isn't supported (only US + EU are GA). Reworded to "production-grade
storage" and softened "Our network underneath" to "Our storage layer
underneath" in the closing CTA. Fixed the matching routeMeta.mjs
description, which also claimed "globally distributed... verifiably
durable."

Folded the separate "Network/SLA" section's three cards into the
main features grid (both covered the same three claims — SLAs, S3
compatibility, flat pricing — so keeping both was redundant).

Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Convert AgentReadableLandingPage from a hand-rolled 152-line page to
shared components (Hero, LandingPrimitives, ProblemCards, FeatureCard,
CodeBlock, CtaBanner). Kept it hand-composed rather than the
LandingPage config shell, same as Agents/MigrateFromS3/AgentReadable's
own llms.txt sample — the code block here isn't a supplementary
example, it's the page's actual thesis ("here's literally what your
agent reads"), so it stays via the shared CodeBlock component instead
of being dropped.

No FIL-843 copy hits — every claim on this page (llms.txt, flat
pricing, S3 parity) is real and already accurate.

This was the last of the 30 tracked /lp/* pages queued after
/lp/agents. Part of FIL-690.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…e-lp-agents

# Conflicts:
#	src/pages/AffordableLandingPage.tsx
#	src/pages/AgentKnowledgeLandingPage.tsx
#	src/pages/AgentLoopsLandingPage.tsx
#	src/pages/AgentReadableLandingPage.tsx
#	src/pages/AgentsLandingPage.tsx
#	src/pages/ArchivalLandingPage.tsx
#	src/pages/CheckpointsLandingPage.tsx
#	src/pages/CollectionsAccessLandingPage.tsx
#	src/pages/ComplianceLandingPage.tsx
#	src/pages/CostTickerLandingPage.tsx
#	src/pages/DataControlLandingPage.tsx
#	src/pages/DataSovereigntyLandingPage.tsx
#	src/pages/DigitalPreservationLandingPage.tsx
#	src/pages/ExitFirstLandingPage.tsx
#	src/pages/GamingLandingPage.tsx
#	src/pages/GenomicsLandingPage.tsx
#	src/pages/GoGlobalLandingPage.tsx
#	src/pages/GrantFundedLandingPage.tsx
#	src/pages/LogRetentionLandingPage.tsx
#	src/pages/MediaLandingPage.tsx
#	src/pages/MetroLandingPage.tsx
#	src/pages/MigrateFromS3LandingPage.tsx
#	src/pages/MlTrainingLandingPage.tsx
#	src/pages/MultiCloudLandingPage.tsx
#	src/pages/RagStorageLandingPage.tsx
#	src/pages/RegionalCloudLandingPage.tsx
#	src/pages/StartupsLandingPage.tsx
#	src/pages/VersioningLandingPage.tsx
#	src/pages/Web3FintechLandingPage.tsx
#	src/pages/Web3NativeLandingPage.tsx
#	src/pages/Web3PivotLandingPage.tsx
#	src/pages/WebScrapingLandingPage.tsx
A merge-conflict resolution script inserted the import inside a Go
code sample string instead of the top-level import block.
@filipagr
filipagr merged commit b18273f into main Aug 19, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants