Skip to content

Registry pages: capture enumerable sources completely, one cited row per entry - #134

Merged
MarkusNeusinger merged 3 commits into
mainfrom
claude/intelligent-galileo-agsnsg
Jul 29, 2026
Merged

Registry pages: capture enumerable sources completely, one cited row per entry#134
MarkusNeusinger merged 3 commits into
mainfrom
claude/intelligent-galileo-agsnsg

Conversation

@MarkusNeusinger

@MarkusNeusinger MarkusNeusinger commented Jul 29, 2026

Copy link
Copy Markdown
Owner

What

Sources that are (or contain) a uniform enumeration of like entries — machine inventories, error-code catalogs, customer rosters, product/price lists — used to come out as a representative subset with the tail compressed into one footnote (live example: the kelvarra showcase's organizations/instrument-works.md presses 5 "Sundries" products into a single [^s9]). The rules actively demanded that compression: the granularity floor prefers fewer dense pages, "essence, not structure" discards enumerable data, and meeting-minutes.md routes perennial reference tables to "ordinary facts" with no aggregate destination.

This PR adds the Registry page kind: one page per collection under the new wiki/registries/ folder, one bullet per entry with the entry's source-verbatim key in bold and its own citation at the finest available locator — and promotion: an entry that accumulates several independent cited facts (the unchanged granularity floor) moves to its own page of its own kind, its registry row becoming key + link + one-line gloss.

How

Almost all of it is rules text (the runtime program):

  • New citadel/rules/genres/registry.md — applies-when test ("entries share one attribute shape, and a reader would ask is X on the list?"), completeness-over-compression (WRONG→RIGHT built on the Sundries defect), row shape + key identity + search-before-append, spreadsheet sheet-marker rule, promotion, per-row reconcile/Change-Log behavior, range-split (never topic-split) guidance, and an explicit negative list (Open Points, chat/event streams, code symbols, bibliographies, abbreviations).
  • schema.mdRegistry row in the type table, decision-procedure step 7 (before Concept, after Object — so a single rich machine still matches Object first, which is the promotion semantics), and a compact ## Registries format contract.
  • core.md — two carve-outs: the floor limits pages, not rows; data rows are not code structure.
  • meeting-minutes.md — perennial reference tables now route to the registry brief; tasks/reconcile.md keeps registry row lists as genre treatment; rules README.md indexed.

Two small code touches:

  • okf.py"registry": "registries" in folder_for_type (same commit as the rules text: the misc-fallback plus curate's resort detector would otherwise relocate every registry page each run).
  • curate.py — the page_length_hard guidance is now type-aware: an oversized registry is told to split by entry range/subclass into sibling registries, never along topics (the detector itself is unchanged).

Everything else (per-folder index, viewer, type:registry search, MCP resources, curate resort) is data-driven and picks the new type up automatically.

New graded corpus: werkhof — and its committed showcase run

Per the project's "every capability is graded" pattern: corpora/werkhof/ (fictional maintenance firm, Werkhof Anlagenservice Brandt) — a 28-machine register (>200 lines ⇒ per-row lines A-B locators required), a 20-code fault catalogue (near-miss E-142 vs E-412, deprecated E-155→E-310), a 15-customer CSV (the data-not-code boundary), and a service report driving promotion, a dated HX-201 status supersession, attributed opinions, and a done-able open-items list (Open Points, never registry rows). Hidden answer key at .claude/skills/verify-corpus/werkhof/ground-truth.md; SKILL.md/CLAUDE.md/CI corpus floors updated.

The committed showcase wiki was generated by a real sonnet Mode A run under the new rules and graded against the full answer key — PASS on every guarantee (run block in docs/verify-corpus-backlog.md): three type: Registry pages carrying 28/28 machines, 20/20 fault codes, 15/15 customers, one citation per row with offline-verifying locators (lint locator issues: 0), promotion to objects//organizations/ with rows reduced to key + link + gloss, the status supersession as a dated trace, open items as ## Open Points, and mid-list keys (KP-011, E-420, K-009) retrievable top-1 through citadel search. check and lint both exit 0. The kelvarra Sundries defect is recorded and resolved as VCB-005 in the ledger.

Known limitation (documented in CHANGELOG)

A list source over CITADEL_MAX_SOURCE_CHARS (~300k chars) chunks through segment files whose line numbers rebase, so per-row lines A-B locators of such oversized lists are not offline-verifiable yet. v1 registries (tens to a few hundred entries) sit far below the threshold; the future fix is the _line_windows true-offset approach already used for audio/PDF.

Tests

  • tests/test_okf.py — Registry routing (+ the misc-fallback pins stay).
  • tests/test_curate.py — Registry in registries/ is not resort-flagged (while the same type mis-filed is), and the length guidance splits by range for registries, by topic for everything else.
  • Full suite 1282 passed; ruff clean; all 10 showcase lints green locally; copilot-instructions regenerated (drift guard green).

🤖 Generated with Claude Code

https://claude.ai/code/session_01X8L1A9vAa2WJKemtM21uR9

claude added 2 commits July 29, 2026 08:01
…per entry

A source that is (or contains) a uniform enumeration of like entries — a
machine inventory, an error-code catalog, a customer roster, a price list —
used to come out as a representative subset with the tail compressed into one
footnote (the kelvarra Sundries defect). The rules actively demanded it: the
granularity floor prefers fewer dense pages, essence-not-structure discards
enumerable data, and meeting-minutes routes perennial reference tables to
"ordinary facts" with no aggregate destination.

New `Registry` type (folder `registries/`): one page per collection, one
bullet per entry with the entry's source-verbatim key in bold and its own
citation at the finest available locator. The granularity floor is unchanged
— an entry earns its own page (of its own kind) only past several independent
cited facts, and its row becomes key + link + one-line gloss. Delivered as
rules text (new `genres/registry.md`, a `Registry` row + decision step +
`## Registries` contract in schema.md, floor/essence carve-outs in core.md,
the meeting-minutes reroute, reconcile keep-treatment) plus two code touches:
the `okf.folder_for_type` mapping (same commit as the rules text, or the
misc-fallback + curate resort would relocate every registry page) and a
type-aware curate length guidance (an oversized registry splits by entry
range/subclass into sibling registries, never along topics).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X8L1A9vAa2WJKemtM21uR9
The tenth corpus and the graded proof for the Registry feature: a 28-machine
register (>200 lines, so per-row line locators are required), a 20-code fault
catalogue (near-miss E-142 vs E-412, a deprecated E-155 -> E-310 hand-over),
a 15-customer CSV (the data-not-code boundary), and a June 2026 service
report that drives promotion (PV-014 -> objects/, Nordwerk -> organizations/),
a dated HX-201 status supersession, attributed opinions, and a done-able
open-items list that must land in Open Points, never in a registry.

Hidden answer key at .claude/skills/verify-corpus/werkhof/ground-truth.md
(outside the corpus); verify-corpus SKILL.md, CLAUDE.md, and the CI corpus
floors (9 -> 10) updated. The committed showcase wiki follows in the next
commit, generated by a real graded ingest run.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X8L1A9vAa2WJKemtM21uR9
Copilot AI review requested due to automatic review settings July 29, 2026 08:09

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a new Registry page kind to ensure uniform enumerations (inventories, catalogs, rosters, code lists) are captured completely in the wiki with one cited row per entry, and adds a new graded corpus (werkhof) to validate this behavior end-to-end.

Changes:

  • Add Registry as an OKF page type (rules + folder routing in okf.folder_for_type) and update curate guidance so oversized registries split by key range/subclass rather than topic.
  • Add/extend rules docs (schema.md, core.md, genres/registry.md, and related briefs) to enforce per-entry citations, completeness, and promotion semantics.
  • Add the new corpora/werkhof test corpus plus verify-corpus ground truth, and update CI/pages corpus floors to expect 10 corpora.

Reviewed changes

Copilot reviewed 24 out of 25 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/test_okf.py Adds routing tests for Registryregistries/ paths.
tests/test_curate.py Adds tests ensuring registry pages aren’t resort-flagged and that length guidance is registry-specific.
README.md Documents the new registries/ wiki folder.
corpora/werkhof/README.md Documents the new corpus goals and expected registry/promotion outcomes.
corpora/werkhof/raw/wartungsbericht-2026-06.md New prose source driving promotion, supersession, and open-points vs registry judgment.
corpora/werkhof/raw/stoercode-katalog.md New enumerated fault-code catalog source (registry completeness + near-miss keys).
corpora/werkhof/raw/maschinenbestand-2026.md New enumerated machine register source (registry completeness + per-row locators).
corpora/werkhof/raw/kundenliste.csv New CSV roster source to grade “data rows are content” behavior.
corpora/werkhof/citadel.toml Adds corpus workspace marker.
corpora/werkhof/.citadel_run.lock Adds a runtime lockfile (should not be committed; blocks runs after checkout).
CLAUDE.md Updates documentation to include the 10th corpus and werkhof in verify-corpus usage.
citadel/rules/tasks/reconcile.md Extends “keep existing genre treatment” to include registry row lists.
citadel/rules/schema.md Adds Registry to the type table and decision procedure; documents registry format contract.
citadel/rules/README.md Indexes registries in the rules summary and adds the new genre brief.
citadel/rules/genres/registry.md New genre brief defining completeness, per-row citations, promotion, and splitting guidance.
citadel/rules/genres/meeting-minutes.md Routes perennial reference tables to registry treatment when uniformly enumerable.
citadel/rules/core.md Clarifies that the granularity floor limits pages not rows; datasets aren’t “code structure.”
citadel/okf.py Adds Registryregistries folder mapping.
citadel/curate.py Makes page-length findings guidance type-aware for Registry.
CHANGELOG.md Documents the Registry feature and its known limitation for oversized chunked sources.
.github/workflows/pages.yml Bumps expected minimum corpus count from 9 → 10 for Pages build.
.github/workflows/ci.yml Bumps expected minimum corpus count from 9 → 10 for showcase lint gating.
.github/copilot-instructions.md Regenerates instructions to reflect the 10th corpus and updated verify-corpus usage.
.claude/skills/verify-corpus/werkhof/ground-truth.md Adds the werkhof grading answer key.
.claude/skills/verify-corpus/SKILL.md Updates verify-corpus skill docs to include werkhof and “ten corpora”.

Comment thread corpora/werkhof/.citadel_run.lock Outdated
Comment thread .github/workflows/ci.yml
The committed showcase generated by a real sonnet Mode A run under the new
Registry rules: three type: Registry pages under registries/ carrying every
machine, fault code, and customer as its own cited row (line locators, 0
locator issues), PV-014/HX-201/Nordwerk promoted with rows reduced to
key + link + gloss, the HX-201 status supersession as a dated trace, the
report's done-able items as Open Points, and mid-list keys retrievable
top-1 through citadel search. check and lint both exit 0.

Also: drop the accidentally committed corpora/werkhof/.citadel_run.lock
(a runtime artifact snapshotted while the ingest was still running) and
gitignore citadel's runtime artifacts so it cannot recur; record the run
and move VCB-005 (the kelvarra Sundries compression defect this feature
fixes) to Resolved in docs/verify-corpus-backlog.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X8L1A9vAa2WJKemtM21uR9
Copilot AI review requested due to automatic review settings July 29, 2026 08:41

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 39 out of 40 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

citadel/okf.py:187

  • The docstring references rules/genres/registry.md, but the rules files are generally referenced by their path within the rules tree (e.g. core.md, schema.md, genres/...). Using rules/... here is inconsistent and may be misleading for readers trying to locate the file.
    ``System``). ``Registry`` is a complete enumeration of like entries captured row-by-row from
    a source (a machine inventory, an error-code catalog, a customer roster — see
    ``rules/genres/registry.md``). ``Person``/``Organization``/``Project`` replace the old

@MarkusNeusinger
MarkusNeusinger merged commit 33a0ad9 into main Jul 29, 2026
12 checks passed
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.

3 participants