Skip to content

docs: every occurrence of a term is a link, and the records in the plain register - #76

Open
runewright[bot] wants to merge 8 commits into
mainfrom
fable/records-register
Open

runewright[bot] wants to merge 8 commits into
mainfrom
fable/records-register

Conversation

@runewright

@runewright runewright Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Plan

The voice review of 2026-10-18 decided that a defined term is a link to its glossary page at every occurrence in a file, and that every decision record reads in the plain spoken register. This pull request applies both to the deck and brings the tooling that checks them.

Changes

  • Link every occurrence of a defined term in docs/changes/plain-text-first-principles and its ten delta specs, the proposal, the design, and the proof README; split six requirements that crossed the 500-character cap with their links into pairs.
  • Rewrite the forty records under docs/decisions/ in the plain spoken register with every term linked; the verifiers' remaining judgements are listed in the workshop, not in the records.
  • State the every-occurrence rule and the collision rule (reword an everyday sense, cite a record by an inline link) in runes/core/rules/ConsultTheOntology.md.
  • Report a plain occurrence of a linked term as term-unlinked in scripts/fallback/check-terms, link it in scripts/fallback/fix-terms, and skip front matter, headings, code, definition lines, and inline-link destinations in scripts/fallback/termlib.py; the longer term wins at an overlap.
  • Read coverage-table cells through term links in scripts/check-coverage.
  • Regenerate Core.UndefinedTerm from scripts/generate-vale-style.py so a hyphenated name, a multi-word link, and a plural count as defined; exempt roman numerals in Core.UnexplainedAbbreviation.
  • Add nine review-ceremony terms to ontology/rune.ttl and their glossary pages.
  • Pin RUNE_CLI_REV in .github/workflows/quality.yaml to the cli head that carries the every-occurrence validator, run the fixture tests after the tool installs, and skip the Obsidian-only snapshot check on the runner.
  • Add a blank line after a table in docs/changes/agentic-first-pipeline-rules/design.md and drop the front matter from two delta specs, which the current OpenSpec refuses in strict mode.

Testing

  • bash .githooks/pre-commit --all-files with the pinned cli build on PATH: exit 0.
  • python3 scripts/fallback/check-terms .: 0 findings; parity with rune spec fix --links proven on a scratch copy.
  • REQUIRE_GATES=1 python3 -m unittest tests.test_check_scripts and python3 -m unittest tests.test_fallback_terms: OK.
  • openspec validate --all --strict: 51 passed.
  • Guarded push dry-run on head 2cf42a3a: exit 0; the draft-open run on it passed.

Release Notes

  • Every occurrence of a defined term is a link, the decision records read in the plain spoken register, and the fallback term scripts match the cli.

Open-Seal-Nonce: 53c75b736e91701aa68c288f9d10212a93871e9347e845eaddadac4790e611ab

Note

Require glossary links on every term occurrence and rewrite decision records in plain prose

  • The term checkers now require a glossary link at every later use of a term. check-terms reports plain occurrences as term-unlinked errors, and fix-terms inserts reference links automatically (check-terms, fix-terms).
  • Rewrote the Markdown analysis in termlib.py with a line-oriented fenced-block scanner, heading detection, prose masking for links and URLs, plural-form matching, and a Rune capability probe for the new link model.
  • Rewrote all CORE and DECK decision records in a plain-spoken register and added glossary links; each record states the decision itself is unchanged.
  • Updated Vale rules: Core.UndefinedTerm now accepts plural, link-ending, bold, underline, and code definitions while avoiding hyphenated-name false positives; Core.UnexplainedAbbreviation ignores Roman numerals.
  • Added new review-related ontology classes (ReviewController, ReviewFunnel, OpenSeal, MergeSeal, WorkItem, and others) to rune.ttl with generated glossary pages.
  • Behavioral Change: term checks are stricter — docs linking a term once will now fail until every plain occurrence is linked; run fix-terms to auto-repair. The Core.UndefinedTerm rule no longer treats single-marker emphasis as a definition.

Macroscope summarized 213a386.

Claude Fable 5.1 (claude-fable-5-1) and others added 3 commits October 19, 2026 15:43
A defined term is a link to its glossary page at every occurrence in a
file: the first emphasized, every later one plain, so a copied paragraph
keeps its links. The foundations spec, the ConsultTheOntology rule, the
fallback check-terms and fix-terms, and check-coverage all say or do so.
Six foundation requirements that crossed the 500-character cap with their
links split into pairs, and the physics framing of projections moved to
the glossary page. Nine review-ceremony terms join the ontology.

