lessons.md

back to table · edit · history · where entries came from · files · download

1450 bytes, as of the version from 2026-10-28 22:59 (current). Recorded here, not run.

# Proposed contributor lesson: round-trip polynomial variable names

What happened: family #223 prescribes indeterminates x and mu. Sage generated
six exact Umemura polynomials, and dry_run.py, the independent determinant,
Bessel specialization, printed source polynomials and differential-equation
checks all passed. Filling T558 failed atomically: "A value in these entries
cannot be read as a number. trailing input at 'u'". The vendored polynomial
parser tokenizes a letter with optional digits, not a multi-letter identifier.
`parse_polynomial('x + mu')` fails; `parse_polynomial('x + m')` succeeds.

What the skill says now: polynomial variable names should be retained, and
there is a limit of six variables. It does not state this lexical restriction.

What it should say: verify that every chosen indeterminate name round-trips
through NumberDB's polynomial parser before claiming a draft. Until the format
supports multi-letter identifiers, use a coordinated, explicitly documented
single-letter alias. A queued family specifying unsupported names needs its
conventions aligned before building; do not silently change that convention.
A dry-run wire-format round-trip would catch this before a fill request.

Evidence: format-probe.json, fill.log, checks-local.log and numerical-evidence.json
in this run. T558 remains an empty draft; no polynomial was stored.
The policy read is recorded in ../20261027T192330Z-build-skills/manifest.json.