diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md
index 6f9166f..58d6893 100644
--- a/ARCHITECTURE.md
+++ b/ARCHITECTURE.md
@@ -43,9 +43,9 @@ You author the substrate once. `forge sync` compiles that source into each tool'
native config. The four layers are how the brain is expressed; the compiler is how it
is delivered.
-[](https://codewithjuber.github.io/forgekit/diagrams/system.html)
+[](https://jubershaikh.com/forgekit/diagrams/system.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/system.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/system.html): pan, zoom, search, and trace any node.
The four layers, brand-named and emitted cross-tool:
@@ -73,9 +73,9 @@ checks and returns a single verdict. It composes the individually-callable stage
(`preflight`, `route`, `atlas`, `impact`, `reuse`, `context`, `scope`, `lean`,
`anchor`, `verify`) into one pre-action contract.
-[](https://codewithjuber.github.io/forgekit/diagrams/pre-action-gate.html)
+[](https://jubershaikh.com/forgekit/diagrams/pre-action-gate.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/pre-action-gate.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/pre-action-gate.html): pan, zoom, search, and trace any node.
**blast radius** — the set of files an edit is predicted to impact, read from the code
graph. `forge impact` computes it; the pipeline surfaces it before the model touches
@@ -112,9 +112,9 @@ claims into `.forge/ledger/`. Because a claim's bytes are a pure function of
`(kind, body, scope)`, every replica computes the same identity — so teammate ledgers
fold together over plain git with no conflicts.
-[](https://codewithjuber.github.io/forgekit/diagrams/ledger-flow.html)
+[](https://jubershaikh.com/forgekit/diagrams/ledger-flow.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/ledger-flow.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/ledger-flow.html): pan, zoom, search, and trace any node.
Mechanically: evidence and tombstones are append-only, hash-deduped logs; confidence
(`val`) is a decayed Beta posterior moved only by oracles; merge is a join-semilattice
@@ -129,9 +129,9 @@ Decision recorded in
A claim's life, from mint to tombstone:
-[](https://codewithjuber.github.io/forgekit/diagrams/claim-lifecycle.html)
+[](https://jubershaikh.com/forgekit/diagrams/claim-lifecycle.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/claim-lifecycle.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/claim-lifecycle.html): pan, zoom, search, and trace any node.
## 4. The reuse / context loop
@@ -140,9 +140,9 @@ when its evidence still holds — the confidence is above the floor _and_ its at
dependencies still resolve. Otherwise it falls through to generation and mints a fresh
claim on the way back.
-[](https://codewithjuber.github.io/forgekit/diagrams/reuse-cache.html)
+[](https://jubershaikh.com/forgekit/diagrams/reuse-cache.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/reuse-cache.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/reuse-cache.html): pan, zoom, search, and trace any node.
The completeness gate on the retrieval side is `forge context ""`: it pins the
required-knowledge set for the edit (`R(edit)`), downgrades items along a compression ladder
@@ -167,9 +167,9 @@ synthesis §5.3, corrected 2026-09-21).
Where those deterministic checks run in one Claude Code session:
-[](https://codewithjuber.github.io/forgekit/diagrams/hook-sequence.html)
+[](https://jubershaikh.com/forgekit/diagrams/hook-sequence.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/hook-sequence.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/hook-sequence.html): pan, zoom, search, and trace any node.
**The completion gate (Stop, `src/gate.js`).** The only Stop-path guard that may answer:
`completion-gate.sh` runs synchronously (the lesson-mining `cortex.sh stop` stays
@@ -342,9 +342,9 @@ hook never ran, or a session whose one Stop block was already spent.
Plain `forge verify`, end to end:
-[](https://codewithjuber.github.io/forgekit/diagrams/verify-pipeline.html)
+[](https://jubershaikh.com/forgekit/diagrams/verify-pipeline.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/verify-pipeline.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/verify-pipeline.html): pan, zoom, search, and trace any node.
**Deep verification (`src/consensus.js`, `forge verify --deep`).** Where plain `verify`
asks one oracle (the tests) plus one heuristic, this runs a table of independent lenses
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 36255b1..f478ce6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,14 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
+### Changed
+
+- **The site's canonical URL is `https://jubershaikh.com/forgekit/`.** GitHub Pages serves the
+ project site from that custom domain, and `codewithjuber.github.io/forgekit/` only redirects
+ there. `brand.json`, the landing and 404 pages (canonical, Open Graph and JSON-LD) and every
+ diagram link now point at the custom domain directly, so links and link previews skip the
+ redirect.
+
## [1.7.1] - 2026-09-26
### Fixed
diff --git a/ONBOARDING.md b/ONBOARDING.md
index 9ceded8..54f2ff9 100644
--- a/ONBOARDING.md
+++ b/ONBOARDING.md
@@ -11,9 +11,9 @@ Windsurf, Zed, Continue, and OpenClaw at once. Author it once; every tool reads
This page is the fast path: install, configure a repo, do a task, and watch the ledger
start paying off on day two.
-[](https://codewithjuber.github.io/forgekit/diagrams/onboarding-loop.html)
+[](https://jubershaikh.com/forgekit/diagrams/onboarding-loop.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/onboarding-loop.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/onboarding-loop.html): pan, zoom, search, and trace any node.
## 1. Install (once)
diff --git a/README.md b/README.md
index dad9bf9..313e52a 100644
--- a/README.md
+++ b/README.md
@@ -132,9 +132,9 @@ Forgekit supplies an external reliability layer:
Forgekit runs a deterministic substrate before work, lets the external coding agent act,
and records evidence from tests, CI, or explicit human correction afterwards.
-[](https://codewithjuber.github.io/forgekit/diagrams/core-loop.html)
+[](https://jubershaikh.com/forgekit/diagrams/core-loop.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/core-loop.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/core-loop.html): pan, zoom, search, and trace any node.
Only independent oracles (tests, CI, a human accept/revert) move a memory's confidence —
so a wrong lesson decays out instead of ossifying. Full design:
diff --git a/brand.json b/brand.json
index 88bd568..e8ac661 100644
--- a/brand.json
+++ b/brand.json
@@ -13,7 +13,7 @@
"recall": "cross-session memory"
},
"site": {
- "url": "https://codewithjuber.github.io/forgekit/",
+ "url": "https://jubershaikh.com/forgekit/",
"repo": "https://github.com/CodeWithJuber/forgekit"
},
"fonts": {
diff --git a/docs/GUIDE.md b/docs/GUIDE.md
index 0d4cfe6..d9bd6e3 100644
--- a/docs/GUIDE.md
+++ b/docs/GUIDE.md
@@ -70,9 +70,9 @@ substrate** (`forge substrate` — the pre-action check). The full argument is t
The daily loop — every outcome an oracle observes lands in the team ledger, and the
ledger informs the next task:
-[](https://codewithjuber.github.io/forgekit/diagrams/team-loop.html)
+[](https://jubershaikh.com/forgekit/diagrams/team-loop.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/team-loop.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/team-loop.html): pan, zoom, search, and trace any node.
```bash
cd your-project
@@ -670,9 +670,9 @@ The independent check: runs the real test suite and flags edited symbols that ar
the codebase (possible hallucinations). This is what turns "the model says it's done"
into "the tests say it's done."
-[](https://codewithjuber.github.io/forgekit/diagrams/verify-pipeline.html)
+[](https://jubershaikh.com/forgekit/diagrams/verify-pipeline.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/verify-pipeline.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/verify-pipeline.html): pan, zoom, search, and trace any node.
```console
$ forge verify
diff --git a/docs/UNIVERSAL_ROUTING.md b/docs/UNIVERSAL_ROUTING.md
index c4a123c..cb5af22 100644
--- a/docs/UNIVERSAL_ROUTING.md
+++ b/docs/UNIVERSAL_ROUTING.md
@@ -14,9 +14,9 @@ The router code names no vendor, model, tier or threshold, and a test enforces t
How a recommendation is chosen, run and learned from:
-[](https://codewithjuber.github.io/forgekit/diagrams/router-cascade.html)
+[](https://jubershaikh.com/forgekit/diagrams/router-cascade.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/router-cascade.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/router-cascade.html): pan, zoom, search, and trace any node.
## The model
diff --git a/docs/cognitive-substrate/README.md b/docs/cognitive-substrate/README.md
index d7007cb..cc16713 100644
--- a/docs/cognitive-substrate/README.md
+++ b/docs/cognitive-substrate/README.md
@@ -202,9 +202,9 @@ Set **`FORGE_LLM=1`** to add a **thin, opt-in semantic layer** on top: a cheap `
call proposes a completeness reading (M2), a complexity band (M1), the coupled edges the
regex graph misses (impact), and whether an off-goal file actually serves the goal (M4).
-[](https://codewithjuber.github.io/forgekit/diagrams/llm-reconcile.html)
+[](https://jubershaikh.com/forgekit/diagrams/llm-reconcile.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/llm-reconcile.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/llm-reconcile.html): pan, zoom, search, and trace any node.
The model **proposes**; the deterministic rubric, the code graph, and the tests **verify**.
The verdict only moves when the proposal survives that check — otherwise it falls back, unchanged.
diff --git a/docs/diagrams/README.md b/docs/diagrams/README.md
index 4c3bf1d..41b949d 100644
--- a/docs/diagrams/README.md
+++ b/docs/diagrams/README.md
@@ -6,7 +6,7 @@ folder. Nobody hand-draws a diagram or hand-edits a rendered file. `forge docs c
rejects a hand-written Mermaid block in any tracked Markdown or MDX file, and it rejects
an embed that names a diagram the manifest does not register.
-**Browse them:** https://codewithjuber.github.io/forgekit/diagrams/. Each diagram opens as
+**Browse them:** https://jubershaikh.com/forgekit/diagrams/. Each diagram opens as
an interactive page where you can pan, zoom and search (`/`). Press `?` for the guide, and
select a node to trace what it depends on and what depends on it.
@@ -52,7 +52,7 @@ To add a diagram, create its source and add an entry `{ "id", "type", "usedIn":
- **Markdown (GitHub, npm):** link the SVG to its interactive page:
```md
- [](https://codewithjuber.github.io/forgekit/diagrams/core-loop.html)
+ [](https://jubershaikh.com/forgekit/diagrams/core-loop.html)
```
- **Docs site (Mintlify):** put the copy in a ``, then add a link to the interactive
diff --git a/docs/plans/substrate-v2/00-overview.md b/docs/plans/substrate-v2/00-overview.md
index db47a37..94bb870 100644
--- a/docs/plans/substrate-v2/00-overview.md
+++ b/docs/plans/substrate-v2/00-overview.md
@@ -77,9 +77,9 @@ are partial** — their acceptance criteria are not met (reasons in the table).
Each phase is labeled done or partial; a dashed arrow touches a partial phase.
-[](https://codewithjuber.github.io/forgekit/diagrams/phase-map.html)
+[](https://jubershaikh.com/forgekit/diagrams/phase-map.html)
-[Open the interactive diagram](https://codewithjuber.github.io/forgekit/diagrams/phase-map.html): pan, zoom, search, and trace any node.
+[Open the interactive diagram](https://jubershaikh.com/forgekit/diagrams/phase-map.html): pan, zoom, search, and trace any node.
| Phase | Delivers | Depends on | Acceptance |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------- |
diff --git a/landing/404.html b/landing/404.html
index 9091cea..ff1269d 100644
--- a/landing/404.html
+++ b/landing/404.html
@@ -9,17 +9,17 @@
content="Shared memory, impact analysis, and guardrail hooks for AI coding agents — authored once, emitted as native config for Claude Code, Codex, Cursor, Gemini, Aider, and more."
/>
-
+
-
+
-
+
@@ -28,7 +28,7 @@
name="twitter:description"
content="Shared memory, impact analysis, and guardrail hooks for AI coding agents — authored once, emitted as native config for Claude Code, Codex, Cursor, Gemini, Aider, and more."
/>
-
+
diff --git a/landing/index.html b/landing/index.html
index 91659f7..0035daf 100644
--- a/landing/index.html
+++ b/landing/index.html
@@ -7,22 +7,22 @@
-
-
-
+
+
+
-
-
+
+
-
-
+
+