How much Claude adds, and how much the player sees: two settings per playthrough¶
Context and Problem Statement¶
Today Claude files only what the player said, and looks things up only when asked about an item (ADR 0008). Spoilers are hidden
unless the player asks in the moment (ADR 0005): the page has a "Show hints" link, the tools take reveal. Some players want more
while they play: what an item does, who a character is, the lore around a quest, how to go about a boss. How much differs per player
and per game, and so does how much they want given away. questlog needs both as settings of a playthrough, which Claude follows
without being reminded.
Decision Drivers¶
- The player decides; Claude follows the setting and never goes past it on its own (V1, no spoilers unless asked).
- One gate stays the only way spoilers are filtered (ADR 0005).
- A new playthrough behaves exactly as today until the player raises a setting.
- The same behaviour in claude.ai and in the in-app chat: both go through the tools and their
next.
Considered Options¶
- Two settings on each playthrough (chosen).
- Defaults per player, with an override per playthrough: more to build and to explain; can be added later.
- Nothing stored, only what the player tells Claude: forgotten between conversations, unknown to the page, nothing holds Claude to it.
Decision Outcome¶
Chosen: two settings on each playthrough, background and spoilers.
The scales¶
background: how much Claude adds on its own when it files a session.
| Level | What Claude adds |
|---|---|
none |
Nothing; only what the player said (today) |
light |
One line on what each new item, character, place or quest is |
useful |
Plus stats and scaling, where things are found, a short lore note, a tip when it fits |
everything |
Full lore and story context, strategy, build advice: everything worth knowing |
spoilers: what the player sees without asking; the existing levels none, hint, full. Default none.
Background lines¶
Background gets its own table, because a line can give away more than the row it is about (the item is none, the line about its
owner's fate is full):
background(id, player_id, what item|codex|quest, row_id, text, spoiler, source_url, source_title, created_at), with triggers that delete a row's lines with the row (astag_links, ADR 0014). Every read goes throughseen()with the line's own level.textis Claude's own words, never a page's text (ADR 0008); a line from the game's sources carries its link, a line from Claude's own knowledge has none.- Claude writes them with
record(on an item, codex entry or quest,background: [{ text, spoiler, source? }]), adds them after filing withcorrect(addBackgroundon an item, codex entry or quest, so no second session is filed), and fixes or removes them withcorrect(targetbackground). - The views (
itemsOf,codexOf,questsOf) carrybackgroundlines at or below the reveal level of the read; the cards show them under the row, each with its link.
Who follows the settings¶
- Reads: every tool read of a playthrough (
briefing,open_threads,item,codex) uses the playthrough'sspoilersas its default reveal; arevealpassed for this call can go higher.briefingkeeps never going above the setting.missedis unchanged (it is asked for, with a warning). - Offering, not telling: when a read leaves out something above the setting, its
nextsays so in general terms ("there are hints for this quest the player hasn't asked for"), and tells Claude to offer, never to read it out unasked. Only after the player says yes does Claude ask again withreveal, and warn first. This is the existing "no hidden counts" rule loosened to one sentence: the tool may say that more exists, never what. - Adding: after
record,nextcarries the playthrough'sbackgroundlevel and what it means for what was just filed: look up on the game's sources (ADR 0008) what is new in this session, at the level's depth, and file it as background lines with an honest spoiler level. Atnone, nothing. Claude says in one line what it added. - The instructions (
mcp.tsINSTRUCTIONS and the in-app chat's system prompt) name both settings: the player's choice, followed without exceptions; abovespoilers, only offer.
Setting them¶
- On the playthrough page: two segmented controls at the top of the playthrough's sheet, "Background" and "Spoilers", saved at once. "Show hints" goes: the spoiler control replaces it.
- Through Claude:
correcton a playthrough takesbackgroundandspoilers("more background in Elden Ring");nexttells Claude to read back what changed. Raisingbackgrounddoesn't fill in what was filed before on its own:nexttells Claude to offer it ("shall I add background to what's already in the book?"), and only on a yes does it look things up for the playthrough's rows. - REST: the playthrough JSON carries both, and
POST /api/v1/correctionssets them, since it iscorrect. The briefing route follows the setting like the tool (one function); the other reads keep their explicitreveal(defaultnone): a script asks for what it wants. - The in-app chat reads the card it was opened on at the setting, as the page shows it.
- The page's own setting wins over its address:
?hints=1goes with the link it came from.
Consequences¶
- Good, because the player sets it once per game, and both claude.ai and the in-app chat follow it.
- Good, because raising
spoilersshows what was already filed, without filing it again. - Bad, because
backgroundabovenonemakes filing slower and costs web look-ups on every session. - Bad, because a tool now says that something hidden exists, which ADR 0005 ruled out; the sentence names no count and no content.