Desk: fork card contract at CultLib 3a51bbab (raised_at, counts, nullable answerer) #100

Merged
void merged 3 commits from void/fork-raised-at into dev 2026-11-11 21:05:24 +00:00
Member

chat-s6559-6559 and chat-s6574-6577, pinned to CultLib 3a51bbab (fork-card.md; the earlier af914253 wording is superseded).

ForkCard: raised_at (required, RFC3339 string or nil, between raised_in and deciders), decider_count (1..64, right after deciders; deciders is empty when this reader is not a decider, otherwise holds exactly decider_count ids). ForkRecord: answerer_count (>=0, after counted_answer_id). DeskAnswer.answerer is string | null. options_hash and its vectors are untouched.

Shown: age (raised 5d ago, 4h ago, just now) only when raised_at is non-nil, parses and is not ahead of the clock; "N deciders · N answerers" from the served counts, which are the same in both reader views, so they show whether or not the ids are withheld. The page never names a person, so nothing renders answerer.

Not done: the header bytes (card DE0011 to DE0012, record 85 to 86) and the card vectors are not vendored in this repo (only optionsHashVectors.json is), so there was nothing to re-pin; the leak/consistency refusals (deciders non-empty must equal decider_count, withheld-view agreement) are the server's and are not re-checked by the page. CultLib CI on these shas was cancelled at timeout, not green, so this is pinned to the contract text, not to a green run.

Tests render the desk from served lists: ages (days, hours, just now, none for nil/unparseable/future), counts with ids withheld, singular. Demo seeds updated.

🤖 Generated with Claude Code

chat-s6559-6559 and chat-s6574-6577, pinned to CultLib 3a51bbab (fork-card.md; the earlier af914253 wording is superseded). ForkCard: raised_at (required, RFC3339 string or nil, between raised_in and deciders), decider_count (1..64, right after deciders; deciders is empty when this reader is not a decider, otherwise holds exactly decider_count ids). ForkRecord: answerer_count (>=0, after counted_answer_id). DeskAnswer.answerer is string | null. options_hash and its vectors are untouched. Shown: age (raised 5d ago, 4h ago, just now) only when raised_at is non-nil, parses and is not ahead of the clock; "N deciders · N answerers" from the served counts, which are the same in both reader views, so they show whether or not the ids are withheld. The page never names a person, so nothing renders answerer. Not done: the header bytes (card DE0011 to DE0012, record 85 to 86) and the card vectors are not vendored in this repo (only optionsHashVectors.json is), so there was nothing to re-pin; the leak/consistency refusals (deciders non-empty must equal decider_count, withheld-view agreement) are the server's and are not re-checked by the page. CultLib CI on these shas was cancelled at timeout, not green, so this is pinned to the contract text, not to a green run. Tests render the desk from served lists: ages (days, hours, just now, none for nil/unparseable/future), counts with ids withheld, singular. Demo seeds updated. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Desk: raised_at on the ForkCard (required key, instant or nil); the card shows its age only when there is one
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
57f0ef8df2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
void changed title from Desk: raised_at on the fork card, age shown when present to Desk: fork card contract at CultLib 3a51bbab (raised_at, counts, nullable answerer) 2026-11-11 18:23:15 +00:00
Desk: card contract at CultLib 3a51bbab: decider_count, answerer_count, nullable answerer; the counts show when the ids are withheld
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 3m30s
9e02536e02
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Desk: age parses strict RFC3339 only; a served count outside the contract shows no count line
All checks were successful
Build pull request / Build pull request (pull_request) Successful in 4m0s
79fae54a0a
Soul found Date.parse accepting '2026-11-06', 'Nov 6 2026', '0' and 2026-02-30, and decider_count 0/65 or a missing/negative answerer_count rendering as served.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
void merged commit b7828fef0f into dev 2026-11-11 21:05:24 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/Ratatoskr!100
No description provided.