Fix/drawer polish - #157
Merged
Merged
Conversation
…sible on the navy tiles The survey drawer's data-level grid renders three anchor sites - the tile identifiers (.dl-id: DOIs and SARIG PIDs), the "Levels per Rees et al. 2019" citation (.dl-cite) and the instruments platform PID (.dl-instr) - and NO rule in the sheet ever selected any of them. With no author colour declared they took the user agent's link colours: a dark blue that is all but unreadable on --panel-2 #1E2B4F, turning browser-purple once followed. The owner caught it in a screenshot of the deployed drawer. This is the same defect the .meta td a rule already fixed for the summary tables, and it takes the same fix, reused rather than reinvented: var(--copper), no underline until hover - the exact value .dsub a.orglink (organisation ROR links) and .surveymeta a (publication DOIs) already carry. :visited is stated EXPLICITLY, the only :visited rule in the sheet: an identifier is not consumed by being clicked, so a followed DOI must read identically to an unfollowed one, and saying so keeps that true if a later edit ever narrows the base selector. The muted tiles' "not yet recorded" state is deliberately NOT in these selectors - an absence is a statement, not a followable link, so it stays --muted. Two pins, each with its own failure mode. test_data_level_link_rules_reuse_the_established_treatment reads the established rules' value OUT OF THE SHEET and requires the three new rules to equal it, so inventing a second accent fails as loudly as declaring none; it needs no Node and adds no skip. The negative pin proves the state text is neither an anchor nor accent-painted. The cascade half - that these rules actually SELECT the anchors the grid renders - lands with the drawer changes in the next commit, where the rendered DOM to match against exists. RED-proven: with this CSS reverted and the tests kept, the pin fails with "the tile identifier links (DOIs / SARIG PIDs): index.html declares no colour for '.dl-id a' - the UA default ships".
…t - and the grid says what it is for
Two owner changes to the survey drawer's data-level grid (2026-08-19), plus the cascade half of the
link-styling pin from the previous commit.
SLOT MAPPING. The `identifies` vocabulary's `entire` means ONE record covering all levels - the shape
_template/survey.yaml directs a state-survey landing page to - which is precisely the umbrella record
the Collection slot names. It was mapped to no slot at all, so it fell into the extra-tile bucket:
Gawler Phase 2, whose only umbrella identifier is its GSSA/SARIG record (identifies: entire, no
`collection` row), read "1 of 6 recorded" with an EMPTY Collection tile and the record itself hanging
below the grid as an orphan seventh tile - the drawer denying a deposit the survey had plainly made.
`entire` now ALIASES the Collection slot (SLOT_ALIASES, stated as data next to the slot table rather
than buried in the resolver, so the next vocabulary addition has an obvious place to go).
COLLISION RULE, implemented, commented at the alias table and pinned three ways: a survey carrying
BOTH `collection` and `entire` gives the slot to the EXACT key and renders `entire` as an extra tile.
Nothing is ever silently dropped - the extra-tile rule stays the section's one answer to "recorded,
but not one of the six" - and "N of 6" keeps counting SLOTS, so a colliding pair tallies one, never
two. Declaration order is irrelevant: the exact match wins wherever it sits in the list, and both the
pytest and interaction fixtures declare `entire` FIRST so an order-dependent implementation fails.
Resolving slots through aliases makes "this row's identifies is not a slot key" an unsafe proxy for
"no slot took it", so the resolver now records the rows the six slots CONSUMED and derives the extras
bucket from that set. The consumed set also makes single-consumption structural: no row can fill two
slots, and none can be both a slot and an extra.
COPY. The section head becomes "Data at every level: N of 6 recorded" (owner-approved wording from
the design mockup) - it names what the grid is FOR, the deposit chain level by level, rather than the
identifier machinery it is made of. The STATION drawer's "Persistent identifiers & instruments" block
is untouched and keeps its name; the interaction pins assert BOTH, so the rename cannot silently
revert and the card pin that asserts the block is absent does not go vacuous by losing its string.
RED PROOFS (source reverted, tests kept):
* `entire`-only -> "the `entire` row must FILL a slot, leaving exactly the six tiles, got 7"
* copy -> "the survey detail must carry a 'Data at every level:' section head"
* cascade -> "LINKCSS: no accent rule selects the grid anchor in 'dl-id'" (CSS reverted alone)
CONTROL MUTATIONS on the shipped code, because the collision fixture is green before AND after by
design (today's behaviour already equals the collision outcome, which is the point):
* alias-resolved-before-exact -> caught by three pins, incl. "the exact `collection` row must win
slot 1 over the `entire` alias"
* extras derived from slot KEYS instead of the consumed set -> caught by the `entire`-only pins,
which see the row rendered twice (slot AND orphan extra)
The interaction leg is the layer that asserts the CASCADE for the previous commit's rules: it loads
the real index.html in jsdom and requires an accent rule to SELECT each anchor the grid renders, and
a :visited form of it to exist, via element.matches(). jsdom resolves no custom properties, so this
proves selection and the declared value, never the painted pixel; the rendered colour remains a
browser-eye check.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.