Co-Authored-By: Martin Zeman <N4M3Z@users.noreply.github.com>
Every decision record leads with the point, names an actor, keeps one
idea per sentence, links each ontology term at every occurrence, and
carries one rewrite note. Rewritten from the voice review of 2026-10-18
over three agent passes with a verifier after each; the verifiers'
remaining judgements are in the workshop under
docs/specs/2026-10-18-foundations-landing/reports/records-open-judgements.md.

Co-Authored-By: Martin Zeman <N4M3Z@users.noreply.github.com>
The first push of a branch checks every file, and three items on main
failed there: the idea snapshot check needs the Obsidian CLI, which no
runner has, so the commit stage skips it on CI and it stays a local gate;
a table in the agentic-first-pipeline-rules design had no blank line after
it; and two delta specs carried front matter above their first heading,
which the current OpenSpec refuses in strict mode while every other delta
spec goes without it.

Co-Authored-By: Martin Zeman <N4M3Z@users.noreply.github.com>
@github-actions github-actions Bot added size:xlarge auto: changed-lines bucket area:docs auto: documentation and markdown area:workflows auto: CI and automation under .github labels Oct 19, 2026
@github-actions

Copy link
Copy Markdown

review/correctness stood down on 2cf42a3a: free lanes only: deterministic check quality is pending on this head. Apply review:runeseer to force a paid round.

@N4M3Z N4M3Z changed the title chore(quality): a fresh branch passes the commit stage on every file docs: every occurrence of a term is a link, and the records in the plain register Oct 19, 2026
…ree":"866617e821e044c4cf3e03af762cbb3df1fae204","nonce":"53c75b736e91701aa68c288f9d10212a93871e9347e845eaddadac4790e611ab"}
@N4M3Z
N4M3Z marked this pull request as ready for review October 19, 2026 16:03
@N4M3Z
N4M3Z self-requested a review as a code owner October 19, 2026 16:04
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-19T16:07:11.504892Z 6eeaa49 Draft marked ready
🔒 Security Review ✅ Completed 2026-10-19T16:07:00.783274Z 6eeaa49 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6eeaa49111

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread runes/core/skills/ReviewChange/SKILL.md Outdated
Comment on lines +25 to +26
- A verdict binds to the [requirement][REQUIREMENT]'s current text. When the owner [changes][CHANGE] the text, say what the new text claims before you move on.
- When a decision [changes][CHANGE] during the walk, the readback states only the final decision and marks the reversal where it matters.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep ordinary verbs separate from the Change term

Here changes is an ordinary verb, but the new links resolve it to the glossary's Change class, which specifically means a spec-driven directory under docs/changes/. This gives the agent the wrong definition while executing a review, and the same incorrect verb link recurs elsewhere in this skill and in the modified proposals. Reword these uses as alters or leave them unlinked, as the updated ontology rule itself requires.

Useful? React with 👍 / 👎.

Comment thread scripts/fallback/termlib.py Outdated
Comment thread scripts/fallback/termlib.py
Comment on lines +89 to +90
linked = termlib.linked_terms(text, resolved, index)
for start, end, name, tag in termlib.term_occurrences(text, linked, index):

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Run the new check when an older rune is installed

On a developer machine with the previously supported rune revision, the existing hook skips this fallback whenever any rune executable is present, and rune_has_link_model() treats the already-existing rune spec fix command as proof that the CLI implements this newly added term-unlinked behavior. Consequently this loop is never reached and local checks accept plain occurrences until the user happens to upgrade rune; gate delegation on the required CLI capability/version or run the fallback check as well.

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown

review/correctness stood down on 6eeaa491: free lanes only: deterministic check quality is pending on this head. Apply review:runeseer to force a paid round.

…sary links

The contract workflow pins its own cli candidate, and that pin still
built the rune that reports a term link into the repository glossary
as an escape. It now builds the signed head that strips term links in
assembly and accepts the reference form. The ReviewChange canon named
one harness tool by its literal name in two places, which the same
check refuses; it now says the harness choice prompt.

