From 1b4fb105c56499a48d95beb80489ce0acc1057ab Mon Sep 17 00:00:00 2001 From: Karim <98668332+khadni@users.noreply.github.com> Date: Mon, 14 Sep 2026 09:49:07 -0500 Subject: [PATCH 01/11] enable lychee fragment checks --- .github/workflows/test.yml | 3 ++- lychee.toml | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f7d01d26166..bd0455311d2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -204,8 +204,9 @@ jobs: NODE_OPTIONS: '--max-old-space-size=8192' - name: Check Internal Links - uses: lycheeverse/lychee-action@8646ba30535128ac92d33dfc9133794bfdd9b411 # v2.8.0 + uses: lycheeverse/lychee-action@e7477775783ea5526144ba13e8db5eec57747ce8 # v2.9.0 with: + lycheeVersion: v0.24.2 args: >- --root-dir $GITHUB_WORKSPACE/.vercel/output/static --config lychee.toml diff --git a/lychee.toml b/lychee.toml index 88c2d5701bd..77437c79140 100644 --- a/lychee.toml +++ b/lychee.toml @@ -39,6 +39,6 @@ exclude_path = [ 'ccip/api-reference/evm/v163/.*', ] -# TODO: Re-enable fragment checking once Astro slug generation compatibility is resolved -# include_fragments = true -# Astro's heading ID generation and lychee's GitHub-style kebab-case expectations \ No newline at end of file +# Validate anchor fragments such as /page#section. +# Text fragments such as #:~:text=... remain out of scope. +include_fragments = "anchor-only" \ No newline at end of file From d82cc6f83ce985b68f5b397e1fde175cb4f92051 Mon Sep 17 00:00:00 2001 From: Karim <98668332+khadni@users.noreply.github.com> Date: Mon, 14 Sep 2026 11:39:07 -0500 Subject: [PATCH 02/11] test --- src/content/ace/beta-scope.mdx | 2 ++ src/content/ace/llms-full.txt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/content/ace/beta-scope.mdx b/src/content/ace/beta-scope.mdx index dcdb7c354a2..218c598064d 100644 --- a/src/content/ace/beta-scope.mdx +++ b/src/content/ace/beta-scope.mdx @@ -59,3 +59,5 @@ In both models, you retain full ownership of your contracts through the [CRE Con ACE Beta provides a managed policy that screens transaction participants with TRM Wallet Screening and delivers approved permits onchain through a managed CRE workflow. See [Off-Chain Policy Execution](/ace/concepts/off-chain-policies) for a conceptual overview of managed and custom offchain policies. + +See [here](#abc) for more details. diff --git a/src/content/ace/llms-full.txt b/src/content/ace/llms-full.txt index 0e97c61ff5c..dc9754e54c9 100644 --- a/src/content/ace/llms-full.txt +++ b/src/content/ace/llms-full.txt @@ -151,6 +151,8 @@ ACE Beta provides a managed policy that screens transaction participants with Date: Mon, 14 Sep 2026 12:17:28 -0500 Subject: [PATCH 03/11] resolve Astro index files in Lychee --- lychee.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lychee.toml b/lychee.toml index 77437c79140..fba8b9a09f7 100644 --- a/lychee.toml +++ b/lychee.toml @@ -41,4 +41,6 @@ exclude_path = [ # Validate anchor fragments such as /page#section. # Text fragments such as #:~:text=... remain out of scope. -include_fragments = "anchor-only" \ No newline at end of file +include_fragments = "anchor-only" + +index_files = ["index.html"] \ No newline at end of file From c8cb380eb636d0f5e3d56eb60bd2df5a51ba4973 Mon Sep 17 00:00:00 2001 From: Karim <98668332+khadni@users.noreply.github.com> Date: Mon, 14 Sep 2026 15:24:22 -0500 Subject: [PATCH 04/11] fix Lychee fragment checks & CRE canonical redirects --- lychee.toml | 57 ++++++++---- .../part-2-fetching-data-ts.mdx | 2 +- .../part-3-reading-onchain-value-ts.mdx | 2 +- .../part-4-writing-onchain-ts.mdx | 2 +- .../using-evm-client/onchain-read-go.mdx | 2 +- .../generating-reports-single-values.mdx | 2 +- .../generating-reports-structs.mdx | 2 +- .../http-trigger/configuration-go.mdx | 2 +- src/content/cre/llms-full-go.txt | 20 ++--- src/content/cre/llms-full-ts.txt | 8 +- src/content/cre/reference/cli/utilities.mdx | 2 +- .../cre/reference/sdk/consensus-go.mdx | 2 +- .../cre/reference/sdk/http-client-go.mdx | 8 +- src/pages/cre/[...id].astro | 88 ++++++++++++++++--- 14 files changed, 139 insertions(+), 60 deletions(-) diff --git a/lychee.toml b/lychee.toml index fba8b9a09f7..bd7b4c99b24 100644 --- a/lychee.toml +++ b/lychee.toml @@ -1,46 +1,65 @@ # Lychee Link Checker Configuration # https://lychee.cli.rs/ -# Only check local files (no network requests) +# Check only local build files; never make network requests. offline = true -# Check links in code blocks -include_verbatim = true +# Ignore illustrative URLs inside ,
, and Markdown code blocks.
+# These are examples, not navigational links that users can click.
+include_verbatim = false
 
