You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 49418e9
Browse filesBrowse the repository at this point in the historyBrowse files
* fix: small misc fixes (substrate comment, pred_stats accounting, docs nav, virtuoso isql port)
- sparq-substrate/Cargo.toml: the scaffold comment claimed nothing depends on the crate;
sparq-engine and sparq-reason do, so it is in the feature-OFF wasm graph (#3806).
- sparq-core: TripleStore::heap_bytes now counts the pred_stats planner map, with a
direct unit test (#3115).
- site: the Docs nav item points at the mdBook guide overlaid at /guide/ instead of the
agent-skills router; e2e witness updated (#2549).
- scripts/virtuoso-same-box.sh: docker exec isql always targets the container-internal
port 1111; VIRTUOSO_ISQL_PORT is only the host mapping (#3361).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ScyGGohDhirnbLbrUSnA5n
* bench: declare feature-off bundle change for heap_bytes accounting (#3115)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ScyGGohDhirnbLbrUSnA5n
* pages: overlay the mdBook guide before the site link-check
The Docs nav link now points at /guide/, but pages.yml ran
check-site-links.sh on site/out before the guide was built and overlaid,
so lychee could not resolve /guide and failed the deploy. Build and
overlay the guide first, and have check-site-links.sh exclude guide/ as
an input (its own gate is build-guide.sh) while still resolving the
site's links into it.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ScyGGohDhirnbLbrUSnA5n
---------
Co-authored-by: Claude <noreply@anthropic.com>
# Shared with docs.yml so the validate lane and the publish lane cannot drift. The script
255
+
# carries the load-bearing detail: mdBook exits 0 on a broken {{#include}}/anchor
256
+
# (rust-lang/mdBook#1094), so it greps the build log for [ERROR] — without that, an anchor
257
+
# rename in README.md/SKILL.md would PUBLISH a guide full of raw include directives, green.
258
+
- name: Build the mdBook guide
259
+
run: bash scripts/build-guide.sh book
260
+
261
+
# ---- Overlay the mdBook guide at /guide/ ----
262
+
# [OPUS-5] issue #5022 — place the rendered guide (book/book) into out/guide/, mirroring
263
+
# the dev/bench* and /app overlays: another sub-tree of the SAME single Pages artifact, so
264
+
# there is still exactly ONE producer for the one Pages deploy slot.
265
+
#
266
+
# Runs BEFORE the lychee link-check so the site's own links INTO /guide/ (the app-shell
267
+
# Docs link) resolve against the real render; check-site-links.sh excludes guide/ as an
268
+
# INPUT, so the guide's own HTML is not scanned. The guide is a separate first-party render with its own link shape (mdBook resolves chapter links
269
+
# relatively, and the `link-fixup` preprocessor rewrites the {{#include}}d repo-relative
270
+
# links to absolute github.com URLs, which lychee --offline cannot resolve anyway); its
271
+
# broken-include gate is the [ERROR] grep in scripts/build-guide.sh, not lychee.
272
+
#
273
+
# UNLIKE the /app overlay there is NO placeholder route to replace here — the site export
274
+
# has no /guide route — so an out/guide that ALREADY exists means the site grew one and
275
+
# this step would silently clobber it. That is a hard failure, not a merge.
276
+
- name: Overlay mdBook guide (out/guide/)
277
+
working-directory: site
278
+
run: |
279
+
set -euo pipefail
280
+
guide_out="$GITHUB_WORKSPACE/book/book"
281
+
if [ ! -f "$guide_out/index.html" ]; then
282
+
echo "::error::mdBook render missing ($guide_out/index.html) — the guide build step did not produce book/book/"
283
+
exit 1
284
+
fi
285
+
if [ -e out/guide ]; then
286
+
echo "::error::out/guide already exists BEFORE the guide overlay — the site export now has its own /guide route, which this overlay would silently clobber. Pick a different mount or drop the site route (issue #5022)."
287
+
exit 1
288
+
fi
289
+
echo "Overlaying mdBook render -> out/guide/"
290
+
mkdir -p out/guide
291
+
# Plain `cp -a` (not the /app overlay's `rsync -a --delete`): that overlay mirrors
292
+
# ONTO a pre-existing placeholder tree and needs --delete to clear its orphans. Here
293
+
# the guard above has already proven out/guide did not exist, so there is nothing to
294
+
# delete and a copy is the whole operation.
295
+
cp -a "$guide_out/." out/guide/
296
+
# MOUNT ASSERTION: mdBook stamps book.toml's `site-url` into the guide's OWN 404.html
297
+
# as <base href="...">. GitHub Pages serves that directory-level 404 for /guide/<typo>,
298
+
# so if the baked base href ever stops matching the sub-path we overlay to, every asset
299
+
# on that page resolves against the wrong root. Assert the two agree here, at the point
300
+
# where the mount is actually chosen.
301
+
if grep -q '<base href="/guide/">' out/guide/404.html; then
echo "::error::out/guide/404.html does not carry <base href=\"/guide/\"> — book.toml's [output.html] site-url has drifted from the /guide/ mount, so the guide's 404 page would 404 its own assets"
305
+
exit 1
306
+
fi
307
+
# NOTE (measured): a second "no raw {{#include}} survived into the HTML" scan was tried
308
+
# here and REMOVED — it false-positives on the guide's own legitimate prose, which
309
+
# discusses the single-sourcing mechanism by name (book/src comments and the README
310
+
# `features-core` anchor both write `{{#include}}` in running text). The broken-include
311
+
# guard is the `[ERROR]` log grep in scripts/build-guide.sh, which runs before this step
312
+
# and whose teeth are pinned in scripts/tests/test_build_guide.sh.
313
+
echo "OK: mdBook guide overlaid at out/guide/" >> "$GITHUB_STEP_SUMMARY"
314
+
244
315
# [OPUS-4.8] sq-d8or — anti-drift: link-check the BUILT site HTML before publish.
245
316
# The docs-quality `internal-links` job (sq-5fd1) lychee-checks the repo MARKDOWN;
246
317
# this extends that scope to the static-export HTML the Pages site actually serves —
247
318
# catching renamed routes / stale cross-links / dangling #anchors that markdown linting
248
319
# cannot see. lychee runs --offline (deterministic, no network) over site/out, remapping
249
320
# the /sparq GitHub-Pages base path to the export root. Runs BEFORE the dev/ overlay so
250
321
# it checks only THIS site's source (the overlaid benchmark dashboard is excluded by the
251
-
# script anyway). The remap + teeth live in a shared, self-tested script
322
+
# script anyway). It runs AFTER the guide overlay so links into /guide/ resolve; the
323
+
# script skips guide/ as an input. The remap + teeth live in a shared, self-tested script
252
324
# (scripts/check-site-links.sh + scripts/tests/test_check_site_links.sh, run in
253
325
# docs-quality's ci-scripts job) so the logic is pinned and reusable locally. A broken
254
326
# internal link FAILS the build → no broken deploy. lychee is installed via the same
@@ -262,23 +334,6 @@ jobs:
262
334
- name: Link-check the static-export HTML (lychee --offline)
263
335
run: bash scripts/check-site-links.sh site/out
264
336
265
-
# ---- Build the mdBook guide for the /guide/ mount ----
266
-
# [OPUS-5] issue #5022 — the guide's publish half. docs.yml validates the same guide on
267
-
# PRs but deliberately ships no deploy job (one Pages slot, owned here); this is where it
268
-
# actually reaches the web. The mdbook version below MUST equal docs.yml's pin — the two
269
-
# lanes are only equivalent if they build with the same renderer, and
270
-
# scripts/check-guide-publish-wiring.py fails the build if they diverge.
echo "OK: operational GUI overlaid at out/app/" >> "$GITHUB_STEP_SUMMARY"
368
423
369
-
# ---- Overlay the mdBook guide at /guide/ ----
370
-
# [OPUS-5] issue #5022 — place the rendered guide (book/book) into out/guide/, mirroring
371
-
# the dev/bench* and /app overlays: another sub-tree of the SAME single Pages artifact, so
372
-
# there is still exactly ONE producer for the one Pages deploy slot.
373
-
#
374
-
# Runs AFTER the lychee link-check, which checks only the SITE's own export. The guide is a
375
-
# separate first-party render with its own link shape (mdBook resolves chapter links
376
-
# relatively, and the `link-fixup` preprocessor rewrites the {{#include}}d repo-relative
377
-
# links to absolute github.com URLs, which lychee --offline cannot resolve anyway); its
378
-
# broken-include gate is the [ERROR] grep in scripts/build-guide.sh, not lychee.
379
-
#
380
-
# UNLIKE the /app overlay there is NO placeholder route to replace here — the site export
381
-
# has no /guide route — so an out/guide that ALREADY exists means the site grew one and
382
-
# this step would silently clobber it. That is a hard failure, not a merge.
383
-
- name: Overlay mdBook guide (out/guide/)
384
-
working-directory: site
385
-
run: |
386
-
set -euo pipefail
387
-
guide_out="$GITHUB_WORKSPACE/book/book"
388
-
if [ ! -f "$guide_out/index.html" ]; then
389
-
echo "::error::mdBook render missing ($guide_out/index.html) — the guide build step did not produce book/book/"
390
-
exit 1
391
-
fi
392
-
if [ -e out/guide ]; then
393
-
echo "::error::out/guide already exists BEFORE the guide overlay — the site export now has its own /guide route, which this overlay would silently clobber. Pick a different mount or drop the site route (issue #5022)."
394
-
exit 1
395
-
fi
396
-
echo "Overlaying mdBook render -> out/guide/"
397
-
mkdir -p out/guide
398
-
# Plain `cp -a` (not the /app overlay's `rsync -a --delete`): that overlay mirrors
399
-
# ONTO a pre-existing placeholder tree and needs --delete to clear its orphans. Here
400
-
# the guard above has already proven out/guide did not exist, so there is nothing to
401
-
# delete and a copy is the whole operation.
402
-
cp -a "$guide_out/." out/guide/
403
-
# MOUNT ASSERTION: mdBook stamps book.toml's `site-url` into the guide's OWN 404.html
404
-
# as <base href="...">. GitHub Pages serves that directory-level 404 for /guide/<typo>,
405
-
# so if the baked base href ever stops matching the sub-path we overlay to, every asset
406
-
# on that page resolves against the wrong root. Assert the two agree here, at the point
407
-
# where the mount is actually chosen.
408
-
if grep -q '<base href="/guide/">' out/guide/404.html; then
echo "::error::out/guide/404.html does not carry <base href=\"/guide/\"> — book.toml's [output.html] site-url has drifted from the /guide/ mount, so the guide's 404 page would 404 its own assets"
412
-
exit 1
413
-
fi
414
-
# NOTE (measured): a second "no raw {{#include}} survived into the HTML" scan was tried
415
-
# here and REMOVED — it false-positives on the guide's own legitimate prose, which
416
-
# discusses the single-sourcing mechanism by name (book/src comments and the README
417
-
# `features-core` anchor both write `{{#include}}` in running text). The broken-include
418
-
# guard is the `[ERROR]` log grep in scripts/build-guide.sh, which runs before this step
419
-
# and whose teeth are pinned in scripts/tests/test_build_guide.sh.
420
-
echo "OK: mdBook guide overlaid at out/guide/" >> "$GITHUB_STEP_SUMMARY"
0 commit comments