From 8b416a5cb446bd2476cdaafbfd953f8bbca3fa9d Mon Sep 17 00:00:00 2001 From: Wes McKinney Date: Fri, 4 Sep 2026 08:17:58 -0500 Subject: [PATCH 1/3] docs: define Docbank's tiered public site Docbank's incoming processing and retrieval stack needs a public identity that explains source authority, governed derivatives, bounded agent access, and recovery as one system. Fix the audience, authority-lifecycle narrative, flat teal visual language, human and machine route parity, screenshot boundary, and release-gated deployment before implementation begins. - docs: make the tiered site design executable - test: prove documentation subpath rendering - feat: separate complete documentation captures - feat: pin reviewed documentation assets - feat: assemble the public documentation tiers - feat: establish Docbank's authority-led site - feat: preview every documentation tier together - fix: make documentation deployment narrow and verifiable - test: verify the public documentation boundary - ci: gate documentation promotion on released sources - test: keep browser specs out of the unit runner - fix: enforce documentation publication boundaries - feat: simplify the landing hero and link community surfaces - fix: redraw the interface map with orthogonal routing - feat: tell the AI intelligence and git-contrast story - fix: serve every published screenshot from the site itself Generated with Codex Generated with Claude Code (claude-fable-5-1) Co-authored-by: Codex <198982749+openai-codex[bot]@users.noreply.github.com> Co-authored-by: Claude Fable 5.1 --- .github/workflows/ci.yml | 60 ++ .github/workflows/deploy-docs.yml | 71 ++ .gitignore | 6 + .vercelignore | 50 ++ AGENTS.md | 25 +- LICENSES/Inter-OFL-1.1.txt | 92 +++ LICENSES/JetBrains-Mono-OFL-1.1.txt | 93 +++ Makefile | 42 +- README.md | 2 +- docs/README.md | 76 +- docs/index.md | 2 +- docs/llms.txt | 80 +- docs/scripts/check_built_site.py | 26 +- docs/scripts/check_built_site_test.py | 35 + docs/scripts/check_markdown_sources.py | 10 +- docs/scripts/check_zensical_subpath.py | 145 ++++ docs/stylesheets/extra.css | 322 ++------ ...-08-30-tiered-documentation-site-design.md | 248 ++++++ docs/tour.md | 10 +- docs/usage/audited-history.md | 2 +- docs/usage/organizing.md | 2 +- docs/usage/storage.md | 2 +- docs/usage/tui.md | 2 +- docs/usage/web.md | 4 +- docs/vercel.json | 3 - docs/zensical-docs.sh | 8 +- docs/zensical.toml | 3 +- frontend/docs-site/playwright.config.ts | 50 ++ frontend/docs-site/site.spec.ts | 176 ++++ frontend/docs-site/tsconfig.json | 15 + frontend/package.json | 4 +- frontend/screenshots/README.md | 21 +- frontend/screenshots/publish.mjs | 99 +++ frontend/screenshots/publish.node-test.mjs | 102 +++ frontend/screenshots/run.mjs | 24 +- frontend/screenshots/web-trash.screenshot.ts | 104 +-- frontend/vite.config.ts | 2 +- prek.toml | 2 +- scripts/deploy-docs.sh | 47 ++ scripts/docs-assets-sync.test.sh | 131 +++ scripts/docs-assets.ref | 1 + scripts/docs-assets.txt | 11 + scripts/docs/assert-vercel-dry-run.mjs | 141 ++++ scripts/docs/assert-vercel-dry-run.test.mjs | 97 +++ scripts/docs/build.mjs | 203 +++++ scripts/docs/build.test.mjs | 127 +++ scripts/docs/serve.mjs | 252 ++++++ scripts/docs/serve.test.mjs | 149 ++++ scripts/docs/verify-site.mjs | 278 +++++++ scripts/docs/verify-site.test.mjs | 209 +++++ scripts/sync-docs-assets.sh | 149 ++++ scripts/validate-docs-release.sh | 66 ++ scripts/validate-docs-release.test.sh | 91 +++ scripts/vercel-build-docs.sh | 15 + scripts/vercel-install-docs.sh | 41 + vercel.json | 21 + website/assets/authority-ledger.svg | 25 + website/assets/derivative-cycle.svg | 47 ++ website/assets/intelligence-pipeline.svg | 62 ++ website/assets/interface-map.svg | 61 ++ website/assets/recovery-flow.svg | 25 + website/favicon.svg | 6 + website/fonts/Inter-Medium.woff2 | Bin 0 -> 114348 bytes website/fonts/Inter-Regular.woff2 | Bin 0 -> 111268 bytes website/fonts/Inter-SemiBold.woff2 | Bin 0 -> 114812 bytes website/fonts/JetBrainsMono-Bold.woff2 | Bin 0 -> 94588 bytes website/fonts/JetBrainsMono-Regular.woff2 | Bin 0 -> 92164 bytes website/fonts/JetBrainsMono-SemiBold.woff2 | Bin 0 -> 94472 bytes website/guide.md | 123 +++ website/guide/index.html | 281 +++++++ website/index.html | 329 ++++++++ website/index.md | 145 ++++ website/scripts/site.js | 127 +++ website/styles/site.css | 771 ++++++++++++++++++ 74 files changed, 5636 insertions(+), 415 deletions(-) create mode 100644 .github/workflows/deploy-docs.yml create mode 100644 .vercelignore create mode 100644 LICENSES/Inter-OFL-1.1.txt create mode 100644 LICENSES/JetBrains-Mono-OFL-1.1.txt create mode 100644 docs/scripts/check_built_site_test.py create mode 100644 docs/scripts/check_zensical_subpath.py create mode 100644 docs/superpowers/specs/2026-08-30-tiered-documentation-site-design.md delete mode 100644 docs/vercel.json create mode 100644 frontend/docs-site/playwright.config.ts create mode 100644 frontend/docs-site/site.spec.ts create mode 100644 frontend/docs-site/tsconfig.json create mode 100644 frontend/screenshots/publish.mjs create mode 100644 frontend/screenshots/publish.node-test.mjs create mode 100755 scripts/deploy-docs.sh create mode 100755 scripts/docs-assets-sync.test.sh create mode 100644 scripts/docs-assets.ref create mode 100644 scripts/docs-assets.txt create mode 100644 scripts/docs/assert-vercel-dry-run.mjs create mode 100644 scripts/docs/assert-vercel-dry-run.test.mjs create mode 100644 scripts/docs/build.mjs create mode 100644 scripts/docs/build.test.mjs create mode 100644 scripts/docs/serve.mjs create mode 100644 scripts/docs/serve.test.mjs create mode 100644 scripts/docs/verify-site.mjs create mode 100644 scripts/docs/verify-site.test.mjs create mode 100755 scripts/sync-docs-assets.sh create mode 100755 scripts/validate-docs-release.sh create mode 100755 scripts/validate-docs-release.test.sh create mode 100755 scripts/vercel-build-docs.sh create mode 100755 scripts/vercel-install-docs.sh create mode 100644 vercel.json create mode 100644 website/assets/authority-ledger.svg create mode 100644 website/assets/derivative-cycle.svg create mode 100644 website/assets/intelligence-pipeline.svg create mode 100644 website/assets/interface-map.svg create mode 100644 website/assets/recovery-flow.svg create mode 100644 website/favicon.svg create mode 100644 website/fonts/Inter-Medium.woff2 create mode 100644 website/fonts/Inter-Regular.woff2 create mode 100644 website/fonts/Inter-SemiBold.woff2 create mode 100644 website/fonts/JetBrainsMono-Bold.woff2 create mode 100644 website/fonts/JetBrainsMono-Regular.woff2 create mode 100644 website/fonts/JetBrainsMono-SemiBold.woff2 create mode 100644 website/guide.md create mode 100644 website/guide/index.html create mode 100644 website/index.html create mode 100644 website/index.md create mode 100644 website/scripts/site.js create mode 100644 website/styles/site.css diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6a027d36..f46bc000 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,66 @@ concurrency: cancel-in-progress: true jobs: + docs: + name: Public documentation + runs-on: ${{ github.repository == 'kenn-io/docbank' && (github.event_name == 'push' && github.ref == 'refs/heads/main' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository && github.event.pull_request.base.repo.full_name == github.repository)) && 'kenn-linux-x64-public' || 'ubuntu-latest' }} + steps: + - name: Check out full repository history + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + fetch-depth: 0 + persist-credentials: false + + - name: Set up Go + uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0 + with: + go-version-file: go.mod + cache: ${{ github.repository == 'kenn-io/docbank' && (github.event_name == 'push' && github.ref == 'refs/heads/main' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository && github.event.pull_request.base.repo.full_name == github.repository)) && 'false' || 'true' }} + + - name: Set up Node.js + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: + node-version: "24" + cache: npm + cache-dependency-path: frontend/package-lock.json + + - name: Install pinned documentation tools + run: | + ./scripts/vercel-install-docs.sh + echo "$PWD/.vercel-tools/bin" >> "$GITHUB_PATH" + + - name: Install browser test dependencies + run: | + npm ci --prefix frontend + node frontend/node_modules/@playwright/test/cli.js install --with-deps chromium webkit + + - name: Verify documentation sources and assets + run: | + bash scripts/docs-assets-sync.test.sh + npm --prefix frontend run screenshots:check + make docs-subpath-test + node --test scripts/docs/*.test.mjs + make docs-build + + - name: Verify Vercel upload boundary + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + env: + VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} + run: | + if [ -z "$VERCEL_TOKEN" ]; then + echo "VERCEL_TOKEN must be configured for trusted main-branch documentation checks" >&2 + exit 1 + fi + npm install --global vercel@58.4.4 + mkdir -p .superpowers + vercel deploy --dry --json --project docbank.ai --scope kenn-software --token "$VERCEL_TOKEN" > .superpowers/vercel-dry-run.json + node scripts/docs/assert-vercel-dry-run.mjs .superpowers/vercel-dry-run.json + + - name: Verify documentation in Chromium and WebKit + run: | + npm --prefix frontend run docs-site:check + npm --prefix frontend run docs-site:test + frontend: name: Web application runs-on: ${{ github.repository == 'kenn-io/docbank' && (github.event_name == 'push' && github.ref == 'refs/heads/main' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository && github.event.pull_request.base.repo.full_name == github.repository)) && 'kenn-linux-x64-public' || 'ubuntu-latest' }} diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml new file mode 100644 index 00000000..4e4e4489 --- /dev/null +++ b/.github/workflows/deploy-docs.yml @@ -0,0 +1,71 @@ +name: Deploy documentation + +on: + workflow_dispatch: + inputs: + source_sha: + description: Full eligible documentation source commit SHA + required: true + type: string + +permissions: + contents: read + +concurrency: + group: docbank-documentation-production + cancel-in-progress: false + +jobs: + validate: + name: Validate documentation source + runs-on: ubuntu-latest + outputs: + release_tag: ${{ steps.release.outputs.release_tag }} + source_sha: ${{ steps.release.outputs.source_sha }} + steps: + - name: Check out trusted release policy + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + fetch-depth: 0 + persist-credentials: false + ref: main + + - name: Validate requested source against the release boundary + id: release + env: + SOURCE_SHA: ${{ inputs.source_sha }} + run: | + git fetch --quiet origin refs/heads/main:refs/remotes/origin/main --tags + release_tag=$(git describe --tags --abbrev=0 --match 'v[0-9]*.[0-9]*.[0-9]*' origin/main) + ./scripts/validate-docs-release.sh "$SOURCE_SHA" "$release_tag" + echo "source_sha=$SOURCE_SHA" >> "$GITHUB_OUTPUT" + echo "release_tag=$release_tag" >> "$GITHUB_OUTPUT" + + deploy: + name: Build and promote documentation + needs: validate + runs-on: ubuntu-latest + environment: production + steps: + - name: Check out the validated source + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + fetch-depth: 0 + persist-credentials: false + ref: ${{ needs.validate.outputs.source_sha }} + + - name: Set up Node.js + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: + node-version: "24" + + - name: Install pinned Vercel CLI + run: npm install --global vercel@58.4.4 + + - name: Verify, build, inspect, and promote + env: + DOCS_SOURCE: ${{ needs.validate.outputs.source_sha }} + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} + run: ./scripts/deploy-docs.sh diff --git a/.gitignore b/.gitignore index 21ba218d..972248f8 100644 --- a/.gitignore +++ b/.gitignore @@ -10,8 +10,14 @@ internal/web/dist/* !internal/web/dist/.keep # docs build +**/__pycache__/ +/.cache/docs-assets/ +/site/ +/.vercel/ +/.vercel-tools/ docs/.venv/ docs/site/ docs/zensical-public-docs.* docs/.zensical-build.* .kata.local.toml +.env* diff --git a/.vercelignore b/.vercelignore new file mode 100644 index 00000000..817eb397 --- /dev/null +++ b/.vercelignore @@ -0,0 +1,50 @@ +# Vercel receives only the static documentation build inputs. Product source, +# screenshots, tests, internal plans, generated output, and local state remain +# outside the upload boundary. +/* + +!/vercel.json + +!/LICENSES +/LICENSES/* +!/LICENSES/Inter-OFL-1.1.txt +!/LICENSES/JetBrains-Mono-OFL-1.1.txt + +!/website + +!/docs +/docs/* +!/docs/*.md +/docs/README.md +!/docs/agents +!/docs/architecture +!/docs/usage +!/docs/overrides +/docs/overrides/* +!/docs/overrides/main.html +!/docs/stylesheets +/docs/stylesheets/* +!/docs/stylesheets/extra.css +!/docs/scripts +/docs/scripts/* +!/docs/scripts/check_built_site.py +!/docs/scripts/check_markdown_sources.py +!/docs/llms.txt +!/docs/pyproject.toml +!/docs/uv.lock +!/docs/zensical-docs.sh +!/docs/zensical.toml + +!/scripts +/scripts/* +!/scripts/docs +/scripts/docs/* +!/scripts/docs/build.mjs +!/scripts/docs/verify-site.mjs +!/scripts/docs-assets.ref +!/scripts/docs-assets.txt +!/scripts/install.ps1 +!/scripts/install.sh +!/scripts/sync-docs-assets.sh +!/scripts/vercel-build-docs.sh +!/scripts/vercel-install-docs.sh diff --git a/AGENTS.md b/AGENTS.md index 4aaa4003..b19d7481 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -21,11 +21,30 @@ Instructions for autonomous coding agents working in this repository. `frontend/package-lock.json`. Run `make frontend-test` for type, kit-ui, unit, and production-build checks. Release CI builds the frontend once and embeds those exact assets in all six platform archives. -- Real web screenshots use the repository-owned Playwright harness in - `frontend/screenshots/`. Run `make frontend-screenshots`; captures must use +- Real documentation screenshots use the repository-owned Playwright harness in + `frontend/screenshots/`. Run `make docs-screenshots`; captures must use its temporary synthetic vault and real daemon, never a developer vault or mocked API data. Generated images stay under `.superpowers/screenshots/` - until they are visually inspected and attached to the relevant pull request. + until they are visually inspected and published as a complete reviewed set. + Publish the complete set as one orphan `docs-assets` commit, then pin that + exact commit in `scripts/docs-assets.ref`. Documentation builds consume the + pin and never generate screenshots or follow a mutable branch head. +- Run `make docs-serve` from the repository root to build, watch, and preview + the product page, authority guide, and operating documentation on one origin. + Run `make docs-build` after the final source or asset-pin edit. The strict + build stages only the explicit public allowlist into `site/`; internal plans, + scripts, and agent instructions must not enter the output. +- A software release makes a documentation source eligible; it does not publish + that source. The selected source is normally the post-tag documentation-only + follow-up. Deployment still requires maintainer authorization. From the + repository root, `make docs-deploy DOCS_SOURCE=$(git rev-parse HEAD)` uploads + an unpromoted production build, verifies it and the release boundary, and + then promotes it. The deploy path does not generate screenshots, build the + product, run Docker, or install frontend dependencies. Pull-request jobs + never receive Vercel credentials; the authenticated upload dry run is a + trusted `main`-push check, and the manual production workflow validates its + requested source without credentials before entering the protected + environment. ## Private Data Boundary diff --git a/LICENSES/Inter-OFL-1.1.txt b/LICENSES/Inter-OFL-1.1.txt new file mode 100644 index 00000000..9b2ca37b --- /dev/null +++ b/LICENSES/Inter-OFL-1.1.txt @@ -0,0 +1,92 @@ +Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION AND CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/LICENSES/JetBrains-Mono-OFL-1.1.txt b/LICENSES/JetBrains-Mono-OFL-1.1.txt new file mode 100644 index 00000000..23a3dca4 --- /dev/null +++ b/LICENSES/JetBrains-Mono-OFL-1.1.txt @@ -0,0 +1,93 @@ +Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Makefile b/Makefile index 2ed16392..9dc3ec76 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ DEFAULT_GOLANGCI_LINT_CACHE := $(shell git rev-parse --path-format=absolute --gi GOLANGCI_LINT_CACHE ?= $(DEFAULT_GOLANGCI_LINT_CACHE) export GOLANGCI_LINT_CACHE -.PHONY: build install clean test test-v release-scripts-test frontend frontend-test frontend-dev frontend-screenshots fmt lint lint-ci tidy install-hooks docs-install docs-build docs-serve docs-link docs-deploy help +.PHONY: build install clean test test-v release-scripts-test frontend frontend-test frontend-dev docs-screenshots fmt lint lint-ci tidy install-hooks docs-install docs-subpath-test docs-assets-test docs-assets-sync docs-build docs-serve docs-link docs-deploy help build: frontend CGO_ENABLED=1 go build -tags "$(BUILD_TAGS)" -ldflags="$(LDFLAGS)" -o docbank ./cmd/docbank @@ -60,7 +60,7 @@ frontend-test: frontend-dev: cd frontend && npm run dev -frontend-screenshots: +docs-screenshots: cd frontend && npm run screenshots fmt: @@ -93,14 +93,23 @@ install-hooks: docs-install: cd docs && uv sync --frozen +docs-subpath-test: + cd docs && uv run --project . --frozen --no-dev python scripts/check_zensical_subpath.py + bridge-contract: go test -tags fts5 ./document/bridge -run '^TestBridgeContractNormativeDocuments' -docs-build: bridge-contract - cd docs && ./zensical-docs.sh build +docs-assets-test: + bash scripts/docs-assets-sync.test.sh + +docs-assets-sync: + ./scripts/sync-docs-assets.sh + +docs-build: bridge-contract docs-subpath-test + node scripts/docs/build.mjs docs-serve: - cd docs && ./zensical-docs.sh serve + node scripts/docs/serve.mjs # Deploys use the operator's installed Vercel CLI; install it with # `npm install -g vercel` or from https://vercel.com/docs/cli. @@ -109,20 +118,19 @@ docs-link: echo "vercel CLI not found. Install: https://vercel.com/docs/cli" >&2; \ exit 1; \ fi - cd docs && vercel link - -docs-deploy: docs-build - @if ! command -v vercel >/dev/null 2>&1; then \ - echo "vercel CLI not found. Install: https://vercel.com/docs/cli" >&2; \ + vercel link + @test -f .vercel/project.json || { \ + echo "Vercel did not create .vercel/project.json at the repository root." >&2; \ exit 1; \ - fi - @if [ ! -f docs/.vercel/project.json ]; then \ - echo "docs are not linked to a Vercel project yet." >&2; \ - echo "Run: vercel login && make docs-link" >&2; \ + } + +docs-deploy: + @if [ -z "$(DOCS_SOURCE)" ]; then \ + echo "DOCS_SOURCE is required and must be a full source commit SHA." >&2; \ + echo "Run: make docs-deploy DOCS_SOURCE=$$(git rev-parse HEAD)" >&2; \ exit 1; \ fi - cp -R docs/.vercel docs/site/.vercel - vercel deploy docs/site --prod --yes + DOCS_SOURCE="$(DOCS_SOURCE)" ./scripts/deploy-docs.sh help: - @echo "Targets: build install clean test test-v release-scripts-test frontend frontend-test frontend-dev frontend-screenshots fmt lint lint-ci tidy install-hooks docs-install docs-build docs-serve docs-link docs-deploy" + @echo "Targets: build install clean test test-v release-scripts-test frontend frontend-test frontend-dev docs-screenshots fmt lint lint-ci tidy install-hooks docs-install docs-subpath-test docs-assets-test docs-assets-sync docs-build docs-serve docs-link docs-deploy" diff --git a/README.md b/README.md index 0d5bf72d..72325490 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ recoverable deletion, verified backup, and optional permanent audited history. The vault catalog stays under your control instead of inside a provider account. -![The Docbank web application browsing a synthetic vault and showing the selected document's stable authority.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/v0.12.0/web-vault-browser.png) +![The Docbank web application browsing a synthetic vault and showing the selected document's stable authority.](https://docbank.ai/assets/generated/web-vault-browser.png) The standalone CLI, web application, TUI, scripts, and agents all use the same authenticated daemon contract. Go applications can instead embed independently diff --git a/docs/README.md b/docs/README.md index df1d4229..d725c050 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,24 +15,76 @@ plus internal design material. metadata, assets, and publishing boundary; all Python tools run through the locked `uv` environment -Every rendered directory route also publishes its exact Markdown source at -the sibling `.md` path: `/setup/` has `/setup.md`, and -`/usage/importing/` has `/usage/importing.md`. This gives agents and other -text-first clients a stable representation without scraping rendered HTML. -Section landing pages use a sibling source such as `usage.md`, not -`usage/index.md`, so relative links keep the same base at `/usage.md`. +Every rendered directory route also publishes its exact Markdown source at the +sibling `.md` path. The operating page `/docs/setup/` has `/docs/setup.md`, and +`/docs/usage/importing/` has `/docs/usage/importing.md`. The product page and +authority guide follow the same rule at `/index.md` and `/guide.md`. Agents and +other text-first clients can use these stable representations without scraping +rendered HTML. ## Building +Run documentation commands from the repository root: + +```bash +make docs-install # one-time: install the locked Zensical environment +make docs-serve # build and watch all three tiers on http://127.0.0.1:8000 +make docs-build # strict production build into site/ +``` + +`make docs-serve` serves the product page, authority guide, and operating +documentation from one origin. It rebuilds after changes beneath `website/` or +`docs/`, or after the pinned screenshot commit or manifest changes. A failed +rebuild leaves the last successful `site/` available for inspection. + +## Screenshots + +Screenshot generation is a separate reviewed workflow. It never runs during a +documentation build or deployment. + +1. Run `make docs-screenshots`. The harness starts a real daemon with a + temporary synthetic vault and writes the complete capture set beneath + `.superpowers/screenshots/`. +2. Inspect every generated image and its metadata. +3. Publish the complete reviewed set as one orphan `docs-assets` commit. +4. Put that exact commit in `scripts/docs-assets.ref` and run + `make docs-assets-sync`. +5. Run `make docs-build` after the final source or asset-pin edit. + +Never capture a developer vault, publish a partial set, or point the build at a +mutable branch head. + +## Deployment + +A software release makes a documentation source eligible; it does not publish +that source. The selected source is normally the documentation-only follow-up +after the tag and release notes exist. A maintainer must still authorize every +deployment. + +Link the Vercel project once from the repository root with `make docs-link`. +Deploy an exact eligible source from a clean checkout with: + ```bash -cd docs -uv sync --frozen # one-time: installs zensical into docs/.venv -./zensical-docs.sh serve # live-reload preview -./zensical-docs.sh build # strict production build into docs/site/ +make docs-deploy DOCS_SOURCE=$(git rev-parse HEAD) ``` -Or from the repository root: `make docs-install`, `make docs-serve`, -`make docs-build`. +The command checks that the source is on `origin/main`, descends from the latest +software release, and contains only approved documentation changes. It uploads +an unpromoted production build, waits for Vercel to verify it, repeats the +release check, and only then promotes the build. Deployment does not generate +screenshots, build the product, run Docker, or install frontend dependencies. + +The protected `Deploy documentation` workflow provides the same path for an +explicitly supplied source SHA. A credential-free job checks that SHA against +the release policy from `main` before the protected production job receives +the validated SHA. It has no automatic push, pull-request, tag, or release +trigger. + +Pull-request documentation checks never receive Vercel credentials. The +authenticated upload dry run runs only after a trusted push to `main` and +requires the repository `VERCEL_TOKEN` secret. Production deployment requires +the `VERCEL_TOKEN`, `VERCEL_ORG_ID`, and `VERCEL_PROJECT_ID` secrets on the +protected `production` environment. ## Documentation boundary diff --git a/docs/index.md b/docs/index.md index bac0580f..420452e4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -34,7 +34,7 @@ curl -fsSL https://docbank.ai/install.sh | sh Build agent workflows