-# Don't show progress bar (better for CI)
+# Validate standard anchors such as /page#section.
+# Text fragments such as #:~:text=... remain out of scope.
+include_fragments = "anchor-only"
+
+# Resolve Astro pretty URLs to their generated index.html file.
+# Do not add "." as a fallback: directories without index.html must remain errors.
+index_files = ["index.html"]
+
+# Disable the interactive progress bar in CI logs.
 no_progress = true
 
-# Patterns to exclude from link checking
+# URLs matching these patterns are not checked.
 exclude = [
-    # Markdown alternates emitted into built HTML
+    # Markdown alternatives emitted into built HTML are not part of the static site.
     '.*\.md$',
 
-    # CSS files
+    # Generated CSS assets are outside the scope of the internal navigation check.
     'assets/.*\.css$',
     '_astro/.*\.css$',
 
-    # Dynamic pages with query params
-    '/ccip/directory/.*',
+    # Astro handles this exact route as a redirect to /ccip/directory/mainnet,
+    # so no local index.html is generated for it.
+    '/ccip/directory/?(?:[?#].*)?$',
+
+    # CCIP Directory pages reuse headings that are not rendered on those pages.
+    # Ignore only their fragments; the existence of each target page is still checked.
+    '/ccip/directory/.*#.*$',
+
+    # Ignore only query-dependent CCIP Directory URLs.
+    # Child pages without query parameters remain fully checked.
+    '/ccip/directory/.+\?.*',
+
+    # Dynamic pages whose query parameters cannot be reproduced by the static build.
     '/data-feeds/price-feeds/addresses\?.*',
     '/data-feeds/smartdata/addresses\?.*',
 
-    # Other files
+    # In offline mode, href="/" can resolve to file:/// even though the root page
+    # exists in the deployed site. Match only this exact local URL.
+    '^file:///$',
+
+    # Build/runtime references that are not navigational pages.
     'sitemap-index\.xml',
     '@vite/client',
 
-    # Database connection strings
+    # Connection strings found in documentation examples.
     'postgresql:',
     'mysql:',
 ]
 
-# Paths to exclude from scanning (won't check links on these pages)
+# Input HTML files matching these patterns are not scanned.
+# Use this only when the entire generated page is intentionally out of scope.
 exclude_path = [
     'ccip/api-reference/evm/v162/.*',
     'ccip/api-reference/evm/v163/.*',
-]
-
-# Validate anchor fragments such as /page#section.
-# Text fragments such as #:~:text=... remain out of scope.
-include_fragments = "anchor-only"
-
-index_files = ["index.html"]
\ No newline at end of file
+]
\ No newline at end of file
diff --git a/src/content/cre/getting-started/part-2-fetching-data-ts.mdx b/src/content/cre/getting-started/part-2-fetching-data-ts.mdx
index 94812b9ccfc..8dd499a049e 100644
--- a/src/content/cre/getting-started/part-2-fetching-data-ts.mdx
+++ b/src/content/cre/getting-started/part-2-fetching-data-ts.mdx
@@ -64,7 +64,7 @@ Replace the entire content of `onchain-calculator/my-calculator-workflow/main.ts
 
 {/* prettier-ignore */}