Request for consideration: plugin interface for instance-defined wiki-lint checks #236

Open
opened 2026-10-17 10:46:22 +00:00 by torben · 0 comments
Owner

Request

Please consider whether wiki-lint (tools/wikitool lint) could offer a plugin interface for checks that an instance defines itself. This is a request for consideration, not a bug.

Use case

The instance keeps every edition of a rulebook or regulation as its own source page. A superseded edition gets an instance-defined optional frontmatter field gueltig_bis (last season in force) and a wikilink to its successor in the prose.

Consistency rule: no page other than a source page may cite a source page that carries gueltig_bis. The rule lives in the instance's kb/CONVENTIONS.md.

What was tried

Environment: Claude Code (CLI), zsh, Linux 6.18.36-1-lts. Stack 10.1.0 (exported 2026-10-16, from commit c1ddefdc7f), content version 10.0.0, corpus still empty at the time (lint: "Scanned 0 pages under kb/").

  1. tools/wikitool lint printed No structural findings. The report ends with a fixed "Semantic Review (LLM to complete)" section. lint -h lists a fixed set of structural, provenance and advisory checks. No option or note names a way for an instance to add one.
  2. tools/wikitool search --field 'gueltig_bis:*' exited 1: ERROR unknown field(s): gueltig_bis. Available: collection, kind, subtype, title. The field list comes from existing pages, so the check can only be exercised once pages exist.
  3. tools/wikitool search -h: --field supports f=v, f~substring, f>=v, f:*, !f. There is no predicate for exact membership of a value in an array field, so --field 'sources~Source - X' also matches Source - X 2027.
  4. tools/wikitool links show -h shows related: edges in both directions, not citations.
  5. tools/wikitool sources trace -h: --raw <path> gives raw file, source page(s), and the pages citing them. This is the exact lookup the check needs, but it is one call per raw file and counts against the iteration budget.
  6. Result: a manual instruction, instructions/check-rule-editions.md (manual: true), that runs steps 2 and 5 per superseded source and reports read-only. tools/wikitool instructions verify passes.

Expected and observed

  • Expected: an instance-specific integrity rule over frontmatter and citations runs as part of lint, alongside the stack's structural checks.
  • Observed: lint has no extension point for instance-defined checks. The rule is held up only by a manual instruction that an agent must be asked to run, and each run issues one counted sources trace call per raw file of every superseded source.

Possible shapes

Only suggestions:

  • an instance-owned check file that lint discovers and runs (declarative, e.g. "pages citing a source whose frontmatter has field X"), or
  • a lint hook that receives the page graph and returns findings.

A declarative citation predicate would cover this case without arbitrary code.

Not known

Whether the stack already plans instance-level lint checks, and whether the sources trace call volume matters in practice. No superseded edition exists yet in the instance.

Notes

A pseudonymised bug-report bundle exists locally (bugreport-20261016T194034Z) and can be supplied on request.

## Request Please consider whether `wiki-lint` (`tools/wikitool lint`) could offer a plugin interface for checks that an instance defines itself. This is a request for consideration, not a bug. ## Use case The instance keeps every edition of a rulebook or regulation as its own source page. A superseded edition gets an instance-defined optional frontmatter field `gueltig_bis` (last season in force) and a wikilink to its successor in the prose. Consistency rule: no page other than a source page may cite a source page that carries `gueltig_bis`. The rule lives in the instance's `kb/CONVENTIONS.md`. ## What was tried Environment: Claude Code (CLI), zsh, Linux 6.18.36-1-lts. Stack 10.1.0 (exported 2026-10-16, from commit c1ddefdc7f15), content version 10.0.0, corpus still empty at the time (`lint`: "Scanned 0 pages under kb/"). 1. `tools/wikitool lint` printed `No structural findings.` The report ends with a fixed "Semantic Review (LLM to complete)" section. `lint -h` lists a fixed set of structural, provenance and advisory checks. No option or note names a way for an instance to add one. 2. `tools/wikitool search --field 'gueltig_bis:*'` exited 1: `ERROR unknown field(s): gueltig_bis. Available: collection, kind, subtype, title`. The field list comes from existing pages, so the check can only be exercised once pages exist. 3. `tools/wikitool search -h`: `--field` supports `f=v`, `f~substring`, `f>=v`, `f:*`, `!f`. There is no predicate for exact membership of a value in an array field, so `--field 'sources~Source - X'` also matches `Source - X 2027`. 4. `tools/wikitool links show -h` shows `related:` edges in both directions, not citations. 5. `tools/wikitool sources trace -h`: `--raw <path>` gives raw file, source page(s), and the pages citing them. This is the exact lookup the check needs, but it is one call per raw file and counts against the iteration budget. 6. Result: a manual instruction, `instructions/check-rule-editions.md` (`manual: true`), that runs steps 2 and 5 per superseded source and reports read-only. `tools/wikitool instructions verify` passes. ## Expected and observed - Expected: an instance-specific integrity rule over frontmatter and citations runs as part of `lint`, alongside the stack's structural checks. - Observed: `lint` has no extension point for instance-defined checks. The rule is held up only by a manual instruction that an agent must be asked to run, and each run issues one counted `sources trace` call per raw file of every superseded source. ## Possible shapes Only suggestions: - an instance-owned check file that `lint` discovers and runs (declarative, e.g. "pages citing a source whose frontmatter has field X"), or - a lint hook that receives the page graph and returns findings. A declarative citation predicate would cover this case without arbitrary code. ## Not known Whether the stack already plans instance-level lint checks, and whether the `sources trace` call volume matters in practice. No superseded edition exists yet in the instance. ## Notes A pseudonymised bug-report bundle exists locally (`bugreport-20261016T194034Z`) and can be supplied on request.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: torben/chemenu#236