Skip to content

Runestone constructs: harmonize sample book, development schema, and code - #3128

Merged
rbeezer merged 16 commits into
PreTeXtBook:masterfrom
rbeezer:runestone-schema
Aug 6, 2026
Merged

Runestone constructs: harmonize sample book, development schema, and code#3128
rbeezer merged 16 commits into
PreTeXtBook:masterfrom
rbeezer:runestone-schema

Conversation

@rbeezer

@rbeezer rbeezer commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

The sample book's Runestone chapters produced 217 errors against the
development schema. A three-way audit — what the samples author, what
the XSL actually reads (the interactive builders, the static
representations, and the assembly's classifier, which stamps
exercise, the project-like blocks, and task alike), and what the
schema models — showed nearly all of it was the schema trailing the
implemented feature set, with a handful of genuine sample defects.
This branch closes the gap from all three sides. After it: the sample
book validates with exactly one error (a @reduce placement question
parked for #3047 or the FITB maintainer), and the sample article's
count drops from eleven to zero.

The commits:

  • 72bfa84 (HTML) Authored slate markup is copied by local name
    only. An HTML page is this content's sole destination, and HTML
    parsers have no notion of namespaces — so the XHTML namespace
    becomes purely a source-side validation marker, declared once (a
    prefix on the slate), with plain HTML tags in the output. The
    mode (copy-authored-xml) is not slate-specific and could serve
    other embedded markup.

  • 9a8a299 (Sample book) Four conformance repairs (a bare-text
    statement, a p wrapping an image, a stray p inside a listing,
    a trailing paragraph now a proper conclusion), and the show-eval
    demonstration declares xmlns:xhtml once on its slate, authoring
    xhtml:button and kin.

  • afcf71c (Schema) A task hosts the same interactive forms as an
    exercise — the classifier always treated them alike.

  • 6459c40 (Schema) choices/@multiple-correct, choices/@cols, a
    choice holding several blocks, and query/@visibility.

  • 9cc3f82 (Schema) Codelens checkpoint prompts and feedback are
    marked-up text, not block sequences; program/@starting-step is the
    integer the trace extractor arithmetics on, not a yes/no; and
    program/@datafile joins its long attribute list.

  • 00cfcdc (Schema) Parsons, both layouts: @database, blocks/@reuse
    and @numbered, block/@name and @depends (partial-order
    grading), the @ref/@xml:id block-reuse pair, inline content for
    horizontal blocks, exercise-level tests — and the model's
    preamble/postamble become the program-preamble and
    program-postamble the code and samples have always used, standing
    as their own named patterns so a future unification with a
    program's interior preamble/postamble stays a contained decision.

  • b2c67fa (Schema) A match holds premises and a response in either
    order, and either side alone is a distractor.

  • c3859d4 (Schema) Clickable areas in their three authored forms —
    paragraphs, cline code (with @language), and tabular cells —
    freely interleaved, trailing components in any order.

  • 83e9cf8 (Schema) The select exercise, whole: @questions lists
    the variant questions, @grade says how the graded variant is
    chosen (random, A/B experiment, first-with-others-viewable, or the
    reader's pick), @experiment-name for the A/B case.

  • 8c8e6bb (Schema) The legacy fill-in (setup/var/condition),
    fully modeled — the machinery is completely implemented, interactive
    and static — with the literate source stating plainly that this form
    will NEVER move to the stable schema; its only future is retirement.

  • 45602a4 (Schema) Dynamic fill-in growth: a bare eval or
    constructor as a test's comparison shorthand (the assembly
    substitutes the full form), de-expression/@context, text-level
    feedback, solution/@include-automatic.

  • 4628eb3 (Schema) Timed exams (@time-limit with the results,
    timer, feedback, pause toggles) and group work
    (@groupwork/@groupsize) on their hosting divisions.

  • d7ce0f3 (Schema) datafile/@hide; a video may carry a title,
    which the Runestone manifest consumes.

  • 8079c50 (Schema) The dual (dynamic-plus-static) exercise, modeled
    minimally and marked experimental, matching the sample's own alert.

  • 5f6a6bd (Schema) Slate housekeeping: the no-namespace input and a
    redundant xhtml:button special case are gone; the wildcard's
    comment explains the namespace-as-foreign-marker principle and the
    declare-once idiom.

  • a3b1555 (Sample book) Five stale prose references to
    docinfo/programs now read docinfo/defaults/programs, the
    location the code prefers, the schema models, and the book itself
    uses.

Nearly all modeling deliberately lives in the development overlay; the
base schema changes are confined to the program element, the video
title, and one tabular-cell extension. Under the stable schema the
book's count falls 322 to 289 — the Runestone frontier remains
development-schema territory by design.

Testing: every schema regeneration is idempotent; the Guide holds its
two-error baseline; a full before/after HTML build of the sample book
differs in exactly the pages the source repairs touch, each verified
intended (including the show-eval page, whose buttons now arrive as
plain HTML tags with no namespace residue); and the sample article's
slate output sheds its now-pointless xmlns attributes while
rendering identically.

Claude Fable 5, acting as a coding assistant for Rob Beezer

rbeezer and others added 16 commits August 6, 2026 12:38
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@rbeezer
rbeezer merged commit 6aee96c into PreTeXtBook:master Aug 6, 2026
@rbeezer
rbeezer deleted the runestone-schema branch August 6, 2026 19:52
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