lessons.md

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

3403 bytes, as of the version from 2026-10-16 06:58 (current). Recorded here, not run.

# Build lessons: 20261016T061956Z, T455

## Printed critical-value tables need an explicit rounding check

What happened: NIST/SEMATECH e-Handbook ยง1.3.6.7.3 prints 238.882 for the upper-tail 5% F critical value with numerator degrees 8 and denominator degrees 1. The exact central-F quantile starts 238.8826948025240912331263462023. Certified hypergeometric inversion and an independent elementary integral recurrence both enclose that value, and mpmath inversion at 150 digits agrees. The printed decimal is within one last-place unit but is not the nearest three-decimal rounding (238.883). Ninety-nine of the 100 compared NIST values pass the nearest-rounding check; all 100 pass the last-place-interval check. We corrected two transcription mistakes in the local test fixture before reaching this count; neither affected the generator or the website values.

What the skill says now: independent numerical comparisons need known controls, disagreements must be explained, and a written decimal denotes an interval extending one unit of the last place on each side.

What it should say: distinguish an external table's printed decimal from an assertion of correctly rounded digits. Preserve a source discrepancy explicitly and independently establish the computed value before interpreting its printed precision. Do not silently change a failed nearest-rounding test to a wider tolerance without documenting the failed row and the evidence.

Evidence: `checks-final.log`, `supplement.log`, and https://www.itl.nist.gov/div898/handbook/eda/section3/eda3673.htm . The generator has certified signs; the checks use finite half-integer beta recurrences without hypergeometric or gamma evaluation.

## API documents can return nested Numbers even after flat records are submitted

What happened: the full table API returned a nested Numbers mapping for T454 and T455. A check expecting a list of flat entry records failed on its shape. The client helper `_stored_entries` normalized both shapes. After normalization every T455 string and its entry order matched the submission; no numerical correction was needed.

What the skill says now: `numberdb.table` returns the whole document with capitalized keys, but does not specify the alternative shapes of Numbers.

What it should say: readers must accept nested parameter trees and flat entry lists. Prefer the client's normalizer rather than assuming that the API readback shape equals the submitted shape. `_stored_entries` is currently private, so attached checks depending on it may need updating if the client changes.

Evidence: `T454.json`, `stored-table.json`, `verify_stored.py`, and `verify-stored.log`.

## An empty client key can discover a default key

What happened: `numberdb.Client(api_key='')` still read an unpublished draft because the client discovered the configured default credential. A plain urllib request without Authorization returned the expected not-found response.

What the skill says now: private draft reads require a permitted credential, but it does not explain how to test anonymous visibility when a default credential exists.

What it should say: do not use an empty explicit key as proof of an anonymous request. Use a request that genuinely omits Authorization, without printing credentials or headers.

Evidence: `public-read-response.json` versus `unauthenticated-read.json`. No publication endpoint was called.