Co-Authored-By: Martin Zeman <N4M3Z@users.noreply.github.com>
@macroscopeapp

macroscopeapp Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Approvability

Verdict: Needs Human Approval

Macroscope's review found this PR requires human approval — This is a large cross-cutting behavior change, not a documentation-only update: it changes default term validation and rewriting, agent-facing instructions, ontology data, tests, and CI gates. The implementation spans files owned by another maintainer, with unresolved comments identifying concrete semantic-link and fallback-validation risks.

Notes:

  • Macroscope's correctness review did not run, so approvability was decided on eligibility alone.

You can add or adjust custom eligibility rules. Learn more.

@github-actions

Copy link
Copy Markdown

review/correctness stood down on e2523e9a: free lanes only: deterministic check quality is pending on this head. Apply review:runeseer to force a paid round.

…be that reads the help

Review findings on the pull request. The fallback matcher built only
`capabilitys` and `capabilityes` for a label that ends in y, so
`capabilities` and `repositories` passed unlinked; it now takes `ies`.
A term inside a bare URL, an autolink, or an HTML tag counted as prose
and the fixer would have rewritten the address; both are masked now.
The two scripts handed over to any installed rune that had `spec fix`,
including the older build without the every-occurrence rule; they now
hand over only when that rune's own help says it links every occurrence.
The ReviewChange skill wrote the verb "changes" as a link to the change
term; the sentence now names the owner reversing a decision.

Co-Authored-By: Martin Zeman <N4M3Z@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

review/correctness stood down on 3d809039: free lanes only: deterministic check quality is pending on this head. Apply review:runeseer to force a paid round.

The SafetyFirst policy test pins a digest of the workflow bytes. The
policy changed on 2026-09-22, when deletion moved to the shared trash
script, and the pin stayed at the 2026-09-14 bytes; the contract job
hid it behind the harness-symbol findings the same job reported. The
pin now names the current policy.

Co-Authored-By: Martin Zeman <N4M3Z@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

review/correctness stood down on d59578a7: free lanes only: deterministic check quality is pending on this head. Apply review:runeseer to force a paid round.

@N4M3Z N4M3Z added the review:runeseer Summons the adjudicating correctness lane label Oct 19, 2026
@runeseer

runeseer Bot commented Oct 19, 2026

Copy link
Copy Markdown

review/correctness round 1 started on d59578a7 at ledger generation 2.

@runeseer

runeseer Bot commented Oct 19, 2026

Copy link
Copy Markdown

Runeseer review — 2 open findings

Risk Finding Location Source
Medium verb changes still linked to the Change term runes/core/skills/ReviewChange/SKILL.md:26 Codex
Medium term-unlinked check never runs when any rune is installed scripts/fallback/check-terms:90 Codex

Request changes. Two earlier notes still hold: the new every-occurrence term check never runs on a machine where any rune is installed, and ReviewChange/SKILL.md still links the verb changes to the Change term that the new rule forbids.

  • The ies plural and the URL/HTML masking notes are already fixed in termlib.py.
  • Minor: scripts/fallback/check-terms:24 still describes the old probe; the code now reads the help text.

2 open · Reviewed d59578a7 · review run · $1.53 · 2m54s · 26 turns

@runeseer

runeseer Bot commented Oct 19, 2026

Copy link
Copy Markdown

@N4M3Z, the following findings block this head:

  • scripts/fallback/check-terms:90: term-unlinked check never runs when any rune is installed
  • runes/core/skills/ReviewChange/SKILL.md:26: verb changes still linked to the Change term

Choose one action:

  • Fix all findings. Then apply review:runeseer to review the new head.
  • Apply ignore:runeseer to accept the complete current verdict.

@github-actions github-actions Bot removed the review:runeseer Summons the adjudicating correctness lane label Oct 19, 2026
The reviewer found a verb still linked to the change term on line 25,
which the first fix had missed one line above its own. Two more
everyday uses in the same file went the same way: edits to the
ontology and the proposed edits in a choice prompt are not changes in
the spec-driven sense, so they are now called edits.

Co-Authored-By: Martin Zeman <N4M3Z@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

review/correctness stood down on 213a3867: free lanes only: deterministic check quality is pending on this head. Apply review:runeseer to force a paid round.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:docs auto: documentation and markdown area:workflows auto: CI and automation under .github size:xlarge auto: changed-lines bucket

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant