> ## Documentation Index
> Fetch the complete documentation index at: https://slopsentral.michne.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Match checks to the engineering claim

> Choose a faithful repository gate and state the mechanism that it proves.

A passing result supports the mechanism that the command actually exercises.
The [TDD procedure](https://github.com/amichne/slopsentral/blob/main/source/skills/tdd/SKILL.md) connects each behavior change to an independent oracle and a nearby rejection case.
Run a wider gate only for repository policy, changed consumers, or a named unresolved concern.

## Select the edited surface

| Surface | Gate | What the result establishes |
| - | - | - |
| Python automation | `mise exec -- slopsentral-check` | Ruff, strict Pyright within its include list, and selected pytest assertions |
| Source composition | `node tools/validate-source-graph.mjs` | Declared schemas, canonical identities, paths, and graph invariants |
| Catalog | `node tools/catalog.mjs --check` | Agreement between source composition and the generated catalog |
| Provider shape | Fresh `project-marketplaces.mjs` output | Native Pkl evaluation, accepted operations, sealed payloads, and no-replace output |
| Knowledge | `mise exec -- slopsentral-docs check` | Named coverage, local links, native completion prerequisites, and reviewed byte agreement |
| Changed prose | `mise exec -- slopsentral-prose changed` | Pinned local prose rules and glossary assessment |
| Offline evaluation controls | `npm run check:evals` | Types, deterministic controls, and adapter contracts without fresh model evidence |
| Unified version | `npm run check:release` | Synchronized authored product versions and release configuration |

Use the focused commands in [projection](https://slopsentral.michne.com/knowledge/architecture/projection.md), [installation](https://slopsentral.michne.com/knowledge/integrations/installation.md), [profiles](https://slopsentral.michne.com/knowledge/integrations/profiles.md), and [releases](https://slopsentral.michne.com/knowledge/operations/releases.md) for their contracts.
Their guides name the responsible fixtures and tests.

## Keep accepted and rejected cases independent

Derive expected results from the public contract, source invariant, or an independent verifier.
A fake cannot encode the desired conclusion.
A compiler misuse case must fail for the intended diagnostic.
A malformed fixture or unavailable compiler does not prove that the API rejects the illegal operation.

Keep the initial and final oracle identity stable.
That identity includes the working directory, command, input, assertions, and meaningful environment.
Zero selected assertions provide no behavior proof.
A process return code needs the native evidence that the intended assertion ran.

## Exercise the distributed practice independently

The [portable package tests](https://github.com/amichne/slopsentral/blob/main/tools/tests/documentation-portability.test.mjs) project Codex, GitHub Copilot, Amp, and Pi packages through native Pkl.
They compare the shipped runtime, lock, schema, procedure, and template with their canonical bytes.
They then copy only shipped scripts into an isolated location.

A separate Git project uses `app/`, `handbook/`, `knowledge/`, and `.knowledge/`.
The runtime runs from an unrelated directory with explicit project, configuration, and lock paths.
The accepted path records reviewed inputs and reports `CURRENT`.
A source change reports `STALE` with the affected path.
Broken links, invalid OKF, missing configuration, and a missing dependency lock reject the operation.
The assertions also make sure that `check` preserves file bytes, modes, and Git status.
Every packaged runtime also rejects a source or document as its review-lock target.
A foreign existing JSON target remains unchanged.

The [Python tests](https://github.com/amichne/slopsentral/blob/main/tools/python_checks/test_documentation.py) also exercise the complete shipped template in another Git repository.
They reject a foreign lock symlink and a configuration that hides its declared knowledge pages.
These results establish portable package behavior, without model responses or native host registration.
The [adoption procedure](https://slopsentral.michne.com/maintainers/portable-documentation.md) uses the same runtime that Slopsentral invokes.

## Exercise Pi without ambient runtimes

The [native host test](https://github.com/amichne/slopsentral/blob/main/tools/tests/pi-host.test.mjs) provisions a private interpreter and runs prompt admission, tool calls, settlement rejection, and review recovery with only Git on `PATH`.
Recovery executes the hook's emitted status command, then the review command returned by that process.
The test supplies a successful Pi `read` result and expects a refresh for that file's scope.
It also expects the unrelated scope to stay queued and the refresh to leave the turn complete.
The [scope test](https://github.com/amichne/slopsentral/blob/main/tools/python_checks/test_agents_scope_hook.py) also exercises this sequence with literal paths containing spaces and shell punctuation.
Its external-runtime case still verifies missing uv and missing-script failures.
The [runtime boundary tests](https://github.com/amichne/slopsentral/blob/main/tools/tests/pi-runtime.test.mjs) reject an unverified archive, a foreign executable path, a symlink receipt, and a project-controlled runtime receipt.
The [archive test](https://github.com/amichne/slopsentral/blob/main/tools/tests/pi-install.test.mjs) installs through Pi with a command allowlist and no inherited credentials.

These checks separate private-runtime readiness from direct package installation, which bypasses provisioning.
Setup downloads remain network-dependent; hook invocation uses the retained interpreter.
The tests make no model request, and one host or platform run does not establish every mapped target's compatibility.

## Name the next system layer

A schema result cannot establish an external write.
A package result cannot establish native discovery or trust.
A mocked host cannot establish a live IDE interaction.
A routing fixture cannot establish a fresh model decision.
The [evaluation model](https://slopsentral.michne.com/knowledge/operations/evaluations.md) keeps these evidence levels distinct.

For documentation, a valid link establishes that a destination exists.
A digest establishes agreement with selected bytes.
Neither establishes that a paragraph explains the source correctly.
Use [Claim review](https://slopsentral.michne.com/knowledge/workflows/documentation.md) and source examination for that obligation.

## Preserve the result and stop

Report the exact command and passed, failed, skipped, or not-run outcome.
Keep useful failure output and the reason for a skipped mechanism.
Stop when the focused proof and necessary repository gates pass.
A local pass does not establish hosted CI or release publication for another revision.

## Examine the public documentation separately

The [site guide](https://slopsentral.michne.com/maintainers/site.md) separates source admission, native Mintlify results, returned content, and browser evidence.
`npm run docs:check` first rejects missing or stale projected pages.
It then runs the pinned Mintlify build and examines links, heading anchors, and redirects.
The ordinary source workflow also runs the projection gate without a path filter.

The [CLI cases](https://github.com/amichne/slopsentral/blob/main/tools/python_checks/test_public_docs.py) use independent Markdown fixtures and a real local HTTP server.
Missing source, missing output, changed prose, missing assets, and invalid destinations reject admission.
The live comparison preserves link destinations and code indentation.
Mintlify's known homepage links and Markdown table separators normalize.
Table rows, cells, content, and alignment remain part of the comparison.
A changed query, fragment, external destination, or conditional code block cannot pass as the expected content.
A login page or visible HTML body also rejects.

The [site workflow](https://github.com/amichne/slopsentral/blob/main/.github/workflows/documentation-site.yml) runs the native build for each PR and main push.
Its main job waits for all projected pages to match within a bounded interval.
A stale or missing deployment fails and keeps a source-bound content receipt.
The receipt names the expected commit and response digests.
It does not establish Mintlify's exact hosted build commit, browser layout, or reader comprehension.
Examine the actual changed pages and Mintlify's deployment status before a live-site claim.

A complete comparison needs fresh responses for every page before `LIVE`.
Earlier responses aid failure diagnosis only.
A deadline cannot turn an unstarted request into a transport failure.
The receipt keeps bounded rejection reasons without response bodies or secrets.

Manual candidate probes use checker code from the selected branch and expected documents from `main`.
Their receipts keep both commit identities.
They examine host access without a claim that pending candidate prose is live.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.