diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 79ad9258d..bf4b68a7a 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -18,6 +18,20 @@ jobs:
steps:
- uses: actions/checkout@v4
+ - name: Read Open Question Board source
+ uses: actions/checkout@v4
+ with:
+ repository: GiggleLiu/autoresearch-gadgets
+ ref: main
+ path: open-questions-source
+ token: ${{ secrets.PROJECT_READ_TOKEN }}
+ persist-credentials: false
+
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
+
+ - name: Build Open Question Board
+ run: uv run --project open-questions-source/website --locked python open-questions-source/website/build.py
+
- uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-node@v4
@@ -68,7 +82,7 @@ jobs:
cp -r target/doc/* book/api/
- name: Build research website
- run: python3 scripts/build_website.py
+ run: python3 scripts/build_website.py --open-questions open-questions-source/website/dist
- name: Verify deployment artifact
run: |
@@ -88,6 +102,7 @@ jobs:
path: './book'
deploy:
+ if: github.ref == 'refs/heads/main'
permissions:
pages: write
id-token: write
diff --git a/book.toml b/book.toml
index 8ded1c31c..3852b4a86 100644
--- a/book.toml
+++ b/book.toml
@@ -36,4 +36,4 @@ copy-js = true
# Pages that moved to the website keep their published URLs.
[output.html.redirect]
"/reduction-graph.html" = "graph.html"
-"/open-problems.html" = "index.html#open-questions"
+"/open-problems.html" = "open-questions/"
diff --git a/docs/src/design.md b/docs/src/design.md
index 5b58f73ff..1d11d0b6f 100644
--- a/docs/src/design.md
+++ b/docs/src/design.md
@@ -583,4 +583,4 @@ accept full matrices; evaluation and serialization ignore their lower triangle.
## Contributing
-See [Call for Contributions](index.html#open-questions) for the recommended issue-based workflow (no coding required).
+See the [Open Question Board](open-questions/) to browse problems and register a problem or solution through a GitHub pull request.
diff --git a/docs/website/README.md b/docs/website/README.md
index fad5e8574..164cdb213 100644
--- a/docs/website/README.md
+++ b/docs/website/README.md
@@ -127,7 +127,30 @@ clipboard actions, the mathematical example, legacy docs, and mobile overflow.
## Documentation
-Open questions has its own website navigation tab at `index.html#open-questions`.
+The homepage and graph's **Open questions** link opens `open-questions/`.
+The board is generated from the registry and shared templates in
+[`GiggleLiu/autoresearch-gadgets`](https://github.com/GiggleLiu/autoresearch-gadgets),
+then included in the same Pages artifact. Legacy `#open-questions` and
+`open-problems.html` links redirect to the board.
+
+The deployment workflow reads that private repository's `main` branch with the
+existing `PROJECT_READ_TOKEN` secret. That token needs **Contents: read** access
+to `GiggleLiu/autoresearch-gadgets`; the default `GITHUB_TOKEN` cannot read another
+private repository. Only the generated `website/dist/` is published. Registry
+changes appear on the next documentation deployment; use **Run workflow** on
+`main` to refresh the board without changing this repository. Feature-branch
+runs build and verify the artifact without deploying it.
+
+To include the board in a local preview, clone its source beside this repository,
+build it with its committed lockfile, and run the website overlay after mdBook:
+
+```sh
+uv run --project ../autoresearch-gadgets/website --locked python ../autoresearch-gadgets/website/build.py
+python3 scripts/build_website.py --open-questions ../autoresearch-gadgets/website/dist
+```
+
+Include the board when running the browser suite. Without `--open-questions`,
+the builder previews the main website and guide only.
The guide has seven pages listed in `docs/src/SUMMARY.md`: an overview, the CLI
(quick start, command reference), agent skills, the Rust library
diff --git a/docs/website/assets/site.js b/docs/website/assets/site.js
index 15fcb03aa..ab6adb0fd 100644
--- a/docs/website/assets/site.js
+++ b/docs/website/assets/site.js
@@ -491,8 +491,8 @@
hydrateHome();
} else if (parts[0] === "atlas") atlasPage();
else if (parts[0] === "open-questions") {
- document.title = `Open questions — ${baseTitle}`;
- main.innerHTML = '