-![The Docbank web application browsing a synthetic vault and showing the selected document's stable authority.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/v0.12.0/web-vault-browser.png) +![The Docbank web application browsing a synthetic vault and showing the selected document's stable authority.](https://docbank.ai/assets/generated/web-vault-browser.png)

A real synthetic vault in the local web application. See the visual tour.

diff --git a/docs/llms.txt b/docs/llms.txt index a414da96..25d90f54 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -2,59 +2,63 @@ > Docbank is a self-sovereign document system for people and agents, with indexed retrieval, stable identity, verifiable content, incremental recovery, and audited history. -Every documentation page is also published as raw Markdown at the same path with a `.md` suffix; the links below point at those Markdown routes. +Every public page is also published as raw Markdown at the route listed below. + +## Public Site +- [Docbank](https://docbank.ai/index.md): The system of record for documents your agents can use. +- [Authority lifecycle guide](https://docbank.ai/guide.md): Follow one document from exact source ingestion through governed understanding, bounded retrieval, and verified recovery. ## Overview -- [Your documents. Your agents. One system.](https://docbank.ai/index.md): Docbank is a self-sovereign document storage system for you and your agents, with indexed retrieval, stable identity, verifiable content, incremental recovery, and audited history. +- [Your documents. Your agents. One system.](https://docbank.ai/docs/index.md): Docbank is a self-sovereign document storage system for you and your agents, with indexed retrieval, stable identity, verifiable content, incremental recovery, and audited history. ## Changelog -- [Changelog](https://docbank.ai/changelog.md): Release history. +- [Changelog](https://docbank.ai/docs/changelog.md): Release history. ## Start Here -- [Setup](https://docbank.ai/setup.md): Install docbank on Linux, macOS, or Windows and create the vault. -- [Quickstart](https://docbank.ai/quickstart.md): A ten-minute tour of the docbank CLI. -- [Capabilities](https://docbank.ai/capabilities.md): What Docbank does for people, agents, applications, recovery, and physical storage. -- [Visual Tour](https://docbank.ai/tour.md): See Docbank's real web and terminal interfaces running against synthetic document vaults. +- [Setup](https://docbank.ai/docs/setup.md): Install docbank on Linux, macOS, or Windows and create the vault. +- [Quickstart](https://docbank.ai/docs/quickstart.md): A ten-minute tour of the docbank CLI. +- [Capabilities](https://docbank.ai/docs/capabilities.md): What Docbank does for people, agents, applications, recovery, and physical storage. +- [Visual Tour](https://docbank.ai/docs/tour.md): See Docbank's real web and terminal interfaces running against synthetic document vaults. ## Work with Documents -- [Importing Documents](https://docbank.ai/usage/importing.md): Bulk import semantics — recursion, idempotency, collision suffixing, and failure handling. -- [Organizing & Tagging](https://docbank.ai/usage/organizing.md): Browsing, moving, renaming, and tagging in the virtual tree. -- [Searching](https://docbank.ai/usage/searching.md): Ranked, prefix-matching search over document names and verified text content. -- [Web application](https://docbank.ai/usage/web.md): Upload, browse, search, and organize the local vault in a responsive, authenticated web interface. -- [Interactive terminal browser](https://docbank.ai/usage/tui.md): Browse documents, inspect authority, storage, backups, and permanent history, and safely move or restore recoverable trash from the TUI. +- [Importing Documents](https://docbank.ai/docs/usage/importing.md): Bulk import semantics — recursion, idempotency, collision suffixing, and failure handling. +- [Organizing & Tagging](https://docbank.ai/docs/usage/organizing.md): Browsing, moving, renaming, and tagging in the virtual tree. +- [Searching](https://docbank.ai/docs/usage/searching.md): Ranked, prefix-matching search over document names and verified text content. +- [Web application](https://docbank.ai/docs/usage/web.md): Upload, browse, search, and organize the local vault in a responsive, authenticated web interface. +- [Interactive terminal browser](https://docbank.ai/docs/usage/tui.md): Browse documents, inspect authority, storage, backups, and permanent history, and safely move or restore recoverable trash from the TUI. ## Protect & Operate -- [Vault Lifecycle](https://docbank.ai/usage/lifecycle.md): Operate a docbank vault safely from first import through maintenance, upgrades, snapshots, and recovery. -- [Permanent Audited History](https://docbank.ai/usage/audited-history.md): Permanently retain every version and recorded change beneath a reviewed directory scope. -- [Trash, GC, Repack & Verify](https://docbank.ai/usage/trash-and-gc.md): The explicit deletion and physical-reclamation lifecycle. -- [Multi-store Storage](https://docbank.ai/usage/storage.md): Keep document bytes local-first, add filesystem or S3-compatible stores, and move verified authority deliberately. -- [Backup & Restore](https://docbank.ai/usage/backup.md): Create incremental, verifiable snapshots in an immutable repository. -- [Troubleshooting](https://docbank.ai/troubleshooting.md): Diagnose docbank startup, daemon, import, integrity, update, and HTTP API failures without risking the vault. +- [Vault Lifecycle](https://docbank.ai/docs/usage/lifecycle.md): Operate a docbank vault safely from first import through maintenance, upgrades, snapshots, and recovery. +- [Permanent Audited History](https://docbank.ai/docs/usage/audited-history.md): Permanently retain every version and recorded change beneath a reviewed directory scope. +- [Trash, GC, Repack & Verify](https://docbank.ai/docs/usage/trash-and-gc.md): The explicit deletion and physical-reclamation lifecycle. +- [Multi-store Storage](https://docbank.ai/docs/usage/storage.md): Keep document bytes local-first, add filesystem or S3-compatible stores, and move verified authority deliberately. +- [Backup & Restore](https://docbank.ai/docs/usage/backup.md): Create incremental, verifiable snapshots in an immutable repository. +- [Troubleshooting](https://docbank.ai/docs/troubleshooting.md): Diagnose docbank startup, daemon, import, integrity, update, and HTTP API failures without risking the vault. ## Automate & Integrate -- [Docbank for Agents](https://docbank.ai/agents.md): Why agents use docbank, which interface to choose, and the safety model for document automation. -- [Agent Integration Guide](https://docbank.ai/agents/integration.md): Connect an agent to docbank safely using its OpenAPI contract, authenticated HTTP API, revisions, and dry-run maintenance operations. -- [Embed in Go](https://docbank.ai/embedding.md): Own one or more independently rooted Docbank vaults inside a Go application, with CGO or pure-Go SQLite. -- [Document Understanding in Go](https://docbank.ai/document-understanding.md): Normalize and prepare documents for search, use bounded Mistral OCR, and embed images and video through Voyage without opening a Docbank vault. +- [Docbank for Agents](https://docbank.ai/docs/agents.md): Why agents use docbank, which interface to choose, and the safety model for document automation. +- [Agent Integration Guide](https://docbank.ai/docs/agents/integration.md): Connect an agent to docbank safely using its OpenAPI contract, authenticated HTTP API, revisions, and dry-run maintenance operations. +- [Embed in Go](https://docbank.ai/docs/embedding.md): Own one or more independently rooted Docbank vaults inside a Go application, with CGO or pure-Go SQLite. +- [Document Understanding in Go](https://docbank.ai/docs/document-understanding.md): Normalize and prepare documents for search, use bounded Mistral OCR, and embed images and video through Voyage without opening a Docbank vault. ## Reference -- [CLI Reference](https://docbank.ai/cli-reference.md): Every docbank command, flag, output format, and error behavior. -- [Configuration](https://docbank.ai/configuration.md): Vault location, data layout, config.toml, and environment variables. -- [HTTP API](https://docbank.ai/architecture/http-api.md): The agent-first HTTP API — filesystem-shaped endpoints, revision preconditions, and the daemon's error contract. +- [CLI Reference](https://docbank.ai/docs/cli-reference.md): Every docbank command, flag, output format, and error behavior. +- [Configuration](https://docbank.ai/docs/configuration.md): Vault location, data layout, config.toml, and environment variables. +- [HTTP API](https://docbank.ai/docs/architecture/http-api.md): The agent-first HTTP API — filesystem-shaped endpoints, revision preconditions, and the daemon's error contract. ## How It Works -- [How Docbank Works](https://docbank.ai/architecture/overview.md): A guided model of vaults, document identity, immutable content, storage authority, deletion, and recovery. -- [Source Metadata](https://docbank.ai/architecture/source-metadata.md): How Docbank records bounded facts found inside original files. -- [Visual Previews](https://docbank.ai/architecture/visual-previews.md): How Docbank identifies and retains canonical visual derivatives. -- [Storage](https://docbank.ai/architecture/storage.md): The SQLite schema, blob store layout, durability discipline, and enforced invariants. -- [Loose & Packed Content](https://docbank.ai/architecture/packed-storage.md): The shared Kit packed-CAS layer and docbank's application-owned authority boundary. -- [Editing & Versions](https://docbank.ai/architecture/editing-and-versions.md): Stable content-version identity, retrieval, replacement, reversion, and retention over immutable content. -- [Ownership & Concurrency](https://docbank.ai/architecture/locking.md): How daemon and embedded owners coordinate concurrent access with SQLite, hierarchy locks, and owner-local operation gates. -- [Daemon & Process Model](https://docbank.ai/architecture/daemon.md): docbank daemon run — the single process that owns the vault, and how the CLI discovers, auto-starts, and stops it. -- [Backup & Recovery](https://docbank.ai/architecture/backup.md): Docbank's JSONL-native Kit snapshot and restore architecture. -- [Integrity & Trust](https://docbank.ai/architecture/integrity.md): What docbank defends against, which layer owns each integrity guarantee, and the trade-offs that were considered and deliberately not taken. -- [Audited History](https://docbank.ai/architecture/audited-history.md): The permanent, tamper-evident history model for protected directory scopes, content versions, backup, agents, and future interactive clients. +- [How Docbank Works](https://docbank.ai/docs/architecture/overview.md): A guided model of vaults, document identity, immutable content, storage authority, deletion, and recovery. +- [Source Metadata](https://docbank.ai/docs/architecture/source-metadata.md): How Docbank records bounded facts found inside original files. +- [Visual Previews](https://docbank.ai/docs/architecture/visual-previews.md): How Docbank identifies and retains canonical visual derivatives. +- [Storage](https://docbank.ai/docs/architecture/storage.md): The SQLite schema, blob store layout, durability discipline, and enforced invariants. +- [Loose & Packed Content](https://docbank.ai/docs/architecture/packed-storage.md): The shared Kit packed-CAS layer and docbank's application-owned authority boundary. +- [Editing & Versions](https://docbank.ai/docs/architecture/editing-and-versions.md): Stable content-version identity, retrieval, replacement, reversion, and retention over immutable content. +- [Ownership & Concurrency](https://docbank.ai/docs/architecture/locking.md): How daemon and embedded owners coordinate concurrent access with SQLite, hierarchy locks, and owner-local operation gates. +- [Daemon & Process Model](https://docbank.ai/docs/architecture/daemon.md): docbank daemon run — the single process that owns the vault, and how the CLI discovers, auto-starts, and stops it. +- [Backup & Recovery](https://docbank.ai/docs/architecture/backup.md): Docbank's JSONL-native Kit snapshot and restore architecture. +- [Integrity & Trust](https://docbank.ai/docs/architecture/integrity.md): What docbank defends against, which layer owns each integrity guarantee, and the trade-offs that were considered and deliberately not taken. +- [Audited History](https://docbank.ai/docs/architecture/audited-history.md): The permanent, tamper-evident history model for protected directory scopes, content versions, backup, agents, and future interactive clients. ## Project -- [Roadmap](https://docbank.ai/roadmap.md): What is implemented today and what each phase adds. -- [License](https://docbank.ai/license.md): Docbank is open-source software licensed under the Apache License, Version 2.0. +- [Roadmap](https://docbank.ai/docs/roadmap.md): What is implemented today and what each phase adds. +- [License](https://docbank.ai/docs/license.md): Docbank is open-source software licensed under the Apache License, Version 2.0. diff --git a/docs/scripts/check_built_site.py b/docs/scripts/check_built_site.py index 7d636919..524528ed 100644 --- a/docs/scripts/check_built_site.py +++ b/docs/scripts/check_built_site.py @@ -36,13 +36,26 @@ def handle_starttag(self, tag: str, attrs: list[tuple[str, str | None]]) -> None def local_target( - site: pathlib.Path, page: pathlib.Path, raw: str + site: pathlib.Path, page: pathlib.Path, raw: str, url_prefix: str = "" ) -> tuple[pathlib.Path, str] | None: parsed = urllib.parse.urlsplit(raw) if parsed.scheme or parsed.netloc: return None if parsed.path: - target = site / parsed.path.lstrip("/") if parsed.path.startswith("/") else page.parent / parsed.path + if parsed.path.startswith("/"): + normalized_prefix = f"/{url_prefix.strip('/')}" if url_prefix else "" + if normalized_prefix: + if parsed.path == normalized_prefix: + local_path = "/" + elif parsed.path.startswith(f"{normalized_prefix}/"): + local_path = parsed.path[len(normalized_prefix) :] + else: + return None + else: + local_path = parsed.path + target = site / local_path.lstrip("/") + else: + target = page.parent / parsed.path if parsed.path.endswith("/") or target.suffix == "": target /= "index.html" else: @@ -63,6 +76,7 @@ def markdown_output(site: pathlib.Path, rel: pathlib.Path) -> pathlib.Path: def main() -> None: site = pathlib.Path(sys.argv[1] if len(sys.argv) > 1 else "site").resolve() source = pathlib.Path(sys.argv[2]).resolve() if len(sys.argv) > 2 else None + url_prefix = sys.argv[3] if len(sys.argv) > 3 else "" errors: list[str] = [] llms_source = source / "llms.txt" if source is not None else None @@ -120,14 +134,8 @@ def main() -> None: f"og:{field}" ): errors.append(f"{rel}: Twitter {field} differs from Open Graph {field}") - if ( - rel == pathlib.Path("index.html") - and parser.metadata.get("og:title") - != "Your documents. Your agents. One system." - ): - errors.append("index.html: social title differs from the homepage message") for raw in parser.urls: - local = local_target(site, page, raw) + local = local_target(site, page, raw, url_prefix) if local is None: continue target, fragment = local diff --git a/docs/scripts/check_built_site_test.py b/docs/scripts/check_built_site_test.py new file mode 100644 index 00000000..0cda3d43 --- /dev/null +++ b/docs/scripts/check_built_site_test.py @@ -0,0 +1,35 @@ +from __future__ import annotations + +import pathlib +import tempfile +import unittest + +from check_built_site import local_target + + +class LocalTargetTest(unittest.TestCase): + def test_strips_the_published_subpath_from_root_relative_urls(self) -> None: + with tempfile.TemporaryDirectory() as temporary: + site = pathlib.Path(temporary) / "docs" + page = site / "usage" / "example" / "index.html" + + target, fragment = local_target( + site, + page, + "/docs/assets/stylesheets/main.css#theme", + "/docs", + ) + + self.assertEqual(target, (site / "assets/stylesheets/main.css").resolve()) + self.assertEqual(fragment, "theme") + + def test_ignores_root_routes_owned_by_another_site_tier(self) -> None: + with tempfile.TemporaryDirectory() as temporary: + site = pathlib.Path(temporary) / "docs" + page = site / "index.html" + + self.assertIsNone(local_target(site, page, "/guide/", "/docs")) + + +if __name__ == "__main__": + unittest.main() diff --git a/docs/scripts/check_markdown_sources.py b/docs/scripts/check_markdown_sources.py index 34782e8a..da2b5c88 100644 --- a/docs/scripts/check_markdown_sources.py +++ b/docs/scripts/check_markdown_sources.py @@ -59,7 +59,13 @@ def nav_paths(value: object) -> set[str]: return result -LLMS_BASE_URL = "https://docbank.ai/" +LLMS_BASE_URL = "https://docbank.ai/docs/" +LLMS_PUBLIC_SITE = [ + "## Public Site", + "- [Docbank](https://docbank.ai/index.md): The system of record for documents your agents can use.", + "- [Authority lifecycle guide](https://docbank.ai/guide.md): Follow one document from exact source ingestion through governed understanding, bounded retrieval, and verified recovery.", + "", +] def frontmatter_field(path: pathlib.Path, field: str) -> str: @@ -114,7 +120,7 @@ def check_llms_txt(config: dict, errors: list[str]) -> None: actual = [line.rstrip() for line in lines[first_section:]] while actual and not actual[-1]: actual.pop() - expected = expected_llms_sections(config["project"]["nav"]) + expected = LLMS_PUBLIC_SITE + expected_llms_sections(config["project"]["nav"]) while expected and not expected[-1]: expected.pop() if actual != expected: diff --git a/docs/scripts/check_zensical_subpath.py b/docs/scripts/check_zensical_subpath.py new file mode 100644 index 00000000..d64590e6 --- /dev/null +++ b/docs/scripts/check_zensical_subpath.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import html.parser +import pathlib +import shutil +import subprocess +import tempfile +import urllib.parse + + +DOCS_ROOT = pathlib.Path(__file__).resolve().parents[1] + + +class ParsedPage(html.parser.HTMLParser): + def __init__(self) -> None: + super().__init__() + self.canonical = "" + self.metadata: dict[str, str] = {} + self.urls: list[str] = [] + + def handle_starttag( + self, tag: str, attrs: list[tuple[str, str | None]] + ) -> None: + values = {key: value or "" for key, value in attrs} + if tag == "link" and values.get("rel") == "canonical": + self.canonical = values.get("href", "") + if tag == "meta" and values.get("property") and values.get("content"): + self.metadata[values["property"]] = values["content"] + for key in ("href", "src"): + if values.get(key): + self.urls.append(values[key]) + + @classmethod + def from_file(cls, path: pathlib.Path) -> ParsedPage: + parsed = cls() + parsed.feed(path.read_text(encoding="utf-8")) + return parsed + + +def write_project(root: pathlib.Path) -> pathlib.Path: + source = root / "source" + output = root / "site" + (source / "usage").mkdir(parents=True) + (source / "stylesheets").mkdir() + shutil.copytree(DOCS_ROOT / "overrides", root / "overrides") + (source / "index.md").write_text( + "---\ntitle: Overview\ndescription: Subpath overview.\n---\n\n" + "# Overview\n\n[Example](usage/example.md)\n", + encoding="utf-8", + ) + (source / "usage" / "example.md").write_text( + "---\ntitle: Example\ndescription: Subpath example.\n---\n\n" + "# Example\n\n[Overview](../index.md)\n", + encoding="utf-8", + ) + shutil.copyfile( + DOCS_ROOT / "stylesheets" / "extra.css", + source / "stylesheets" / "extra.css", + ) + + config = root / "zensical.toml" + config.write_text( + "\n".join( + [ + "[project]", + 'site_name = "docbank subpath probe"', + 'site_url = "https://docbank.ai/docs/"', + 'site_description = "Executable Zensical subpath probe."', + 'docs_dir = "source"', + 'site_dir = "site"', + 'extra_css = ["stylesheets/extra.css"]', + "use_directory_urls = true", + 'nav = [{"Overview" = "index.md"}, {"Usage" = [{"Example" = "usage/example.md"}]}]', + "", + "[project.theme]", + 'variant = "modern"', + "font = false", + 'custom_dir = "overrides"', + "", + ] + ), + encoding="utf-8", + ) + return output + + +def assert_site(output: pathlib.Path) -> None: + expected = { + "index.html": "https://docbank.ai/docs/", + "usage/example/index.html": "https://docbank.ai/docs/usage/example/", + } + for relative, canonical in expected.items(): + page = output / relative + if not page.is_file(): + raise AssertionError(f"missing rendered page: {relative}") + parsed = ParsedPage.from_file(page) + if parsed.canonical != canonical: + raise AssertionError( + f"{relative}: canonical is {parsed.canonical!r}, expected {canonical!r}" + ) + if parsed.metadata.get("og:url") != canonical: + raise AssertionError( + f"{relative}: og:url is {parsed.metadata.get('og:url')!r}, " + f"expected {canonical!r}" + ) + for raw_url in parsed.urls: + resolved = urllib.parse.urljoin(canonical, raw_url) + parsed_url = urllib.parse.urlsplit(resolved) + if parsed_url.netloc == "docbank.ai" and not parsed_url.path.startswith( + "/docs/" + ): + raise AssertionError( + f"{relative}: local URL escapes /docs/: {raw_url!r}" + ) + +def main() -> None: + with tempfile.TemporaryDirectory( + prefix="zensical-subpath-", dir=DOCS_ROOT + ) as temporary: + root = pathlib.Path(temporary) + output = write_project(root) + subprocess.run( + [ + "uv", + "run", + "--project", + str(DOCS_ROOT), + "--frozen", + "--no-dev", + "zensical", + "build", + "--strict", + "--config-file", + str(root / "zensical.toml"), + ], + cwd=DOCS_ROOT, + check=True, + ) + assert_site(output) + print("Zensical /docs/ subpath behavior passed") + + +if __name__ == "__main__": + main() diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 8d5102fa..6ac19498 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -1,276 +1,120 @@ -/* docbank: an archive desk at night. Deep ink surfaces, paper-warm details. */ +@font-face { font-family: "Inter"; src: url("/fonts/Inter-Regular.woff2") format("woff2"); font-style: normal; font-weight: 400; font-display: swap; } +@font-face { font-family: "Inter"; src: url("/fonts/Inter-Medium.woff2") format("woff2"); font-style: normal; font-weight: 500; font-display: swap; } +@font-face { font-family: "Inter"; src: url("/fonts/Inter-SemiBold.woff2") format("woff2"); font-style: normal; font-weight: 600; font-display: swap; } +@font-face { font-family: "JetBrains Mono"; src: url("/fonts/JetBrainsMono-Regular.woff2") format("woff2"); font-style: normal; font-weight: 400; font-display: swap; } +@font-face { font-family: "JetBrains Mono"; src: url("/fonts/JetBrainsMono-SemiBold.woff2") format("woff2"); font-style: normal; font-weight: 600; font-display: swap; } +@font-face { font-family: "JetBrains Mono"; src: url("/fonts/JetBrainsMono-Bold.woff2") format("woff2"); font-style: normal; font-weight: 700; font-display: swap; } :root { - --md-text-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; - --md-code-font: "SFMono-Regular", Consolas, "Liberation Mono", monospace; + --md-text-font: "Inter", system-ui, sans-serif; + --md-code-font: "JetBrains Mono", ui-monospace, monospace; } [data-md-color-scheme="slate"] { - --md-hue: 205; - --db-bg: #0a0f14; - --db-raised: #0e151c; - --db-panel: #121b23; - --db-panel-hover: #17232d; - --db-border: #263541; - --db-border-strong: #466170; - --db-text: #e8edf0; - --db-muted: #9aabb5; - --db-paper: #e5c991; - --db-accent: #79c9bc; - --db-accent-bright: #a1e1d6; - --md-default-bg-color: var(--db-bg); + --md-hue: 165; + --db-ink: #071411; + --db-panel: #0c1e1a; + --db-panel-raised: #102822; + --db-rule: #25473f; + --db-teal: #41d7bd; + --db-teal-strong: #78ead6; + --db-text: #edf8f4; + --db-muted: #a7c1ba; + --md-default-bg-color: var(--db-ink); --md-default-fg-color: var(--db-text); - --md-default-fg-color--light: #c2ccd1; - --md-default-fg-color--lighter: #85959f; - --md-primary-fg-color: var(--db-raised); - --md-primary-fg-color--light: var(--db-panel); - --md-primary-fg-color--dark: var(--db-bg); + --md-default-fg-color--light: var(--db-muted); + --md-default-fg-color--lighter: #76948c; + --md-primary-fg-color: var(--db-panel); + --md-primary-fg-color--light: var(--db-panel-raised); + --md-primary-fg-color--dark: var(--db-ink); --md-primary-bg-color: var(--db-text); - --md-accent-fg-color: var(--db-accent-bright); - --md-typeset-a-color: var(--db-accent); - --md-code-bg-color: #101820; - /* Mermaid inherits accent/code variables this palette doesn't define; - set the diagram colors explicitly. All pairs are WCAG-checked against - the dark surface: node text 12.7:1, edge labels 8.1:1, borders 7.8:1. */ - --md-mermaid-node-bg-color: #1a292c; - --md-mermaid-node-fg-color: var(--db-accent); + --md-accent-fg-color: var(--db-teal-strong); + --md-typeset-a-color: var(--db-teal); + --md-code-bg-color: var(--db-panel); + --md-mermaid-node-bg-color: var(--db-panel-raised); + --md-mermaid-node-fg-color: var(--db-teal); --md-mermaid-edge-color: var(--db-muted); - --md-mermaid-label-bg-color: var(--db-bg); + --md-mermaid-label-bg-color: var(--db-ink); --md-mermaid-label-fg-color: var(--db-text); } .md-header, .md-tabs { - background: color-mix(in srgb, var(--db-raised) 94%, transparent); - border-bottom: 1px solid var(--db-border); - backdrop-filter: blur(12px); -} - -.md-typeset { - font-size: 0.82rem; -} - -.md-typeset a { - color: var(--db-accent); - text-decoration-thickness: 0.06em; - text-underline-offset: 0.18em; + background: var(--db-panel); + border-bottom: 1px solid var(--db-rule); } +.md-typeset { font-size: 0.84rem; } +.md-typeset a { color: var(--db-teal); text-decoration-thickness: 0.06em; text-underline-offset: 0.18em; } .md-typeset a:hover, .md-nav__link:hover, -.md-nav__link--active { - color: var(--db-accent-bright); -} - -.md-nav__item .md-nav__link--active { - background: rgba(121, 201, 188, 0.07); - box-shadow: inset 2px 0 0 var(--db-accent); -} - +.md-nav__link--active { color: var(--db-teal-strong); } +.md-nav__item .md-nav__link--active { padding-left: 0.6rem; border-left: 2px solid var(--db-teal); background: var(--db-panel); } .md-nav__item--section > .md-nav__link, -.md-nav__title { - letter-spacing: 0.015em; -} +.md-nav__title { letter-spacing: 0.015em; } .md-typeset h1, .md-typeset h2, .md-typeset h3, -.md-typeset h4 { - color: #f4f6f7; - font-weight: 620; - letter-spacing: -0.018em; -} - -.md-typeset h1 { - max-width: 24ch; - margin-bottom: 0.65em; - font-size: clamp(1.4rem, 3.5vw, 2.3rem); - line-height: 1.1; -} - -.md-typeset h2 { - padding-bottom: 0.32em; - border-bottom: 1px solid var(--db-border); -} - -.md-typeset .eyebrow { - margin: 0 0 0.8rem; - color: var(--db-paper); - font-family: var(--md-code-font); - font-size: 0.7rem; - font-weight: 700; - letter-spacing: 0.16em; -} - -.md-typeset .hero-actions { - display: flex; - flex-wrap: wrap; - gap: 0.7rem; - margin: 1.4rem 0 2rem; -} - -.md-typeset .image-caption { - margin: -0.65rem 0 2rem; - color: var(--db-muted); - font-size: 0.72rem; - text-align: center; -} - -.md-typeset img { - border: 1px solid var(--db-border); - border-radius: 4px; - box-shadow: 0 18px 48px rgba(0, 0, 0, 0.28); -} - -.md-typeset .md-button { - border-color: var(--db-border-strong); - border-radius: 2px; -} - -.md-typeset .md-button--primary { - background: var(--db-accent); - border-color: var(--db-accent); - color: #07100f; -} - +.md-typeset h4 { color: var(--db-text); font-weight: 600; letter-spacing: -0.018em; } +.md-typeset h1 { max-width: 24ch; margin-bottom: 0.65em; font-size: clamp(1.5rem, 3.5vw, 2.4rem); line-height: 1.1; } +.md-typeset h2 { padding-bottom: 0.32em; border-bottom: 1px solid var(--db-rule); } +.md-typeset .eyebrow { margin: 0 0 0.8rem; color: var(--db-teal); font-family: var(--md-code-font); font-size: 0.7rem; font-weight: 700; letter-spacing: 0.14em; } +.md-typeset .hero-actions { display: flex; flex-wrap: wrap; gap: 0.7rem; margin: 1.4rem 0 2rem; } +.md-typeset .image-caption { margin: -0.65rem 0 2rem; color: var(--db-muted); font-size: 0.72rem; text-align: center; } +.md-typeset img { border: 1px solid var(--db-rule); border-radius: 4px; } + +.md-typeset .md-button { border-color: var(--db-rule); border-radius: 3px; } +.md-typeset .md-button:hover, +.md-typeset .md-button:focus { border-color: var(--db-teal); background: var(--db-panel-raised); } +.md-typeset .md-button--primary { border-color: var(--db-teal); color: var(--db-ink); background: var(--db-teal); } .md-typeset .md-button--primary:hover, -.md-typeset .md-button--primary:focus { - background: var(--db-accent-bright); - border-color: var(--db-accent-bright); - color: #07100f; -} +.md-typeset .md-button--primary:focus { border-color: var(--db-teal-strong); color: var(--db-ink); background: var(--db-teal-strong); } .md-typeset .signal-grid, -.md-typeset .feature-grid { - display: grid; - gap: 0.8rem; - margin: 1.4rem 0 2.2rem; -} - -.md-typeset .signal-grid { - grid-template-columns: repeat(3, minmax(0, 1fr)); -} - +.md-typeset .feature-grid { display: grid; gap: 1px; margin: 1.4rem 0 2.2rem; padding: 1px; background: var(--db-rule); } +.md-typeset .signal-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .md-typeset .signal-grid section, -.md-typeset .feature-grid section { - min-width: 0; - padding: 1rem; - background: linear-gradient(145deg, var(--db-panel), #0f171e); - border: 1px solid var(--db-border); - border-radius: 2px; -} - -.md-typeset .signal-grid section { - display: flex; - flex-direction: column; - gap: 0.38rem; -} - -.md-typeset .signal-grid strong { - color: var(--db-paper); - font-family: var(--md-code-font); - font-size: 0.72rem; - letter-spacing: 0.08em; - text-transform: uppercase; -} - -.md-typeset .signal-grid span { - color: var(--db-muted); - font-size: 0.78rem; - line-height: 1.45; -} - -.md-typeset .feature-grid { - grid-template-columns: repeat(2, minmax(0, 1fr)); -} - -.md-typeset .feature-grid section:hover { - background: var(--db-panel-hover); - border-color: var(--db-border-strong); -} - -.md-typeset .feature-grid h3 { - margin: 0 0 0.42rem; - color: var(--db-paper); - font-size: 1rem; -} - -.md-typeset .feature-grid p { - margin: 0; - color: var(--db-muted); -} +.md-typeset .feature-grid section { min-width: 0; padding: 1rem; background: var(--db-panel); } +.md-typeset .signal-grid section { display: flex; flex-direction: column; gap: 0.38rem; } +.md-typeset .signal-grid strong { color: var(--db-teal-strong); font-family: var(--md-code-font); font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; } +.md-typeset .signal-grid span, +.md-typeset .feature-grid p { color: var(--db-muted); } +.md-typeset .feature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } +.md-typeset .feature-grid section:hover { background: var(--db-panel-raised); } +.md-typeset .feature-grid h3 { margin: 0 0 0.42rem; color: var(--db-teal-strong); font-size: 1rem; } +.md-typeset .feature-grid p { margin: 0; } .md-typeset .admonition, -.md-typeset details { - background: var(--db-panel); - border-color: var(--db-border-strong); - border-radius: 2px; -} - +.md-typeset details { border-color: var(--db-rule); border-radius: 3px; background: var(--db-panel); } .md-typeset .admonition-title, -.md-typeset summary { - background: rgba(229, 201, 145, 0.07); -} - -.md-typeset table:not([class]) { - border-collapse: collapse; - font-size: 0.76rem; -} - -.md-typeset table:not([class]) th { - background: #15212a; - color: var(--db-paper); - font-weight: 650; -} - +.md-typeset summary { background: var(--db-panel-raised); } +.md-typeset table:not([class]) { border-collapse: collapse; font-size: 0.76rem; } +.md-typeset table:not([class]) th { color: var(--db-teal-strong); background: var(--db-panel-raised); font-weight: 600; } .md-typeset table:not([class]) th, -.md-typeset table:not([class]) td { - padding: 0.58em 0.76em; - border-color: var(--db-border); - vertical-align: top; -} - -.md-typeset table:not([class]) tr:nth-child(even) { - background: rgba(255, 255, 255, 0.016); -} - -.md-typeset code:not(pre code) { - padding: 0.1em 0.3em; - background: var(--md-code-bg-color); - border: 1px solid var(--db-border); - border-radius: 2px; -} - +.md-typeset table:not([class]) td { padding: 0.58em 0.76em; border-color: var(--db-rule); vertical-align: top; } +.md-typeset table:not([class]) tr:nth-child(even) { background: var(--db-panel); } +.md-typeset code:not(pre code) { padding: 0.1em 0.3em; border: 1px solid var(--db-rule); border-radius: 2px; background: var(--md-code-bg-color); } .md-typeset .highlight pre, -.md-typeset .mermaid { - background: #0e161d; - border: 1px solid var(--db-border); - border-radius: 2px; -} - -.md-typeset .mermaid { - padding: 1rem; - overflow-x: auto; -} - -::selection { - background: #31564f; - color: #ffffff; -} +.md-typeset .mermaid { border: 1px solid var(--db-rule); border-radius: 3px; background: var(--db-panel); } +.md-typeset .mermaid { padding: 1rem; overflow-x: auto; } -:focus-visible { - outline: 2px solid var(--db-accent); - outline-offset: 2px; -} +::selection { color: var(--db-ink); background: var(--db-teal-strong); } +:focus-visible { outline: 2px solid var(--db-teal); outline-offset: 3px; } @media (max-width: 50rem) { .md-typeset .signal-grid, - .md-typeset .feature-grid { - grid-template-columns: 1fr; - } - - .md-typeset .hero-actions .md-button { - width: 100%; - text-align: center; + .md-typeset .feature-grid { grid-template-columns: 1fr; } + .md-typeset .hero-actions .md-button { width: 100%; text-align: center; } +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; } } diff --git a/docs/superpowers/specs/2026-08-30-tiered-documentation-site-design.md b/docs/superpowers/specs/2026-08-30-tiered-documentation-site-design.md new file mode 100644 index 00000000..3d1ca9dc --- /dev/null +++ b/docs/superpowers/specs/2026-08-30-tiered-documentation-site-design.md @@ -0,0 +1,248 @@ +# Tiered Documentation Site Design + +## Objective + +Give Docbank one public site with three deliberate levels of depth: + +- `https://docbank.ai/` establishes the product identity and install path. +- `https://docbank.ai/guide/` explains the document authority lifecycle through a visual operator tour. +- `https://docbank.ai/docs/` contains precise operating and architecture documentation. + +The site describes Docbank as it will exist after the current document-processing, retrieval, interface, and Model Context Protocol pull-request stack lands. Implementation begins from `origin/main`, but this branch must not merge or deploy until the dependent stack through PR #239 lands. After the stack lands, the branch is updated from `main`; its capability wording, navigation, examples, screenshots, and tests are reconciled against the landed code rather than the earlier pull-request descriptions. Publication waits for the corresponding software release and post-tag documentation follow-up. + +## Audience and position + +The primary reader is a highly technical operator or builder responsible for durable AI document workflows. They evaluate systems through authority boundaries, failure behavior, data portability, deployment control, and recovery evidence. The site must explain those properties directly instead of borrowing generic AI-product language. + +The core position is: + +> The system of record for documents your agents can use. + +Docbank keeps original documents authoritative while governed processing produces searchable renditions and embeddings. Every derivative and retrieval result remains tied to exact source identity, explicit disclosure, and a recovery path controlled by the operator. + +The organizing idea is the **authority lifecycle**: + +1. Ingest exact source bytes without changing the source. +2. Assign stable document identity and immutable content-version identity. +3. Review provider disclosure, retained classes, estimates, and consent before processing. +4. Publish renditions and embedding sets as derivatives, never replacement authority. +5. Retrieve lexically, semantically, or in hybrid mode behind an exact source-version fence. +6. Serve bounded access through the CLI, web application, terminal UI, HTTP API, embedded Go API, and MCP server. +7. Verify, audit, back up, restore, and rebuild without converting a provider or index into authority. + +“AI-native” describes the resulting operating model, not a visual theme or an excuse for vague claims. Copy uses the actual Docbank nouns: source version, processing plan, consent, rendition, embedding set, source fence, receipt, audit, backup, and restore. + +## Public tiers + +### Product page: `/` + +The static product page answers four questions in order: + +1. What is Docbank? An authoritative document system for technical operators and agents. +2. What makes it different? Original authority remains distinct from derived machine understanding. +3. What can an operator do? Store, version, process, retrieve, expose, audit, and recover documents through one governed system. +4. What is the next action? Install the current release or read the guide. + +The page contains: + +- A compact header with Docbank, Guide, Docs, and GitHub. +- A hero with the core position, concrete supporting copy, install and guide actions, and platform/license facts. +- A document authority ledger showing Source, Authorization, Understanding, Retrieval, and Recovery states. +- Four proof sections: keep the source sovereign, govern machine understanding, constrain every answer, and restore the record. +- A real product capture from the pinned screenshot set. +- A section explaining local, self-hosted, and hosted processing choices without turning a provider list into the product identity. +- A section showing one authority across the CLI, web, TUI, HTTP, embedded Go API, and MCP. +- A direct comparison with cloud drives and storage appliances that preserves Docbank’s existing archive/system-of-record boundary. +- A final guide/install call to action and a restrained legal footer. + +The page does not use synthetic AI artwork, network-node illustrations, fabricated dashboards, vanity metrics, customer logos, or unprovable security language. + +### Operator guide: `/guide/` + +The guide is a seven-stop visual explanation of one document’s path through Docbank: + +1. **Ingest** — copy exact source bytes into a virtual tree while leaving the source untouched. +2. **Identify** — show stable node identity, immutable versions, checksums, moves, and replacement history. +3. **Authorize** — inspect a processing plan, provider flow, retained classes, estimate, fingerprint, and consent state before egress. +4. **Understand** — build and inspect retained sanitized Markdown, normalized evidence, embedding sets, independent coverage, and durable jobs. +5. **Retrieve** — run lexical, semantic, hybrid, or automatic retrieval over an exact source-version fence and inspect the evidence used. +6. **Serve** — use the same authority through human interfaces, automation APIs, embedding, and the bounded MCP server. +7. **Prove** — verify content, inspect audited history, create and verify a backup, restore without provider calls, and rebuild disposable indexes. + +Each stop uses an actual synthetic-vault capture or a compact native diagram derived from product contracts. Each stop links to the corresponding operating documentation. The guide avoids duplicating full command references. + +### Operating documentation: `/docs/` + +The existing Zensical content moves under `/docs/`. Its navigation continues to separate starting, document work, protection and operations, automation and integration, reference, architecture, and project status. + +The incoming stack’s document-processing, source-fenced retrieval, processing-configuration, derivative-architecture, and MCP pages remain operating documentation. Their final routes remove the ambiguous duplicate names introduced by the stack: + +- Existing `usage/searching.md` becomes **Catalog search** and continues to cover names, verified current plain text, tags, media types, directories, and modification times. +- Incoming `usage/search.md` moves to `usage/retrieval.md` as **Source-fenced retrieval** and covers lexical, semantic, hybrid, and automatic retrieval over processed derivatives. +- Existing root `configuration.md` becomes **Vault and daemon configuration**. +- Incoming `usage/configuration.md` moves to `usage/processing-configuration.md` as **Processing configuration**. + +The post-stack reconciliation performs those moves, updates links and `llms.txt`, and preserves the exact contracts of both workflows. + +## Visual language + +The site uses a flat teal-on-ink system: + +- Solid ink backgrounds and slightly raised solid panels. +- Thin, precise rules to establish hierarchy. +- One restrained teal accent for active states, links, and primary actions. +- Off-white primary text and quiet blue-green gray secondary text. +- Square or minimally rounded geometry. +- No gradients, glows, glass effects, translucent floating panels, decorative blobs, particle fields, or “AI network” imagery. +- No ornamental motion. Any transition must clarify interaction state and respect reduced-motion preferences. + +The authority ledger is the main graphic motif. It presents meaningful identities and states rather than decoration. + +### Typography + +Vendor pinned WOFF2 files and their license texts for the fonts required by the public site: + +- **JetBrains Mono** for the wordmark, headings, navigation, labels, code, identifiers, and lifecycle states. +- **Inter** for paragraphs, tables, captions, long-form documentation, and other continuous reading. + +Body text uses Inter 400 with generous line height. Inter 500 or 600 provides emphasis. The site does not use font weights below 400; visual lightness comes from spacing, scale, and color contrast rather than fragile hairline glyphs. JetBrains Mono uses 600 or 700 for display hierarchy and 400 for code. + +All text and interactive states must meet WCAG AA contrast. Focus states are visible and use the same teal system. + +Zensical sets `project.theme.font = false` so it does not load a second copy from Google Fonts. The built-site verifier rejects `fonts.googleapis.com` and `fonts.gstatic.com`; all font requests resolve to the vendored files. + +## Human- and machine-readable publishing contract + +Every substantive page has a stable HTML route and a Markdown peer: + +| Human route | Markdown route | +| --- | --- | +| `/` | `/index.md` | +| `/guide/` | `/guide.md` | +| `/docs/` | `/docs/index.md` | +| `/docs//` | `/docs/.md` | +| `/docs/
//` | `/docs/
/.md` | + +`https://docbank.ai/llms.txt` is the hand-maintained root index for all published Markdown pages across the three tiers. It uses canonical `docbank.ai` URLs. + +The production build fails when: + +- a substantive HTML page lacks its Markdown peer; +- a published Markdown page lacks its HTML route; +- `llms.txt` omits a published Markdown page or names a missing page; +- the copied Markdown differs from its source; +- a local link, anchor, image, canonical URL, or required social metadata is invalid; or +- private/internal material crosses the publishing boundary. + +The static product page and guide use dedicated text-first Markdown sources. They contain the same claims, examples, and links as their visual HTML pages without trying to reproduce visual layout in Markdown. + +## Screenshot generation and publication + +Screenshot generation is independent from documentation builds and deployment. + +`make docs-screenshots` replaces the existing `make frontend-screenshots` target; there is no compatibility alias. `AGENTS.md`, `frontend/screenshots/README.md`, the Makefile help text, and the `.superpowers` hook message all name the replacement command. It runs the repository-owned Playwright harness against a real temporary daemon and synthetic vault. It never reads a developer vault, uses mocked API data, or writes captures into tracked documentation sources. + +Expanding that harness is part of this project. The current branch emits only a subset of the historical `docs-assets` branch, and the stack head adds processing-plan, partial-coverage, and rendition captures. After the stack lands, the harness must emit every screenshot named by the new manifest before this branch can merge. Guide stops without a meaningful product screen—such as the cross-surface authority map and provider-free recovery flow—use tracked native diagrams instead of fabricated UI captures. + +Publishing replaces the complete root of the orphan `docs-assets` branch with the reviewed capture set. `scripts/docs-assets.txt` is a sorted newline-delimited manifest containing one root-level PNG filename per line; directory components, duplicate names, blank entries, and non-PNG extensions are invalid. `scripts/docs-assets.ref` records the full lowercase 40-character reviewed commit SHA. The first publication under this contract flattens the current ad-hoc feature/version directories and removes the branch README so the orphan branch contains exactly the manifested PNG files. + +Documentation builds fetch the exact pinned commit, validate every expected asset, reject unmanifested files, and fail closed on missing, duplicate, malformed, oversized, or unsupported files. They never fall back to the mutable branch head. The pinned Git commit supplies content identity; the local synced-generation record stores each PNG’s SHA-256 for cache verification. + +Documentation screenshots are PNG unless a specific reviewed vector diagram is maintained as tracked site source. Remote SVG screenshots are not accepted. The generated set is staged beside its destination and published atomically so a failed move cannot delete the previous usable set. + +The build materializes pinned assets into an ignored local cache before rendering. Published Markdown and root `README.md` use canonical `https://docbank.ai/assets/generated/.png` URLs so images render both on the site and on GitHub after the first production publication. The current `raw.githubusercontent.com/.../docs-assets/...` URLs are removed during migration. Local HTML may use root-relative `/assets/generated/.png` URLs. + +## Build architecture + +The repository root owns documentation commands: + +- `make docs-install` installs the locked Zensical environment. +- `make docs-serve` runs a small dependency-free Node watcher/server that builds the same three tiers, serves the generated `site/` root, rebuilds after changes to public website or documentation sources, and keeps `/`, `/guide/`, and `/docs/` on one local origin. +- `make docs-build` produces and verifies the complete static site. +- `make docs-screenshots` generates the separate capture set and is the only screenshot target. +- `make docs-deploy` performs the verified production deployment from the repository root. + +The static build follows an explicit public allowlist: + +1. Copy `website/` into a scratch site root for `/`, `/guide/`, fonts, favicon, and static scripts. +2. Copy installer scripts from their repository-owned sources. +3. Fetch and validate the pinned screenshot generation. +4. Stage only publishable Zensical sources into a scratch project. +5. Render Zensical under `/docs/`. +6. Publish every Markdown peer and root `llms.txt`. +7. Verify routes, links, metadata, assets, Markdown parity, and the public boundary. +8. Atomically replace the local `site/` output. + +Zensical remains locked through `docs/uv.lock`. Before the rest of the build migration, an executable spike builds a minimal page with Zensical 0.0.45 at `site_url = "https://docbank.ai/docs/"` and verifies its canonical URL, asset URLs, navigation, and Markdown peer under that subpath. A failed spike stops implementation for a design revision; the plan does not assume subpath behavior that has not been observed. + +Static website production code has no frontend framework or package-install step. Small browser behavior such as screenshot zoom and current-release download selection uses dependency-free JavaScript. Browser verification is a development/CI concern and may install the repository’s locked frontend test dependencies. + +The Vercel install script downloads the standalone `uv` 0.12.1 archive for the detected Linux x86-64 or ARM64 architecture, verifies the architecture-specific SHA-256 pinned in the script, and installs only `uv` and `uvx` into a project-local Vercel tools directory. The build path then uses the locked Zensical environment, syncs the pinned assets, and builds the static site. It does not install or run Go, npm dependencies, the product frontend, Docker, Playwright, screenshot generation, provider runtimes, or browser tests. + +Root `.vercelignore` acts as an upload allowlist. It includes only the static website, allowlisted documentation sources, fonts/favicon, installer sources, and the scripts/configuration required for the static build. It excludes repository source, caches, generated product assets, local state, credentials, internal documentation, plans, reports, and screenshot tooling. + +Vercel project ownership moves completely to the repository root. Root `vercel.json` defines the install command, build command, `site` output directory, and trailing-slash behavior. `make docs-link` runs `vercel link` from the root and checks root `.vercel/project.json`. Tracked `docs/vercel.json` is deleted, and no command reads, copies, or falls back to the old local `docs/.vercel` link. Existing operators run `make docs-link` once to create the new root link. + +## Release and deployment contract + +Candidate feature documentation must not become public before the corresponding software release. + +The successful software release makes a documentation source eligible but does not publish it immediately. The intended production source is the post-tag documentation-only follow-up after the final release changelog and wording corrections merge. Deployment verifies that the latest release tag is an ancestor of the selected source and that every commit between the tag and that source changes only the approved documentation and publishing surface. The selected source may be an exact commit on `main` if unrelated next-release work has already advanced the branch. + +The GitHub deployment workflow is explicitly dispatched with that eligible source after the post-tag follow-up. `make docs-deploy` uses the same release-aware validation and remains the recommended manual production command. The Vercel upload uses the root allowlist and does not send the full repository. + +Deployment and promotion are separate operations. The workflow verifies the intended latest release before build, creates a production-target deployment with automatic domain assignment disabled (`vercel deploy --prod --skip-domain`), waits for that deployment to become ready, and verifies the intended latest release again. Only then does it run `vercel promote `. A failed or stale check leaves an unpromoted deployment and cannot replace the current production aliases. + +The canonical host is `https://docbank.ai/`. `www.docbank.ai` redirects to the apex host. + +## Development workflow for maintainers and agents + +`AGENTS.md` and `docs/README.md` document the same workflow: + +- Use `make docs-serve` for content, navigation, and visual work. +- Use `make docs-screenshots` only when product UI captures need regeneration; `make frontend-screenshots` no longer exists. +- Inspect generated screenshots before publishing a complete `docs-assets` generation. +- Update the pinned commit and manifest in a separate reviewed change. +- Run `make docs-build` after the final documentation edit. +- Review substantive changes as rendered pages, not only source diffs. +- Do not publish candidate feature documentation before its release. +- Use `make docs-deploy` from the root only for an authorized production release or post-tag documentation follow-up. + +The guidance explicitly tells agents that docs builds consume screenshots but never generate them. + +While updating `docs/README.md`, remove its inaccurate statement that section landings use files such as `usage.md`; the current navigation has no section-landing Markdown files. + +## Verification + +Verification exercises owned behavior rather than restating configuration text: + +- Unit tests build a fixture site and prove that missing twins, stale `llms.txt` entries, broken links, leaked private paths, and undeclared assets fail. +- Asset-sync tests use a local synthetic Git repository and prove exact-commit pinning, manifest completeness, file-type/size validation, and fail-closed behavior without network fallbacks. +- Upload-boundary tests construct the actual Vercel input set and prove that required public files are present while representative Go, frontend, internal, local-environment, and screenshot-generation files are absent. +- The strict production build validates all output pages and Markdown peers. +- Browser verification uses the repository’s locked Playwright dependency, adds explicit Chromium and WebKit projects for the built static site, and installs those browsers only in the development/CI test lane. It loads the built landing page, guide, representative docs pages, navigation, theme, responsive layouts, screenshot lightbox, and download fallback. +- Accessibility checks cover headings, landmarks, keyboard navigation, visible focus, image alternatives, reduced motion, and color contrast. + +Tests do not assert that a parser returns values copied from the same configuration, inspect source strings as a proxy for behavior, or recreate the implementation logic inside the assertion. + +## Non-goals + +- Redesigning the Docbank product UI. +- Changing document-processing, retrieval, storage, audit, backup, or MCP contracts. +- Adding a JavaScript framework or general-purpose website build system. +- Publishing unreleased capability claims before the post-stack release. +- Tracking generated screenshots on the main branch. +- Running product builds or screenshot capture inside Vercel. +- Merging or deploying this branch before the dependent stack through PR #239 lands and the site is reconciled against its final code. + +## Acceptance criteria + +- The three tiers build into one verified static site at the documented routes. +- The homepage and guide express the authority lifecycle for technical operators using post-stack product behavior. +- The visual system uses flat teal-on-ink surfaces, JetBrains Mono display text, and readable Inter body text without AI-style decoration. +- Root `llms.txt` lists every published Markdown page, and every substantive HTML page has its documented Markdown peer. +- Documentation builds consume one pinned, complete screenshot generation and never run screenshot capture. +- `make docs-deploy` works from the repository root, enforces the release boundary, uploads only the narrow public input set, and promotes only after the final release check passes. +- Strict build, behavioral boundary tests, and browser verification pass. +- Maintainer and agent instructions describe the complete development, screenshot, review, and release workflow. +- The branch has been updated after the dependent stack lands, and its pages, screenshots, examples, and capability claims match the resulting code before merge. diff --git a/docs/tour.md b/docs/tour.md index b1bef17f..1a67e7a3 100644 --- a/docs/tour.md +++ b/docs/tour.md @@ -16,7 +16,7 @@ node's current path, stable ID, revision, immutable version, SHA-256 identity, tags, provenance, and permanent-audit status. The browser receives scoped, daemon-lifetime credentials rather than the daemon's master API key. -![The Docbank web application browsing a synthetic vault and showing the selected document's stable authority.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/v0.12.0/web-vault-browser.png) +![The Docbank web application browsing a synthetic vault and showing the selected document's stable authority.](https://docbank.ai/assets/generated/web-vault-browser.png) ## Organize independently of folders @@ -24,7 +24,7 @@ Tags form a shared vocabulary with stable UUIDs and revision-protected definitions. People can manage the catalog or a selected document's assignments in the web application; agents use the same bounded daemon API. -![The Docbank web application managing a synthetic vault's stable tag catalog.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/web-tag-catalog/web-tag-catalog.png) +![The Docbank web application managing a synthetic vault's stable tag catalog.](https://docbank.ai/assets/generated/web-tag-catalog.png) ## Verify permanent history @@ -33,7 +33,7 @@ changes. Independent verification replays the history, re-hashes protected content, and returns terminal scope heads that can be recorded outside the vault for later comparison. -![The Docbank web application showing independently verified permanent audit evidence for a synthetic vault.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/web-audit-evidence/web-audit-evidence.png) +![The Docbank web application showing independently verified permanent audit evidence for a synthetic vault.](https://docbank.ai/assets/generated/web-audit-evidence.png) ## See where physical authority lives @@ -43,7 +43,7 @@ The web view is deliberately read-only: it separates logical authority, physical inventory, store health, sole copies, and live-document impact without exposing deployment paths or credentials. -![The Docbank web application showing the primary and a secondary physical store for a synthetic vault.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/multi-store-storage/web-multi-store-storage.png) +![The Docbank web application showing the primary and a secondary physical store for a synthetic vault.](https://docbank.ai/assets/generated/web-multi-store-storage.png) ## Operate from a terminal @@ -52,7 +52,7 @@ document identity, permanent history, recoverable trash and restore, job status, and a read-only operational screen. Storage and backup results load independently so one unavailable repository does not hide live-vault status. -![The Docbank TUI showing physical storage inventory and two synthetic backup recovery points.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/tui-storage-backup/tui-storage-backup.png) +![The Docbank TUI showing physical storage inventory, two content stores, and two synthetic backup recovery points.](https://docbank.ai/assets/generated/tui-multi-store-storage.png) Continue with the [Quickstart](quickstart.md), or choose a task from [Capabilities](capabilities.md). diff --git a/docs/usage/audited-history.md b/docs/usage/audited-history.md index 968dfef9..f12686c4 100644 --- a/docs/usage/audited-history.md +++ b/docs/usage/audited-history.md @@ -29,7 +29,7 @@ including records outside the selected directory. Those unrelated documents do not become audit members and their content versions are not protected by the scope, but the enrollment-time metadata remains part of the evidence. -![The Docbank web application showing independently verified permanent audit evidence for a synthetic vault.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/web-audit-evidence/web-audit-evidence.png) +![The Docbank web application showing independently verified permanent audit evidence for a synthetic vault.](https://docbank.ai/assets/generated/web-audit-evidence.png) ## Review before enabling diff --git a/docs/usage/organizing.md b/docs/usage/organizing.md index aa729ad5..04dce106 100644 --- a/docs/usage/organizing.md +++ b/docs/usage/organizing.md @@ -80,7 +80,7 @@ Tags organize documents independently of their current paths. Each tag has a stable UUID; its name can change without breaking assignments or agent-held references. -![The Docbank web application managing a synthetic vault's stable tag catalog.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/web-tag-catalog/web-tag-catalog.png) +![The Docbank web application managing a synthetic vault's stable tag catalog.](https://docbank.ai/assets/generated/web-tag-catalog.png) ```bash docbank tag create taxes diff --git a/docs/usage/storage.md b/docs/usage/storage.md index 441e56ed..376f0018 100644 --- a/docs/usage/storage.md +++ b/docs/usage/storage.md @@ -16,7 +16,7 @@ records which verified stores may satisfy each retained SHA-256 identity, but it does not mirror arbitrary filesystem changes, manage bucket lifecycle rules, or replace a complete [backup](backup.md). -![The Docbank web application showing the primary and a secondary physical store for a synthetic vault.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/multi-store-storage/web-multi-store-storage.png) +![The Docbank web application showing the primary and a secondary physical store for a synthetic vault.](https://docbank.ai/assets/generated/web-multi-store-storage.png) The web application and TUI expose this inventory read-only. Registration, placement, repair, takeover, evacuation, and removal remain explicit CLI or diff --git a/docs/usage/tui.md b/docs/usage/tui.md index 9c83a58e..cc67bde1 100644 --- a/docs/usage/tui.md +++ b/docs/usage/tui.md @@ -18,7 +18,7 @@ outlive the background daemon's idle window, so each bounded interaction rediscovers or restarts a compatible daemon before issuing its request; leaving the terminal open does not pin an otherwise idle process. -![The Docbank TUI showing physical storage inventory and two synthetic backup recovery points.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/tui-storage-backup/tui-storage-backup.png) +![The Docbank TUI showing physical storage inventory, two content stores, and two synthetic backup recovery points.](https://docbank.ai/assets/generated/tui-multi-store-storage.png) The main view is a full-width document table. At ordinary terminal widths it shows each document's name, type, size, and UTC modification time; search results diff --git a/docs/usage/web.md b/docs/usage/web.md index 34d1600c..066a95b1 100644 --- a/docs/usage/web.md +++ b/docs/usage/web.md @@ -41,7 +41,7 @@ The browser is another client of the authenticated HTTP API. It does not open SQLite or the blob store, and it has no private route that the CLI or an agent cannot use. The daemon remains loopback-only. -![The Docbank web application showing a synthetic vault tree and the selected document's authority.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/v0.12.0/web-vault-browser.png) +![The Docbank web application showing a synthetic vault tree and the selected document's authority.](https://docbank.ai/assets/generated/web-vault-browser.png) *The root browser keeps the document table primary while the authority card shows the selected file's stable identity and verified content hash.* @@ -271,7 +271,7 @@ workflows are bound to the tag's stable UUID so a later rename does not silently change which definition was selected. Changing the selector reruns the current browse or search. -![The Docbank web application showing extracted-text search results in a synthetic vault.](https://raw.githubusercontent.com/kenn-io/docbank/docs-assets/screenshots/v0.12.0/web-search-results.png) +![The Docbank web application showing extracted-text search results in a synthetic vault.](https://docbank.ai/assets/generated/web-search-results.png) *Search results display complete virtual paths and keep the same authority inspection available from ordinary folder browsing.* diff --git a/docs/vercel.json b/docs/vercel.json deleted file mode 100644 index 9959e60c..00000000 --- a/docs/vercel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "framework": null -} diff --git a/docs/zensical-docs.sh b/docs/zensical-docs.sh index 92bed6f8..a0e7f569 100755 --- a/docs/zensical-docs.sh +++ b/docs/zensical-docs.sh @@ -18,7 +18,11 @@ if ! command -v uv >/dev/null 2>&1; then fi uv_run=(uv run --project "$docs_root" --frozen --no-dev) -repo_root="$(git -C "$docs_root" rev-parse --show-toplevel)" +if [[ -n "${DOCBANK_REPO_ROOT:-}" ]]; then + repo_root="$(cd "$DOCBANK_REPO_ROOT" && pwd)" +else + repo_root="$(git -C "$docs_root" rev-parse --show-toplevel)" +fi if [[ "/$site_dir/" == *"/../"* ]]; then printf 'refusing docs site directory containing parent traversal: %s\n' "$site_dir" >&2 exit 2 @@ -159,7 +163,7 @@ case "$command_name" in mkdir -p "$(dirname "$markdown_dest")" cp "$markdown_source" "$markdown_dest" done < <(find "$tmp_docs" -type f -name '*.md' -print0) - "${uv_run[@]}" python "$docs_root/scripts/check_built_site.py" "$tmp_site" "$tmp_docs" + "${uv_run[@]}" python "$docs_root/scripts/check_built_site.py" "$tmp_site" "$tmp_docs" /docs printf '%s\n' "$site_marker_contents" > "$tmp_site/$site_marker" mkdir -p "$(dirname "$site_path")" if [[ -e "$site_path" || -L "$site_path" ]]; then diff --git a/docs/zensical.toml b/docs/zensical.toml index e745fdc5..07bb6e4d 100644 --- a/docs/zensical.toml +++ b/docs/zensical.toml @@ -1,6 +1,6 @@ [project] site_name = "docbank" -site_url = "https://www.docbank.ai/" +site_url = "https://docbank.ai/docs/" site_description = "Docbank is a self-sovereign document system for people and agents, with indexed retrieval, stable identity, verifiable content, incremental recovery, and audited history." site_author = "Kenn Software LLC" copyright = 'Copyright © 2026 Kenn Software LLC.' @@ -70,6 +70,7 @@ homepage = "/" [project.theme] variant = "modern" custom_dir = "overrides" +font = false features = [ "navigation.instant", "navigation.instant.progress", diff --git a/frontend/docs-site/playwright.config.ts b/frontend/docs-site/playwright.config.ts new file mode 100644 index 00000000..4b60e340 --- /dev/null +++ b/frontend/docs-site/playwright.config.ts @@ -0,0 +1,50 @@ +import { defineConfig, devices } from "@playwright/test"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const here = path.dirname(fileURLToPath(import.meta.url)); +const repositoryRoot = path.resolve(here, "..", ".."); +const port = 41738; + +export default defineConfig({ + testDir: ".", + testMatch: /site\.spec\.ts/, + fullyParallel: false, + workers: 1, + timeout: 60_000, + expect: { + timeout: 10_000, + }, + outputDir: path.join(repositoryRoot, ".superpowers", "docs-site-playwright"), + reporter: "line", + use: { + baseURL: `http://127.0.0.1:${port}`, + trace: "retain-on-failure", + }, + webServer: { + command: "node scripts/docs/serve.mjs", + cwd: repositoryRoot, + env: { + DOCBANK_DOCS_PORT: String(port), + }, + url: `http://127.0.0.1:${port}`, + reuseExistingServer: false, + timeout: 120_000, + }, + projects: [ + { + name: "chromium", + use: { + ...devices["Desktop Chrome"], + colorScheme: "dark", + }, + }, + { + name: "webkit", + use: { + ...devices["Desktop Safari"], + colorScheme: "dark", + }, + }, + ], +}); diff --git a/frontend/docs-site/site.spec.ts b/frontend/docs-site/site.spec.ts new file mode 100644 index 00000000..00fbe6f3 --- /dev/null +++ b/frontend/docs-site/site.spec.ts @@ -0,0 +1,176 @@ +import { expect, test, type Locator, type Page } from "@playwright/test"; + + +const routes = ["/", "/guide/", "/docs/", "/docs/usage/searching/"]; + + +function channel(value: number): number { + const normalized = value / 255; + return normalized <= 0.04045 + ? normalized / 12.92 + : ((normalized + 0.055) / 1.055) ** 2.4; +} + + +function luminance([red, green, blue]: [number, number, number]): number { + return 0.2126 * channel(red) + 0.7152 * channel(green) + 0.0722 * channel(blue); +} + + +function ratio(foreground: [number, number, number], background: [number, number, number]): number { + const lighter = Math.max(luminance(foreground), luminance(background)); + const darker = Math.min(luminance(foreground), luminance(background)); + return (lighter + 0.05) / (darker + 0.05); +} + + +function parseOpaqueColor(value: string): [number, number, number] { + const match = value.match(/^rgba?\(\s*(\d+(?:\.\d+)?)\D+(\d+(?:\.\d+)?)\D+(\d+(?:\.\d+)?)(?:\D+([\d.]+))?\s*\)$/); + if (!match) throw new Error(`unsupported computed color: ${value}`); + if (match[4] !== undefined && Number(match[4]) !== 1) { + throw new Error(`contrast sample is not fully opaque: ${value}`); + } + return [Number(match[1]), Number(match[2]), Number(match[3])]; +} + + +async function computedColors(locator: Locator): Promise<{ foreground: string; background: string }> { + return locator.evaluate((element) => { + const foreground = getComputedStyle(element).color; + let current: Element | null = element; + while (current) { + const background = getComputedStyle(current).backgroundColor; + const alpha = background.match(/[\d.]+\)$/)?.[0].slice(0, -1); + if (!background.startsWith("rgba") || alpha === "1") return { foreground, background }; + current = current.parentElement; + } + throw new Error("no opaque background found"); + }); +} + + +async function expectContrast(locator: Locator, minimum: number): Promise { + const colors = await computedColors(locator); + expect(ratio(parseOpaqueColor(colors.foreground), parseOpaqueColor(colors.background))).toBeGreaterThanOrEqual(minimum); +} + + +test("publishes each tier with semantic page landmarks", async ({ page }) => { + for (const route of routes) { + await page.goto(route); + await expect(page.locator("main")).toBeVisible(); + await expect(page.getByRole("heading", { level: 1 })).toHaveCount(1); + await expect(page.getByRole("navigation").first()).toBeVisible(); + } +}); + + +test("supports keyboard navigation and returns focus after the image dialog", async ({ browserName, page }) => { + await page.goto("/"); + const skipLink = page.getByRole("link", { name: "Skip to content" }); + await skipLink.focus(); + await expect(skipLink).toBeFocused(); + if (browserName !== "webkit") { + await page.keyboard.press("Tab"); + await expect(page.locator(".wordmark")).toBeFocused(); + await page.keyboard.press("Tab"); + await expect( + page.getByRole("navigation", { name: "Primary navigation" }).getByRole("link", { name: "Guide", exact: true }), + ).toBeFocused(); + } + + const trigger = page.getByRole("link", { name: /synthetic technical document collection/i }); + await trigger.click(); + await expect(page.getByRole("dialog")).toBeVisible(); + await expect(page.getByRole("button", { name: "Close image" })).toBeFocused(); + await page.keyboard.press("Escape"); + await expect(page.getByRole("dialog")).not.toBeVisible(); + await expect(trigger).toBeFocused(); +}); + + +test("shows the documented install command with a Windows alternative", async ({ page }) => { + await page.goto("/"); + await expect(page.locator("[data-install-command] code")).toHaveText("curl -fsSL https://docbank.ai/install.sh | sh"); + await expect(page.getByRole("link", { name: "Windows install" })).toBeVisible(); +}); + + +test("renders repository facts in the header when GitHub responds", async ({ page }) => { + await page.route("https://api.github.com/repos/kenn-io/docbank", (route) => + route.fulfill({ json: { stargazers_count: 1280, forks_count: 34 } }), + ); + await page.route("https://api.github.com/repos/kenn-io/docbank/releases/latest", (route) => + route.fulfill({ json: { tag_name: "v0.4.0" } }), + ); + await page.goto("/"); + await expect(page.locator('[data-fact="stars"]')).toHaveText(/1\.3k/); + await expect(page.locator('[data-fact="forks"]')).toHaveText(/34/); + await expect(page.locator('[data-fact="version"]')).toHaveText(/v0\.4\.0/); +}); + + +test("keeps a static header when the GitHub API is unavailable", async ({ page }) => { + await page.route("https://api.github.com/**", (route) => route.fulfill({ status: 503, body: "unavailable" })); + const settled = page.waitForResponse("https://api.github.com/repos/kenn-io/docbank"); + await page.goto("/"); + await settled; + await expect(page.getByRole("link", { name: /on GitHub/ })).toBeVisible(); + await expect(page.locator("[data-facts]")).toBeHidden(); +}); + + +test("keeps primary navigation usable at a narrow viewport", async ({ page }) => { + await page.setViewportSize({ width: 390, height: 844 }); + await page.goto("/"); + const navigation = page.getByRole("navigation", { name: "Primary navigation" }); + await expect(navigation.getByRole("link", { name: "Guide" })).toBeVisible(); + await expect(navigation.getByRole("link", { name: "Docs" })).toBeVisible(); + await expect(navigation.getByRole("link", { name: /on GitHub/ })).toBeVisible(); + await expect(navigation.getByRole("link", { name: "Docbank Discord" })).toBeVisible(); + expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true); +}); + + +test("honors reduced motion", async ({ page }) => { + await page.emulateMedia({ reducedMotion: "reduce" }); + await page.goto("/"); + await expect.poll(() => page.locator("html").evaluate((element) => getComputedStyle(element).scrollBehavior)).toBe("auto"); + const duration = await page.getByRole("link", { name: "See how it works" }).evaluate( + (element) => getComputedStyle(element).transitionDuration, + ); + expect(Number.parseFloat(duration)).toBeLessThanOrEqual(0.00001); +}); + + +test("gives every rendered image accessible text", async ({ page }) => { + for (const route of routes) { + await page.goto(route); + const images = page.locator("img"); + for (let index = 0; index < await images.count(); index += 1) { + expect((await images.nth(index).getAttribute("alt"))?.trim(), `${route} image ${index}`).toBeTruthy(); + } + } +}); + + +test("keeps representative text and controls above contrast thresholds", async ({ page }) => { + await page.goto("/"); + await expectContrast(page.getByRole("heading", { level: 1 }), 3); + await expectContrast(page.locator(".lede").first(), 4.5); + await expectContrast(page.getByRole("link", { name: "Guide" }).first(), 4.5); + await expectContrast(page.getByRole("link", { name: "See how it works" }), 4.5); + await expectContrast(page.locator("[data-install-command] code"), 4.5); + + const copy = page.getByRole("button", { name: "Copy" }); + await copy.focus(); + const focus = await copy.evaluate((element) => { + const style = getComputedStyle(element); + return { outline: style.outlineColor, background: style.backgroundColor }; + }); + expect(ratio(parseOpaqueColor(focus.outline), parseOpaqueColor(focus.background))).toBeGreaterThanOrEqual(3); + + await page.goto("/docs/"); + await expectContrast(page.locator(".md-typeset p").first(), 4.5); + await expectContrast(page.locator(".md-typeset a").first(), 4.5); +}); diff --git a/frontend/docs-site/tsconfig.json b/frontend/docs-site/tsconfig.json new file mode 100644 index 00000000..072124cb --- /dev/null +++ b/frontend/docs-site/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "lib": ["ES2023", "DOM"], + "module": "ESNext", + "moduleResolution": "bundler", + "noEmit": true, + "skipLibCheck": true, + "strict": true, + "target": "ES2023", + "types": ["node", "@playwright/test"] + }, + "include": ["*.ts"] +} diff --git a/frontend/package.json b/frontend/package.json index 2887235c..b620f9ec 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,8 +11,10 @@ "build": "vp build", "check": "svelte-check --tsconfig ./tsconfig.json", "check:kit-ui": "kit-ui-check src", + "docs-site:check": "tsc -p docs-site/tsconfig.json --noEmit", + "docs-site:test": "node node_modules/@playwright/test/cli.js test --config docs-site/playwright.config.ts", "screenshots": "node screenshots/run.mjs", - "screenshots:check": "tsc -p screenshots/tsconfig.json --noEmit", + "screenshots:check": "tsc -p screenshots/tsconfig.json --noEmit && node --test screenshots/publish.node-test.mjs", "test": "vp test run" }, "dependencies": { diff --git a/frontend/screenshots/README.md b/frontend/screenshots/README.md index b4d44499..a048b5b6 100644 --- a/frontend/screenshots/README.md +++ b/frontend/screenshots/README.md @@ -15,21 +15,30 @@ node node_modules/@playwright/test/cli.js install chromium Then run from the repository root: ```sh -make frontend-screenshots +make docs-screenshots ``` The command builds the current frontend and Docbank binary, creates and seeds an owner-private temporary vault, opens the daemon-issued browser session, captures the requested state, stops the daemon, and removes the vault. -Generated images are written beneath `.superpowers/screenshots/` for visual -inspection and PR attachment; the current case captures both move-to-trash and +Generated images are atomically published beneath `.superpowers/screenshots/` +for visual inspection and orphan-branch publication; the current set captures +both move-to-trash and restore confirmations, the tag-definition catalog, and a completed tag assignment, current vault browsing, extracted-text search, retained-version selection, packed-storage status, and independently verified permanent-audit -evidence. Generated images are intentionally not committed. +evidence. Generated images are intentionally not committed to the main branch. -Pass ordinary Playwright arguments after `--` to select a case: +The command must produce the complete set listed in `scripts/docs-assets.txt`. +Documentation builds consume a reviewed set and never run this harness. + +For focused harness development, invoke Playwright directly with a separate +temporary `DOCBANK_SCREENSHOT_DIR`; the root Make target intentionally rejects +partial generations: ```sh -npm --prefix frontend run screenshots -- --grep "trash confirmation" +cd frontend +DOCBANK_SCREENSHOT_DIR="$(mktemp -d)" node node_modules/@playwright/test/cli.js test \ + --config screenshots/playwright.config.ts --project chromium \ + --grep "trash confirmation" ``` diff --git a/frontend/screenshots/publish.mjs b/frontend/screenshots/publish.mjs new file mode 100644 index 00000000..bdb885c7 --- /dev/null +++ b/frontend/screenshots/publish.mjs @@ -0,0 +1,99 @@ +import { + access, + open, + readdir, + rename as renamePath, + rm, +} from "node:fs/promises"; +import path from "node:path"; + + +const pngSignature = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); +const screenshotName = /^[A-Za-z0-9][A-Za-z0-9._-]*\.png$/; + + +async function exists(target) { + try { + await access(target); + return true; + } catch (error) { + if (error?.code === "ENOENT") return false; + throw error; + } +} + + +function validateNames(names) { + if (!Array.isArray(names) || names.length === 0) { + throw new Error("screenshot manifest is empty"); + } + const sorted = [...names].sort(); + if (names.some((name, index) => name !== sorted[index])) { + throw new Error("screenshot manifest is not sorted"); + } + if (new Set(names).size !== names.length) { + throw new Error("screenshot manifest contains duplicate names"); + } + for (const name of names) { + if (!screenshotName.test(name) || path.basename(name) !== name) { + throw new Error(`invalid screenshot name: ${name}`); + } + } +} + + +async function validateStaging(staging, names) { + const entries = await readdir(staging, { withFileTypes: true }); + const files = entries.filter((entry) => entry.isFile()).map((entry) => entry.name).sort(); + const unexpectedEntry = entries.find((entry) => !entry.isFile()); + if (unexpectedEntry) { + throw new Error(`unexpected screenshot entry: ${unexpectedEntry.name}`); + } + for (const name of names) { + if (!files.includes(name)) throw new Error(`missing screenshot: ${name}`); + } + for (const name of files) { + if (!names.includes(name)) throw new Error(`unexpected screenshot: ${name}`); + } + for (const name of names) { + const file = await open(path.join(staging, name), "r"); + try { + const header = Buffer.alloc(pngSignature.length); + const { bytesRead } = await file.read(header, 0, header.length, 0); + if (bytesRead !== pngSignature.length || !header.equals(pngSignature)) { + throw new Error(`invalid PNG signature: ${name}`); + } + } finally { + await file.close(); + } + } +} + + +export async function publishScreenshots({ + output, + staging, + names, + rename = async (from, to, realRename) => realRename(from, to), +}) { + validateNames(names); + if (path.dirname(output) !== path.dirname(staging)) { + throw new Error("screenshot staging directory must be beside output"); + } + await validateStaging(staging, names); + + const previous = path.join( + path.dirname(output), + `.${path.basename(output)}.previous`, + ); + await rm(previous, { recursive: true, force: true }); + const hadOutput = await exists(output); + if (hadOutput) await rename(output, previous, renamePath); + try { + await rename(staging, output, renamePath); + } catch (error) { + if (hadOutput) await rename(previous, output, renamePath); + throw error; + } + await rm(previous, { recursive: true, force: true }); +} diff --git a/frontend/screenshots/publish.node-test.mjs b/frontend/screenshots/publish.node-test.mjs new file mode 100644 index 00000000..338ba5a2 --- /dev/null +++ b/frontend/screenshots/publish.node-test.mjs @@ -0,0 +1,102 @@ +import assert from "node:assert/strict"; +import { mkdtemp, mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import path from "node:path"; +import test from "node:test"; + +import { publishScreenshots } from "./publish.mjs"; + +// This suite uses Node's built-in test runner and is intentionally named so +// Vitest does not discover it as part of the Svelte unit-test lane. + + +const pngBytes = Buffer.from([ + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, +]); + + +async function workspace(t) { + const root = await mkdtemp(path.join(tmpdir(), "docbank-screenshot-publish-")); + t.after(() => rm(root, { recursive: true, force: true })); + return { + output: path.join(root, "screenshots"), + staging: path.join(root, ".screenshots.next"), + }; +} + + +test("publishes a complete staged set atomically", async (t) => { + const { output, staging } = await workspace(t); + await mkdir(output); + await writeFile(path.join(output, "old.png"), pngBytes); + await mkdir(staging); + await writeFile(path.join(staging, "one.png"), pngBytes); + + await publishScreenshots({ output, staging, names: ["one.png"] }); + + assert.deepEqual(await readdir(output), ["one.png"]); + assert.deepEqual(await readFile(path.join(output, "one.png")), pngBytes); +}); + + +test("keeps the previous set when the staged manifest is incomplete", async (t) => { + const { output, staging } = await workspace(t); + await mkdir(output); + await writeFile(path.join(output, "old.png"), pngBytes); + await mkdir(staging); + await writeFile(path.join(staging, "one.png"), pngBytes); + + await assert.rejects( + publishScreenshots({ + output, + staging, + names: ["one.png", "two.png"], + }), + /missing screenshot: two\.png/, + ); + + assert.deepEqual(await readdir(output), ["old.png"]); + assert.deepEqual(await readFile(path.join(output, "old.png")), pngBytes); +}); + + +test("restores the previous set when final rename fails", async (t) => { + const { output, staging } = await workspace(t); + await mkdir(output); + await writeFile(path.join(output, "old.png"), pngBytes); + await mkdir(staging); + await writeFile(path.join(staging, "one.png"), pngBytes); + let renameCalls = 0; + + await assert.rejects( + publishScreenshots({ + output, + staging, + names: ["one.png"], + async rename(from, to, realRename) { + renameCalls += 1; + if (renameCalls === 2) throw new Error("synthetic rename failure"); + await realRename(from, to); + }, + }), + /synthetic rename failure/, + ); + + assert.deepEqual(await readdir(output), ["old.png"]); + assert.deepEqual(await readFile(path.join(output, "old.png")), pngBytes); +}); + + +test("rejects unsafe manifest names before changing output", async (t) => { + const { output, staging } = await workspace(t); + await mkdir(output); + await writeFile(path.join(output, "old.png"), pngBytes); + await mkdir(staging); + + await assert.rejects( + publishScreenshots({ output, staging, names: ["nested/one.png"] }), + /invalid screenshot name/, + ); + + assert.deepEqual(await readdir(output), ["old.png"]); +}); diff --git a/frontend/screenshots/run.mjs b/frontend/screenshots/run.mjs index e2f80cd9..b5618d60 100644 --- a/frontend/screenshots/run.mjs +++ b/frontend/screenshots/run.mjs @@ -1,10 +1,17 @@ import { spawnSync } from "node:child_process"; +import { mkdir, readFile, rm } from "node:fs/promises"; import path from "node:path"; import { fileURLToPath } from "node:url"; +import { publishScreenshots } from "./publish.mjs"; + const here = path.dirname(fileURLToPath(import.meta.url)); const frontendRoot = path.resolve(here, ".."); const repositoryRoot = path.resolve(frontendRoot, ".."); +const workspaceRoot = path.join(repositoryRoot, ".superpowers"); +const output = path.join(workspaceRoot, "screenshots"); +const staging = path.join(workspaceRoot, ".screenshots.next"); +const manifestPath = path.join(repositoryRoot, "scripts", "docs-assets.txt"); const build = spawnSync("make", ["build"], { cwd: repositoryRoot, @@ -13,6 +20,9 @@ const build = spawnSync("make", ["build"], { if (build.error) throw build.error; if (build.status !== 0) process.exit(build.status ?? 1); +await rm(staging, { recursive: true, force: true }); +await mkdir(staging, { recursive: true, mode: 0o700 }); + const playwrightCLI = path.join( frontendRoot, "node_modules", @@ -34,7 +44,19 @@ const result = spawnSync( { cwd: frontendRoot, stdio: "inherit", + env: { + ...process.env, + DOCBANK_SCREENSHOT_DIR: staging, + }, }, ); if (result.error) throw result.error; -process.exit(result.status ?? 1); +if (result.status !== 0) { + await rm(staging, { recursive: true, force: true }); + process.exit(result.status ?? 1); +} + +const names = (await readFile(manifestPath, "utf8")) + .split("\n") + .filter((line) => line !== ""); +await publishScreenshots({ output, staging, names }); diff --git a/frontend/screenshots/web-trash.screenshot.ts b/frontend/screenshots/web-trash.screenshot.ts index ea8a5c8e..659f6c5e 100644 --- a/frontend/screenshots/web-trash.screenshot.ts +++ b/frontend/screenshots/web-trash.screenshot.ts @@ -10,72 +10,25 @@ const execFileAsync = promisify(execFile); const here = path.dirname(fileURLToPath(import.meta.url)); const repositoryRoot = path.resolve(here, "..", ".."); const binary = path.join(repositoryRoot, "docbank"); -const screenshotPath = path.join( - repositoryRoot, - ".superpowers", - "screenshots", - "web-trash-confirmation.png", -); -const restoreScreenshotPath = path.join( - repositoryRoot, - ".superpowers", - "screenshots", +const screenshotDirectory = process.env.DOCBANK_SCREENSHOT_DIR; +if (!screenshotDirectory) throw new Error("DOCBANK_SCREENSHOT_DIR is required"); +const screenshotPathFor = (name: string): string => + path.join(screenshotDirectory, name); +const screenshotPath = screenshotPathFor("web-trash-confirmation.png"); +const restoreScreenshotPath = screenshotPathFor( "web-trash-restore-confirmation.png", ); -const tagAssignmentScreenshotPath = path.join( - repositoryRoot, - ".superpowers", - "screenshots", - "web-tag-assignment.png", -); -const tagCatalogScreenshotPath = path.join( - repositoryRoot, - ".superpowers", - "screenshots", - "web-tag-catalog.png", -); -const auditEvidenceScreenshotPath = path.join( - repositoryRoot, - ".superpowers", - "screenshots", - "web-audit-evidence.png", -); -const storageScreenshotPath = path.join( - repositoryRoot, - ".superpowers", - "screenshots", - "web-multi-store-storage.png", -); -const tuiStorageScreenshotPath = path.join( - repositoryRoot, - ".superpowers", - "screenshots", - "tui-multi-store-storage.png", -); -const vaultBrowserScreenshotPath = path.join( - repositoryRoot, - ".superpowers", - "screenshots", - "web-vault-browser.png", -); -const searchResultsScreenshotPath = path.join( - repositoryRoot, - ".superpowers", - "screenshots", - "web-search-results.png", -); -const retainedVersionScreenshotPath = path.join( - repositoryRoot, - ".superpowers", - "screenshots", +const tagAssignmentScreenshotPath = screenshotPathFor("web-tag-assignment.png"); +const tagCatalogScreenshotPath = screenshotPathFor("web-tag-catalog.png"); +const auditEvidenceScreenshotPath = screenshotPathFor("web-audit-evidence.png"); +const storageScreenshotPath = screenshotPathFor("web-multi-store-storage.png"); +const tuiStorageScreenshotPath = screenshotPathFor("tui-multi-store-storage.png"); +const vaultBrowserScreenshotPath = screenshotPathFor("web-vault-browser.png"); +const searchResultsScreenshotPath = screenshotPathFor("web-search-results.png"); +const retainedVersionScreenshotPath = screenshotPathFor( "web-retained-version-download.png", ); -const packedStorageScreenshotPath = path.join( - repositoryRoot, - ".superpowers", - "screenshots", - "web-storage-status.png", -); +const packedStorageScreenshotPath = screenshotPathFor("web-storage-status.png"); test.describe("Docbank web screenshots", () => { let workspace = ""; @@ -155,11 +108,13 @@ test.describe("Docbank web screenshots", () => { await rm(retainedVersionScreenshotPath, { force: true }); await rm(packedStorageScreenshotPath, { force: true }); const archive = path.join(workspace, "archive-store"); + const backup = path.join(workspace, "backup-repository"); await mkdir(vault, { recursive: true, mode: 0o700 }); await mkdir(archive, { recursive: true, mode: 0o700 }); await writeFile( path.join(vault, "config.toml"), - `[store_bindings.archive]\nkind = "filesystem"\npath = ${JSON.stringify(archive)}\npriority = 20\n`, + `[backup]\nrepo = ${JSON.stringify(backup)}\n\n` + + `[store_bindings.archive]\nkind = "filesystem"\npath = ${JSON.stringify(archive)}\npriority = 20\n`, { mode: 0o600 }, ); const reports = path.join(workspace, "synthetic", "Reports"); @@ -265,6 +220,15 @@ test.describe("Docbank web screenshots", () => { if (!extractionReady) { throw new Error("synthetic text extraction did not complete"); } + await runDocbank(["backup", "init"]); + await runDocbank([ + "backup", + "create", + "--tag", + "before-review", + "--jobs", + "1", + ]); const revisedReport = path.join( workspace, "synthetic", @@ -280,6 +244,14 @@ test.describe("Docbank web screenshots", () => { revisedReport, "/Reports/quarterly-tax-report.txt", ]); + await runDocbank([ + "backup", + "create", + "--tag", + "reviewed", + "--jobs", + "1", + ]); webURL = await runDocbank(["web", "--no-browser"]); const browserURL = new URL(webURL); const port = Number(browserURL.port); @@ -561,10 +533,10 @@ test.describe("Docbank web screenshots", () => { .poll(capture, { timeout: 15_000 }) .toContain("documents for you and your agents"); await tmux(["send-keys", "-t", session, "O"]); - const terminal = await expect + await expect .poll(capture, { timeout: 15_000 }) - .toContain("Vault operations") - .then(capture); + .toContain("2 recovery point(s)"); + const terminal = await capture(); await page.setViewportSize({ width: 1280, height: 760 }); await page.setContent(` diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 643426cb..156a00e6 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -22,7 +22,7 @@ export default defineConfig({ }, test: { environment: "jsdom", - exclude: ["node_modules/**"], + exclude: ["docs-site/**", "node_modules/**"], server: { deps: { inline: ["svelte"], diff --git a/prek.toml b/prek.toml index a5054aed..70aee9fc 100644 --- a/prek.toml +++ b/prek.toml @@ -15,5 +15,5 @@ always_run = true id = "forbid-superpowers-artifacts" name = "forbid-superpowers-artifacts" language = "fail" -entry = ".superpowers is temporary workspace output; publish inspected screenshots to docs-assets instead" +entry = ".superpowers is temporary workspace output; inspect make docs-screenshots output and publish the complete set to docs-assets instead" files = "^\\.superpowers/" diff --git a/scripts/deploy-docs.sh b/scripts/deploy-docs.sh new file mode 100755 index 00000000..2a81b101 --- /dev/null +++ b/scripts/deploy-docs.sh @@ -0,0 +1,47 @@ +#!/bin/sh +set -eu + +script_dir=$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd) +repo_root=$(CDPATH='' cd -- "$script_dir/.." && pwd) +source_sha=${DOCS_SOURCE:-} + +if [ -z "$source_sha" ]; then + printf 'DOCS_SOURCE is required; use a full source commit SHA\n' >&2 + exit 2 +fi +if ! command -v vercel >/dev/null 2>&1; then + printf 'vercel CLI not found; install Vercel CLI 58.4.4 or later\n' >&2 + exit 127 +fi + +cd "$repo_root" +if [ -n "$(git status --porcelain)" ]; then + printf 'refusing documentation deploy from a dirty worktree\n' >&2 + exit 1 +fi +head_sha=$(git rev-parse HEAD) +if [ "$head_sha" != "$source_sha" ]; then + printf 'DOCS_SOURCE must equal HEAD: expected %s, got %s\n' "$head_sha" "$source_sha" >&2 + exit 1 +fi +if [ ! -f .vercel/project.json ] && { [ -z "${VERCEL_ORG_ID:-}" ] || [ -z "${VERCEL_PROJECT_ID:-}" ]; }; then + printf 'documentation project is not linked; run make docs-link or provide Vercel project IDs\n' >&2 + exit 1 +fi + +git fetch --quiet origin refs/heads/main:refs/remotes/origin/main --tags +expected_tag=$(git describe --tags --abbrev=0 --match 'v[0-9]*.[0-9]*.[0-9]*' origin/main) +./scripts/validate-docs-release.sh "$source_sha" "$expected_tag" + +deployment_url=$(vercel deploy --prod --skip-domain --yes) +case "$deployment_url" in + https://*.vercel.app) ;; + *) + printf 'Vercel did not return a deployment URL: %s\n' "$deployment_url" >&2 + exit 1 + ;; +esac + +vercel inspect "$deployment_url" --wait --timeout 10m +./scripts/validate-docs-release.sh "$source_sha" "$expected_tag" +vercel promote "$deployment_url" --yes diff --git a/scripts/docs-assets-sync.test.sh b/scripts/docs-assets-sync.test.sh new file mode 100755 index 00000000..87f76c23 --- /dev/null +++ b/scripts/docs-assets-sync.test.sh @@ -0,0 +1,131 @@ +#!/usr/bin/env bash +set -euo pipefail + +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +sync_script="$script_dir/sync-docs-assets.sh" +test_root="$(mktemp -d)" +trap 'rm -rf -- "$test_root"' EXIT INT TERM + +export GIT_CONFIG_GLOBAL="$test_root/gitconfig" +export GIT_CONFIG_NOSYSTEM=1 +unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE GIT_OBJECT_DIRECTORY +unset GIT_ALTERNATE_OBJECT_DIRECTORIES GIT_COMMON_DIR GIT_NAMESPACE + +manifest="$test_root/docs-assets.txt" +ref_file="$test_root/docs-assets.ref" +cache="$test_root/cache" +remote="$test_root/remote.git" +fixture="$test_root/fixture" +if command -v sha256sum >/dev/null 2>&1; then + checksum() { sha256sum "$@"; } +else + checksum() { shasum -a 256 "$@"; } +fi + +fail() { + printf 'docs asset sync test failed: %s\n' "$1" >&2 + exit 1 +} + +write_png() { + local destination="$1" + mkdir -p "$(dirname "$destination")" + printf '\211PNG\r\n\032\n' > "$destination" + printf 'synthetic png payload\n' >> "$destination" +} + +create_remote() { + local mode="$1" + rm -rf -- "$remote" "$fixture" + git init --bare --quiet "$remote" + git init --quiet "$fixture" + git -C "$fixture" config user.name "Docbank Test" + git -C "$fixture" config user.email "docbank-test@example.invalid" + case "$mode" in + valid) + write_png "$fixture/one.png" + ;; + extra) + write_png "$fixture/one.png" + write_png "$fixture/extra.png" + ;; + malformed) + printf 'not a png\n' > "$fixture/one.png" + ;; + oversized) + write_png "$fixture/one.png" + dd if=/dev/zero bs=1048576 count=11 >> "$fixture/one.png" 2>/dev/null + ;; + nested) + write_png "$fixture/one.png" + write_png "$fixture/nested/two.png" + ;; + *) + fail "unknown fixture mode $mode" + ;; + esac + git -C "$fixture" add . + git -C "$fixture" commit --quiet -m "docs assets fixture" + fixture_commit="$(git -C "$fixture" rev-parse HEAD)" + git -C "$fixture" push --quiet "$remote" "HEAD:refs/heads/docs-assets-candidate" + printf '%s\n' "$fixture_commit" > "$ref_file" +} + +run_sync() { + DOCBANK_DOCS_ASSETS_REMOTE="$remote" \ + DOCBANK_DOCS_ASSETS_MANIFEST="$manifest" \ + DOCBANK_DOCS_ASSETS_REF="$ref_file" \ + DOCBANK_DOCS_ASSETS_CACHE="$cache" \ + "$sync_script" +} + +expect_failure() { + local label="$1" + if run_sync >"$test_root/stdout" 2>"$test_root/stderr"; then + fail "$label unexpectedly succeeded" + fi +} + +printf 'one.png\n' > "$manifest" +create_remote valid +run_sync +destination="$cache/$fixture_commit" +test -f "$destination/one.png" || fail "valid PNG was not cached" +test -f "$destination/.sha256" || fail "checksum record was not cached" +before_checksum="$(checksum "$destination/one.png")" + +printf 'docs-assets-candidate\n' > "$ref_file" +expect_failure "mutable ref" +printf '%s\n' "$fixture_commit" > "$ref_file" + +printf 'one.png\ntwo.png\n' > "$manifest" +expect_failure "missing manifest member" +test "$(checksum "$destination/one.png")" = "$before_checksum" || + fail "failed sync changed the previous cache" + +printf 'nested/one.png\n' > "$manifest" +expect_failure "nested manifest name" + +printf 'one.png\none.png\n' > "$manifest" +expect_failure "duplicate manifest name" + +printf 'one.png\n\n' > "$manifest" +expect_failure "blank manifest entry" + +printf 'one.jpg\n' > "$manifest" +expect_failure "unsupported manifest extension" + +printf 'one.png\n' > "$manifest" +create_remote extra +expect_failure "unmanifested PNG" + +create_remote malformed +expect_failure "invalid PNG signature" + +create_remote oversized +expect_failure "oversized PNG" + +create_remote nested +expect_failure "nested tree entry" + +printf 'docs asset sync tests passed\n' diff --git a/scripts/docs-assets.ref b/scripts/docs-assets.ref new file mode 100644 index 00000000..5ae01b3d --- /dev/null +++ b/scripts/docs-assets.ref @@ -0,0 +1 @@ +6491f8221930159600e542f7c0955aed2d1b55b9 diff --git a/scripts/docs-assets.txt b/scripts/docs-assets.txt new file mode 100644 index 00000000..42c23100 --- /dev/null +++ b/scripts/docs-assets.txt @@ -0,0 +1,11 @@ +tui-multi-store-storage.png +web-audit-evidence.png +web-multi-store-storage.png +web-retained-version-download.png +web-search-results.png +web-storage-status.png +web-tag-assignment.png +web-tag-catalog.png +web-trash-confirmation.png +web-trash-restore-confirmation.png +web-vault-browser.png diff --git a/scripts/docs/assert-vercel-dry-run.mjs b/scripts/docs/assert-vercel-dry-run.mjs new file mode 100644 index 00000000..665cb33e --- /dev/null +++ b/scripts/docs/assert-vercel-dry-run.mjs @@ -0,0 +1,141 @@ +import { readFile } from "node:fs/promises"; +import path from "node:path"; +import { pathToFileURL } from "node:url"; + + +const requiredUploads = [ + "vercel.json", + "website/index.html", + "docs/zensical.toml", + "docs/uv.lock", + "scripts/vercel-install-docs.sh", + "scripts/vercel-build-docs.sh", + "scripts/sync-docs-assets.sh", + "scripts/docs-assets.ref", + "scripts/docs-assets.txt", + "scripts/docs/build.mjs", + "scripts/docs/verify-site.mjs", + "scripts/install.sh", + "scripts/install.ps1", +]; + +const maximumUploadBytes = 10 * 1024 * 1024; + +const allowedUploads = new Set([ + ...requiredUploads, + "LICENSES/Inter-OFL-1.1.txt", + "LICENSES/JetBrains-Mono-OFL-1.1.txt", + "docs/llms.txt", + "docs/overrides/main.html", + "docs/pyproject.toml", + "docs/scripts/check_built_site.py", + "docs/scripts/check_markdown_sources.py", + "docs/stylesheets/extra.css", + "docs/zensical-docs.sh", + "website/favicon.svg", + "website/fonts/Inter-Medium.woff2", + "website/fonts/Inter-Regular.woff2", + "website/fonts/Inter-SemiBold.woff2", + "website/fonts/JetBrainsMono-Bold.woff2", + "website/fonts/JetBrainsMono-Regular.woff2", + "website/fonts/JetBrainsMono-SemiBold.woff2", + "website/guide.md", + "website/guide/index.html", + "website/index.html", + "website/index.md", + "website/scripts/site.js", + "website/styles/site.css", +]); + +const allowedUploadPatterns = [ + /^docs\/(?!README\.md$)[^/]+\.md$/, + /^docs\/(?:agents|architecture|usage)\/[^/]+\.md$/, + /^website\/assets\/[a-z0-9][a-z0-9-]*\.svg$/, +]; + + +function normalizeEntry(entry) { + const reported = typeof entry === "string" ? entry : entry?.path; + if (typeof reported !== "string" || reported.length === 0) { + throw new Error("Vercel dry-run entry is missing a path field"); + } + let normalized = reported.replaceAll("\\", "/"); + while (normalized.startsWith("./")) normalized = normalized.slice(2); + if (normalized.startsWith("/") || normalized.split("/").includes("..")) { + throw new Error(`Vercel dry-run entry is not repository-relative: ${reported}`); + } + return normalized; +} + + +function uploadSize(entry) { + if (typeof entry === "string") return 0; + if (!Number.isSafeInteger(entry?.size) || entry.size < 0) { + throw new Error(`Vercel dry-run entry has an invalid size: ${entry?.path ?? ""}`); + } + return entry.size; +} + + +function isAllowed(upload) { + return allowedUploads.has(upload) + || allowedUploadPatterns.some((pattern) => pattern.test(upload)); +} + + +export function assertUploadBoundary(entries) { + if (!Array.isArray(entries)) throw new Error("Vercel dry-run report must be a JSON array"); + const normalized = entries.map((entry) => ({ + path: normalizeEntry(entry), + size: uploadSize(entry), + })); + const uploads = new Set(normalized.map((entry) => entry.path)); + for (const required of requiredUploads) { + if (!uploads.has(required)) throw new Error(`missing required upload: ${required}`); + } + for (const upload of uploads) { + if (!isAllowed(upload)) throw new Error(`forbidden upload: ${upload}`); + } + const totalBytes = normalized.reduce((total, entry) => total + entry.size, 0); + if (totalBytes > maximumUploadBytes) { + throw new Error(`Vercel upload exceeds 10 MiB limit: ${totalBytes} bytes`); + } + return [...uploads].sort(); +} + + +export async function readDryRunReport(reportPath) { + let report; + try { + report = JSON.parse(await readFile(reportPath, "utf8")); + } catch (error) { + throw new Error(`invalid Vercel dry-run JSON: ${error.message}`, { cause: error }); + } + const entries = Array.isArray(report) ? report : report?.files; + if (!Array.isArray(entries)) { + throw new Error("Vercel dry-run report must be a JSON array or contain a files array"); + } + entries.forEach((entry) => { + normalizeEntry(entry); + uploadSize(entry); + }); + return entries; +} + + +const invokedPath = process.argv[1] ? pathToFileURL(path.resolve(process.argv[1])).href : ""; +if (import.meta.url === invokedPath) { + const reportPath = process.argv[2]; + if (!reportPath || process.argv.length !== 3) { + process.stderr.write("usage: node scripts/docs/assert-vercel-dry-run.mjs \n"); + process.exitCode = 2; + } else { + try { + const uploads = assertUploadBoundary(await readDryRunReport(reportPath)); + process.stdout.write(`validated ${uploads.length} Vercel upload files\n`); + } catch (error) { + process.stderr.write(`${error.message}\n`); + process.exitCode = 1; + } + } +} diff --git a/scripts/docs/assert-vercel-dry-run.test.mjs b/scripts/docs/assert-vercel-dry-run.test.mjs new file mode 100644 index 00000000..fa035442 --- /dev/null +++ b/scripts/docs/assert-vercel-dry-run.test.mjs @@ -0,0 +1,97 @@ +import assert from "node:assert/strict"; +import { mkdtemp, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import path from "node:path"; +import test from "node:test"; + +import { assertUploadBoundary, readDryRunReport } from "./assert-vercel-dry-run.mjs"; + + +const required = [ + "vercel.json", + "website/index.html", + "docs/zensical.toml", + "docs/uv.lock", + "scripts/vercel-install-docs.sh", + "scripts/vercel-build-docs.sh", + "scripts/sync-docs-assets.sh", + "scripts/docs-assets.ref", + "scripts/docs-assets.txt", + "scripts/docs/build.mjs", + "scripts/docs/verify-site.mjs", + "scripts/install.sh", + "scripts/install.ps1", +]; + + +test("accepts the complete static documentation build input", () => { + assert.doesNotThrow(() => assertUploadBoundary(required)); +}); + + +test("normalizes CLI path objects", () => { + const report = required.map((filePath, index) => ({ + path: index % 2 === 0 ? `./${filePath}` : filePath.replaceAll("/", "\\"), + size: 10, + })); + assert.doesNotThrow(() => assertUploadBoundary(report)); +}); + + +test("reads the Vercel CLI report envelope", async (t) => { + const directory = await mkdtemp(path.join(tmpdir(), "docbank-vercel-report-")); + t.after(() => rm(directory, { recursive: true, force: true })); + const report = path.join(directory, "report.json"); + const files = required.map((entry) => ({ path: entry, size: 10 })); + await writeFile(report, JSON.stringify({ fileCount: required.length, files })); + assert.deepEqual(await readDryRunReport(report), files); +}); + + +test("rejects a missing build input", () => { + assert.throws( + () => assertUploadBoundary(required.filter((filePath) => filePath !== "vercel.json")), + /missing required upload: vercel\.json/, + ); +}); + + +for (const forbidden of [ + "payload-1gb.bin", + "go.mod", + "deploy/private-data", + "cmd/docbank/main.go", + "internal/store/store.go", + "frontend/package.json", + ".superpowers/plan.md", + "docs/superpowers/specs/plan.md", + ".git/config", + ".env.local", + "docs/.env", + "AGENTS.md", + "docs/README.md", +]) { + test(`rejects forbidden upload ${forbidden}`, () => { + assert.throws(() => assertUploadBoundary([...required, forbidden]), /forbidden upload/); + }); +} + + +test("rejects an oversized upload within an approved source path", () => { + const report = required.map((filePath) => ({ path: filePath, size: 10 })); + report.push({ path: "docs/architecture/oversized.md", size: 10 * 1024 * 1024 }); + assert.throws(() => assertUploadBoundary(report), /upload exceeds 10 MiB limit/); +}); + + +test("rejects malformed reports instead of treating them as empty", async (t) => { + const directory = await mkdtemp(path.join(tmpdir(), "docbank-vercel-report-")); + t.after(() => rm(directory, { recursive: true, force: true })); + const report = path.join(directory, "report.json"); + await writeFile(report, '{"path":"website/index.html"}\n'); + await assert.rejects(() => readDryRunReport(report), /files array/); + await writeFile(report, '{"files":[{"size":10}]}\n'); + await assert.rejects(() => readDryRunReport(report), /path field/); + await writeFile(report, '{"files":[{"path":"vercel.json"}]}\n'); + await assert.rejects(() => readDryRunReport(report), /invalid size/); +}); diff --git a/scripts/docs/build.mjs b/scripts/docs/build.mjs new file mode 100644 index 00000000..3ccc5e4d --- /dev/null +++ b/scripts/docs/build.mjs @@ -0,0 +1,203 @@ +import { execFile } from "node:child_process"; +import { + copyFile, + lstat, + mkdir, + readFile, + readdir, + rename, + rm, + writeFile, +} from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; +import { promisify } from "node:util"; + +import { verifySite } from "./verify-site.mjs"; + + +const execFileAsync = promisify(execFile); +const outputMarker = ".docbank-docs-output"; +const outputMarkerContents = "generated by docbank docs build\n"; +const websiteFiles = ["favicon.svg", "guide.md", "index.html", "index.md"]; +const websiteDirectories = ["assets", "fonts", "guide", "scripts", "styles"]; + + +async function exists(target) { + try { + await lstat(target); + return true; + } catch (error) { + if (error?.code === "ENOENT") return false; + throw error; + } +} + + +async function copyPublicPath(source, destination, relative) { + const metadata = await lstat(source); + if (metadata.isSymbolicLink()) { + throw new Error(`website publishing boundary contains symlink: ${relative}`); + } + if (relative.split("/").some((part) => part.startsWith("."))) { + throw new Error(`website publishing boundary contains dot path: ${relative}`); + } + if (metadata.isDirectory()) { + await mkdir(destination, { recursive: true }); + for (const entry of await readdir(source)) { + await copyPublicPath( + path.join(source, entry), + path.join(destination, entry), + `${relative}/${entry}`, + ); + } + return; + } + if (!metadata.isFile()) { + throw new Error(`unsupported website source: ${relative}`); + } + await mkdir(path.dirname(destination), { recursive: true }); + await copyFile(source, destination); +} + + +async function copyWebsite(repoRoot, staging) { + const website = path.join(repoRoot, "website"); + for (const relative of websiteFiles) { + const source = path.join(website, relative); + if (!(await exists(source))) throw new Error(`missing website source: ${relative}`); + await copyPublicPath(source, path.join(staging, relative), relative); + } + for (const relative of websiteDirectories) { + const source = path.join(website, relative); + if (await exists(source)) { + await copyPublicPath(source, path.join(staging, relative), relative); + } + } +} + + +async function defaultBuildDocs({ repoRoot, output }) { + await execFileAsync(path.join(repoRoot, "docs", "zensical-docs.sh"), ["build"], { + cwd: path.join(repoRoot, "docs"), + env: { + ...process.env, + DOCBANK_DOCS_SITE_DIR: output, + }, + maxBuffer: 10 * 1024 * 1024, + }); +} + + +async function defaultSyncAssets({ repoRoot }) { + await execFileAsync(path.join(repoRoot, "scripts", "sync-docs-assets.sh"), [], { + cwd: repoRoot, + maxBuffer: 10 * 1024 * 1024, + }); +} + + +async function readManifest(repoRoot) { + const contents = await readFile(path.join(repoRoot, "scripts", "docs-assets.txt"), "utf8"); + const names = contents.split("\n").filter((line) => line !== ""); + if (names.length === 0) throw new Error("docs asset manifest is empty"); + return names; +} + + +async function copyGeneratedAssets(repoRoot, staging, names) { + const ref = (await readFile(path.join(repoRoot, "scripts", "docs-assets.ref"), "utf8")).trim(); + const source = path.join(repoRoot, ".cache", "docs-assets", ref); + const destination = path.join(staging, "assets", "generated"); + await mkdir(destination, { recursive: true }); + for (const name of names) { + await copyFile(path.join(source, name), path.join(destination, name)); + } +} + + +async function replaceOutput({ output, staging }) { + const previous = path.join(path.dirname(output), `.${path.basename(output)}.previous`); + await rm(previous, { recursive: true, force: true }); + const hadOutput = await exists(output); + if (hadOutput) await rename(output, previous); + try { + await rename(staging, output); + } catch (error) { + if (hadOutput) await rename(previous, output); + throw error; + } + await rm(previous, { recursive: true, force: true }); +} + + +export async function buildSite({ + repoRoot, + output = path.join(repoRoot, "site"), + buildDocs = defaultBuildDocs, + syncAssets = defaultSyncAssets, +}) { + const resolvedOutput = path.resolve(output); + if (await exists(resolvedOutput)) { + const marker = path.join(resolvedOutput, outputMarker); + if (!(await exists(marker)) || (await readFile(marker, "utf8")) !== outputMarkerContents) { + throw new Error(`refusing to replace unmarked site output: ${resolvedOutput}`); + } + } + + await mkdir(path.dirname(resolvedOutput), { recursive: true }); + const staging = path.join( + path.dirname(resolvedOutput), + `.${path.basename(resolvedOutput)}.next.${process.pid}`, + ); + await rm(staging, { recursive: true, force: true }); + await mkdir(staging); + try { + await copyWebsite(repoRoot, staging); + await copyFile(path.join(repoRoot, "scripts", "install.sh"), path.join(staging, "install.sh")); + await copyFile(path.join(repoRoot, "scripts", "install.ps1"), path.join(staging, "install.ps1")); + await syncAssets({ repoRoot }); + const assets = await readManifest(repoRoot); + await copyGeneratedAssets(repoRoot, staging, assets); + + const docsOutput = path.join(staging, "docs"); + await buildDocs({ repoRoot, output: docsOutput }); + await rm(path.join(docsOutput, "llms.txt"), { force: true }); + await rm(path.join(docsOutput, "install.sh"), { force: true }); + await rm(path.join(docsOutput, "install.ps1"), { force: true }); + await rm(path.join(docsOutput, outputMarker), { force: true }); + await copyFile(path.join(repoRoot, "docs", "llms.txt"), path.join(staging, "llms.txt")); + + await verifySite({ + site: staging, + sources: { + website: path.join(repoRoot, "website"), + docs: path.join(repoRoot, "docs"), + assets, + }, + }); + await writeFile(path.join(staging, outputMarker), outputMarkerContents); + await replaceOutput({ output: resolvedOutput, staging }); + return resolvedOutput; + } catch (error) { + await rm(staging, { recursive: true, force: true }); + throw error; + } +} + + +function outputArgument(argv) { + const index = argv.indexOf("--output"); + if (index === -1) return undefined; + if (!argv[index + 1]) throw new Error("--output requires a directory"); + return argv[index + 1]; +} + + +const invokedPath = process.argv[1] ? pathToFileURL(path.resolve(process.argv[1])).href : ""; +if (import.meta.url === invokedPath) { + const here = path.dirname(fileURLToPath(import.meta.url)); + const repoRoot = path.resolve(here, "..", ".."); + const output = await buildSite({ repoRoot, output: outputArgument(process.argv.slice(2)) }); + process.stdout.write(`built documentation site at ${output}\n`); +} diff --git a/scripts/docs/build.test.mjs b/scripts/docs/build.test.mjs new file mode 100644 index 00000000..da8e534e --- /dev/null +++ b/scripts/docs/build.test.mjs @@ -0,0 +1,127 @@ +import assert from "node:assert/strict"; +import { access, mkdtemp, mkdir, readFile, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import path from "node:path"; +import test from "node:test"; + +import { buildSite } from "./build.mjs"; + + +async function write(root, relative, contents) { + const destination = path.join(root, relative); + await mkdir(path.dirname(destination), { recursive: true }); + await writeFile(destination, contents); +} + + +function html(canonical, link = "") { + return `Docbank + + + + + + +

Docbank

${link}
`; +} + + +async function repositoryFixture(t) { + const repoRoot = await mkdtemp(path.join(tmpdir(), "docbank-site-build-")); + t.after(() => rm(repoRoot, { recursive: true, force: true })); + await write(repoRoot, "website/index.html", html("https://docbank.ai/", 'Guide')); + await write(repoRoot, "website/index.md", "# Product\n"); + await write(repoRoot, "website/guide/index.html", html("https://docbank.ai/guide/", 'Docs')); + await write(repoRoot, "website/guide.md", "# Guide\n"); + await write(repoRoot, "website/styles/site.css", "body { color: white; }\n"); + await write(repoRoot, "website/scripts/site.js", "export {};\n"); + await write(repoRoot, "website/favicon.svg", '\n'); + await write(repoRoot, "scripts/install.sh", "#!/bin/sh\n"); + await write(repoRoot, "scripts/install.ps1", "# installer\n"); + await write(repoRoot, "scripts/docs-assets.txt", "capture.png\n"); + await write(repoRoot, "scripts/docs-assets.ref", `${"a".repeat(40)}\n`); + await write(repoRoot, "docs/index.md", "# Docs\n"); + await write(repoRoot, "docs/setup.md", "# Setup\n"); + await write( + repoRoot, + "docs/llms.txt", + [ + "# Docbank", + "- [Product](https://docbank.ai/index.md)", + "- [Guide](https://docbank.ai/guide.md)", + "- [Docs](https://docbank.ai/docs/index.md)", + "- [Setup](https://docbank.ai/docs/setup.md)", + "", + ].join("\n"), + ); + return repoRoot; +} + + +async function syncAssetsFixture({ repoRoot }) { + await write(repoRoot, `.cache/docs-assets/${"a".repeat(40)}/capture.png`, "png fixture"); +} + + +async function buildDocsFixture({ repoRoot, output }) { + await write(output, "index.html", html("https://docbank.ai/docs/", 'Setup')); + await write(output, "setup/index.html", html("https://docbank.ai/docs/setup/", 'Docs')); + await write(output, "index.md", await readFile(path.join(repoRoot, "docs/index.md"))); + await write(output, "setup.md", await readFile(path.join(repoRoot, "docs/setup.md"))); + await write(output, "llms.txt", "redundant docs index\n"); + await write(output, "install.sh", "redundant installer\n"); +} + + +test("assembles all tiers and public assets into one site root", async (t) => { + const repoRoot = await repositoryFixture(t); + const output = path.join(repoRoot, "site"); + + await buildSite({ repoRoot, output, buildDocs: buildDocsFixture, syncAssets: syncAssetsFixture }); + + for (const relative of [ + "index.html", + "index.md", + "guide/index.html", + "guide.md", + "docs/index.html", + "docs/index.md", + "docs/setup/index.html", + "docs/setup.md", + "assets/generated/capture.png", + "install.sh", + "install.ps1", + "llms.txt", + ]) { + await access(path.join(output, relative)); + } + await assert.rejects(access(path.join(output, "docs/llms.txt"))); + await assert.rejects(access(path.join(output, "docs/install.sh"))); +}); + + +test("fails before assembling when the pinned assets are not synced", async (t) => { + const repoRoot = await repositoryFixture(t); + const output = path.join(repoRoot, "site"); + + await assert.rejects( + () => buildSite({ repoRoot, output, buildDocs: buildDocsFixture, syncAssets: async () => {} }), + { code: "ENOENT" }, + ); + await assert.rejects(access(output)); +}); + + +test("keeps the previous marked output when verification fails", async (t) => { + const repoRoot = await repositoryFixture(t); + const output = path.join(repoRoot, "site"); + await write(output, ".docbank-docs-output", "generated by docbank docs build\n"); + await write(output, "sentinel.txt", "previous output\n"); + await write(repoRoot, "website/index.html", html("https://docbank.ai/", 'Missing')); + + await assert.rejects( + () => buildSite({ repoRoot, output, buildDocs: buildDocsFixture, syncAssets: syncAssetsFixture }), + /broken local URL/, + ); + assert.equal(await readFile(path.join(output, "sentinel.txt"), "utf8"), "previous output\n"); +}); diff --git a/scripts/docs/serve.mjs b/scripts/docs/serve.mjs new file mode 100644 index 00000000..eaac8638 --- /dev/null +++ b/scripts/docs/serve.mjs @@ -0,0 +1,252 @@ +import { createReadStream, watch as watchPath } from "node:fs"; +import { lstat } from "node:fs/promises"; +import http from "node:http"; +import path from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; + +import { buildSite } from "./build.mjs"; + + +const contentTypes = new Map([ + [".css", "text/css; charset=utf-8"], + [".html", "text/html; charset=utf-8"], + [".js", "text/javascript; charset=utf-8"], + [".json", "application/json; charset=utf-8"], + [".md", "text/markdown; charset=utf-8"], + [".png", "image/png"], + [".ps1", "text/plain; charset=utf-8"], + [".sh", "text/x-shellscript; charset=utf-8"], + [".svg", "image/svg+xml"], + [".txt", "text/plain; charset=utf-8"], + [".woff2", "font/woff2"], + [".xml", "application/xml; charset=utf-8"], +]); + + +export function createRebuildQueue({ build, debounceMs = 100, onError = console.error }) { + let timer; + let running = false; + let pending = false; + let closed = false; + const waiters = new Set(); + + function notify() { + for (const waiter of waiters) waiter(); + } + + function schedule(delay = debounceMs) { + if (timer) clearTimeout(timer); + timer = setTimeout(run, delay); + } + + async function run() { + timer = undefined; + if (closed) { + notify(); + return; + } + running = true; + notify(); + try { + await build(); + } catch (error) { + onError(error); + } finally { + running = false; + if (pending && !closed) { + pending = false; + schedule(0); + } + notify(); + } + } + + return { + request() { + if (closed) return; + if (running) { + pending = true; + return; + } + schedule(); + }, + + idle({ waitForRunning = true } = {}) { + return new Promise((resolve) => { + const check = () => { + const settled = waitForRunning + ? !timer && !running && !pending + : running || (!timer && !pending); + if (!settled) return; + waiters.delete(check); + resolve(); + }; + waiters.add(check); + check(); + }); + }, + + close() { + closed = true; + pending = false; + if (timer) clearTimeout(timer); + timer = undefined; + notify(); + }, + }; +} + + +function resolveRequest(siteRoot, rawUrl) { + const rawPath = rawUrl.split(/[?#]/, 1)[0]; + let decoded; + try { + decoded = decodeURIComponent(rawPath); + } catch { + return undefined; + } + if (!decoded.startsWith("/") || decoded.includes("\0") || decoded.includes("\\")) { + return undefined; + } + if (decoded.split("/").includes("..")) return undefined; + + const route = decoded.endsWith("/") ? `${decoded}index.html` : decoded; + const target = path.resolve(siteRoot, `.${route}`); + const prefix = `${path.resolve(siteRoot)}${path.sep}`; + if (!target.startsWith(prefix)) return undefined; + return target; +} + + +async function serveFile(siteRoot, request, response) { + if (request.method !== "GET" && request.method !== "HEAD") { + response.writeHead(405, { Allow: "GET, HEAD" }); + response.end(); + return; + } + + const target = resolveRequest(siteRoot, request.url ?? "/"); + if (!target) { + response.writeHead(404); + response.end("Not found\n"); + return; + } + + let metadata; + try { + metadata = await lstat(target); + } catch (error) { + if (error?.code === "ENOENT" || error?.code === "ENOTDIR") { + response.writeHead(404); + response.end("Not found\n"); + return; + } + throw error; + } + if (!metadata.isFile() || metadata.isSymbolicLink()) { + response.writeHead(404); + response.end("Not found\n"); + return; + } + + response.writeHead(200, { + "Cache-Control": "no-store", + "Content-Length": metadata.size, + "Content-Type": contentTypes.get(path.extname(target)) ?? "application/octet-stream", + }); + if (request.method === "HEAD") { + response.end(); + return; + } + createReadStream(target).pipe(response); +} + + +function listen(server, host, port) { + return new Promise((resolve, reject) => { + server.once("error", reject); + server.listen(port, host, () => { + server.off("error", reject); + resolve(); + }); + }); +} + + +export async function startDocsServer({ + repoRoot, + host = "127.0.0.1", + port = 8000, + build = ({ output }) => buildSite({ repoRoot, output }), + watch = true, + watchFactory = watchPath, + logger = console, +}) { + const siteRoot = path.join(repoRoot, "site"); + await build({ output: siteRoot }); + + const queue = createRebuildQueue({ + build: async () => { + try { + await build({ output: siteRoot }); + logger.log("documentation rebuilt"); + } catch (error) { + logger.error("documentation rebuild failed; serving the previous build"); + throw error; + } + }, + onError: (error) => logger.error(error), + }); + + const watchers = []; + if (watch) { + for (const [source, recursive] of [ + [path.join(repoRoot, "website"), true], + [path.join(repoRoot, "docs"), true], + [path.join(repoRoot, "scripts", "docs-assets.ref"), false], + [path.join(repoRoot, "scripts", "docs-assets.txt"), false], + ]) { + const watcher = watchFactory(source, { recursive }, () => queue.request()); + watcher.on?.("error", (error) => logger.error(error)); + watchers.push(watcher); + } + } + + const server = http.createServer((request, response) => { + serveFile(siteRoot, request, response).catch((error) => { + logger.error(error); + if (!response.headersSent) response.writeHead(500); + response.end("Internal server error\n"); + }); + }); + await listen(server, host, port); + const address = server.address(); + if (!address || typeof address === "string") throw new Error("documentation server has no TCP address"); + const url = `http://${host}:${address.port}/`; + + return { + url, + port: address.port, + close() { + queue.close(); + for (const watcher of watchers) watcher.close(); + return new Promise((resolve, reject) => { + server.close((error) => error ? reject(error) : resolve()); + }); + }, + }; +} + + +const invokedPath = process.argv[1] ? pathToFileURL(path.resolve(process.argv[1])).href : ""; +if (import.meta.url === invokedPath) { + const here = path.dirname(fileURLToPath(import.meta.url)); + const repoRoot = path.resolve(here, "..", ".."); + const configuredPort = process.env.DOCBANK_DOCS_PORT; + const port = configuredPort === undefined ? 8000 : Number(configuredPort); + if (!Number.isInteger(port) || port < 0 || port > 65_535) { + throw new Error("DOCBANK_DOCS_PORT must be an integer from 0 through 65535"); + } + const server = await startDocsServer({ repoRoot, port }); + process.stdout.write(`serving documentation at ${server.url}\n`); +} diff --git a/scripts/docs/serve.test.mjs b/scripts/docs/serve.test.mjs new file mode 100644 index 00000000..f07bd591 --- /dev/null +++ b/scripts/docs/serve.test.mjs @@ -0,0 +1,149 @@ +import assert from "node:assert/strict"; +import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; +import http from "node:http"; +import { tmpdir } from "node:os"; +import path from "node:path"; +import test from "node:test"; + +import { createRebuildQueue, startDocsServer } from "./serve.mjs"; + + +async function write(root, relative, contents) { + const destination = path.join(root, relative); + await mkdir(path.dirname(destination), { recursive: true }); + await writeFile(destination, contents); +} + + +async function fixture(t) { + const repoRoot = await mkdtemp(path.join(tmpdir(), "docbank-docs-server-")); + t.after(() => rm(repoRoot, { recursive: true, force: true })); + for (const [relative, contents] of Object.entries({ + "site/index.html": "

Product

", + "site/guide/index.html": "

Guide

", + "site/guide.md": "# Guide\n", + "site/docs/index.html": "

Docs

", + "site/docs/setup/index.html": "

Setup

", + "site/docs/setup.md": "# Setup\n", + "site/styles/site.css": "body { color: white; }\n", + "site/fonts/Inter-Regular.woff2": "font fixture", + "site/assets/generated/capture.png": "png fixture", + })) { + await write(repoRoot, relative, contents); + } + return repoRoot; +} + + +function rawRequest(port, requestPath) { + return new Promise((resolve, reject) => { + const request = http.get({ host: "127.0.0.1", port, path: requestPath }, (response) => { + response.resume(); + response.once("end", () => resolve(response.statusCode)); + }); + request.once("error", reject); + }); +} + + +test("serves every public tier and asset type from one origin", async (t) => { + const repoRoot = await fixture(t); + const server = await startDocsServer({ + repoRoot, + host: "127.0.0.1", + port: 0, + build: async () => {}, + watch: false, + }); + t.after(() => server.close()); + + for (const [route, contentType, body] of [ + ["/", "text/html; charset=utf-8", "Product"], + ["/guide/", "text/html; charset=utf-8", "Guide"], + ["/guide.md", "text/markdown; charset=utf-8", "# Guide"], + ["/docs/", "text/html; charset=utf-8", "Docs"], + ["/docs/setup/", "text/html; charset=utf-8", "Setup"], + ["/docs/setup.md", "text/markdown; charset=utf-8", "# Setup"], + ["/styles/site.css", "text/css; charset=utf-8", "body"], + ["/fonts/Inter-Regular.woff2", "font/woff2", "font fixture"], + ["/assets/generated/capture.png", "image/png", "png fixture"], + ]) { + const response = await fetch(new URL(route, server.url)); + assert.equal(response.status, 200, route); + assert.equal(response.headers.get("content-type"), contentType, route); + assert.match(await response.text(), new RegExp(body), route); + } +}); + + +test("rejects traversal outside the generated site", async (t) => { + const repoRoot = await fixture(t); + await write(repoRoot, "AGENTS.md", "private instructions\n"); + const server = await startDocsServer({ + repoRoot, + host: "127.0.0.1", + port: 0, + build: async () => {}, + watch: false, + }); + t.after(() => server.close()); + + assert.equal(await rawRequest(server.port, "/../AGENTS.md"), 404); + assert.equal(await rawRequest(server.port, "/%2e%2e/AGENTS.md"), 404); + assert.equal(await rawRequest(server.port, "/%00"), 404); +}); + + +test("coalesces file events into one queued rebuild", async () => { + let calls = 0; + let finishFirst; + const firstBuild = new Promise((resolve) => { + finishFirst = resolve; + }); + const errors = []; + const queue = createRebuildQueue({ + debounceMs: 5, + build: async () => { + calls += 1; + if (calls === 1) await firstBuild; + }, + onError: (error) => errors.push(error), + }); + + queue.request(); + await queue.idle({ waitForRunning: false }); + assert.equal(calls, 1); + + queue.request(); + queue.request(); + queue.request(); + finishFirst(); + await queue.idle(); + + assert.equal(calls, 2); + assert.deepEqual(errors, []); + queue.close(); +}); + + +test("keeps the queue usable after a failed rebuild", async () => { + let calls = 0; + const errors = []; + const queue = createRebuildQueue({ + debounceMs: 1, + build: async () => { + calls += 1; + if (calls === 1) throw new Error("fixture build failed"); + }, + onError: (error) => errors.push(error.message), + }); + + queue.request(); + await queue.idle(); + queue.request(); + await queue.idle(); + + assert.equal(calls, 2); + assert.deepEqual(errors, ["fixture build failed"]); + queue.close(); +}); diff --git a/scripts/docs/verify-site.mjs b/scripts/docs/verify-site.mjs new file mode 100644 index 00000000..4fc68d51 --- /dev/null +++ b/scripts/docs/verify-site.mjs @@ -0,0 +1,278 @@ +import { lstat, readFile, readdir } from "node:fs/promises"; +import path from "node:path"; + + +const canonicalOrigin = "https://docbank.ai"; +const forbiddenParts = new Set([ + ".git", + ".superpowers", + "internal", + "overrides", + "reports", + "superpowers", +]); +const requiredMetadata = [ + "description", + "og:type", + "og:title", + "og:description", + "og:url", + "og:site_name", + "twitter:card", + "twitter:title", + "twitter:description", +]; + + +async function filesUnder(root) { + const files = []; + async function visit(directory, prefix = "") { + for (const entry of await readdir(directory, { withFileTypes: true })) { + const relative = prefix ? `${prefix}/${entry.name}` : entry.name; + const absolute = path.join(directory, entry.name); + const metadata = await lstat(absolute); + if (metadata.isSymbolicLink()) { + throw new Error(`publishing boundary contains symlink: ${relative}`); + } + if (metadata.isDirectory()) await visit(absolute, relative); + else if (metadata.isFile()) files.push(relative); + } + } + await visit(root); + return files.sort(); +} + + +function attributes(raw) { + const result = new Map(); + const expression = /([A-Za-z_:][A-Za-z0-9_.:-]*)\s*=\s*(?:"([^"]*)"|'([^']*)')/g; + for (const match of raw.matchAll(expression)) { + result.set(match[1].toLowerCase(), match[2] ?? match[3] ?? ""); + } + return result; +} + + +function parsePage(contents) { + const metadata = new Map(); + const urls = []; + const images = []; + const anchors = new Set(); + let canonical = ""; + for (const match of contents.matchAll(/<([A-Za-z0-9]+)\b([^>]*)>/g)) { + const tag = match[1].toLowerCase(); + const attrs = attributes(match[2]); + if (attrs.get("id")) anchors.add(attrs.get("id")); + if (tag === "a" && attrs.get("name")) anchors.add(attrs.get("name")); + if (tag === "link" && attrs.get("rel") === "canonical") { + canonical = attrs.get("href") ?? ""; + } + if (tag === "meta" && attrs.get("content")) { + const key = attrs.get("property") ?? attrs.get("name"); + if (key) metadata.set(key, attrs.get("content")); + } + for (const key of ["href", "src"]) { + if (attrs.get(key)) urls.push(attrs.get(key)); + } + if (tag === "img" && attrs.get("src")) images.push(attrs.get("src")); + } + return { + anchors, + canonical, + images, + metadata, + title: /]*)?>\s*[^<\s][^<]*<\/title>/i.test(contents), + urls, + }; +} + + +function routeForHtml(relative) { + if (relative === "index.html") return "/"; + return `/${relative.replace(/index\.html$/, "")}`; +} + + +function markdownPeer(relative) { + if (relative === "index.html") return "index.md"; + if (relative === "guide/index.html") return "guide.md"; + if (relative === "docs/index.html") return "docs/index.md"; + if (!relative.endsWith("/index.html")) return null; + return relative.replace(/\/index\.html$/, ".md"); +} + + +function htmlForMarkdown(relative) { + if (relative === "index.md") return "index.html"; + if (relative === "guide.md") return "guide/index.html"; + if (relative === "docs/index.md") return "docs/index.html"; + return relative.replace(/\.md$/, "/index.html"); +} + + +function targetForUrl(site, page, raw) { + if (/^(?:mailto|tel|data|javascript):/i.test(raw)) return null; + const base = `${canonicalOrigin}${routeForHtml(page)}`; + let resolved; + try { + resolved = new URL(raw, base); + } catch { + return { error: "invalid" }; + } + if (resolved.origin !== canonicalOrigin) return null; + let relative = decodeURIComponent(resolved.pathname).replace(/^\//, ""); + if (relative === "" || relative.endsWith("/")) relative += "index.html"; + else if (path.posix.extname(relative) === "") relative += "/index.html"; + return { + absolute: path.join(site, ...relative.split("/")), + fragment: decodeURIComponent(resolved.hash.replace(/^#/, "")), + relative, + }; +} + + +async function compareSource(site, relative, source, errors) { + try { + const [published, original] = await Promise.all([ + readFile(path.join(site, ...relative.split("/"))), + readFile(source), + ]); + if (!published.equals(original)) { + errors.push(`${relative}: published Markdown differs from source`); + } + } catch (error) { + if (error?.code === "ENOENT") { + errors.push(`${relative}: Markdown source is missing`); + return; + } + throw error; + } +} + + +export async function verifySite({ site, sources }) { + const errors = []; + const files = await filesUnder(site); + const fileSet = new Set(files); + for (const relative of files) { + const parts = relative.split("/"); + if (parts.some((part) => forbiddenParts.has(part))) { + errors.push(`publishing boundary leaked ${relative}`); + } + } + + const htmlFiles = files.filter((relative) => relative.endsWith(".html")); + if (htmlFiles.length === 0) errors.push("no HTML pages were built"); + const parsedPages = new Map(); + for (const relative of htmlFiles) { + const contents = await readFile(path.join(site, ...relative.split("/")), "utf8"); + const parsed = parsePage(contents); + parsedPages.set(relative, parsed); + if (!parsed.title) errors.push(`${relative}: missing title`); + for (const key of requiredMetadata) { + if (!parsed.metadata.get(key)) errors.push(`${relative}: missing ${key} metadata`); + } + if (!relative.endsWith("404.html")) { + const expectedCanonical = `${canonicalOrigin}${routeForHtml(relative)}`; + if (parsed.canonical !== expectedCanonical) { + errors.push(`${relative}: canonical is ${parsed.canonical || "missing"}; expected ${expectedCanonical}`); + } + if (parsed.metadata.get("og:url") !== expectedCanonical) { + errors.push(`${relative}: og:url does not match its route`); + } + } + if (/fonts\.(?:googleapis|gstatic)\.com/i.test(contents)) { + errors.push(`${relative}: remote font URL`); + } + } + + for (const relative of htmlFiles) { + const parsed = parsedPages.get(relative); + for (const raw of parsed.images) { + if (targetForUrl(site, relative, raw) === null) { + errors.push(`${relative}: image is not served from the site: ${raw}`); + } + } + for (const raw of parsed.urls) { + const target = targetForUrl(site, relative, raw); + if (target === null) continue; + if (target.error || !fileSet.has(target.relative)) { + errors.push(`${relative}: broken local URL ${raw}`); + continue; + } + if ( + target.fragment && + target.fragment !== "__skip" && + target.relative.endsWith(".html") + ) { + const destination = parsedPages.get(target.relative); + if (destination && !destination.anchors.has(target.fragment)) { + errors.push(`${relative}: broken local fragment ${raw}`); + } + } + } + } + + const markdownFiles = files.filter((relative) => relative.endsWith(".md")); + for (const relative of htmlFiles) { + if (relative.endsWith("404.html")) continue; + const peer = markdownPeer(relative); + if (peer === null) { + errors.push(`${relative}: unsupported substantive HTML route`); + continue; + } + if (!fileSet.has(peer)) errors.push(`${relative}: missing Markdown peer ${peer}`); + } + for (const relative of markdownFiles) { + const rendered = htmlForMarkdown(relative); + if (!fileSet.has(rendered)) errors.push(`${relative}: missing HTML route ${rendered}`); + if (relative === "index.md" || relative === "guide.md") { + await compareSource(site, relative, path.join(sources.website, relative), errors); + } else if (relative.startsWith("docs/")) { + const sourceRelative = relative.slice("docs/".length); + await compareSource(site, relative, path.join(sources.docs, sourceRelative), errors); + } + } + + if (!fileSet.has("llms.txt")) { + errors.push("llms.txt: missing from site root"); + } else { + const llms = await readFile(path.join(site, "llms.txt"), "utf8"); + const indexed = new Set( + [...llms.matchAll(/https:\/\/docbank\.ai(\/[^)\s]+\.md)/g)].map( + (match) => match[1], + ), + ); + for (const relative of markdownFiles) { + const route = `/${relative}`; + if (!indexed.has(route)) errors.push(`llms.txt: missing ${route}`); + } + for (const route of indexed) { + if (!fileSet.has(route.slice(1))) errors.push(`llms.txt: missing page ${route}`); + } + } + + const generatedPrefix = "assets/generated/"; + const generated = files + .filter((relative) => relative.startsWith(generatedPrefix)) + .map((relative) => relative.slice(generatedPrefix.length)); + const declared = [...sources.assets].sort(); + for (const name of generated) { + if (!declared.includes(name)) errors.push(`undeclared generated asset: ${name}`); + } + for (const name of declared) { + if (!generated.includes(name)) errors.push(`missing generated asset: ${name}`); + } + + for (const relative of files.filter((name) => name.endsWith(".css"))) { + const contents = await readFile(path.join(site, ...relative.split("/")), "utf8"); + if (/fonts\.(?:googleapis|gstatic)\.com/i.test(contents)) { + errors.push(`${relative}: remote font URL`); + } + } + + if (errors.length > 0) { + throw new Error(`built site validation failed:\n ${errors.join("\n ")}`); + } + return { htmlPages: htmlFiles.length, markdownPages: markdownFiles.length }; +} diff --git a/scripts/docs/verify-site.test.mjs b/scripts/docs/verify-site.test.mjs new file mode 100644 index 00000000..ff81f9fa --- /dev/null +++ b/scripts/docs/verify-site.test.mjs @@ -0,0 +1,209 @@ +import assert from "node:assert/strict"; +import { mkdtemp, mkdir, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import path from "node:path"; +import test from "node:test"; + +import { verifySite } from "./verify-site.mjs"; + + +async function write(root, relative, contents) { + const destination = path.join(root, relative); + await mkdir(path.dirname(destination), { recursive: true }); + await writeFile(destination, contents); +} + + +function page({ canonical, body = "", extraHead = "" }) { + return ` + +Fixture page + + + + + + + + + + +${extraHead}

Fixture page

${body}
`; +} + + +async function fixture(t) { + const root = await mkdtemp(path.join(tmpdir(), "docbank-site-verify-")); + t.after(() => rm(root, { recursive: true, force: true })); + const site = path.join(root, "site"); + const website = path.join(root, "website"); + const docs = path.join(root, "docs"); + await write( + site, + "index.html", + page({ + canonical: "https://docbank.ai/", + body: 'GuideSynthetic capture', + }), + ); + await write( + site, + "guide/index.html", + page({ canonical: "https://docbank.ai/guide/", body: 'Docs' }), + ); + await write( + site, + "docs/index.html", + page({ canonical: "https://docbank.ai/docs/", body: 'Setup' }), + ); + await write( + site, + "docs/setup/index.html", + page({ canonical: "https://docbank.ai/docs/setup/", body: 'Overview' }), + ); + const markdown = { + "index.md": "# Product\n", + "guide.md": "# Guide\n", + "docs/index.md": "# Operating docs\n", + "docs/setup.md": "# Setup\n", + }; + for (const [relative, contents] of Object.entries(markdown)) { + await write(site, relative, contents); + } + await write(website, "index.md", markdown["index.md"]); + await write(website, "guide.md", markdown["guide.md"]); + await write(docs, "index.md", markdown["docs/index.md"]); + await write(docs, "setup.md", markdown["docs/setup.md"]); + await write(site, "assets/generated/capture.png", "png fixture"); + await write( + site, + "llms.txt", + [ + "# Docbank", + "- [Product](https://docbank.ai/index.md)", + "- [Guide](https://docbank.ai/guide.md)", + "- [Docs](https://docbank.ai/docs/index.md)", + "- [Setup](https://docbank.ai/docs/setup.md)", + "", + ].join("\n"), + ); + return { + site, + sources: { + website, + docs, + assets: ["capture.png"], + }, + }; +} + + +test("accepts complete routes, Markdown peers, links, and assets", async (t) => { + const input = await fixture(t); + await verifySite(input); +}); + + +test("accepts the generated 404 page without a canonical peer", async (t) => { + const input = await fixture(t); + const notFound = page({ + canonical: "https://docbank.ai/docs/", + body: 'Skip', + }).replace('', ""); + await write(input.site, "docs/404.html", notFound); + + await verifySite(input); +}); + + +test("rejects a substantive HTML file that is not a directory route", async (t) => { + const input = await fixture(t); + await write( + input.site, + "docs/orphan.html", + page({ canonical: "https://docbank.ai/docs/orphan.html" }), + ); + + await assert.rejects( + () => verifySite(input), + /docs\/orphan\.html: unsupported substantive HTML route/, + ); +}); + + +test("rejects an HTML route without its Markdown peer", async (t) => { + const input = await fixture(t); + await rm(path.join(input.site, "guide.md")); + await assert.rejects(() => verifySite(input), /guide\/index\.html: missing Markdown peer guide\.md/); +}); + + +test("rejects a stale llms index", async (t) => { + const input = await fixture(t); + await write( + input.site, + "llms.txt", + "- [Product](https://docbank.ai/index.md)\n- [Guide](https://docbank.ai/guide.md)\n- [Docs](https://docbank.ai/docs/index.md)\n", + ); + await assert.rejects(() => verifySite(input), /llms\.txt: missing \/docs\/setup\.md/); +}); + + +test("rejects a broken local link", async (t) => { + const input = await fixture(t); + await write( + input.site, + "index.html", + page({ canonical: "https://docbank.ai/", body: 'Missing' }), + ); + await assert.rejects(() => verifySite(input), /index\.html: broken local URL \/missing\//); +}); + + +test("rejects an image that is not served from the site", async (t) => { + const { site, sources } = await fixture(t); + await write( + site, + "docs/setup/index.html", + page({ + canonical: "https://docbank.ai/docs/setup/", + body: 'Remote capture', + }), + ); + await assert.rejects(() => verifySite({ site, sources }), /image is not served from the site/); +}); + + +test("rejects a private publishing path", async (t) => { + const input = await fixture(t); + await write(input.site, "internal/plan.md", "private\n"); + await assert.rejects(() => verifySite(input), /publishing boundary leaked internal\/plan\.md/); +}); + + +test("rejects an undeclared generated asset", async (t) => { + const input = await fixture(t); + await write(input.site, "assets/generated/extra.png", "extra\n"); + await assert.rejects(() => verifySite(input), /undeclared generated asset: extra\.png/); +}); + + +test("rejects a Markdown peer that differs from source", async (t) => { + const input = await fixture(t); + await write(input.site, "docs/setup.md", "changed\n"); + await assert.rejects(() => verifySite(input), /docs\/setup\.md: published Markdown differs from source/); +}); + + +test("rejects remote font hosts", async (t) => { + const input = await fixture(t); + await write( + input.site, + "index.html", + page({ + canonical: "https://docbank.ai/", + extraHead: '', + }), + ); + await assert.rejects(() => verifySite(input), /index\.html: remote font URL/); +}); diff --git a/scripts/sync-docs-assets.sh b/scripts/sync-docs-assets.sh new file mode 100755 index 00000000..b4e492c0 --- /dev/null +++ b/scripts/sync-docs-assets.sh @@ -0,0 +1,149 @@ +#!/usr/bin/env bash +set -euo pipefail + +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +repo_root="$(cd "$script_dir/.." && pwd)" +remote="${DOCBANK_DOCS_ASSETS_REMOTE:-https://github.com/kenn-io/docbank.git}" +manifest="${DOCBANK_DOCS_ASSETS_MANIFEST:-$script_dir/docs-assets.txt}" +ref_file="${DOCBANK_DOCS_ASSETS_REF:-$script_dir/docs-assets.ref}" +cache_root="${DOCBANK_DOCS_ASSETS_CACHE:-$repo_root/.cache/docs-assets}" +max_png_bytes=$((10 * 1024 * 1024)) + +if command -v sha256sum >/dev/null 2>&1; then + checksum() { sha256sum "$@"; } + checksum_check() { sha256sum -c "$@"; } +elif command -v shasum >/dev/null 2>&1; then + checksum() { shasum -a 256 "$@"; } + checksum_check() { shasum -a 256 -c "$@"; } +else + printf 'SHA-256 checksum tool not found\n' >&2 + exit 127 +fi + +if [[ ! -f "$manifest" ]]; then + printf 'docs asset manifest is missing: %s\n' "$manifest" >&2 + exit 1 +fi +if [[ ! -f "$ref_file" ]]; then + printf 'docs asset ref is missing: %s\n' "$ref_file" >&2 + exit 1 +fi + +asset_ref="$(tr -d '\r\n' < "$ref_file")" +if [[ ! "$asset_ref" =~ ^[0-9a-f]{40}$ ]]; then + printf 'docs asset ref must be one full lowercase commit SHA\n' >&2 + exit 1 +fi +if [[ ! -s "$manifest" ]] || grep -q '^$' "$manifest"; then + printf 'docs asset manifest must contain no blank entries\n' >&2 + exit 1 +fi +if ! LC_ALL=C sort -c "$manifest" 2>/dev/null; then + printf 'docs asset manifest must be sorted\n' >&2 + exit 1 +fi +if [[ -n "$(LC_ALL=C sort "$manifest" | uniq -d)" ]]; then + printf 'docs asset manifest contains duplicate entries\n' >&2 + exit 1 +fi +while IFS= read -r name; do + if [[ ! "$name" =~ ^[A-Za-z0-9][A-Za-z0-9._-]*\.png$ ]]; then + printf 'invalid docs asset manifest entry: %s\n' "$name" >&2 + exit 1 + fi +done < "$manifest" + +destination="$cache_root/$asset_ref" + +cache_is_valid() { + [[ -d "$destination" && -f "$destination/.sha256" ]] || return 1 + local actual_files recorded_files + actual_files="$( + find "$destination" -maxdepth 1 -type f ! -name '.sha256' -exec basename {} \; | + LC_ALL=C sort + )" + recorded_files="$(awk '{name=$2; sub(/^\*/, "", name); print name}' "$destination/.sha256")" + [[ "$actual_files" == "$(<"$manifest")" ]] || return 1 + [[ "$recorded_files" == "$(<"$manifest")" ]] || return 1 + (cd "$destination" && checksum_check .sha256 >/dev/null 2>&1) +} + +if cache_is_valid; then + printf 'docs assets ready at %s\n' "$destination" + exit 0 +fi + +mkdir -p "$cache_root" +scratch="$(mktemp -d)" +staging="$cache_root/.${asset_ref}.next.$$" +previous="$cache_root/.${asset_ref}.previous" +cleanup() { + rm -rf -- "$scratch" + if [[ -n "${staging:-}" ]]; then + rm -rf -- "$staging" + fi +} +trap cleanup EXIT INT TERM + +export GIT_CONFIG_GLOBAL="$scratch/gitconfig" +export GIT_CONFIG_NOSYSTEM=1 +unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE GIT_OBJECT_DIRECTORY +unset GIT_ALTERNATE_OBJECT_DIRECTORIES GIT_COMMON_DIR GIT_NAMESPACE + +git_repo="$scratch/repository.git" +git init --bare --quiet "$git_repo" +git -C "$git_repo" fetch --quiet --depth=1 "$remote" "$asset_ref" +fetched="$(git -C "$git_repo" rev-parse 'FETCH_HEAD^{commit}')" +if [[ "$fetched" != "$asset_ref" ]]; then + printf 'fetched docs asset commit differs from pinned ref\n' >&2 + exit 1 +fi +if [[ -n "$(git -C "$git_repo" show -s --format='%P' "$asset_ref")" ]]; then + printf 'docs asset commit must be an orphan commit\n' >&2 + exit 1 +fi + +tree_files="$scratch/tree-files" +git -C "$git_repo" ls-tree -r --name-only "$asset_ref" | LC_ALL=C sort > "$tree_files" +if ! diff -u "$manifest" "$tree_files" >/dev/null; then + printf 'docs asset commit tree differs from manifest\n' >&2 + diff -u "$manifest" "$tree_files" >&2 || true + exit 1 +fi +if git -C "$git_repo" ls-tree -r "$asset_ref" | awk '$1 != "100644" { found=1 } END { exit !found }'; then + printf 'docs asset commit contains unsupported entry modes\n' >&2 + exit 1 +fi + +mkdir "$staging" +while IFS= read -r name; do + git -C "$git_repo" show "$asset_ref:$name" > "$staging/$name" + size="$(wc -c < "$staging/$name" | tr -d ' ')" + if (( size > max_png_bytes )); then + printf 'oversized docs asset: %s\n' "$name" >&2 + exit 1 + fi + signature="$(od -An -tx1 -N8 "$staging/$name" | tr -d ' \n')" + if [[ "$signature" != "89504e470d0a1a0a" ]]; then + printf 'invalid PNG signature: %s\n' "$name" >&2 + exit 1 + fi + (cd "$staging" && checksum "$name") >> "$staging/.sha256" +done < "$manifest" +(cd "$staging" && checksum_check .sha256 >/dev/null) + +rm -rf -- "$previous" +had_destination=false +if [[ -e "$destination" ]]; then + mv "$destination" "$previous" + had_destination=true +fi +if ! mv "$staging" "$destination"; then + if [[ "$had_destination" == true ]]; then + mv "$previous" "$destination" + fi + exit 1 +fi +staging="" +rm -rf -- "$previous" +printf 'docs assets ready at %s\n' "$destination" diff --git a/scripts/validate-docs-release.sh b/scripts/validate-docs-release.sh new file mode 100755 index 00000000..5489abe4 --- /dev/null +++ b/scripts/validate-docs-release.sh @@ -0,0 +1,66 @@ +#!/bin/sh +set -eu + +source_sha=${1:-} +expected_tag=${2:-} + +fail() { + printf 'documentation release validation failed: %s\n' "$1" >&2 + exit 1 +} + +if [ "${#source_sha}" -ne 40 ]; then + fail "source must be a full 40-character commit SHA" +fi +case "$source_sha" in + *[!0-9a-fA-F]*) fail "source must be a full 40-character commit SHA" ;; +esac +if ! printf '%s\n' "$expected_tag" | grep -Eq '^v[0-9]+\.[0-9]+\.[0-9]+$'; then + fail "expected release tag must use vX.Y.Z form" +fi + +git fetch --quiet origin refs/heads/main:refs/remotes/origin/main --tags +git cat-file -e "$source_sha^{commit}" 2>/dev/null || fail "source commit does not exist: $source_sha" +git rev-parse --verify --quiet "$expected_tag^{commit}" >/dev/null || fail "release tag does not exist: $expected_tag" + +if ! git merge-base --is-ancestor "$source_sha" origin/main; then + fail "documentation source $source_sha is not on origin/main" +fi +if ! git merge-base --is-ancestor "$expected_tag" "$source_sha"; then + fail "release tag $expected_tag is not an ancestor of documentation source $source_sha" +fi + +latest_tag=$(git describe --tags --abbrev=0 --match 'v[0-9]*.[0-9]*.[0-9]*' origin/main 2>/dev/null) || { + fail "origin/main has no release tag" +} +if [ "$latest_tag" != "$expected_tag" ]; then + fail "latest release on origin/main changed from $expected_tag to $latest_tag" +fi + +git diff --name-only "$expected_tag..$source_sha" | while IFS= read -r changed_path; do + case "$changed_path" in + .github/workflows/deploy-docs.yml | \ + .vercelignore | \ + AGENTS.md | \ + Makefile | \ + README.md | \ + scripts/deploy-docs.sh | \ + scripts/docs-assets.ref | \ + scripts/docs-assets.txt | \ + scripts/sync-docs-assets.sh | \ + scripts/validate-docs-release.sh | \ + scripts/vercel-build-docs.sh | \ + scripts/vercel-install-docs.sh | \ + vercel.json | \ + LICENSES/* | \ + docs/* | \ + scripts/docs/* | \ + website/*) + ;; + *) + fail "release-gated documentation source contains product change: $changed_path" + ;; + esac +done + +printf 'validated documentation source %s at release %s\n' "$source_sha" "$expected_tag" diff --git a/scripts/validate-docs-release.test.sh b/scripts/validate-docs-release.test.sh new file mode 100755 index 00000000..6e9e8f85 --- /dev/null +++ b/scripts/validate-docs-release.test.sh @@ -0,0 +1,91 @@ +#!/bin/sh +set -eu + +repository_root=$(CDPATH='' cd -- "$(dirname -- "$0")/.." && pwd) +validator="$repository_root/scripts/validate-docs-release.sh" +scratch=$(mktemp -d -t docbank-release-validation.XXXXXX) +trap 'find "$scratch" -depth -delete' EXIT HUP INT TERM +tests=0 + + +new_fixture() { + fixture="$scratch/repo-$tests" + remote="$scratch/remote-$tests.git" + git init --quiet --bare "$remote" + git init --quiet -b main "$fixture" + git -C "$fixture" config user.name "Release Test" + git -C "$fixture" config user.email "release-test@example.invalid" + git -C "$fixture" remote add origin "$remote" + mkdir -p "$fixture/cmd/docbank" "$fixture/docs" + printf 'package main\n' > "$fixture/cmd/docbank/main.go" + printf '# Documentation\n' > "$fixture/docs/index.md" + git -C "$fixture" add . + git -C "$fixture" commit --quiet -m "initial release" + git -C "$fixture" tag v1.0.0 + git -C "$fixture" push --quiet -u origin main --tags + + printf '\nRelease notes.\n' >> "$fixture/docs/index.md" + git -C "$fixture" commit --quiet -am "docs: add release notes" + git -C "$fixture" push --quiet origin main + source_sha=$(git -C "$fixture" rev-parse HEAD) +} + + +expect_pass() { + expected_tag=$1 + output=$(cd "$fixture" && "$validator" "$source_sha" "$expected_tag" 2>&1) || { + printf 'expected success, got:\n%s\n' "$output" >&2 + exit 1 + } + printf '%s\n' "$output" | grep -F "validated documentation source $source_sha at release $expected_tag" >/dev/null + tests=$((tests + 1)) +} + + +expect_fail() { + expected_tag=$1 + expected_message=$2 + if output=$(cd "$fixture" && "$validator" "$source_sha" "$expected_tag" 2>&1); then + printf 'expected failure, got success:\n%s\n' "$output" >&2 + exit 1 + fi + printf '%s\n' "$output" | grep -F "$expected_message" >/dev/null || { + printf 'expected failure containing %s, got:\n%s\n' "$expected_message" "$output" >&2 + exit 1 + } + tests=$((tests + 1)) +} + + +new_fixture +expect_pass v1.0.0 + +new_fixture +git -C "$fixture" switch --quiet --orphan unrelated +git -C "$fixture" rm --quiet -rf --ignore-unmatch . +printf 'unrelated\n' > "$fixture/unrelated.txt" +git -C "$fixture" add unrelated.txt +git -C "$fixture" commit --quiet -m "unrelated release" +git -C "$fixture" tag v9.0.0 +git -C "$fixture" switch --quiet main +expect_fail v9.0.0 "is not an ancestor of documentation source" + +new_fixture +printf '\nUnpublished.\n' >> "$fixture/docs/index.md" +git -C "$fixture" commit --quiet -am "docs: unpublished edit" +source_sha=$(git -C "$fixture" rev-parse HEAD) +expect_fail v1.0.0 "is not on origin/main" + +new_fixture +printf 'package main\n\nvar version = 2\n' > "$fixture/cmd/docbank/main.go" +git -C "$fixture" commit --quiet -am "feat: change product" +git -C "$fixture" push --quiet origin main +source_sha=$(git -C "$fixture" rev-parse HEAD) +expect_fail v1.0.0 "release-gated documentation source contains product change: cmd/docbank/main.go" + +new_fixture +git -C "$fixture" tag v1.1.0 "$source_sha" +git -C "$fixture" push --quiet origin v1.1.0 +expect_fail v1.0.0 "latest release on origin/main changed from v1.0.0 to v1.1.0" + +printf '%s release validation tests passed\n' "$tests" diff --git a/scripts/vercel-build-docs.sh b/scripts/vercel-build-docs.sh new file mode 100755 index 00000000..2457612f --- /dev/null +++ b/scripts/vercel-build-docs.sh @@ -0,0 +1,15 @@ +#!/bin/sh +set -eu + +script_dir=$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd) +repo_root=$(CDPATH='' cd -- "$script_dir/.." && pwd) +export PATH="$repo_root/.vercel-tools/bin:$PATH" +export DOCBANK_REPO_ROOT="$repo_root" + +if [ ! -x "$repo_root/.vercel-tools/bin/uv" ]; then + printf 'pinned uv is missing; the Vercel install step did not complete\n' >&2 + exit 1 +fi + +cd "$repo_root" +node scripts/docs/build.mjs diff --git a/scripts/vercel-install-docs.sh b/scripts/vercel-install-docs.sh new file mode 100755 index 00000000..69e393ad --- /dev/null +++ b/scripts/vercel-install-docs.sh @@ -0,0 +1,41 @@ +#!/bin/sh +set -eu + +script_dir=$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd) +repo_root=$(CDPATH='' cd -- "$script_dir/.." && pwd) +tools_root="$repo_root/.vercel-tools" +uv_version=0.12.7 + +if [ "$(uname -s)" != "Linux" ]; then + printf 'Vercel documentation install requires Linux\n' >&2 + exit 1 +fi + +case "$(uname -m)" in + x86_64 | amd64) + target=x86_64-unknown-linux-gnu + expected_sha=788f18abea7c5f55d6216e4f5613fd89d4d59b631efeec117b2b07fe72f1da21 + ;; + aarch64 | arm64) + target=aarch64-unknown-linux-gnu + expected_sha=66393193038dd7eb108abd7a218d9cec04ac70ab98242b0720fa94de19223b7c + ;; + *) + printf 'unsupported Vercel build architecture: %s\n' "$(uname -m)" >&2 + exit 1 + ;; +esac + +scratch=$(mktemp -d) +trap 'rm -rf -- "$scratch"' EXIT HUP INT TERM +archive="$scratch/uv.tar.gz" +url="https://github.com/astral-sh/uv/releases/download/$uv_version/uv-$target.tar.gz" + +curl --fail --location --silent --show-error "$url" --output "$archive" +printf '%s %s\n' "$expected_sha" "$archive" | sha256sum -c - +tar -xzf "$archive" -C "$scratch" + +mkdir -p "$tools_root/bin" +install -m 0755 "$scratch/uv-$target/uv" "$tools_root/bin/uv" +install -m 0755 "$scratch/uv-$target/uvx" "$tools_root/bin/uvx" +PATH="$tools_root/bin:$PATH" uv sync --project "$repo_root/docs" --frozen diff --git a/vercel.json b/vercel.json new file mode 100644 index 00000000..4e94d940 --- /dev/null +++ b/vercel.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://openapi.vercel.sh/vercel.json", + "framework": null, + "installCommand": "./scripts/vercel-install-docs.sh", + "buildCommand": "./scripts/vercel-build-docs.sh", + "outputDirectory": "site", + "trailingSlash": true, + "redirects": [ + { + "source": "/:path*", + "has": [ + { + "type": "host", + "value": "www.docbank.ai" + } + ], + "destination": "https://docbank.ai/:path*", + "permanent": true + } + ] +} diff --git a/website/assets/authority-ledger.svg b/website/assets/authority-ledger.svg new file mode 100644 index 00000000..a14293c3 --- /dev/null +++ b/website/assets/authority-ledger.svg @@ -0,0 +1,25 @@ + + Authority ledger + Exact source bytes remain authoritative while approved processing creates version-bound derivatives. + + + + + + + + + + SOURCE AUTHORITY + Exact bytes · stable identity · immutable version + 01 / AUTHORIZE + Operator policy + Provider and outputs + 02 / PROCESS + Bounded work + Against one version + 03 / RETAIN + Derivatives + Traceable to source + + diff --git a/website/assets/derivative-cycle.svg b/website/assets/derivative-cycle.svg new file mode 100644 index 00000000..4bc7ae04 --- /dev/null +++ b/website/assets/derivative-cycle.svg @@ -0,0 +1,47 @@ + + Docbank derivative cycle + Consent, derivation, retrieval, and purge cycle around a source that stays exact. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THE RECORD + source stays exact + + CONSENT + DERIVE + RETRIEVE + PURGE + + + durable · revocable + rendition · embedding + evidence-backed + originals untouched + + + diff --git a/website/assets/intelligence-pipeline.svg b/website/assets/intelligence-pipeline.svg new file mode 100644 index 00000000..bdbc317d --- /dev/null +++ b/website/assets/intelligence-pipeline.svg @@ -0,0 +1,62 @@ + + Docbank intelligence pipeline + One exact source version feeds governed rendition, chunk, embedding, and index derivatives that can be purged and rebuilt without touching the record. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THE RECORD + GOVERNED DERIVATIVES + CONSENT + + SOURCE + RENDITION + CHUNKS + EMBEDDINGS + INDEX + + + exact bytes · v3 + ocr · markdown + deterministic + generation-bound + rebuildable + + purge · re-derive · swap providers · rebuild — the record never moves + + diff --git a/website/assets/interface-map.svg b/website/assets/interface-map.svg new file mode 100644 index 00000000..f803eb65 --- /dev/null +++ b/website/assets/interface-map.svg @@ -0,0 +1,61 @@ + + Docbank interface map + CLI, web, TUI, HTTP, embedded Go, and MCP reach the same vault authority. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DOCBANK VAULT + one authority + stable identity · exact bytes + + CLI + WEB + TUI + HTTP + GO + MCP + + + scriptable + visual + keyboard + api + embedded + agents + + + diff --git a/website/assets/recovery-flow.svg b/website/assets/recovery-flow.svg new file mode 100644 index 00000000..083e99c6 --- /dev/null +++ b/website/assets/recovery-flow.svg @@ -0,0 +1,25 @@ + + Provider-independent recovery + A verified snapshot restores exact content, metadata, and history without making a processing provider authoritative. + + + + + + + + + + + + 01 / SNAPSHOT + Exact record + content · metadata + 02 / VERIFY + Before use + checksums · history + 03 / RESTORE + Operator control + no provider required + + diff --git a/website/favicon.svg b/website/favicon.svg new file mode 100644 index 00000000..7a4ff4d9 --- /dev/null +++ b/website/favicon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/website/fonts/Inter-Medium.woff2 b/website/fonts/Inter-Medium.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fdfdcc699fc1e19eb1943c2896e8d66e17b538ff GIT binary patch literal 114348 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
8xHZHepPN#0KgU{FP@5lMu z)7H~h9}e1JkV7F<-P<~af_o4OP3BO7s535=eeKfuxC=&NTZ$;U&DKGd-XQYtR_n-E zI?M1%T64~8{aplg?N2EwwT?xqDlN^4$~7G~T5C$3OD*os+8x05%u{pw$`g96ds1mD zpJ_6QjIuZP(%SB>km<9p%g|q|EOHn!VRGKaBVkGfxppw5ftJGK32nN zQAYF;t^v_0SB9gmkME9sQ=d zSgXVw4w5>FvLG`Z1r=0qjExLYG)1H;6L_tqsb$f5%`GOp z$2q%q*b}iz8`>bTS_KIZZza-loETvo9Vt2aJwQBMl)EAs!ff}nZNHF>O}?;Vw^6yg zE`9NpaphsI*bTTW+D|aF00UQM9f(mo z+3-jB2}Z5{TANm-WBr(?&JwFFNq7mw{!ecFapSTQ7|%Kro>vFe%X1AvgeI&2Y`B4L zC19i%;zsxKR~}GYWwhZ|40+O4gwAI?_R~hU=X-im=(*gDNYzuqI-7UZCI;ME1T%zM zB>&YUt8(4E+>NAF@o5_l8}Gy8orQidv1#Bglxi^z8k29!1lN!DKh>d^WB&U`ZM&pD z8_^0Mvn}(N(|J3yVax!Vje@WdDz4e0gNPm_*F6ZQiImLm{1ir9IYyXLEQB&FaC1!d zY_x^$Ol)fFYEa}rKtg#x zO1VzbtHMte3^bJQEm~O3*woZj8tVbn7giyLKYPvD@JPggG(x zE!>M$Z{lkq<7=pm{SoGFn=B5nUp4BI=p)3~*~y?Nn<g~Y(Hes}YBq4mRDSjUSN z5Szl+BQY{FJ5Nty?2>JeO^zIs81eTN@=xV;{!Bt{6MrP>v42pl$V6q2x;sCY?^EOv z#_7h*Wz%~i4$_QLy%LOk)ZqbGA(A;hL=?RT#XYO&$3$cqmE94%8l)zlHKYiHs(x4E zc=s>~RU<8_4G}0;3Mxd~$r7D!Y-|Ga6I7oeG@*J+fFH`21Pw;5p2uG+dK2V@S}xdb zYXl8+gYpFBO5tpWvxa!Yavn z);`l!SD9ZG$j1}vf-PwP#yV&03520%#|vhAcK?*s1G;{9RBVi#fMcHXL5VTK44>@( z+^ay@_y__4Je9LW`p3yggpJfwOuItASXT%*YotBIq_{au%mSTCHBYFXCzc`S zm`(9aK=kv%NJu3JnbC&5JD`E(97?-#W#~Gmo?Q80R2HT-qs|I86gJah;dPN;3?C_i zYE>44oAr%}nC4rs{sjq+Z6wG*sw6^Aym?sq12(YTk->Ki|0hKFNoFSzQARJH@?h&L zbFCN&)}%{=h5(Y?F|kgVaZBtMZy-|y!pzEJ>6D}UZ9dScLMH8?@Yy^Bad|pZPM=*NKK`o*T z^HxN2l-PM_=qMWhY$21#Dpt5`WOf-HJl|MVm@6K#2Xq&In(J5s>M8JSyAV=o~H9ABCsjrO_yWilBC-!RHu<4 zJ0(1e^^-la^@hrxG?^^kY`|V%(Gevg=qH6FpKAys4)dAshCKp5HUk7hV7vFQdE$n7 zOlWtiN0&+WiM|+EBj4eL5W!xLMbkP5S=ZY8n6FYz+=tzGooV%QyRc%}j>QK}D~B6z zF2{BSW)@i4pA?9sBCFW~%o0pk4^DAuhl_ctKtB}zH1fv9z@?uM$_}QlS||BVb>|5B z{?P%@rlZNPn)f)6PZkT(-CK4DW7Ku2Z=}7LvfEt#ytvZ;K9O!;9;Gyh&VTd9&X2J zhV2}&hp+-LCawkOX%nRM+uvGfaW6GZaYUQc--rS@=;T@0ov7{E>=s6axnwV9*{^H* zF{7YIBmgx56!66?_1oxLit=<{82)l39k?@7 zM}~V)Lez{(+T6d0^?S(Z}Pzj zQvF?JCNwF{7UXk~&SV{H@J1pL55NjA(go6kk_&zX$hQDz& zGpXRVL_yM<8BFCTY$d%%I;fC!DN_erD^00blki-`5=OKX7?=Z(eV+S~gV|x#cs==F zaB4PrgEBg)lrQA(;7LFsE1U@nktciHcFsrMc7H1+qWT5}>8EYZ7n8lWpdWT4xYqb8 z3YOe%Cq4a2y^vB~Dg*WX&ii@3eB?el*#|7<9MUAG?fs&3jvKY8Vkxt=)n)4Be42)- zR;ZX{yF&Fw)ZTqpH!Do@+c+95P>oux^<}hCNKs97kn8F2jME$_GK@2D4>UAd%hgr>dv{Y(d7qY$HG#%!UOpMk?dnaur{=g&|D#Uxi0yf<0mwuuRMhO}qBmU^zMr z9Q;D4(4CZrjI1+geeVuy2Tlk_I0l$uhL~adheLA! z$aY_m5<5xMPhB@@%!yvBzV{o!W7bu>wsx7i877-KQ@V8bDw6TF@+^BNIG^@N-8wwT z03xX01pGRwM#qfcA=81%Hgiat-fD}=kY6XRy9d0V8t!|tWHqCzoh_5y4dOjo-A?$J zLp9j+DZ{T4Nv#*%G8+pd#sNA*9Z$`Y*3^=UtH>l5fndbpe0+PzCQ9G6dxIf@_L=ZG zFjE?DC{Est!P#hWb$EP0gp81-bN-<11g&;br)KpdxQx^7h~UL@M=l*PS$$oIoz*m(22 zFbn?;3lnd?m5bnvsOHv(#H)vPx8aaN-F3N=PkrV){j{|qnOw_rIcb2{W^^`Ubr=lV zGzK;R9=s}R9crb5{CmSe8uBzIudgrST;lk+yujT@5m2qa)4D~h%|37xk?-)3K)-{)ufeT35t*3acNmun?Pi$RAAdz}1C3a=WRWvjF&;egyl;c!`5x}UGwI>@KS2z@A?R{S`ekTH1F~sR z0ZN6qDcb9|ktW8F`ssI5sb%7O(h~Seg?Gq*M~NHOwQ%X;=@FyI7CT|b4$es|h3!dX zATl&HHr5Mpvvn9a_=84-GNLEXS<__eO`H;}x@@5)M_?NkohE>_58NR9Ri2bv-!FNA zAkofXgvJNU7Gr+T)(}EDWs78!5kWb9h*Zn+X7Dz&70OcYrVL)|ZwxIsFRR2^I&4Ez zs&8x%=KRlrJcs1!rRgfYlUAbUgEg z3g4|`B;CFFz*IhKDG2+Kp%8ck!GtmKtdUK2sV}poNqTz4ujZG`NqhAV6AR%I5|u-K zr&JlLi~k6Aez^O6PXY!O8X_t(GMtE<#8jT1N}%C9ZraRHWc3b=gG*zs&N>R)U_3i6 z6>b(ds?wk!A(9OaykenCvyotHNx7;mTAD6*Pkt|GFsMA4plkm-fWx-<=Q;372g`_H znyFU_r6+`+Pp_YHwPLcQP}7MK->vhl@7;nqU$4MJ=>C{KP<8*zj>E)FWln0Zz=tyJ zIBiM48tB@>#M3a_;uo*rCwk%3qrrg+k$$s45_YV*J4Ch z6l9d3%X|;ax=FLHXVT8jY&Myw-TxUpKYF3J{U#B*PV|;+#hz=q#<-5TPwuE0J>MiM z3Ggd`nVeuIb%Xa<44B5J2Pa1nj(;5m4ZI>DaUEL?uPiV#VE=TvaQnR#IvFn!wnZ!YB?X~0Jwo&j;7ErfSschDA^>Qm zSZRmgE#-;LjdJ!3nbYVaR!!X7**6gm?L55#0A%T6AgBSTsC_WW1vs1y=7EnYM2;1f zR#SNm5fvF+$^l_X!9=D_UE5u6^sqX7rMXJoQsBZ2gUB=&3DRVB3!!sbscN(DDh?J{ z#|?Iqu=b|9j5nAOme?A&!4a@LFOaYyf9huz+ij4G;h0Rv(5*HLIfQYDMbO=2@-+ap zND7ETs_BoJpK^6ri9JS<0WtL`_N7Dp+l4LFx3`yI8pAwMngPe%me5TY}~=S2-156|=u=^?`lK@d8g7pP7sN`C9Wa-#x$k+RJ- ziKcWiKgtYK)hQLDlBc}N1*M9Td=AYSC3})sQ%N0sR<%V zC}J0wA^JUcJ2I&Vl?*e@7_8L-5GY|x{&$z@CX{L{wCXfOekEOz5Ab==kfp5KBFVQwt4u_)|o6QJH=2h@gqKiWj>?s zHfGWvemA0usG^`Y=8)V^4n+uOrQyBn1QCXM{ZkWwVw$=J*XGpRI5dU^A^r09C{otH z3JlE)aum8QOH;%@G>=QJyWuXsl#O+ZBGK+9fna~=r$XgaU_1_AO%Wj+iqpEo7S|29 zIrTwan^i|X-#4@49rzMV9xCTir64;NNa*6U_t{_1LsGU0OBK(EN?$1+F2#{8vTYpA z$kYqGH_e>Y;5vCz%)R+8>zjIS#QpZ!;z#q|*>&(c^QiH=5}G4TF0*%ucV;Vb2lwv0 z9ia-IY%e5LShF2~S{|ZOrmk-j?ljmenmbTniSd#%mTge92w~5|o7JXCdagkkdRdJ& z_roEh^4dzl@i2$S@^rVv)K3Vs*$Bw#QT{x+=8;U1H+DWxT+rO@9(z( zwKq$@H>+-Md%Lx#=PQn0*JrF><6DRv&S&cQ$m(YsX9`p1II47@!{I!DMj&NyjqzrZ zrzDaukOZg*EJ%DX>9M^dLkImZFO8K*uEQR~FoqHQ1(qsAk@)1R&)?agR2|1BKxkCUJ5`NIQQ8k8v`ITmoZ;7AS^q-3&OyTq)rrA~<_ zWVlzMk{FAyPz+#VuW+UP)42m6Z1s@9oAp3dFSO#zJi;JK34t^zuq%H_t-yb4#DDUk z+wIfc4B!}^MaZ4Osc(mGeOL2RuFBIV`emGr2Not^=K2!07w6Q8tw94w5~$e0Bfx|q6o`^0 zFsWkZ4V*gPE>9hxO6MqzWcLq1C#kKT!;2+v6l&PIg=a0{?IZjg``3+7frv0i{`I`n zjYd2!r>o%#=F?gr0YprY(0^{sHT@Wz_i=^M_cn9uKnfE(;P`J4n>vEA#na{WExFY5 z7LF7n51yv6xtc$Z2wQ4~{dV+ve10JT`3W3KLdayHX>l^h2AZZO91alzh4Yv+2=atU z<2GNl{&4WgpOz13qD> zVa=3Ykx6UVs1J+ZD3q1R2NDwaW?d>Y|uPbyUq#7nDazAF47NAXf>KmHlmW% zGDcS@o2X)~a+`w-FIT~FTzMhF#isZhqJ^R3XL)-vihvgbyX)YbKAv1-gMpm4)kncV zX9IPDxr72GIj!St!WC1Aws@JV{9$_xzb9ZUw>z-WUB{^@c;pwv{`4Fo2K{|#Ug%$L ziTAhK(RCuy80Wu)H_-PYApdOv|Ev@8k3s$W0K~xjZB3k_c>kRDQvnekr{3|Ybf*s1 zp&r~LT+7=7aN+)QDQ3gpzK1U?btEU?S}dr~C1-PmEAT5@8U=BsNQfPpn5(|Aq zQgwNzUAilt^WjFc`u7Kac^s1Oqx)-R0kR%}ZbFeQ113VM@;G4;07|F#U?~{bPYWg` zw3+FtMq#A`4jf3NfQcI@QoyKzn=9~dKr8qLuTk<+vlH|*wNI)E)|f| z6C_k*bR;xk$$}D7lj9&sgcx}N59{@_!Yd;zI}zFFXP$>tYrpL@Af{(|YTm^rpzpwb zvDfNIuB;shupkkVVnY-~KUs8C-2dEFR^vo8P_&h6LSu6dX9)|ZP#DUix=fEyAK_wT z+#%3_0t9iq?AF*F$8>!mtdx4CW56g8olpVMFe22(&L~ybiXnADg>N5t3CAJ<$b5W~ z>Q({aK#E7SEDJDY!QE*j}DhF8qIC`5#EnaAS%GKqr^VWbLzB&kp>-!M&^by1hI(;|bvy zY(OcS&F*qIhxs1Mf{fXOl>d-&L^4f9S%yLAq{4sLsA3YD>Jq#%{mV+*E=(+EE5SVyvvp%rq@cje!Fga_FdmBM{U+vtu^0*u zkMO@)B66x2J;|g^*=7+aml$zsPmhLa;5@O|FYtdDOG)Jqpti7o=>jNlLNJp5>L=Yd z=P@stlhuOiki2lSGec8j@ra23YEu+(DTzs&YSS)@iBm=gL7Es$W_!wl(s+L^iYHug zxy*;v?VOVWrbi>jz6jE~y7{02C)abqlbUAk1q!j3l|aS;#<&YA z3TrlE&JV8g2V%|vZj^|t>ZjkFV@_D!GiBovsNapjCvOK`U9sQlrN}?8Yt!dSLdkz-w1^o z$u?560Kr_Q;y;!BmUBqNTWRHm!|z{sxgL=0JP`y@s2GVxe})>2hF-(rk8+29K+i&@ z>Qe%YkpWKW{Ej{^6A{ojzvg^#F19=Lo@!I+weB@90zFn3BX%GHJ#V zBzu`!+y0t|-Beoo-Vd2OAS@+K-phL%#S1o%K0Z?AaJR`i>22IK1WJj90!^9}ECL{H zgpki|hE`F`J16B@Oyv@4MLG;edR85rY5VYaB0%V5%%Hie&3V z1X{M1@2^N}Df;tf#G#2j(ul7SdOA$tRDD8G)x~>h9>RYOoTcJv9wvxFbwwtlF zY|f|s;^5lF;TG`N5znc}+mD%FMVOIBDf(VA*pvvbzE zC_edu6!MD|nZVOEL{f@oVSLN?hKW=m9D=0)+}2?}knS=62PozsRLme|%+RnI0f29l z>S93+Z+9;fvP7)au3A8g(-EXh`5E|cVOdBKm&yBw2usNF%T>FLNwJhvehn9ysY3MF=$IlTSpB`9>;0mDT(;xzD79FU7RBZ_5ZmSKjJ{K<&Eu9B8d8L8QrT+=z)mMx(qt-9J91?Gv7$l(VcH@#x1c_pRu6n1(2$ zW#J{|uL@J^k4j70`7ky=f7CfqIh$7gn$*DhJYri7p>x`-OTqT*l%{dpi}x9(4lFb|NWf8m6_76U3grXv!f%zd$KvF8wZq z31sGcGXPn<16Lnwj@vz2^@@``CX~^wq`+Lk~rz8!0Qi}V*UeTEf^id1`Zo;>@ zrf^qmKxk%+P?;Nwjw><4m;mb94-ZHHvbw7W4XWsxi!~bPCwTi?H|)Y^)y5AdD}aSJ z9UQL<8t>`JZg-YHtld6s=SUlvi$D@b>37{End3@@l1i1DOvd#w7HnQ_X3XfBnMt{5C~exTuk~x7P~T`>eMN@Y|N?5tQ<;Un4HsNO<^XmtQ^oa?Y8Z z{qi;*PCt0RO5HL;*zA8kHu6$L#PI7m8Q%^<5~8oKNGIi}|5Z6>GMPv#5-2bd{e5h> z^YZcO!WM*BFixoAVmK%ojYOfAA^}&7zKI_l!Ws0iMaH`V+M)AP+0OG=UBS@brIO$M z8PWukzb`sigVz+$hC`%yvBxW6#k}&x^@kpgHXxO)Uk=6LQAWVr9Mv{rbehUPdKg$d zyI+hRf-%ms5GCt{v(rij=FRI_%)wfB~tP7sW0@xLViT*>TIsZ;|lt==Q%fffTjzq1nJOlbZ3a?M2M zvud4tb_t#B`Fk&cwSIW>K=7sBoEL@O9U z#dtB6BDA8jF~YEgI60Rh$ou75_uj^^5gY0Uqg70ZF+$VP zOU|OBn5fDN!?>_53PaiO7bV$y9+}5U#4wGsB}>!yv7Bk@$60Ssc%Xo$+w3}YZ=4a2=jiQh_R zo{@pkJzY)DYdvBshq+4b_GAYjXHI_rEwHHZ*%a^#;9;$6#h?}#+`sTx_w!dur zys`FrkEpjs>GiL#X<2Fis~3X1-Ab=+2hzCjcHd%~UHn>yC#mn(pW50BD}R|MP7u_5 z%$H~OFpQr@S@s}q&t!^@70Wx%*Sj-#_zm42-0T>2TU90PZ7RwT@LFn14hRl-0USOE z87LSd(61J z>s#MN!N&x4hS>`4>x-KZISq1GQb@5=Sjn8~{2P4Uljw<1Cz}y2S-~k_CJJ@H?TD|4;5iK-bM0w z^ugTK4D64=czbP`paCrrQM>zHAElP6dU?#Vz6={pG~^fifZPsK$&mg!-RA;GG7l8e zx0b_f|8?}){XVO+R_tjaHP*HfnB(^~Wxqa)rG z5;b_CJymHV!pCF>JKpG^DHzeEKf#SqE#4QQp6YnvC_*juR&DubFa37sF#b<@^GbDN zot|cUsx#%t%O6wiAec5L$;BPzw(HcG?vq|1T|t*Iv%yIrBFB98!qd#ZB@7AY_jXuO&6OE5ZZ!GardOkO6-QD{MV4J=%1vkP#~|R7Sg9CLwK>~S zdj0m~W*)kgJ^Mc7=%!O!qe6ye!fh0KXX>mbsR&5;RPyb9w+Imi=nG}KeQ6>#4LTYY zhq`f{7vvRqkMes?lP>WX=Z=6M_Su-l!nabE+6)}n9Y;cLMkX7ipgON80vvC*DPWe* z8X`Nkd;BhILB;twz0bLT(>O?ry1x!}IHMuYGc@p=?qN8P(fXQ9VE9<@@)A@P-b9a& zJKFm)xjNq>yhgl1+96u{fWeX#4&L^M{ zIHe~fhfF_lsZ2iC>zFKA9S1=(Ls6F5Do^uV>4X0ymE@94fP)K|r)Ma}bVN^|Pl7!* z*Oj2dr{oTrNO0XGC=?OK+;x}e7?JRVL8YV(RVfvUWs|LJKBJMlSS;!TvmB3z59H8Z z(qcBBhzfOt##zY)?NLCZf^%%WVTZvMgR52=B_L}(^IOlv1V;J>2+5YOzd!IE3K%2K z@00eudvu)e7G??A6UsN-jR$v`^;?_9X;D>N4k#_p-PtlG$D5tU;nbj~ZQhA8ph2$0 z6}#C&4Zy%4!V442$4AZTId~EUh?QTklU$VJ?ZhC+&4N{yO|+4HqNB5OgTfxUd}sd7 zj7@b4kJIDBE;iQx=O?9|Ba4)pkPNyVRa|HXvZ~V*uEnf}Q>Q%G@+z^Zn?FqcEX&8@t zD-%?VB(ceBA#H>0_?UlplV4sKP3c6@!CdH8HiG95*D!($37Aj*RHOF_e0e~Vt4_S- z4XBQP#+gF%MG_GBO+ykBh}9~!T@H2hEA$mfrD?2aF)g!u0zd2zx(pfK!=1YQ{nZgk zidbneY-bo{?ovH5=8+`t0jvDIPB;pgU_lIQ&nji^ScHPj;4$toSE)u^G;mQe$uZR6 z-_IlU6Axb)!e^RGG=89@uU8WBTvA}?$R;Eg!R(BF3MHsfu}1o%7qQj^1P~JIM2>JN z8bez#G@v`MMD0DXL{9C#g>0}u;76H5*;WO2-zN(B4D#!&2)aJk=1iwQsfT=*rM!Ht z+vLnU#edhppHI@|A1repC-N`|k90h^$0=TR-Bf@16l|LNVURsEF+nzv;%p6{xUF`V zOSh0EN|AFOEy=?O2Lz+c2276U1+xde!j&iNN)tf?0I2srC?=*m0Z0i$`ErQ3P#vtv zn?BETG=3ZEKHoS}%X46(>k@D^XO;{&m4e6LPyR~pnn9w-cHG6N?Xs*L}VtB&Uj-x+|a4Ax4qAE%= zF3XJ&avjbF;TU3h+dMMEYhM;^rK=k!#v#CmVALQ)Cc+95-ucFb6FIPUf(g$;rvyal z84b={AwYVD0*ZX$;9LR%gLaJx7vAAm9)Uqoe8&YSUUX`+*EQ`5l^{%67?zUsj%gcw zXnejWclx;*Rsl{gGLC*;l=x}t)wU(uC)?lh(GZ0ts+oawQ*ndA8yZ4*)zhTsSVyJ` z4mIJ-1$od*B^P=mO=skgR;fnoW|Orev4{TH6=z0nG-&w< z_Wezmsf)Up7=Es1QkN;OYL=x9|kaNyS_1L70W5sgzseF{@B_tf( z21uBBw|V-T0}$27G)~n75K94yy6IHZwUy3Ie#$!@AHXEO_^|at%eo*Z&;IQW^}6iE zen`n(SpkT%pK#*Nfi*o*bCxNm|JIQ+H!;Q>Lrg|=kcJ=8SYio1&#Y0JBCN{(eJ(NP zIF?s5XN3rFQQ68>GQ|fAG}1^qF$|X9q)Pl;5)g9X3p}BQ8la*S6W{_d1w=_86JRQr z=w|(ka3WNvBR@*9WOz~g(NX~`q`X*AFN_CDSQatN2{DXZ5R*y}6MK*`aez^AFcFMA zG_;G?Vdi4R(lYjpeN~??b_M^*@<9sOQ)S7O(JS}DDCT&$0?9a|Jh67!^`ZO5RcBH) z#2o|32VmRQxu^*4Y9?DO`>CQl4?deCjm?7;Az_kaGSG$qD2UnoRaRhmp#(nnSL$_P zP#cnQ7#GI}(s3A%;K(J%U@(#lxX9vwQ<8iG)xagqCyKHx4I-wpLx!3+Q4GAm4s~G! zSDXjY3kIKfL1ALRB3EXkdlpE!KYiRJ&4zOy4g{iOf>YjUVrVkK;uUn&3jCwNIiPk_ z%j&k#`+_33Y8S$5+2W8_kZ_%zyJR_Dwc00|wry2x3vEc3%_4)Zf1UFUn!@5wlUn6g z9m!yi&ZVJsodXJ#dEYAVZXjf^1V6Q%MalB3>PYPH8y>R~AU~`YX+0Q53)3JB9-)2T z8cc5hoF0Tj2-Pv0a0&HAdK>yq5Xp3zt?3<|OhrK)1Po zZmPhr$~Xo^e$G#TQz_U;Pcl?3R~jQASRaWW$TMcF_?qb$dD-`iP_TT&9H9p;MIe8P z_$p6SK`RtOad>=#^s#lqu2$fe0=^i7(LEOGx>>;B3VaQf;NnZ^RyGJy0muRo<{%-k z1f*aBsFNTt0OSW@Ff#U;VGt`;+SVq!RM{8|VHVWSz_bEyKF4Wwx)A9|03v7*5!ivC zkOZ9MA_A3&I++9uv=&h!>Hr*c(DlNkaOc@f0tQFCVb}(njjDH%`K0&2t9-_NAY~?*w+Q{g;$A!$BB-&*=NRckD zaAO7n_drMD{*U@e)BgG(fkFZYP|}}LjD!>z^{8@`Ik`T0;Z74(0dc6RIuw(DsvxP# z^4e0ai^{sdFl@`}3NtM?oi-(i`H$xO!-qkJ4hJ7iMju^AAMMD4cjO`{Xt)9-QH@_3 zXpAA^xJZctCZx(PCUhSfRzwjr&Q=qOpE_Dm&<7)RC1ov&K#q#Tod82GEDeHVmL{2c zBC7L0Q2`sKhQ=xllvb9`%L8c^2G%!d_ku}trS`+8OVR2}@oUTxZOj2|JdU_^2iODC zBfMrR0c^P^>fP_K)WFRO7DoLRHiRq{ASI6CF}b=QM8N)%!~97M;!X|yt%`&%2>Bk^ z3_cV94=x8DP#GT#t0fhk*+&)bmU=5Yd>B|=u647AkA5pY)9XNuDO)Z*6jL_90$+zcCB8gEhyPx>j0XwE$n3{n#39&I&>6z9Uy>NuoA5hjW+(&h z=w7KPplIZ!Vl!a}b5(u`*vY!#Q%+oQ2Y+_X0d8k!|F3RmNC$gRpLU$XAMpu<}$5N05>1T&*s9RNlnLaNz`=I7;(d)cUOA;S}-0{eWa}pm!SkQ!9ETIVmek$zF z%v@)@p~kSt$Vy8~OvQ@}2IX#=aard17>QVgZ|Y@Ft3VZFyn0IpC@$h1IG1BK5+~w)~zSm+NE1~3ew6;iUDI11bg#9_R<`DU&a>VrD`2Q&C$lI0<(F-fYw z8O&P|9rSL;TP3BG^pq?q>wGV_x#9&FK@<6V>%NO#;fcMVx1ufCrT<8yf@Ms&SGr-5 zMtq|Zqih?3`lg63U!tA_fiUC{8SU Q|3zqFp7#i%;`h*l0SMlYXs3emQm!N_Vh) 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 Pl?f(p%*Rm#2=M;_zqO9b literal 0 HcmV?d00001 diff --git a/website/fonts/Inter-Regular.woff2 b/website/fonts/Inter-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2bcd222ecfae996d035ff72bf70672305cc29261 GIT binary patch literal 111268 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 YlP_pm ztM9Q_f^Ju1U)kTCx1hKLRy|sob}2&j2&ldb*lu^!byk+hq!~}+_;u0>%whduh(~N+;TSmC{wFV7$q?xsq7HHtMXK!Bh!IC?>zVs z4&UzGhlt&#PF~ytjIoG2{EVzwA9Ayn;0-nF>|uE@byk1q(c@|?JQr1hR#*>F-g@|3 z?d-u%RhtFtnGy!$p9|0OCFNRm^z%%F8(4ACq<8yCY_Hc|D8qZYSm*17Mn{Q9zjQ7{ zWfdcpJ30>$V|E`dKo#O~);}W*c`NIB=ixeXAWr4{M&@5$vHbWzt2~(8LaUJGqAPVJ)q4w>fZ@NJ>GjaD5Za+z3T(KUb6?k6#p55W& zzdE(3wqIfzb5xdWH)5pQl}g&^b7iso(49RpBYsl+z&Ctcv$65{CqiX_R~PMr-M*qk zMelENM32kx+LqlCdk3_bIp9<3eCw7gFi=ub6zCs=GQ3KL9W)6`Ru|96ft0=62$k8| zVOV(-+H(-=L$ddL>u0g3Jh$w-J3c;QaKf~Qd8czNBf7Gtu6nwvZPy`U^C3&S1G(q1 zr$34x5bWzPFd;1p#28_0z$r$+P1q9wJL13yW(6F|N~Me%`>)4TzsrGQFYie+@f8cJCrV-T8JxXD=5 zJrdSonp)91%bh=&Jz=jb$AhL5qzRPPEoM!%zEg%Kmt)s!=7$I^i}Dw`EWjbBL`$Y& zk}*nY;`rIChMh(Yow>6GBp+SYeW}>tp|!=!bB2q%Z(B3b*gui-0a^NY>l{__6Ya62 z|71g`ABa3sAy;yce)@2JibjfE+luE(DnDt`T(ig~O7}|uBO2@wCOa5tDaE8xe?iZE zt*pzaU9d^Q#vuY#Fso`TJdBjVVM`O0B}y8JDJ3sq03iLV_Cq=+3<|t~4a7Kk^7_}M zNH1LGzJt|m%v3vaW3xW38?;gCe1DPq#a+l$Qf($O*d_&#;zzJb8F%kd4 zDm2=jD7%Ui)nEr}CGT*xE9D?Qe9XWs&QympaHq}Xm6%HuY?yKrlB9-#hh`B0F<~8|0QHjtaY~aZX{1O<$ID_nw3iwV4}3~!{1*h z#VcpV3ah`-sxSN*|IWk;5<3FpWmT36p}{ zN_fRy`tLdWq)NUmPTqv$i!{@<^C%1Q5fW#+0e~-Qe3UT7t$|rg0u`OtsXsEBvxhWS zE7|kU_1*MtPEU9)`p2tm)MQ!Iupaeq*!y==LwwzSuC(eJo=E9lU?9YVujY_ik7wBL z>uSFMtJbM;yuQ)g)uzol9JNzU&LKDMQyh`YBqq@dSYk;Fn*r-fb-UVd+oWboS)6RI zN2|l~sj}br`}EUPX6D@7{fErZ{Qohkhw&fq7yDmSZp3$HueoH@=YQ$*Lvn;hQ2X>$ zcbzb2G^_jOuIW2hZ1hJP{J8UDaeecZPiFakc<1av@zkwVXooy%qiXxkXjWg3$`WM7 z0n_HVx11ns0NDwuqwC2AhFV8Qzo$uWXHOJNH2)mKMzM9HUoEAxekuC}&whSue;Cdq z@UwHPG3oEs->kut2X3FEob+#Fcj*Y!&Yfp6coz;Y_lx;sfB8PvFSHl$J^jQ_t(kY! zfyvDbe-{Au-kw>)S1XmVQET`c7FZ7JOEUN!m5Nsdt;|OyylC0Ik$+f)W+k_l)ViLB z4(@E`kX%u~|3$T`@7)c~e|j{nZJWXO^pV1}(oi0(v95cK8=LF5CVe}m;N@2>1pGff C!H4<) literal 0 HcmV?d00001 diff --git a/website/fonts/Inter-SemiBold.woff2 b/website/fonts/Inter-SemiBold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fbae113d2855e22c06376495bd2dfe5f02411272 GIT binary patch literal 114812 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

    eUvlpY^BQ;sc~Q~=U*%-q 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 a!Kymz`|Y2zy;Kxy`;^}w^N6qj0RIQ3n!o!1 literal 0 HcmV?d00001 diff --git a/website/fonts/JetBrainsMono-Bold.woff2 b/website/fonts/JetBrainsMono-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4917f43410757b48e4ad1eca81b868dfe405d25b GIT binary patch literal 94588 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 W6KeHYDRQ^d=CvO2o&f^^0sSA5t?+*U literal 0 HcmV?d00001 diff --git a/website/fonts/JetBrainsMono-Regular.woff2 b/website/fonts/JetBrainsMono-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..40da427651937ac3b65ea6842f9448a810f719c6 GIT binary patch literal 92164 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

    n;(xiy1rmCEH9%+5AkK0c9Mmp$Bpno>X5 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%0A8;vgQ=!?I3ie`l+=pu?>UlrjFQ?&c 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

    3}`083+mir3b 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

    u0;?uWO_?-|8O8&D*j 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 Qsd`%9Nuz;I8UO&`KVo}q*Z=?k literal 0 HcmV?d00001 diff --git a/website/guide.md b/website/guide.md new file mode 100644 index 00000000..f4488088 --- /dev/null +++ b/website/guide.md @@ -0,0 +1,123 @@ +# The document authority lifecycle + +One document moves through nine explicit boundaries. Exact source bytes remain +authoritative at every stop. + +1. [Ingest](#ingest) +2. [Identify](#identify) +3. [Authorize](#authorize) +4. [Render](#render) +5. [Embed](#embed) +6. [Retrieve](#retrieve) +7. [Replace](#replace) +8. [Serve](#serve) +9. [Prove](#prove) + +## Ingest + +Docbank copies bytes into the vault without making the source path part of +document identity. The virtual tree gives operators a familiar hierarchy while +retained content stays addressable by checksum. + +![Synthetic Docbank vault after document +ingestion](https://docbank.ai/assets/generated/web-vault-browser.png) + +[Importing documents](/docs/usage/importing/) + +## Identify + +A stable node identity survives moves and renames. Replacement creates an +immutable content version, preserving checksums and history instead of silently +changing what an identifier means. + +![Docbank retained version history and download +action](https://docbank.ai/assets/generated/web-retained-version-download.png) + +[Editing and versions](/docs/architecture/editing-and-versions/) + +## Authorize + +Before processing, the operator chooses where document bytes may go and which +outputs may be retained. Authorization governs a task; it does not transfer +source authority to the processor. + +![Source authority above authorized, version-bound processing +steps](https://docbank.ai/assets/authority-ledger.svg) + +[Document understanding](/docs/document-understanding/) + +## Render + +OCR and rendition providers turn the source into normalized Markdown and text +through an enforceable contract. A rendition is a governed derivative of one +exact version; it can improve retrieval or be regenerated without becoming the +original record. + +![Derivatives retained beneath an exact authoritative source +version](https://docbank.ai/assets/authority-ledger.svg) + +[Understanding outputs](/docs/document-understanding/) + +## Embed + +Chunks, embedding generations, and vector indexes enter the same catalog as +every other derivative: fingerprinted, bound to provider and model identity, +and rebuildable from retained evidence. The catalog records what produced +every vector. + +![A source version feeding rendition, chunk, embedding, and index derivatives +behind a consent boundary](https://docbank.ai/assets/intelligence-pipeline.svg) + +[Embedding plans](/docs/document-understanding/) + +## Retrieve + +Hybrid search fuses lexical and semantic signals, optionally expands and +reranks, and explains each ranked result. The fence holds: every answer keeps +the document, version, and evidence behind it. An index helps locate the +record; it does not define it. + +![Docbank ranked search over a synthetic document +catalog](https://docbank.ai/assets/generated/web-search-results.png) + +[Searching](/docs/usage/searching/) + +## Replace + +Consent can be revoked and derived state is disposable. Purge renditions, +embeddings, and indexes, re-derive them through a different provider, or +restore them from backup with no provider in the loop. The originals are never +touched. + +![Consent, derivation, retrieval, and purge cycling around a source that stays +exact](https://docbank.ai/assets/derivative-cycle.svg) + +[Backup and restore](/docs/usage/backup/) + +## Serve + +The CLI, web application, TUI, HTTP API, embedded Go package, and agent tools +operate over the same vault model. Each surface inherits the same identity, +revision, and integrity boundaries. + +![CLI, web, TUI, HTTP, Go, and MCP interfaces sharing one Docbank +vault](https://docbank.ai/assets/interface-map.svg) + +[Docbank for agents](/docs/agents/) + +## Prove + +Verification checks content and history before an operator needs them. +Incremental snapshots restore exact bytes, metadata, and retained history +without relying on a processing or search provider. + +![Docbank evidence view for a protected synthetic document +scope](https://docbank.ai/assets/generated/web-audit-evidence.png) + +![Verified snapshot restoring a vault without a processing +provider](https://docbank.ai/assets/recovery-flow.svg) + +[Backup and restore](/docs/usage/backup/) + +Continue with the [quickstart](/docs/quickstart/) or open the complete [operating +documentation](/docs/). diff --git a/website/guide/index.html b/website/guide/index.html new file mode 100644 index 00000000..5903f2a7 --- /dev/null +++ b/website/guide/index.html @@ -0,0 +1,281 @@ + + + + + + The document authority lifecycle — Docbank + + + + + + + + + + + + + + + + + +
    +
    +

    Operator guide

    +

    The document authority lifecycle

    +

    One document moves through nine explicit boundaries. Exact source bytes remain authoritative at every stop.

    +
      +
    1. 01 Ingest
    2. +
    3. 02 Identify
    4. +
    5. 03 Authorize
    6. +
    7. 04 Render
    8. +
    9. 05 Embed
    10. +
    11. 06 Retrieve
    12. +
    13. 07 Replace
    14. +
    15. 08 Serve
    16. +
    17. 09 Prove
    18. +
    +
    + +
      +
    1. +
      +

      Ingest the exact source

      +

      Docbank copies bytes into the vault without making the source path part of document identity. The virtual tree gives operators a familiar hierarchy while retained content stays addressable by checksum.

      + Importing documents +
      +
      +
      + + Synthetic Docbank vault after document ingestion + +
      A generated vault in the real web interface.
      +
      +
      +
    2. + +
    3. +
      +

      Identify the record

      +

      A stable node identity survives moves and renames. Replacement creates an immutable content version, preserving checksums and history instead of silently changing what an identifier means.

      + Editing and versions +
      +
      +
      + + Docbank retained version history and download action + +
      Retained versions remain inspectable and retrievable.
      +
      +
      +
    4. + +
    5. +
      +

      Authorize the boundary

      +

      Before processing, the operator chooses where document bytes may go and which outputs may be retained. Authorization governs a task; it does not transfer source authority to the processor.

      + Document understanding +
      +
      +
      + Source authority above authorized, version-bound processing steps +
      +
      +
    6. + +
    7. +
      +

      Render without replacing

      +

      OCR and rendition providers turn the source into normalized Markdown and text through an enforceable contract. A rendition is a governed derivative of one exact version; it can improve retrieval or be regenerated without becoming the original record.

      + Understanding outputs +
      +
      +
      + Derivatives retained beneath an exact authoritative source version +
      +
      +
    8. + +
    9. +
      +

      Embed and index deterministically

      +

      Chunks, embedding generations, and vector indexes enter the same catalog as every other derivative: fingerprinted, bound to provider and model identity, and rebuildable from retained evidence. The catalog records what produced every vector.

      + Embedding plans +
      +
      +
      + A source version feeding rendition, chunk, embedding, and index derivatives behind a consent boundary +
      +
      +
    10. + +
    11. +
      +

      Retrieve behind a source fence

      +

      Hybrid search fuses lexical and semantic signals, optionally expands and reranks, and explains each ranked result. The fence holds: every answer keeps the document, version, and evidence behind it. An index helps locate the record; it does not define it.

      + Searching +
      +
      +
      + + Docbank ranked search over a synthetic document catalog + +
      Search results in the generated documentation vault.
      +
      +
      +
    12. + +
    13. +
      +

      Replace intelligence, keep the record

      +

      Consent can be revoked and derived state is disposable. Purge renditions, embeddings, and indexes, re-derive them through a different provider, or restore them from backup with no provider in the loop. The originals are never touched.

      + Backup and restore +
      +
      +
      + Consent, derivation, retrieval, and purge cycling around a source that stays exact +
      +
      +
    14. + +
    15. +
      +

      Serve one authority

      +

      The CLI, web application, TUI, HTTP API, embedded Go package, and agent tools operate over the same vault model. Each surface inherits the same identity, revision, and integrity boundaries.

      + Docbank for agents +
      +
      +
      + CLI, web, TUI, HTTP, Go, and MCP interfaces sharing one Docbank vault +
      +
      +
    16. + +
    17. +
      +

      Prove and recover

      +

      Verification checks content and history before an operator needs them. Incremental snapshots restore exact bytes, metadata, and retained history without relying on a processing or search provider.

      + Backup and restore +
      +
      +
      + + Docbank evidence view for a protected synthetic document scope + +
      Evidence is visible before recovery is required.
      +
      +
      + Verified snapshot restoring a vault without a processing provider +
      +
      +
    18. +
    + +
    +
    +
    +

    Next

    +

    Operate the vault.

    +
    +
    +

    Move from the lifecycle model to setup, exact commands, automation contracts, storage policy, and recovery procedures.

    + +
    +
    +
    +
    + + + + +
    + + +
    + Expanded documentation capture +
    + + + diff --git a/website/index.html b/website/index.html new file mode 100644 index 00000000..68d40535 --- /dev/null +++ b/website/index.html @@ -0,0 +1,329 @@ + + + + + + Docbank — document authority for people and agents + + + + + + + + + + + + + + + + + +
    +
    +

    The system of record for documents your agents can use.

    +

    Docbank is a local-first, open-source document vault. Originals stay exact and authoritative while governed processing makes them searchable for people, systems, and agents.

    +
    + curl -fsSL https://docbank.ai/install.sh | sh + +
    +

    macOS and Linux · Windows install

    + +

    Local-first · Apache-2.0 · CLI · Web · TUI · HTTP API · Go · MCP

    +
    + +
    +
    +
    +

    01 / Authority

    +

    One record. Explicit states.

    +
    +

    A document can be copied, indexed, transformed, and served through several interfaces. Its authority does not move implicitly with those operations.

    +
    +
      +
    1. SourceExact retained bytes and stable identity.
    2. +
    3. AuthorizationA reviewed processing boundary.
    4. +
    5. UnderstandingDerivatives bound to one source version.
    6. +
    7. RetrievalResults backed by evidence and source identity.
    8. +
    9. RecoveryVerified restore under operator control.
    10. +
    +
    + +
    +
    +
    +

    02 / Guarantees

    +

    Built around the record, not the index.

    +
    +

    Docbank separates durable document authority from the systems that make documents useful. That boundary stays visible in routine operator work.

    +
    +
    +
    +

    Source sovereign

    +

    Keep the original exact.

    +

    Content-addressed bytes, stable document identity, immutable versions, and checksums preserve what entered the system.

    +
    +
    +

    Govern understanding

    +

    Approve what may leave control.

    +

    Processing policy names the provider boundary and retained outputs. Derived text and embeddings remain tied to the source version that produced them.

    +
    +
    +

    Constrain answers

    +

    Retrieve with evidence.

    +

    Search and agent access operate over verified current content while preserving the document and version behind a result.

    +
    +
    +

    Restore the record

    +

    Recover without a provider.

    +

    Incremental snapshots retain content, metadata, and history so recovery does not depend on a search or processing service.

    +
    +
    +
    + +
    +
    +
    +

    03 / Operation

    +

    A vault operators can inspect.

    +
    +

    Browse a filesystem-shaped document tree, inspect document identity and storage state, and move through retained authority without leaving the vault interface.

    +
    +
    + + Docbank web vault showing a synthetic technical document collection + +
    The real web interface against a generated synthetic vault. Select the image to inspect it at full size.
    +
    +
    + +
    +
    +
    +

    04 / Processing

    +

    Choose the boundary per workload.

    +
    +

    Understanding is governed work, not an invisible side effect of storage. Operators decide where it runs and which outputs become retained derivatives.

    +
    +
    +
    +

    Local

    +

    Keep processing beside the vault.

    +

    Use local tooling when document bytes should remain on operator-controlled hardware.

    +
    +
    +

    Self-hosted

    +

    Run a controlled service boundary.

    +

    Point governed jobs at infrastructure your organization operates and audits.

    +
    +
    +

    Hosted

    +

    Use bounded external capability.

    +

    Authorize a provider for a defined task while keeping the original and resulting record in Docbank.

    +
    +
    +

    None

    +

    Store without processing.

    +

    A document remains a complete authoritative record even when no derivative is produced.

    +
    +
    +
    + +
    +
    +
    +

    05 / Intelligence

    +

    AI understanding, on the record.

    +
    +

    OCR output, renditions, chunks, embeddings, and vector indexes are records too: cataloged, fingerprinted, and bound to the exact source version that produced them.

    +
    +
    + One exact source version feeding governed rendition, chunk, embedding, and index derivatives that can be purged and rebuilt without touching the record +
    +
    +
    +

    Catalog derivatives

    +

    Bind understanding to its source.

    +

    Renditions, chunk sets, embedding generations, and vector indexes publish atomically into a durable catalog, each fingerprinted against one immutable source version.

    +
    +
    +

    Replace providers

    +

    Swap models without losing the record.

    +

    Local, self-hosted, and hosted OCR and embedding providers plug into standard bridges. Consent is durable and revocable, and uploads bind to the exact inspected bytes.

    +
    +
    +

    Rebuild intelligence

    +

    Treat derived state as disposable.

    +

    Purge, re-derive, and rebuild renditions, embeddings, and indexes deterministically. Derivatives back up and restore without any provider, and originals are never touched.

    +
    +
    +

    Explain retrieval

    +

    Rank with reasons, answer with evidence.

    +

    Hybrid lexical and semantic search, with optional expansion and reranking, explains each ranked result and keeps the document and version behind it.

    +
    +
    +
    + +
    +
    +
    +

    06 / Interfaces

    +

    One authority across every surface.

    +

    People, applications, and agents work through interfaces suited to the task. They do not create separate copies of record.

    +
      +
    • CLIScriptable operator workflows.
    • +
    • WebVisual browsing and maintenance.
    • +
    • TUIKeyboard-first vault inspection.
    • +
    • HTTPAuthenticated filesystem-shaped API.
    • +
    • GoEmbedded vault ownership.
    • +
    • MCPBounded tools for agent work.
    • +
    + +
    +
    + Six Docbank interfaces converging on one vault authority +
    +
    +
    + +
    +
    +
    +

    07 / Boundary

    +

    Not a cloud drive. Not a git repo.

    +
    +

    Docbank is closer to a storage appliance with an evidence-aware intelligence layer: the operator owns the vault, its policy, and its recovery path.

    +
    +
    +
    +

    Cloud drive

    +

    The service is the record.

    +

    Identity, search, processing, and recovery are coupled to one provider account and its lifecycle.

    +
    +
    +

    Git repository

    +

    The ledger expects rewriting.

    +

    Rebase and force-push rewrite history by design, identity follows paths, and large originals or AI derivatives overflow into bolt-on stores with no consent or provenance contract.

    +
    +
    +

    Docbank

    +

    The vault is the record.

    +

    Storage locations, processors, and interfaces are replaceable participants around operator-controlled authority, including every AI-derived record.

    +
    +
    +
    + +
    +
    +
    +

    08 / Start

    +

    Follow one document through the system.

    +
    +
    +

    The guide makes each authority boundary concrete. The operating documentation carries installation, workflows, architecture, and exact command behavior.

    + +
    +
    +
    +
    + + + + +
    + + +
    + Expanded documentation capture +
    + + + diff --git a/website/index.md b/website/index.md new file mode 100644 index 00000000..ad18056b --- /dev/null +++ b/website/index.md @@ -0,0 +1,145 @@ +# The system of record for documents your agents can use + +Docbank is a local-first, open-source document vault. Originals stay exact and +authoritative while governed processing makes them searchable for people, +systems, and agents. + +Docbank is usable through the CLI, web application, terminal interface, HTTP +API, embedded Go package, and agent tooling. + +## Install + +On macOS or Linux: + +```sh +curl -fsSL https://docbank.ai/install.sh | sh +``` + +On Windows: + +```powershell +irm https://docbank.ai/install.ps1 | iex +``` + +Then [follow the authority lifecycle](/guide/) or read the +[setup documentation](/docs/setup/). + +## One record. Explicit states. + +A document can be copied, indexed, transformed, and served through several +interfaces. Its authority does not move implicitly with those operations. + +1. **Source** — exact retained bytes and stable identity. +2. **Authorization** — a reviewed processing boundary. +3. **Understanding** — derivatives bound to one source version. +4. **Retrieval** — results backed by evidence and source identity. +5. **Recovery** — verified restore under operator control. + +## Built around the record, not the index + +Docbank separates durable document authority from the systems that make +documents useful. That boundary stays visible in routine operator work. + +### Source sovereign + +Keep the original exact. Content-addressed bytes, stable document identity, +immutable versions, and checksums preserve what entered the system. + +### Govern understanding + +Approve what may leave control. Processing policy names the provider boundary +and retained outputs. Derived text and embeddings remain tied to the source +version that produced them. + +### Constrain answers + +Retrieve with evidence. Search and agent access operate over verified current +content while preserving the document and version behind a result. + +### Restore the record + +Recover without a provider. Incremental snapshots retain content, metadata, and +history so recovery does not depend on a search or processing service. + +## A vault operators can inspect + +[![Docbank web vault showing a synthetic technical document +collection](https://docbank.ai/assets/generated/web-vault-browser.png)](https://docbank.ai/assets/generated/web-vault-browser.png) + +Browse a filesystem-shaped document tree, inspect document identity and +storage state, and move through retained authority without leaving the vault +interface. The capture shows the real web interface against a generated +synthetic vault. + +## Choose the boundary per workload + +Understanding is governed work, not an invisible side effect of storage. +Operators decide where it runs and which outputs become retained derivatives. + +- **Local:** use local tooling when document bytes should remain on + operator-controlled hardware. +- **Self-hosted:** point governed jobs at infrastructure your organization + operates and audits. +- **Hosted:** authorize a provider for a defined task while keeping the original + and resulting record in Docbank. +- **None:** a document remains a complete authoritative record even when no + derivative is produced. + +## AI understanding, on the record + +OCR output, renditions, chunks, embeddings, and vector indexes are records +too: cataloged, fingerprinted, and bound to the exact source version that +produced them. + +![One exact source version feeding governed rendition, chunk, embedding, and +index derivatives that can be purged and rebuilt without touching the +record](https://docbank.ai/assets/intelligence-pipeline.svg) + +- **Catalog derivatives:** renditions, chunk sets, embedding generations, and + vector indexes publish atomically into a durable catalog, each fingerprinted + against one immutable source version. +- **Replace providers:** local, self-hosted, and hosted OCR and embedding + providers plug into standard bridges. Consent is durable and revocable, and + uploads bind to the exact inspected bytes. +- **Rebuild intelligence:** purge, re-derive, and rebuild renditions, + embeddings, and indexes deterministically. Derivatives back up and restore + without any provider, and originals are never touched. +- **Explain retrieval:** hybrid lexical and semantic search, with optional + expansion and reranking, explains each ranked result and keeps the document + and version behind it. + +## One authority across every surface + +People, applications, and agents work through interfaces suited to the task. +They do not create separate copies of record. + +- **CLI:** scriptable operator workflows. +- **Web:** visual browsing and maintenance. +- **TUI:** keyboard-first vault inspection. +- **HTTP:** an authenticated filesystem-shaped API. +- **Go:** embedded vault ownership. +- **MCP:** bounded tools for agent work. + +[Integrate an agent](/docs/agents/) or [inspect the HTTP +contract](/docs/architecture/http-api/). + +## Not a cloud drive. Not a git repo. + +Docbank is closer to a storage appliance with an evidence-aware intelligence +layer: the operator owns the vault, its policy, and its recovery path. + +- **Cloud drive:** the service is the record. Identity, search, processing, and + recovery are coupled to one provider account and its lifecycle. +- **Git repository:** the ledger expects rewriting. Rebase and force-push + rewrite history by design, identity follows paths, and large originals or AI + derivatives overflow into bolt-on stores with no consent or provenance + contract. +- **Docbank:** the vault is the record. Storage locations, processors, and + interfaces are replaceable participants around operator-controlled + authority, including every AI-derived record. + +## Follow one document through the system + +The [authority guide](/guide/) makes each boundary concrete. The [operating +documentation](/docs/) carries installation, workflows, architecture, and +exact command behavior. diff --git a/website/scripts/site.js b/website/scripts/site.js new file mode 100644 index 00000000..129dc8d4 --- /dev/null +++ b/website/scripts/site.js @@ -0,0 +1,127 @@ +const repoApi = "https://api.github.com/repos/kenn-io/docbank"; +const cacheMaxAgeMs = 60 * 60 * 1000; + +function installLightboxes() { + const dialog = document.querySelector("[data-lightbox-dialog]"); + if (!(dialog instanceof HTMLDialogElement)) return; + + const image = dialog.querySelector("img"); + const title = dialog.querySelector("[data-lightbox-title]"); + const close = dialog.querySelector("[data-lightbox-close]"); + let trigger = null; + + for (const link of document.querySelectorAll("a[data-lightbox]")) { + link.addEventListener("click", (event) => { + if (!(image instanceof HTMLImageElement)) return; + event.preventDefault(); + trigger = link; + const source = link.getAttribute("href"); + const preview = link.querySelector("img"); + if (!source || !(preview instanceof HTMLImageElement)) return; + image.src = source; + image.alt = preview.alt; + if (title) title.textContent = preview.alt; + dialog.showModal(); + if (close instanceof HTMLElement) close.focus(); + }); + } + + close?.addEventListener("click", () => dialog.close()); + dialog.addEventListener("click", (event) => { + if (event.target === dialog) dialog.close(); + }); + dialog.addEventListener("close", () => { + if (image instanceof HTMLImageElement) image.removeAttribute("src"); + if (trigger instanceof HTMLElement) trigger.focus(); + }); +} + +function installCopyButton() { + const root = document.querySelector("[data-install-command]"); + const status = document.querySelector("[data-install-status]"); + const button = root?.querySelector("[data-install-copy]"); + const command = root instanceof HTMLElement ? root.dataset.command : undefined; + if (!(button instanceof HTMLButtonElement) || !(status instanceof HTMLElement) || !command) return; + + let resetTimer; + button.addEventListener("click", async () => { + clearTimeout(resetTimer); + try { + await navigator.clipboard.writeText(command); + status.textContent = "Copied"; + resetTimer = setTimeout(() => { + status.textContent = ""; + }, 2000); + } catch { + status.textContent = "Copy failed — select the command text instead"; + } + }); +} + +function readCache(key, now) { + try { + const raw = localStorage.getItem(key); + if (!raw) return null; + const entry = JSON.parse(raw); + if (now - entry.at > cacheMaxAgeMs) return null; + return entry.value; + } catch { + return null; + } +} + +function writeCache(key, value, now) { + try { + localStorage.setItem(key, JSON.stringify({ at: now, value })); + } catch { + // Storage can be unavailable (private browsing); facts refetch next visit. + } +} + +async function cachedJson(key, url) { + const now = Date.now(); + const cached = readCache(key, now); + if (cached !== null) return cached; + const response = await fetch(url, { headers: { Accept: "application/vnd.github+json" } }); + if (!response.ok) return null; + const value = await response.json(); + writeCache(key, value, now); + return value; +} + +function setFact(name, text) { + const fact = document.querySelector(`[data-fact="${name}"]`); + if (!(fact instanceof HTMLElement)) return; + const label = fact.querySelector("[data-fact-text]"); + if (!label) return; + label.textContent = text; + fact.hidden = false; + const row = document.querySelector("[data-facts]"); + if (row instanceof HTMLElement) row.hidden = false; +} + +function formatCount(count) { + if (count < 1000) return String(count); + const thousands = count / 1000; + const rounded = thousands >= 10 ? Math.round(thousands) : Math.round(thousands * 10) / 10; + return `${rounded}k`; +} + +async function installRepoFacts() { + if (!document.querySelector("[data-facts]")) return; + const [repo, release] = await Promise.all([ + cachedJson("docbank:repo", repoApi), + cachedJson("docbank:release", `${repoApi}/releases/latest`), + ]); + if (repo) { + setFact("stars", formatCount(repo.stargazers_count)); + setFact("forks", formatCount(repo.forks_count)); + } + if (release) setFact("version", release.tag_name); +} + +installLightboxes(); +installCopyButton(); +installRepoFacts().catch((error) => { + console.warn("github api unavailable, keeping the static header", error); +}); diff --git a/website/styles/site.css b/website/styles/site.css new file mode 100644 index 00000000..0b9e32fc --- /dev/null +++ b/website/styles/site.css @@ -0,0 +1,771 @@ +@font-face { + font-family: "Inter"; + src: url("/fonts/Inter-Regular.woff2") format("woff2"); + font-style: normal; + font-weight: 400; + font-display: swap; +} + +@font-face { + font-family: "Inter"; + src: url("/fonts/Inter-Medium.woff2") format("woff2"); + font-style: normal; + font-weight: 500; + font-display: swap; +} + +@font-face { + font-family: "Inter"; + src: url("/fonts/Inter-SemiBold.woff2") format("woff2"); + font-style: normal; + font-weight: 600; + font-display: swap; +} + +@font-face { + font-family: "JetBrains Mono"; + src: url("/fonts/JetBrainsMono-Regular.woff2") format("woff2"); + font-style: normal; + font-weight: 400; + font-display: swap; +} + +@font-face { + font-family: "JetBrains Mono"; + src: url("/fonts/JetBrainsMono-SemiBold.woff2") format("woff2"); + font-style: normal; + font-weight: 600; + font-display: swap; +} + +@font-face { + font-family: "JetBrains Mono"; + src: url("/fonts/JetBrainsMono-Bold.woff2") format("woff2"); + font-style: normal; + font-weight: 700; + font-display: swap; +} + +:root { + color-scheme: dark; + --ink: #071411; + --panel: #0c1e1a; + --panel-raised: #102822; + --rule: #25473f; + --teal: #41d7bd; + --teal-strong: #78ead6; + --text: #edf8f4; + --muted: #a7c1ba; + --body: "Inter", system-ui, sans-serif; + --mono: "JetBrains Mono", ui-monospace, monospace; + background: var(--ink); + color: var(--text); + font-family: var(--body); + font-synthesis: none; + line-height: 1.6; +} + +* { + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; +} + +body { + margin: 0; + background: var(--ink); +} + +body > header, +body > main, +body > footer { + width: min(100% - 2.5rem, 76rem); + margin-inline: auto; +} + +a { + color: var(--teal-strong); + text-decoration-thickness: 1px; + text-underline-offset: 0.2em; +} + +a:hover { + color: var(--text); +} + +:focus-visible { + outline: 2px solid var(--teal); + outline-offset: 4px; +} + +.skip-link { + position: fixed; + z-index: 20; + top: 0.75rem; + left: 0.75rem; + padding: 0.55rem 0.75rem; + color: var(--ink); + background: var(--teal); + transform: translateY(-200%); +} + +.skip-link:focus { + transform: none; +} + +.site-header { + display: flex; + align-items: center; + justify-content: space-between; + min-height: 4.75rem; + gap: 2rem; + border-bottom: 1px solid var(--rule); +} + +.site-header nav, +.footer-links, +.actions { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 0.75rem 1.25rem; +} + +.site-header nav a { + color: var(--muted); + text-decoration: none; +} + +.site-header nav a:hover, +.site-header nav a[aria-current="page"] { + color: var(--text); +} + +.sr-only { + position: absolute; + overflow: hidden; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + white-space: nowrap; + clip-path: inset(50%); + border: 0; +} + +.repo { + display: inline-flex; + align-items: center; + gap: 0.5rem; + padding: 0.2rem 0.3rem; + border-radius: 3px; + font-family: var(--mono); +} + +.site-header nav a.repo:hover { + background: var(--panel); +} + +.repo > svg { + flex: 0 0 auto; +} + +.repo-meta { + display: flex; + flex-direction: column; + gap: 0.1rem; + line-height: 1.2; +} + +.repo-name { + font-size: 0.72rem; +} + +.facts { + display: flex; + gap: 0.5rem; + font-size: 0.64rem; +} + +.facts[hidden], +.fact[hidden] { + display: none; +} + +.fact { + display: inline-flex; + align-items: center; + gap: 0.22rem; +} + +.icon-link { + display: inline-flex; +} + +.wordmark, +.eyebrow, +.section-index, +.ledger strong, +.proof-tag, +.choice-label, +code, +kbd { + font-family: var(--mono); +} + +.wordmark { + color: var(--text); + font-family: var(--mono); + font-size: 1.05rem; + font-weight: 700; + letter-spacing: -0.03em; + text-decoration: none; +} + +.wordmark::before { + color: var(--teal); + content: "["; +} + +.wordmark::after { + color: var(--teal); + content: "]"; +} + +main { + display: block; +} + +.hero { + position: relative; + padding: clamp(5rem, 12vw, 9rem) 0 clamp(4rem, 9vw, 7rem); + border-bottom: 1px solid var(--rule); +} + +.hero::before { + content: ""; + position: absolute; + inset: 0; + background: radial-gradient(42rem 26rem at 18% 8%, rgb(65 215 189 / 7%), transparent 70%); + pointer-events: none; +} + +.hero > * { + position: relative; +} + +.hero.compact { + padding-bottom: clamp(3rem, 7vw, 5rem); +} + +.eyebrow, +.section-index, +.proof-tag, +.choice-label { + margin: 0 0 1rem; + color: var(--teal); + font-size: 0.76rem; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +h1, +h2, +h3, +p { + margin-top: 0; +} + +h1, +h2, +h3 { + line-height: 1.08; + text-wrap: balance; +} + +h1 { + max-width: 19ch; + margin-bottom: 1.5rem; + font-size: clamp(2.75rem, 7.5vw, 5.75rem); + font-weight: 500; + letter-spacing: -0.055em; +} + +h2 { + max-width: 24ch; + margin-bottom: 1rem; + font-size: clamp(1.8rem, 4vw, 3rem); + font-weight: 500; + letter-spacing: -0.035em; +} + +h3 { + margin-bottom: 0.65rem; + font-size: 1.08rem; + font-weight: 600; +} + +.lede { + max-width: 56rem; + margin-bottom: 2rem; + color: var(--muted); + font-size: clamp(1.08rem, 2vw, 1.35rem); +} + +.caption, +.fine-print, +.install-hint { + color: var(--muted); + font-size: 0.88rem; +} + +.install-command { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + gap: 0.75rem 1.5rem; + width: fit-content; + max-width: 100%; + margin-top: 0.5rem; + padding: 0.45rem 0.45rem 0.45rem 1.1rem; + border: 1px solid var(--rule); + background: var(--panel); +} + +.install-command code { + color: var(--teal-strong); + font-size: 0.92rem; + overflow-wrap: anywhere; +} + +.install-command code::before { + color: var(--muted); + content: "$ "; +} + +.install-hint { + margin-top: 0.75rem; +} + +.install-hint [data-install-status]:not(:empty)::before { + content: " · "; +} + +.hero-meta { + margin: 3rem 0 0; + color: var(--muted); + font-family: var(--mono); + font-size: 0.76rem; + letter-spacing: 0.04em; +} + +.actions { + margin-top: 2rem; +} + +.button, +button.button { + min-height: 2.8rem; + border: 1px solid var(--rule); + border-radius: 3px; + font: inherit; +} + +.button, +button.button { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0.65rem 1rem; + color: var(--text); + background: var(--panel); + cursor: pointer; + text-decoration: none; +} + +.button:hover, +button.button:hover { + border-color: var(--teal); + color: var(--text); + background: var(--panel-raised); +} + +.button.primary { + border-color: var(--teal); + color: var(--ink); + background: var(--teal); + font-weight: 600; +} + +.button.primary:hover { + color: var(--ink); + background: var(--teal-strong); +} + +.site-section { + padding: clamp(4rem, 9vw, 7rem) 0; + border-bottom: 1px solid var(--rule); +} + +.section-heading { + display: grid; + grid-template-columns: minmax(0, 0.65fr) minmax(0, 1.35fr); + gap: 2rem; + margin-bottom: clamp(2rem, 5vw, 4rem); +} + +.section-heading p:last-child { + max-width: 44rem; + color: var(--muted); +} + +.ledger { + display: grid; + grid-template-columns: repeat(5, minmax(0, 1fr)); + gap: 1px; + margin: 0; + padding: 1px; + background: var(--rule); + list-style: none; +} + +.ledger li { + min-height: 10rem; + padding: 1.25rem; + background: var(--panel); +} + +.ledger strong, +.ledger span { + display: block; +} + +.ledger strong { + margin-bottom: 2rem; + color: var(--teal-strong); + font-size: 0.76rem; + text-transform: uppercase; +} + +.ledger span { + color: var(--muted); +} + +.proof-grid, +.choice-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1px; + padding: 1px; + background: var(--rule); +} + +.boundary-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 1px; + padding: 1px; + background: var(--rule); +} + +.pipeline { + margin: 0 0 clamp(2rem, 5vw, 3rem); + border: 1px solid var(--rule); + background: var(--panel); +} + +.proof, +.choice, +.boundary { + padding: clamp(1.5rem, 4vw, 2.5rem); + background: var(--panel); +} + +.proof p:last-child, +.choice p:last-child, +.boundary p:last-child { + margin-bottom: 0; + color: var(--muted); +} + +.capture { + margin: 0; +} + +.capture > a { + display: block; + border: 1px solid var(--rule); + background: var(--panel); +} + +.capture > a:hover { + border-color: var(--teal); +} + +.capture img, +.diagram img, +dialog img { + display: block; + width: 100%; + height: auto; +} + +.caption { + margin: 0.8rem 0 0; +} + +.interface-layout { + display: grid; + grid-template-columns: minmax(0, 1.2fr) minmax(18rem, 0.8fr); + gap: clamp(2rem, 6vw, 5rem); + align-items: center; +} + +.interface-list { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1rem 2rem; + margin: 2rem 0 0; + padding: 0; + list-style: none; +} + +.interface-list strong, +.interface-list span { + display: block; +} + +.interface-list strong { + font-family: var(--mono); + font-size: 0.86rem; +} + +.interface-list span { + color: var(--muted); +} + +.guide-nav { + display: grid; + grid-template-columns: repeat(9, minmax(0, 1fr)); + gap: 1px; + margin: 2.5rem 0 0; + padding: 1px; + background: var(--rule); + list-style: none; +} + +.guide-nav a { + display: block; + height: 100%; + padding: 0.8rem; + color: var(--muted); + background: var(--panel); + font-family: var(--mono); + font-size: 0.75rem; + text-decoration: none; +} + +.guide-nav a:hover { + color: var(--text); + background: var(--panel-raised); +} + +.guide-stops { + margin: 0; + padding: 0; + list-style: none; + counter-reset: guide; +} + +.guide-stop { + display: grid; + grid-template-columns: minmax(0, 0.7fr) minmax(0, 1.3fr); + gap: clamp(2rem, 7vw, 6rem); + padding: clamp(4rem, 9vw, 7rem) 0; + border-bottom: 1px solid var(--rule); + scroll-margin-top: 2rem; + counter-increment: guide; +} + +.guide-copy h2::before { + display: block; + margin-bottom: 1rem; + color: var(--teal); + font-family: var(--mono); + font-size: 0.76rem; + letter-spacing: 0.08em; + content: "0" counter(guide) " / 09"; +} + +.guide-copy p { + color: var(--muted); +} + +.guide-copy a { + font-weight: 600; +} + +.guide-media { + align-self: center; +} + +.guide-media .capture, +.guide-media .diagram { + margin: 0; +} + +.guide-media .diagram { + border: 1px solid var(--rule); + background: var(--panel); +} + +.site-footer { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 2rem; + padding: 2rem 0 3rem; + color: var(--muted); + font-size: 0.88rem; +} + +.site-footer p { + margin: 0; +} + +dialog { + width: min(96vw, 90rem); + max-height: 94vh; + padding: 0; + border: 1px solid var(--teal); + border-radius: 4px; + color: var(--text); + background: var(--ink); +} + +dialog::backdrop { + background: rgb(2 10 8 / 88%); +} + +.dialog-header { + display: flex; + justify-content: space-between; + align-items: center; + gap: 1rem; + padding: 0.8rem 1rem; + border-bottom: 1px solid var(--rule); +} + +.dialog-header p { + margin: 0; + font-family: var(--mono); + font-size: 0.8rem; +} + +.dialog-close { + min-width: 2.5rem; + min-height: 2.5rem; + border: 1px solid var(--rule); + border-radius: 3px; + color: var(--text); + background: var(--panel); + font: inherit; + cursor: pointer; +} + +dialog img { + max-height: calc(94vh - 4.25rem); + object-fit: contain; +} + +@media (max-width: 900px) { + .section-heading, + .interface-layout, + .guide-stop { + grid-template-columns: 1fr; + } + + .ledger { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .ledger li:last-child { + grid-column: 1 / -1; + } + + .guide-nav { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .boundary-grid { + grid-template-columns: 1fr; + } + + .guide-media { + order: -1; + } +} + +@media (max-width: 620px) { + body > header, + body > main, + body > footer { + width: min(100% - 1.5rem, 76rem); + } + + .site-header { + align-items: flex-start; + flex-direction: column; + gap: 0.7rem; + padding: 1rem 0; + } + + .site-header nav { + width: 100%; + justify-content: space-between; + } + + .repo-meta { + display: none; + } + + h1 { + font-size: clamp(2.5rem, 13vw, 4rem); + } + + .ledger, + .proof-grid, + .choice-grid, + .boundary-grid, + .interface-list, + .guide-nav { + grid-template-columns: 1fr; + } + + .ledger li:last-child { + grid-column: auto; + } + + .site-footer { + flex-direction: column; + } +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + } +} From 65b3a32126595a876eaffa3a0352aab8a4f46bc1 Mon Sep 17 00:00:00 2001 From: Wes McKinney Date: Fri, 4 Sep 2026 08:57:42 -0500 Subject: [PATCH 2/3] fix: keep documentation previews self-contained `make docs-serve` rebuilt forever after the first edit. The docs build creates temporary directories inside `docs/`, the watcher saw them as source changes, and every rebuild queued the next one. One touch produced 39 rebuilds in 75 seconds. The watcher now ignores the build's own temporary entries, the generated site directory, and dot-prefixed tool directories. Documentation pages referenced screenshots by their canonical production URL, so a local preview and a not-yet-promoted Vercel deployment fetched images from whatever production currently served instead of the pinned set staged beside them. The site build now rewrites those references in generated HTML to root-relative paths, and the verifier rejects any image that is not site-relative. Published Markdown keeps the canonical URLs so it still renders on GitHub and for agents reading raw Markdown. Generated with Claude Code (claude-fable-5-1) Co-authored-by: Claude Fable 5.1 --- scripts/docs/build.mjs | 19 ++++++++++++++- scripts/docs/build.test.mjs | 13 ++++++++++- scripts/docs/serve.mjs | 24 ++++++++++++++----- scripts/docs/serve.test.mjs | 39 +++++++++++++++++++++++++++++++ scripts/docs/verify-site.mjs | 6 ++--- scripts/docs/verify-site.test.mjs | 28 +++++++++++++--------- 6 files changed, 107 insertions(+), 22 deletions(-) diff --git a/scripts/docs/build.mjs b/scripts/docs/build.mjs index 3ccc5e4d..0d2cb438 100644 --- a/scripts/docs/build.mjs +++ b/scripts/docs/build.mjs @@ -13,7 +13,7 @@ import path from "node:path"; import { fileURLToPath, pathToFileURL } from "node:url"; import { promisify } from "node:util"; -import { verifySite } from "./verify-site.mjs"; +import { canonicalOrigin, verifySite } from "./verify-site.mjs"; const execFileAsync = promisify(execFile); @@ -116,6 +116,22 @@ async function copyGeneratedAssets(repoRoot, staging, names) { } +async function localizeAssetUrls(directory) { + const absolutePrefix = `="${canonicalOrigin}/assets/`; + for (const entry of await readdir(directory, { withFileTypes: true })) { + const target = path.join(directory, entry.name); + if (entry.isDirectory()) { + await localizeAssetUrls(target); + continue; + } + if (!entry.isFile() || !entry.name.endsWith(".html")) continue; + const contents = await readFile(target, "utf8"); + if (!contents.includes(absolutePrefix)) continue; + await writeFile(target, contents.replaceAll(absolutePrefix, '="/assets/')); + } +} + + async function replaceOutput({ output, staging }) { const previous = path.join(path.dirname(output), `.${path.basename(output)}.previous`); await rm(previous, { recursive: true, force: true }); @@ -166,6 +182,7 @@ export async function buildSite({ await rm(path.join(docsOutput, "install.sh"), { force: true }); await rm(path.join(docsOutput, "install.ps1"), { force: true }); await rm(path.join(docsOutput, outputMarker), { force: true }); + await localizeAssetUrls(docsOutput); await copyFile(path.join(repoRoot, "docs", "llms.txt"), path.join(staging, "llms.txt")); await verifySite({ diff --git a/scripts/docs/build.test.mjs b/scripts/docs/build.test.mjs index da8e534e..25ebdd65 100644 --- a/scripts/docs/build.test.mjs +++ b/scripts/docs/build.test.mjs @@ -65,7 +65,14 @@ async function syncAssetsFixture({ repoRoot }) { async function buildDocsFixture({ repoRoot, output }) { await write(output, "index.html", html("https://docbank.ai/docs/", 'Setup')); - await write(output, "setup/index.html", html("https://docbank.ai/docs/setup/", 'Docs')); + await write( + output, + "setup/index.html", + html( + "https://docbank.ai/docs/setup/", + 'DocsCapture', + ), + ); await write(output, "index.md", await readFile(path.join(repoRoot, "docs/index.md"))); await write(output, "setup.md", await readFile(path.join(repoRoot, "docs/setup.md"))); await write(output, "llms.txt", "redundant docs index\n"); @@ -97,6 +104,10 @@ test("assembles all tiers and public assets into one site root", async (t) => { } await assert.rejects(access(path.join(output, "docs/llms.txt"))); await assert.rejects(access(path.join(output, "docs/install.sh"))); + + const setup = await readFile(path.join(output, "docs/setup/index.html"), "utf8"); + assert.match(setup, /src="\/assets\/generated\/capture\.png"/); + assert.doesNotMatch(setup, /docbank\.ai\/assets/); }); diff --git a/scripts/docs/serve.mjs b/scripts/docs/serve.mjs index eaac8638..6035c19f 100644 --- a/scripts/docs/serve.mjs +++ b/scripts/docs/serve.mjs @@ -97,6 +97,16 @@ export function createRebuildQueue({ build, debounceMs = 100, onError = console. } +const generatedDocsEntry = /^(?:\.|site$|zensical-site\.|zensical-public-docs\.)/; + + +export function isGeneratedDocsPath(filename) { + if (!filename) return false; + const [first] = String(filename).split(/[\\/]/, 1); + return generatedDocsEntry.test(first); +} + + function resolveRequest(siteRoot, rawUrl) { const rawPath = rawUrl.split(/[?#]/, 1)[0]; let decoded; @@ -200,13 +210,15 @@ export async function startDocsServer({ const watchers = []; if (watch) { - for (const [source, recursive] of [ - [path.join(repoRoot, "website"), true], - [path.join(repoRoot, "docs"), true], - [path.join(repoRoot, "scripts", "docs-assets.ref"), false], - [path.join(repoRoot, "scripts", "docs-assets.txt"), false], + for (const [source, recursive, ignore] of [ + [path.join(repoRoot, "website"), true, () => false], + [path.join(repoRoot, "docs"), true, isGeneratedDocsPath], + [path.join(repoRoot, "scripts", "docs-assets.ref"), false, () => false], + [path.join(repoRoot, "scripts", "docs-assets.txt"), false, () => false], ]) { - const watcher = watchFactory(source, { recursive }, () => queue.request()); + const watcher = watchFactory(source, { recursive }, (_event, filename) => { + if (!ignore(filename)) queue.request(); + }); watcher.on?.("error", (error) => logger.error(error)); watchers.push(watcher); } diff --git a/scripts/docs/serve.test.mjs b/scripts/docs/serve.test.mjs index f07bd591..b3b2fbf2 100644 --- a/scripts/docs/serve.test.mjs +++ b/scripts/docs/serve.test.mjs @@ -94,6 +94,45 @@ test("rejects traversal outside the generated site", async (t) => { }); +test("ignores the docs build's own temporary entries", async (t) => { + const repoRoot = await fixture(t); + const listeners = new Map(); + let builds = 0; + const server = await startDocsServer({ + repoRoot, + host: "127.0.0.1", + port: 0, + build: async () => { + builds += 1; + }, + watchFactory: (source, _options, listener) => { + listeners.set(path.basename(source), listener); + return { close() {} }; + }, + logger: { log() {}, error() {} }, + }); + t.after(() => server.close()); + assert.equal(builds, 1); + + const docs = listeners.get("docs"); + for (const generated of [ + "zensical-site.Ab12Cd/index.html", + "zensical-public-docs.Ab12Cd/tour.md", + ".zensical-build.Ab12Cd.toml", + "site/index.html", + ".venv/lib/python", + ]) { + docs("rename", generated); + } + await new Promise((resolve) => setTimeout(resolve, 300)); + assert.equal(builds, 1); + + docs("change", "tour.md"); + await new Promise((resolve) => setTimeout(resolve, 300)); + assert.equal(builds, 2); +}); + + test("coalesces file events into one queued rebuild", async () => { let calls = 0; let finishFirst; diff --git a/scripts/docs/verify-site.mjs b/scripts/docs/verify-site.mjs index 4fc68d51..63ad9112 100644 --- a/scripts/docs/verify-site.mjs +++ b/scripts/docs/verify-site.mjs @@ -2,7 +2,7 @@ import { lstat, readFile, readdir } from "node:fs/promises"; import path from "node:path"; -const canonicalOrigin = "https://docbank.ai"; +export const canonicalOrigin = "https://docbank.ai"; const forbiddenParts = new Set([ ".git", ".superpowers", @@ -189,8 +189,8 @@ export async function verifySite({ site, sources }) { for (const relative of htmlFiles) { const parsed = parsedPages.get(relative); for (const raw of parsed.images) { - if (targetForUrl(site, relative, raw) === null) { - errors.push(`${relative}: image is not served from the site: ${raw}`); + if (/^[a-z][a-z0-9+.-]*:|^\/\//i.test(raw)) { + errors.push(`${relative}: image must use a site-relative URL: ${raw}`); } } for (const raw of parsed.urls) { diff --git a/scripts/docs/verify-site.test.mjs b/scripts/docs/verify-site.test.mjs index ff81f9fa..4b66a6d2 100644 --- a/scripts/docs/verify-site.test.mjs +++ b/scripts/docs/verify-site.test.mjs @@ -160,17 +160,23 @@ test("rejects a broken local link", async (t) => { }); -test("rejects an image that is not served from the site", async (t) => { - const { site, sources } = await fixture(t); - await write( - site, - "docs/setup/index.html", - page({ - canonical: "https://docbank.ai/docs/setup/", - body: 'Remote capture', - }), - ); - await assert.rejects(() => verifySite({ site, sources }), /image is not served from the site/); +test("rejects an image that is not site-relative", async (t) => { + for (const src of [ + "https://raw.githubusercontent.com/example/capture.png", + "https://docbank.ai/assets/generated/capture.png", + "//docbank.ai/assets/generated/capture.png", + ]) { + const { site, sources } = await fixture(t); + await write( + site, + "docs/setup/index.html", + page({ + canonical: "https://docbank.ai/docs/setup/", + body: `Capture`, + }), + ); + await assert.rejects(() => verifySite({ site, sources }), /image must use a site-relative URL/); + } }); From 2cc6d3638f041b1e1cccee166d43f2195833c600 Mon Sep 17 00:00:00 2001 From: Wes McKinney Date: Fri, 4 Sep 2026 09:30:08 -0500 Subject: [PATCH 3/3] fix: answer preview requests when a file vanishes after stat The preview server checked a file with stat and then opened it for streaming as a separate step. A rebuild replaces the whole site directory between requests, so a browser fetching assets right after a rebuild could hit that window. When the second step failed, the response had already started and never ended, so the request hung. The same happened for any file the server could stat but not read. The server now opens the file first and streams from the open handle, which stays valid even if the directory is replaced underneath it. A file that disappears before open answers 404, any other open failure answers 500, and a stream failure after headers aborts that one response instead of leaving it open. Generated with Claude Code (claude-fable-5-1) Co-authored-by: Claude Fable 5.1 --- scripts/docs/serve.mjs | 43 ++++++++++++++++++++++++++++--------- scripts/docs/serve.test.mjs | 23 ++++++++++++++++++++ 2 files changed, 56 insertions(+), 10 deletions(-) diff --git a/scripts/docs/serve.mjs b/scripts/docs/serve.mjs index 6035c19f..f0924fbd 100644 --- a/scripts/docs/serve.mjs +++ b/scripts/docs/serve.mjs @@ -1,5 +1,5 @@ -import { createReadStream, watch as watchPath } from "node:fs"; -import { lstat } from "node:fs/promises"; +import { watch as watchPath } from "node:fs"; +import { lstat, open } from "node:fs/promises"; import http from "node:http"; import path from "node:path"; import { fileURLToPath, pathToFileURL } from "node:url"; @@ -128,7 +128,7 @@ function resolveRequest(siteRoot, rawUrl) { } -async function serveFile(siteRoot, request, response) { +async function serveFile(siteRoot, request, response, logger) { if (request.method !== "GET" && request.method !== "HEAD") { response.writeHead(405, { Allow: "GET, HEAD" }); response.end(); @@ -159,16 +159,39 @@ async function serveFile(siteRoot, request, response) { return; } - response.writeHead(200, { - "Cache-Control": "no-store", - "Content-Length": metadata.size, - "Content-Type": contentTypes.get(path.extname(target)) ?? "application/octet-stream", - }); + let handle; + try { + handle = await open(target, "r"); + } catch (error) { + if (error?.code === "ENOENT" || error?.code === "ENOTDIR") { + response.writeHead(404); + response.end("Not found\n"); + return; + } + throw error; + } + try { + const { size } = await handle.stat(); + response.writeHead(200, { + "Cache-Control": "no-store", + "Content-Length": size, + "Content-Type": contentTypes.get(path.extname(target)) ?? "application/octet-stream", + }); + } catch (error) { + await handle.close(); + throw error; + } if (request.method === "HEAD") { response.end(); + await handle.close(); return; } - createReadStream(target).pipe(response); + const stream = handle.createReadStream(); + stream.on("error", (error) => { + logger.error(error); + response.destroy(error); + }); + stream.pipe(response); } @@ -225,7 +248,7 @@ export async function startDocsServer({ } const server = http.createServer((request, response) => { - serveFile(siteRoot, request, response).catch((error) => { + serveFile(siteRoot, request, response, logger).catch((error) => { logger.error(error); if (!response.headersSent) response.writeHead(500); response.end("Internal server error\n"); diff --git a/scripts/docs/serve.test.mjs b/scripts/docs/serve.test.mjs index b3b2fbf2..361f1ac8 100644 --- a/scripts/docs/serve.test.mjs +++ b/scripts/docs/serve.test.mjs @@ -94,6 +94,29 @@ test("rejects traversal outside the generated site", async (t) => { }); +test("keeps serving when a file disappears or cannot be opened after stat", async (t) => { + const repoRoot = await fixture(t); + const server = await startDocsServer({ + repoRoot, + host: "127.0.0.1", + port: 0, + build: async () => {}, + watch: false, + logger: { log() {}, error() {} }, + }); + t.after(() => server.close()); + + const unreadable = path.join(repoRoot, "site", "unreadable.txt"); + await writeFile(unreadable, "secret\n", { mode: 0o000 }); + if (process.getuid?.() !== 0) { + assert.equal(await rawRequest(server.port, "/unreadable.txt"), 500); + } + await rm(unreadable, { force: true }); + assert.equal(await rawRequest(server.port, "/unreadable.txt"), 404); + assert.equal(await rawRequest(server.port, "/"), 200); +}); + + test("ignores the docs build's own temporary entries", async (t) => { const repoRoot = await fixture(t); const listeners = new Map();