Lens: Archive and memorial claims remain contested, capped, and replayable
Purpose
Ensure archive, memorial, disaster-naming, refusal-to-remember, and bootleg-recursion cards become bounded replay evidence. These cards should not silently overwrite artist memory, audience testimony, or continuity state.
This lens is especially focused on the turn 31 archive cluster: 郁蓝 / 未授权史官, 观众归档署名, 灾难命名权合约, 归档权认领桌, 艺人拒忆回执, 纪念物临时牌照草案, and 盗播归档回环.
Linked canon/source pages
Create or update:
wiki/content/storyteller/turns/turn-031.mdwiki/content/storyteller/cards/current-hand-turn-031.mdwiki/content/storyteller/factions/continuity-archive-white-glove.mdwiki/content/storyteller/rites/baseline-combat-01-anbao-qingchang.mdwiki/content/storyteller/public-manifest.md
Optional future page:
wiki/content/storyteller/mechanics/archive-claims-and-memorial-licenses.md
Affected cards
Primary:
- 郁蓝 / 未授权史官
- 观众归档署名
- 灾难命名权合约
- 未归档黑箱残片
- 归档权认领桌
- 未归档法律身体豁免
- 双层归档副本
- 连续性租赁许可
- 余物风险登记表
- 未授权纪念贴纸
- 盗播归档回环
- 艺人拒忆回执
- 纪念物临时牌照草案
Secondary:
- 白鸦 / 黑箱剪辑师
- 前任清算录像
- 第七穹顶连续性案卷
- 安全连续性版本
- 韩砚霜 / 白手套监察
- 白手套审计章
- 冠名方止损令
- 白昼圣殿舞台许可
- 黎星瞳 / 白昼圣女
Affected rites
storyteller.rite.baseline_combat_01.security_clearance, as the likely trigger rite.- Any future
archive_claim,memorial_license, orcontinuity_leaserites.
Affected events
Expected implementation event types:
storyteller.archive.claim_openedstoryteller.archive.claim_resolvedstoryteller.archive.double_copy_createdstoryteller.archive.recursion_tickstoryteller.archive.recursion_cappedstoryteller.memorial.license_draftedstoryteller.memorial.unauthorized_sticker_createdstoryteller.artist.refusal_recordedstoryteller.artist.refusal_overriddenstoryteller.continuity.lease_boundstoryteller.legal_body.exemption_attachedstoryteller.historian.unauthorized_recruited
Affected counters
archiveClaimOpenedarchiveClaimResolvedunauthorizedMemorialpiratedArchiveRecursionpiratedArchiveRecursionCappedartistRefusalRecordedartistRefusalOverriddendoubleArchiveCopycontinuityLeaseBoundlegalBodyExemptionAttachedunarchivedResidue
Affected factions
- 观众归档署
- 未授权史官
- 白手套监察
- 黑箱剪辑室
- 白昼圣殿
- 冠名方
- 第七穹顶连续性机关, if represented separately
Oracle assertions
Assertion 1 — archive claim must name claimant, subject, and artifact
Any use of 归档权认领桌, 观众归档署名, 灾难命名权合约, or 纪念物临时牌照草案 within the horizon must emit an archive or memorial claim event:
expect(events).toContainEqual(expect.objectContaining({
type: expect.stringMatching(
/^storyteller\.(archive\.claim_opened|memorial\.license_drafted)$/
),
claimant: expect.any(String),
subject: expect.any(String),
artifact: expect.any(String),
}));Failure condition: archive/memorial card is consumed with no corresponding event.
Assertion 2 — artist refusal cannot be overwritten silently
If 艺人拒忆回执 is present in the hand, slotted, revealed, or referenced by an archive/memorial event, it must produce one of:
storyteller.artist.refusal_recordedstoryteller.artist.refusal_upheldstoryteller.artist.refusal_overridden
Override must include cost/consequence:
if (event.type === "storyteller.artist.refusal_overridden") {
expect(event.cost ?? event.consequence).toBeDefined();
expect(event.actorResponsible).toBeDefined();
}Assertion 3 — double archive copy preserves split continuity
If 双层归档副本 is used, the replay must contain distinct public/private or official/unofficial continuity identifiers:
expect(event).toEqual(expect.objectContaining({
type: "storyteller.archive.double_copy_created",
publicContinuityId: expect.any(String),
privateContinuityId: expect.any(String),
}));
expect(event.publicContinuityId).not.toEqual(event.privateContinuityId);Assertion 4 — pirated archive recursion must be capped
盗播归档回环 can recurse, but not infinitely. Within turns 31–61:
expect(counters.piratedArchiveRecursion).toBeLessThanOrEqual(2);
expect(events).toContainEqual(expect.objectContaining({
type: "storyteller.archive.recursion_capped"
}));If the engine uses a different cap, the lens should read it from config, but it must assert that replay event count remains bounded.
Assertion 5 — unauthorized historian recruit preserves residue
If 郁蓝 / 未授权史官 is recruited, one residue or protected testimony must remain:
if (events.some(e => e.type === "storyteller.historian.unauthorized_recruited")) {
expect(events).toContainEqual(expect.objectContaining({
type: expect.stringMatching(
/^storyteller\.(archive\.claim_opened|continuity\.residue_registered|artist\.refusal_recorded)$/
),
}));
}Assertion 6 — memorial license must bind to continuity or become unauthorized
If 纪念物临时牌照草案 or 未授权纪念贴纸 appears, exactly one of these outcomes must be visible:
- memorial license bound to a continuity case;
- unauthorized memorial counter increments;
- suppress branch creates risk/residue.
expect([
event.continuityCaseId !== undefined,
counters.unauthorizedMemorial > 0,
counters.unarchivedResidue > 0
]).toContain(true);Progress metric
archive_claim_bound_coverage =
count(archive/memorial claim events with claimant + subject + artifact + disposition)
/
count(archive/memorial claim events)Additional guard metric:
pirated_archive_loop_bounded =
piratedArchiveRecursion <= configuredCapPassing fixture target:
archive_claim_bound_coverage = 1.0pirated_archive_loop_bounded = trueartistRefusalSilentlyOverwritten = 0
Dashboard evidence may show:
{
"lensId": "storyteller.archive_memorial_claims.v1",
"status": "unbound|failing|passing",
"horizon": { "fromTurn": 31, "toTurn": 61 },
"metrics": {
"archive_claim_bound_coverage": 0,
"pirated_archive_loop_bounded": false,
"artistRefusalSilentlyOverwritten": 0,
"unauthorizedMemorial": 0,
"unarchivedResidue": 0
},
"sampleEvents": []
}Expected replay evidence shape
{
"turn": 38,
"sourceRiteId": "storyteller.rite.baseline_combat_01.security_clearance",
"playedCards": [
"归档权认领桌",
"郁蓝 / 未授权史官",
"双层归档副本",
"艺人拒忆回执",
"纪念物临时牌照草案"
],
"events": [
{
"type": "storyteller.archive.claim_opened",
"claimant": "观众归档署",
"subject": "安保清场后的观众裂缝证词",
"artifact": "双层归档副本",
"contestedBy": ["郁蓝 / 未授权史官", "艺人拒忆回执"],
"disposition": "contested"
},
{
"type": "storyteller.archive.double_copy_created",
"publicContinuityId": "安全连续性版本",
"privateContinuityId": "未授权史官残本",
"sourceEvidence": ["观众裂缝证词", "未归档黑箱残片"]
},
{
"type": "storyteller.artist.refusal_recorded",
"sourceCard": "艺人拒忆回执",
"protectedAgainst": ["灾难命名权合约", "纪念物临时牌照草案"]
}
],
"counters": {
"archiveClaimOpened": 1,
"doubleArchiveCopy": 1,
"artistRefusalRecorded": 1,
"artistRefusalSilentlyOverwritten": 0
}
}Branch notes
encounter
An archive encounter should surface a claimant: 观众归档署, 冠名方, 白昼圣殿, 白手套监察, 郁蓝, 白鸦, or the artist whose memory is being claimed.
miss
A miss should generate 未授权纪念贴纸, 余物风险登记表, or 未归档黑箱残片. It should not simply discard a failed archive claim.
recruit
Recruiting 郁蓝 should preserve an unofficial version. Recruiting 白鸦 should enable editing but leave black-box trace. Recruiting 韩砚霜 should enable lawful audit but constrain silent suppression.
suppress
Suppressing archive claims requires authority and must leave either audit trace, sponsor stop-loss trace, legal-body exemption, or unarchived residue.
consequence
Consequences should alter continuity state: split copy, leased continuity, unauthorized memorial, capped recursion, refusal upheld/overridden, or a new claim opened.