Skip to content

docs(manual): point the index at the discovery files - #20

Merged
HaoZeke merged 6 commits into
mainfrom
docs/manual-discovery
Nov 3, 2026
Merged

HaoZeke merged 6 commits into
mainfrom
docs/manual-discovery

Conversation

@HaoZeke

@HaoZeke HaoZeke commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Manual discovery links

What and why

The README names llms.txt, llms-full.txt, AGENTS.md, skills/, and server.json.
The manual index, which is the published site home, did not name any of them, so a reader of the site had no path to those files.

The index now has a Discovery section with those links.
Client setup stays on the Model Context Protocol page, which the section links.
llms-full.txt follows the Org manual, and the metadata test requires the same names on the index that it already requires on the README.

Before

docs/orgmode/index.org ended its front matter with the license and went on to the docs build:

  MIT License. See [[https://github.com/HaoZeke/eb-stack/blob/main/LICENSE][LICENSE]] in the repository.

* Build these docs

After

* Discovery

  [[https://github.com/HaoZeke/eb-stack/blob/main/llms.txt][llms.txt]] indexes
  this manual.
  [[https://github.com/HaoZeke/eb-stack/blob/main/llms-full.txt][llms-full.txt]]
  repeats every page in one file.
  [[https://github.com/HaoZeke/eb-stack/blob/main/AGENTS.md][AGENTS.md]] lists
  the build, test, lint, and docs commands. The skills for inspect, plan,
  bump, a stack SBOM, pull-request overlap, and the stdio server are under
  [[https://github.com/HaoZeke/eb-stack/tree/main/skills][skills/]]. The Model
  Context Protocol manifest is
  [[https://github.com/HaoZeke/eb-stack/blob/main/server.json][server.json]].
  Client configuration is the [[file:reference/mcp.org][server page]].

The built docs/build/index.html contains llms.txt and server.json.

Tests

  • Formatting: cargo +stable fmt --all --check exited 0.
  • Lints: cargo +stable clippy --locked --all-targets -- -D warnings exited 0.
  • Full suite: cargo +stable test --locked --all-targets exited 0, with 93 suites, 1503 passed, 0 failed, 10 ignored.
  • Packaging: cargo +stable package --locked exited 0.
  • Hooks: uvx prek run -a exited 0.
  • Documentation: pixi run -e docs mkrst, scripts/gen-rust-api.sh, scripts/sphinx-build-docs.sh, and scripts/check-doc-links.sh exited 0, and lychee 0.24.2 reported 0 errors.
  • Generated text: python3 scripts/gen-llms-txt.py --check exited 0.

Repro

cargo +stable test --locked --test public_metadata -- --exact discovery_metadata_uses_real_index_terms
python3 scripts/gen-llms-txt.py --check

Note

Medium Risk
Build-order graph walking changes what gets scheduled when --installed is used, and PR-overlap fetch scripts may include truncated file lists; both affect operational planning workflows but not auth or data security.

Overview
This PR adds several stack and workflow improvements plus a large documentation pass, not only the manual Discovery links described in the PR note.

stack order --installed (and eb_stack_order installed) treats modules from a listing file or Lmod tree like stack gap --installed: listed modules and their installed dependency subtrees are omitted from the build order, with installed=N on stdout before order=. --filter-deps still runs first. The Rust layer adds build_order_against_installed / build_graph_against_installed and wires them through workflows::stack_order.

Both examples/*/fetch-prs.sh scripts now page open PRs 100 at a time without stopping at 500, page changed files through GitHub’s 3000-file cap, and keep PRs with file_list_truncated when the list is truncated.

stack arch --probe-sources with two --arch values compares only that pair: a miss is arch-missing when the other family fetched the slot, unreachable when neither did (documented in the how-to and CLI reference).

The manual and README expand the MCP catalog (51 tools, command↔tool table in mcp.org, test that every CLI subcommand appears there), refresh the CLI command map (stack gap, campaign finding rows, stack oom usage block), and add Discovery links on the index (llms.txt, AGENTS.md, skills/, server.json).

Reviewed by Cursor Bugbot for commit f85acb2. Bugbot is set up for automated code reviews on this repo. Configure here.

mcp.org named the command groups and left each tool name to tools/list.
eb_stack_shadow was missing from the CLI reference.
The README left out the stack report tools and package latest.
The manual now names every CLI command's tool and the recipe and easyblock tools.
A test fails when a subcommand's tool is absent from that page.
The README names `llms.txt`, `llms-full.txt`, `AGENTS.md`, the `skills/` directory, and `server.json`.
The manual index, which is the published site home, did not, so those files were only reachable from the repository front page.

The index now links them, and the metadata test keeps that list on the index as well as the README.
`stack order` walked every dependency the roots pin, including modules already on the machine.
`--installed` now stops that walk at each listed module and leaves that module and its own dependencies out of the order.
`--filter-deps` still drops dependencies first, and the modules that remain follow the synthetic GCC-family hierarchy.
A single `--arch` was the only probe the suite locked.
Two flags were free to consult the third default family again: a wheel neither named family can fetch would come back `arch-missing` when that third family can fetch it, and `unreachable` only for one `--arch`.

The new test probes x86_64 with aarch64, and aarch64 with riscv64, on the Kaleido fixture.
The first pair reports the aarch64 wheel as `arch-missing` and does not mention riscv64.
The second reports both wheels as `unreachable`.
Flag order, a CPU target, and a family named twice stay on that same set.
`eb_stack_arch` returns the same lines.
The how-to quotes the pair.
Three texts now say that two names are compared only with each other: the command reference, the `--probe-sources` help, and the tool description.
fetch-prs.sh handed the open pull request list and the changed-file list to one `gh api --paginate` call.
GitHub answers 422 at its 3000-file cap, and the file call then exits non-zero.
The scripts kept the names already printed and did not record that the list was cut.
Nothing in the tests used more than 102 open pull requests, so a walk that stopped at 500 still passed.

Both scripts now request each page of 100.
The open list runs until a short page.
A changed-file list that stops at 3000 keeps the pull request and sets file_list_truncated, which the record notes as truncated at GitHub's limit.
The page size, the file cap, and both page limits are named variables at the top of each script.
The command map listed `stack gap` twice and folded claim and resolve into one `campaign finding` row.
The `stack oom` section described every flag in prose, and the group synopsis omitted `--hooks`, `--parallel`, `--max-parallel`, and the `--mib-per-job` alias.

`stack oom` now has one usage block with every flag.
A single `stack gap` row names the route and the tab-separated values (TSV) file, and `campaign finding claim` and `campaign finding resolve` each get their own row.
@HaoZeke
HaoZeke merged commit ef8fb8c into main Nov 3, 2026
19 checks passed
@HaoZeke
HaoZeke deleted the docs/manual-discovery branch November 4, 2026 09:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant