# Catalogue interaction and chronology repair · v7

Audit and implementation: 17 October 2026. Scope: the 8,483-row local EDCS/EDH catalogue, map interaction and date-query semantics. This edition changes filtering and presentation, with one explicitly sourced authenticity exclusion. It adds no inscription dates, coordinates or new publication-checked objects.

## The reported British dot

The Donnington catalogue point is **EDCS-44600074 / RIB 2392***, at the retained source coordinate `[-2.6212479, 52.6673001]`. Both analytical date bounds and its raw dating string are absent. Under the previous checked-by-default unknown-date option it survived a 1–2 CE query as undated context, not because its metadata dated it to those years.

The full live [RIB 2392* entry](https://romaninscriptionsofbritain.org/inscriptions/2392) was fetched and read on the audit date. Its title classifies it as **Falsum**; the object and text identifications are uncertain, its ancient date is unspecified, its origin is placed among unsited falsa, and it is apparently lost. Its commentary reports an earlier milestone interpretation but leaves that interpretation unproved. RIB's Falsum category is broader than a demonstration of deliberate forgery. The explicitly linked local EDH HD071502 commentary separately calls it a forgery. This is sufficient to exclude it from ordinary milestone analysis, without inventing an ancient date or an original roadside location.

The explicit identity-based decision is retained in `catalogue-authenticity-audits.json` and copied into the derivative record as `evidenceAudit`. The imported source, raw chronology and coordinate are preserved. The entry remains searchable under an excluded-audit heading; map display requires both the unknown-date option and the rejected-diagnostics option. It uses a hollow red symbol and cannot enter road-distance comparisons. No regional conquest-date cutoff or emperor-name redating has been applied. Other records containing German words for a mistaken reading are not automatically treated as forged objects.

## Why some dots would not click

Actual pointer tests against the frozen previous implementation reproduced an upper Canvas intercepting a catalogue click. Uncertainty circles and selection graphics had created a separate default renderer above the catalogue renderer; even an empty upper canvas could intercept the pointer after its layer was cleared. A decorative selection outline could also persist after date/layer exclusion.

All interactive vector layers now share one Canvas. Decorative selection outlines use a separate SVG pane with pointer events disabled. Excluding the selected record or disabling its layer removes the outline and popup while preserving the inspector with an outside-filter notice. Catalogue dots draw above uncertainty areas, road strokes and derived endpoints, including after map movement. A further real-pointer regression reproduced an endpoint 2.6 m from the Abergavenny catalogue locality intercepting the click; the redraw order now keeps the catalogue point accessible.

Where a curated HTML pin intentionally covers a linked catalogue dot, its atlas inspector provides individual linked-catalogue buttons. Shared catalogue coordinates use an inspectable cluster list, without implying co-discovery. The initial pointer evidence is in `click-audit-v7.md`; the executable regression is `tools/browser_catalogue_v7.cjs`, with final results in `qa/catalogue-browser-v7.json` in the portable package.

## Chronology semantics

The ordinary query asks whether a bounded source dating component could overlap a closed range. A broad interval does not establish activity in every year within it. Parsed catalogue components remain source metadata, distinct from the publication-reviewed `date_phases` of the curated dossiers.

- Each raw component is retained losslessly and tested separately. The old whole-record start/end envelope remains inspectable but cannot fill gaps between components. EDCS-12800600 has 108–109 and 361–362 CE; it does not match 200 CE. EDCS-05600073 has 2 BCE and 90 CE; it does not match 1–2 CE.
- Bounded overlaps are the default. Unknown, one-sided, invalid and unresolved dating components require the explicit incomplete-date option. The known bound of a one-sided interval still constrains inclusion. Hollow styling, cluster descriptions, inspectors and separate counts distinguish these admissions from positive dated overlaps.
- Eleven unlabelled ranges alongside labelled components might be aggregate envelopes or extra components. Their bounds remain visible, but their scope is unresolved; they cannot positively match as dated phases. Four explicitly undated labels in three records are preserved. The reversed 364–357 interval in EDCS-75300297 remains invalid rather than being silently repaired.
- Inputs require ordered whole historical years from 1500 BCE to 2200 CE, omitting year zero. Invalid input preserves the last applied query. Date-error arithmetic crosses BCE/CE without inserting year zero; only finite nonnegative uncertainty values may expand a range.
- Editing years or date options displays an unapplied-changes notice. Apply and Enter use the same validation. The applied range, bounded matches and additional uncertainty admissions remain visible.
- Checked objects use their separate inscription phases, or their discovery/movement/custody events in history mode. Modern report years never become inscription dates. History mode hides the bulk inscription catalogue.
- Road and water geometries remain geographical context by default. The separate road-date-metadata option applies the chronology predicate to their source metadata in inscription mode. History mode always leaves routes as context. A road shown behind a dated stone is not thereby dated to the same years.

The same catalogue membership feeds point display, clustering, search, fit bounds and nearby-record candidate lists. Explicit inspection of an excluded record does not add a map highlight or count it as an active result. Authenticity rejection and the existing six coordinate quarantines are independent decisions.

## Snapshot reconciliation and verification

The parser produces 4,252 wholly bounded records, 4,217 wholly undated records, 13 mixed records and one invalid record. Components comprise 4,413 bounded, 4,221 undated, 11 unresolved and one invalid assignment. The old envelope rule admitted 52 numerical matches at 1–2 CE; separate valid components admit **48**, with **none in Britannia**. These are metadata results, not 48 newly authenticated contemporary monuments.

The 47 curated dossiers, 56 publication-reviewed inscription phases, 92 history events, 131 typed location assertions, source geometries, CIL page images and six coordinate quarantines retain their earlier scope. No raw dataset has been rewritten.

Verification is divided into a lossless parser audit (`tools/test_catalogue_dates.py`), chronology-predicate and real-record regressions (`tools/test_chronology.cjs`), independent semantic admission (`tools/validate.py`) and actual browser pointer/date-input tests (`tools/browser_catalogue_v7.cjs`). Existing dossier and site-position browser suites are rerun for integration. Test receipts are in the portable package's `qa/` directory. Source pages and audit/specification reports describe evidential scope; software checks do not authenticate the entire catalogue.

The final run passed 13 parser fixtures, 69 chronology checks and 105 semantic checks. The dedicated catalogue browser suite passed 42 checks including 10 actual map clicks, with no runtime errors; existing core, primary-context, site-position and renewed-search suites passed 50, 20, 27 and 21 checks. Desktop and mobile screenshots were inspected. `qa/repair-release-v7.json` records the tested code and data hashes.

The earlier v7 audit and specification files describe the pre-repair observations and proposed controls. This document records the implemented behavior and supersedes their present-tense descriptions of the old filter.

## Execution prompt for this repair

Reproduce catalogue clicks with real pointer events before changing selection logic. Identify the exact record surviving a narrow query, trace whether it was admitted by a bounded date, unknown-date option, invalid metadata, phase-envelope gap or stale highlight, and consult its linked published corpus before assigning a historical correction. Preserve raw source values; use explicit source-backed exclusions and lossless component parsing. Make uncertainty admissions visible and optional, distinguish draft from applied controls, clear excluded selection graphics, and verify actual clicks, shared coordinates, date gaps and British 1–2 CE membership in the browser. Preserve the atlas's existing location roles and publication limits, then release the tested edition with its evidence ledger.
