| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
Both items this file tracked as open since branch ef-rg112-rg110
(Holy Name of Jesus's subject tag and missing RG 17(a) fallback; RG
110's inseparable Peter/Paul commemoration) are resolved. Adds item 4
to the behaviour-items list with the account and measured blast
radius, renumbers the structural items 5-7, and removes both from the
"Unbuilt, recorded" paragraph. Updates the two allow-list active-entry
counts (differential 5 -> 6 for C16; oracle stays 12, M12 closed and
M19 opened).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Both are the defect class this fix round existed to close, which is why
they are worth recording rather than quietly overwriting.
CLAUDE.md still carried F1's retracted design rationale -- describing
entry_14_movable_band as "negative so it can never collide with a real
table position" -- and F2's retracted transcription-defect attribution,
verbatim, in the one tracked file the project's own workflow tells a
fresh session to read first. The fix round struck both everywhere else
and missed this file. A session following it as instructed could have
re-derived the negative sentinel for entry 20's or entry 23's movable
half and re-introduced the inversion in a new branch.
precedence_ef.ml's replacement justification for the x10 rescale then
introduced a fresh misstatement of the same primary text it was
correcting: it attributed "primum mobilia, deinde fixa" to "entry 12's
own ninth sub-item" and counted three such rows. Both photographic
scans, and the register's own section 4 table, put that clause at entry
13; entry 12 has eight sub-items and no such clause. The split occurs at
five rows -- 13, 14, 20, 23's third sub-item, and 24. Entry 24 is the
most-evaluated band in the whole domain and is unsplit in the code,
which is precisely the sub-rank the new headroom exists to hold.
Corrected in the .mli and the register too. No behaviour change; 290
tests green.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
just a name
A second, more severe gap than the identity-shaped one already
recorded: RG 17(a)'s own 2-5 January window, unlike Holy Family's
7-13 January (never empty, register section 6.2), CAN be empty of a
Sunday -- the calendarium carries an explicit fallback for it ("vel,
ea deficiente, die 2 ianuarii") that colitur does not implement at
all. Independently computed (matched the reviewer's own figure
exactly): 3,619 of 8,417 domain years have no Sunday in 2-5 January,
and colitur emits no Holy Name office whatsoever in any of them -- a
genuine missing II-class feast on 43% of years, not merely an
unnamed generic Sunday the way Holy Family's own pre-task gap was.
Recorded in the register (gitignored, not part of this commit) and
CLAUDE.md's carried-item list; out of this task's own dispatched
scope (Holy Family and RG 112 only), not fixed here.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
spot precisely
The full breakdown, precisely: of 730 days, 331 are resolved (330
matching, 1 mismatched -- M13, Joseph vs the Seven Sorrows), 399
unresolved -- 373 in M18's own bucket, 26 absorbed inside M1/M2/M3/
M16's own widened subsets where the axis fires alongside their
pre-existing citation. M18's own note previously stated only its own
373 without this fuller context.
Also names the blind spot the axis exists to close in exact terms,
not just "the observed day's identity": a TEMPORAL-origin observed
day silently replaced by a DIFFERENT temporal-origin observed day of
the SAME rank and colour -- exactly Holy Family's own shape, and the
reason every prior layer stayed green through the whole gap. States
explicitly what the count pin does and does not prove: it guards
against the 373/399 population moving silently in either direction,
but cannot say which specific day moved or why.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
CLAUDE.md's own carried-item list (item 1, RG16(a)) named two open
items it did not fix: 13 January mistagged Saint (independently
fixed upstream by ef-rebootstrap, not this task) and RG 112
unimplemented. Both close now, plus a third: the 'know what each
layer cannot see' section did not record that layer 4 (the
missalemeum oracle) compared the observed day's rank and colour and
never its identity -- exactly why the missing Holy Family went
unnoticed by every layer for as long as it did. Recorded as a new,
third RESOLVED item alongside RG16(a) and commemoration identity,
with the same shape: what broke, what was found while fixing it, the
measured blast radius, what stays open.
docs/research/rules-register.md (gitignored, not part of this
commit) carries the full account as its own new §6.2 -- the complete
RG 91 entry 14 and RG 112 primary texts (all four sub-clauses, not
only the two the register quoted before), the Holy Family Mass
propers' own more specific 13-January rubric found while building
this, and the independently cross-verified 1,220-day blast radius.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix round 1 on the commemoration-identity/tie-break work: the "genuine
same-band tie" M17 adjudicated as open was not a tie at all. RG 91's
table enumerates only "dies liturgici" (real feasts) -- entry 24's own
text is "Festa III classis, in calendario Ecclesiae universae
inscripta" -- so a Celebration.t.status = Commemoration_only candidate
(a saint reduced to a bare commemoration) has no row in the table to
begin with. Precedence_ef.band used to read rank alone, so it silently
lent such a candidate the same table entry as a genuine Feast of its
own rank; the calendarium's own 22 September row confirms the
distinction in its own notation ("S. Thomae de Villanova ... III
classis. / Commemoratio Ss. Mauritii et Soc. Mm." -- Thomas carries a
class number, Maurice carries none).
Fixed at the source, not by adding a status tier to compare_precedence:
band now checks status first, ahead of every rank-keyed branch, and
returns unclassified for any Commemoration_only candidate. M17 deleted
(not re-adjudicated) -- 22 September now resolves identically on both
sides, with no divergence left to name.
Blast radius measured independently (a temporary git worktree at the
pre-fix commit): 4451 days change across the whole 1583-9999 domain,
exactly 4 verified shapes -- 3576 x maurice-and-companions-martyrs ->
thomas-of-villanova and 282 x eleutherius -> philip-neri (admitted set
changes), 502 x appollonia/cyril-of-alexandria and 91 x dorothy/titus
(order only, independently confirmed against the calendarium's own
listing convention). Zero days change who is observed. Further swept
the whole domain for a genuine "two different candidates on the
identical real table entry" residual -- the shape RG 113 truly gives
no instruction for -- and found it empty: of 109201 same-rank ties
domain-wide, 83950 now resolve by band alone and the remaining 25251
are exclusively two Commemoration_only candidates tied at unclassified,
never two real feasts. The residual admit still breaks alphabetically
is real, but narrower than previously documented.
The "66 days" figure is reconciled, not merely disputed: 599 is the
tie population, 65 (whole-comparator: 67) is the real admitted-set
decision count within it (independently reproduced against the
pre-Task-B binary), 149 is order-only. Every one of the 65 real
decisions traces to the same Commemoration_only/Feast root cause as
Maurice/Thomas.
Also: validate.ml's admission fixed-point check recovers a
commemoration's real origin (by matching its slug against the day's
own temporal office) instead of reconstructing every candidate as
Sanctoral, since band -- unlike EF's own admit -- does read origin;
precedence_ef.ml/.mli's motivating example and blast-radius claims
corrected to no longer rest on the fixed Maurice/Thomas case;
test_identity_rank_corroboration's own population count corrected now
that 22 September (and 21 other Feast-status matches) became reachable;
its rank-agreement pin documents exactly what it does and does not
prove. Register (§4, §6.1, §6 checklist) and CLAUDE.md corrected in
place, including the RG 113 first-sentence gap this exercise surfaced
but did not close, recorded as a new open item.
275 -> 276 tests (with the exhaustive sweep), all green.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
test_oracle.ml (validation layer 4) used to compare commemoration
presence and List.length only -- cardinality, never which candidate is
admitted. A reviewer proved this vacuous by reversing admit's dignity
sort (the engine admitting the worst commemoration, an outright RG 111
violation) and finding every assertion in this file green across all
730 days.
tools/extract_missalemeum_oracle.py now also emits each commemoration's
own missalemeum id (field 9, commemoration_ids), parallel to the
existing title field; fixture regenerated from the same underlying
lectio snapshot (commit d7da4b0, re-verified, first 8 fields
byte-identical), read from a scratch copy so ~/git/projects/lectio was
never touched. SHA-256 pin and provenance updated.
The mapping: colitur identifies a commemoration by slug, missalemeum by
an English title string. No hand-built slug<->title table -- colitur's
own Celebration.t.names already carries the same English text for every
SANCTORAL-origin commemoration (bootstrapped from lectio, verified to
match missalemeum's titles character-for-character). This resolves
identity for every sanctoral-origin commemoration but cannot resolve a
TEMPORAL-origin one (Rite_ef.Temporal_ef never sets a celebration name)
-- that case is a new, distinct outcome (Comm_identity_unresolved),
counted and allow-listed, never silently skipped: 19 of 227
non-empty-commemoration days over 2026-2027.
Two genuine identity mismatches found and adjudicated (new allow-list
entries M15-M17, one is the unresolved bucket): M16, 27 March 2026, the
already-known unimplemented Seven Sorrows of Passion Friday office
(verdict missalemeum); M17, 22 September 2027, the RG 113 same-band
tie-break residual (verdict open, per the sibling admit fix). A new
corroborating check cross-references missalemeum's own id-embedded rank
against colitur's, split by status: Feast-status matches must agree
exactly (none reachable in this 2-year window, checked regardless);
Commemoration_only-status matches either genuinely agree or fit a known,
pre-existing, already-registered convention gap (colitur's bootstrap
rank vs missalemeum's own sentinel) -- not a title-matching defect.
Perturbation test performed and reverted: reversing admit's dignity-
based ordering (compare_precedence's real committed form uses band, not
dignity -- this reproduces the historical defect shape directly) turns
the oracle layer red: "no differences outside the cited allow-list"
fails with an unexplained commemoration-identity-mismatch on 2026-09-23
(colitur admits "St. Thecla" where the rubric and missalemeum both
require "St. Linus"). Reverted; diff against the prior commit confirms
no residue.
CLAUDE.md's "know what each layer cannot see" section updated: the
commemoration-identity gap it documented as open is now closed, with
the mapping's limits and the RG 113 tie-break finding summarised.
271 -> 273 tests (274 with the exhaustive sweep), all green.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
blindness
CLAUDE.md's own carried-item record, updated to match the register's full
account: the Purification retag reversed (follow the oracle, not the
calendarium title, per the user's ruling), the admit/~temporal kernel
signature change (a genuine one, unlike RG16(a) itself), RG112 recorded as
a newly-found, unimplemented rule (a feast/mystery of one Divine Person
excludes a commemoration of another of the same Person -- confirmed live
on 13 January in seven real differential-window years, independent of the
subject question), and the Dedication-of-a-Church classification question
(measured, not applied: St Michael's own Dedication, 29 September, may
also be a feast of the Lord -- 1200 days domain-wide if so).
Extends the existing 'commemoration identity is unasserted' item: this is
the exact gap the whole RG16(a) fix round exploited both ways -- the
original bug and the review's own catch (Pope Sixtus II wrongly admitted,
both golden pins promoted from output) were both invisible to every layer
except unit tests and two golden pins.
|
| |
|
|
|
|
|
|
|
|
|
| |
Mirrors the register §6.0 correction: the carried-item list previously
said the fix "needs a signature change -- privilege_of cannot currently
see the winner's subject", which was true of privilege_of specifically
but wrong about what the fix required -- disposition already took the
winner. Marked resolved, with a pointer to the register's own full
account (audit, fix, blast radius, allow-list) and to one further
sanctoral subject defect this task found but did not fix (13 January,
Baptism of the Lord, mistagged Saint).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Plans 1-3 are done: the resolution engine, the sanctoral data, and all
five validation layers. Records what each layer CANNOT see, which is the
part a fresh session most needs and the part a green suite hides -- the
lectio differential never compares commemorations and shares colitur's
own data lineage, the oracle is two years wide and never compares
celebration identity, and between them they sleep through commemoration
identity entirely.
Carries into Plan 4 the two behaviour items that all five layers
currently miss (RG 16(a), 5996 wrong days; commemoration identity), the
structural items cheapest to fix before a second rite exists, and the
data defects traced upstream into lectio's generator.
Adds the exhaustive-sweep invocation to the build block: the default
suite samples, so the "clean across every year" claim is reproducible
only on demand.
|
|
|
Orients a fresh session: what colitur is, the authoritative docs, the
binding decisions, the architecture, the five validation layers, current
state and what comes next. The design spec and research register it points
at stay local (docs/ is gitignored).
|