From
bafyreifnwpbfs3hrcfhf643i73tpkla7ytqqsswlyiifrj7ldgvlt4aqvm
indexed 2026-04-22 07:54 UTC
View this version
To
bafyreiaqpnf3lg4hqlcxsfqlv32oumwdqwvu3pubgnmtfwxfvsbos5xs44
indexed 2026-04-25 08:51 UTC
View this version
Compatibility
breaking 11 breaking changes, 79 non-breaking changes.
Breaking changes (11)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", src: "me.byjp.pesos.sts2.run:body.allies:items", tgt: "me.byjp.pesos.sts2.run:body.allies:items.steam", kind: "prop", name: Some("steam") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.byjp.pesos.sts2.run#attestation", src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.cid", kind: "prop", name: Some("cid") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.byjp.pesos.sts2.run#attestation", src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.key", kind: "prop", name: Some("key") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.byjp.pesos.sts2.run#attestation", src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.signature", kind: "prop", name: Some("signature") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "me.byjp.pesos.sts2.run#ally", src: "me.byjp.pesos.sts2.run#ally", tgt: "me.byjp.pesos.sts2.run#ally.steam", kind: "prop", name: Some("steam") }
- RemovedVertex RemovedVertex { vertex_id: "me.byjp.pesos.sts2.run#ally" }
- RemovedVertex RemovedVertex { vertex_id: "me.byjp.pesos.sts2.run#ally.atproto" }
- RemovedVertex RemovedVertex { vertex_id: "me.byjp.pesos.sts2.run#ally.steam" }
- RemovedEdge RemovedEdge { src: "me.byjp.pesos.sts2.run#ally", tgt: "me.byjp.pesos.sts2.run#ally.atproto", kind: "prop", name: Some("atproto") }
- RemovedEdge RemovedEdge { src: "me.byjp.pesos.sts2.run:body.allies:items", tgt: "me.byjp.pesos.sts2.run#ally", kind: "ref", name: None }
- KindChanged KindChanged { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", old_kind: "ref", new_kind: "object" }
Non-breaking changes (79)
- AddedVertex AddedVertex { vertex_id: "lex:me.byjp.pesos.sts2.run#stats" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation.cid" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation.key" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation.signature" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#distribution" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageDealt" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageTaken" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageDealt" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageTaken" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.bossesWon" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardUseDistribution" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsDrawn" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsExhausted" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsPlayed" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.combats" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.combatsWon" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.damageDealt" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.damageTaken" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.deaths" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.elitesWon" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.goldCurrent" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.goldEarned" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.goldSpent" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.healingReceived" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.highestBlockInTurn" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.hitsDealtDistribution" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.hitsTakenDistribution" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.killCount" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.longestCombat" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.lowestHp" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.noDamageTurns" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.potionsUsed" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.turns" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items.atproto" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items.steam" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.currentHp" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.maxHp" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.stats" }
- AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.steamID64" }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestDamageDealt", kind: "prop", name: Some("biggestDamageDealt") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestDamageTaken", kind: "prop", name: Some("biggestDamageTaken") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageDealt", kind: "prop", name: Some("biggestTurnDamageDealt") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageTaken", kind: "prop", name: Some("biggestTurnDamageTaken") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.bossesWon", kind: "prop", name: Some("bossesWon") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardUseDistribution", kind: "prop", name: Some("cardUseDistribution") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardsDrawn", kind: "prop", name: Some("cardsDrawn") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardsExhausted", kind: "prop", name: Some("cardsExhausted") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardsPlayed", kind: "prop", name: Some("cardsPlayed") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.combats", kind: "prop", name: Some("combats") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.combatsWon", kind: "prop", name: Some("combatsWon") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.damageDealt", kind: "prop", name: Some("damageDealt") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.damageTaken", kind: "prop", name: Some("damageTaken") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.deaths", kind: "prop", name: Some("deaths") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.elitesWon", kind: "prop", name: Some("elitesWon") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.goldCurrent", kind: "prop", name: Some("goldCurrent") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.goldEarned", kind: "prop", name: Some("goldEarned") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.goldSpent", kind: "prop", name: Some("goldSpent") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.healingReceived", kind: "prop", name: Some("healingReceived") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.highestBlockInTurn", kind: "prop", name: Some("highestBlockInTurn") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.hitsDealtDistribution", kind: "prop", name: Some("hitsDealtDistribution") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.hitsTakenDistribution", kind: "prop", name: Some("hitsTakenDistribution") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.killCount", kind: "prop", name: Some("killCount") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.longestCombat", kind: "prop", name: Some("longestCombat") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.lowestHp", kind: "prop", name: Some("lowestHp") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.noDamageTurns", kind: "prop", name: Some("noDamageTurns") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.potionsUsed", kind: "prop", name: Some("potionsUsed") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.turns", kind: "prop", name: Some("turns") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats.cardUseDistribution", tgt: "me.byjp.pesos.sts2.run#distribution", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats.hitsDealtDistribution", tgt: "me.byjp.pesos.sts2.run#distribution", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats.hitsTakenDistribution", tgt: "me.byjp.pesos.sts2.run#distribution", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.currentHp", kind: "prop", name: Some("currentHp") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.maxHp", kind: "prop", name: Some("maxHp") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.stats", kind: "prop", name: Some("stats") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.steamID64", kind: "prop", name: Some("steamID64") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body.allies:items", tgt: "me.byjp.pesos.sts2.run:body.allies:items.atproto", kind: "prop", name: Some("atproto") }
- AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body.stats", tgt: "lex:me.byjp.pesos.sts2.run#stats", kind: "ref", name: None }
- ConstraintRemoved ConstraintRemoved { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", sort: "ref" }
Migration guidance
Removed
RemovedVertex { vertex_id: "me.byjp.pesos.sts2.run#ally" }RemovedVertex { vertex_id: "me.byjp.pesos.sts2.run#ally.atproto" }RemovedVertex { vertex_id: "me.byjp.pesos.sts2.run#ally.steam" }
Added
AddedVertex { vertex_id: "lex:me.byjp.pesos.sts2.run#stats" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation.cid" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation.key" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation.signature" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#distribution" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageDealt" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageTaken" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageDealt" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageTaken" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.bossesWon" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardUseDistribution" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsDrawn" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsExhausted" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsPlayed" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.combats" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.combatsWon" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.damageDealt" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.damageTaken" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.deaths" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.elitesWon" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.goldCurrent" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.goldEarned" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.goldSpent" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.healingReceived" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.highestBlockInTurn" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.hitsDealtDistribution" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.hitsTakenDistribution" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.killCount" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.longestCombat" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.lowestHp" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.noDamageTurns" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.potionsUsed" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.turns" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items.atproto" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items.steam" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.currentHp" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.maxHp" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.stats" }AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.steamID64" }
Constraint changes
- ConstraintRemoved ConstraintRemoved { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", sort: "ref" }
Notes
- Breaking: RequiredEdgeAdded { vertex_id: "me.byjp.pesos.sts2.run#attestation", src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.cid", kind: "prop", name: Some("cid") }
- Breaking: RequiredEdgeAdded { vertex_id: "me.byjp.pesos.sts2.run#attestation", src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.key", kind: "prop", name: Some("key") }
- Breaking: RequiredEdgeAdded { vertex_id: "me.byjp.pesos.sts2.run#attestation", src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.signature", kind: "prop", name: Some("signature") }
- Breaking: RequiredEdgeAdded { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", src: "me.byjp.pesos.sts2.run:body.allies:items", tgt: "me.byjp.pesos.sts2.run:body.allies:items.steam", kind: "prop", name: Some("steam") }
- Breaking: RequiredEdgeRemoved { vertex_id: "me.byjp.pesos.sts2.run#ally", src: "me.byjp.pesos.sts2.run#ally", tgt: "me.byjp.pesos.sts2.run#ally.steam", kind: "prop", name: Some("steam") }
- Breaking: RemovedEdge { src: "me.byjp.pesos.sts2.run#ally", tgt: "me.byjp.pesos.sts2.run#ally.atproto", kind: "prop", name: Some("atproto") }
- Breaking: RemovedEdge { src: "me.byjp.pesos.sts2.run:body.allies:items", tgt: "me.byjp.pesos.sts2.run#ally", kind: "ref", name: None }
- Breaking: KindChanged { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", old_kind: "ref", new_kind: "object" }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestDamageDealt", kind: "prop", name: Some("biggestDamageDealt") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestDamageTaken", kind: "prop", name: Some("biggestDamageTaken") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageDealt", kind: "prop", name: Some("biggestTurnDamageDealt") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageTaken", kind: "prop", name: Some("biggestTurnDamageTaken") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.bossesWon", kind: "prop", name: Some("bossesWon") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardUseDistribution", kind: "prop", name: Some("cardUseDistribution") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardsDrawn", kind: "prop", name: Some("cardsDrawn") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardsExhausted", kind: "prop", name: Some("cardsExhausted") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardsPlayed", kind: "prop", name: Some("cardsPlayed") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.combats", kind: "prop", name: Some("combats") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.combatsWon", kind: "prop", name: Some("combatsWon") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.damageDealt", kind: "prop", name: Some("damageDealt") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.damageTaken", kind: "prop", name: Some("damageTaken") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.deaths", kind: "prop", name: Some("deaths") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.elitesWon", kind: "prop", name: Some("elitesWon") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.goldCurrent", kind: "prop", name: Some("goldCurrent") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.goldEarned", kind: "prop", name: Some("goldEarned") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.goldSpent", kind: "prop", name: Some("goldSpent") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.healingReceived", kind: "prop", name: Some("healingReceived") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.highestBlockInTurn", kind: "prop", name: Some("highestBlockInTurn") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.hitsDealtDistribution", kind: "prop", name: Some("hitsDealtDistribution") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.hitsTakenDistribution", kind: "prop", name: Some("hitsTakenDistribution") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.killCount", kind: "prop", name: Some("killCount") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.longestCombat", kind: "prop", name: Some("longestCombat") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.lowestHp", kind: "prop", name: Some("lowestHp") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.noDamageTurns", kind: "prop", name: Some("noDamageTurns") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.potionsUsed", kind: "prop", name: Some("potionsUsed") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.turns", kind: "prop", name: Some("turns") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats.cardUseDistribution", tgt: "me.byjp.pesos.sts2.run#distribution", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats.hitsDealtDistribution", tgt: "me.byjp.pesos.sts2.run#distribution", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats.hitsTakenDistribution", tgt: "me.byjp.pesos.sts2.run#distribution", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.currentHp", kind: "prop", name: Some("currentHp") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.maxHp", kind: "prop", name: Some("maxHp") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.stats", kind: "prop", name: Some("stats") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.steamID64", kind: "prop", name: Some("steamID64") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body.allies:items", tgt: "me.byjp.pesos.sts2.run:body.allies:items.atproto", kind: "prop", name: Some("atproto") }
- Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body.stats", tgt: "lex:me.byjp.pesos.sts2.run#stats", kind: "ref", name: None }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {4
"ally": {5
"description": "A co-op peer. Identified by SteamID64 always; an atproto DID is included when we've resolved one for this Steam user.",4
"attestation": {5
"description": "Inline ECDSA signature appended to the record's `signatures` array after the content CID is computed (per badge.blue). The `signatures` array is stripped before re-validation; entries identify the signing key so verifiers can look it up against a trusted-keys list to confirm a genuine mod build. The canonical list lives at https://sts2.byjp.me/.well-known/sts2-mod-keys/keys.json — other verifiers may publish their own at the same well-known path on a different host.",66
"properties": {7
"atproto": {8
"description": "Atproto DID, when known.",7
"cid": {8
"description": "CIDv1 (DAG-CBOR + SHA-256) of the record body that was signed.",9
"type": "string"10
},11
"key": {12
"description": "did:key identifying the signing key.",913
"format": "did",1014
"type": "string"1115
},12
"steam": {13
"description": "SteamID64 as a decimal string.",14
"type": "string"16
"signature": {17
"description": "P-256 ECDSA signature (low-S, IEEE P1363 r‖s) over the content CID bytes.",18
"type": "bytes"1519
}1620
},1721
"required": [18
"steam"22
"cid",23
"key",24
"signature"1925
],2026
"type": "object"2127
},28
"distribution": {29
"description": "Generic histogram keyed by arbitrary string values mapped to their integer counts. Keys are intentionally undeclared because the set of values is open-ended.",30
"properties": {},31
"type": "object"32
},2233
"main": {2334
"description": "A single Slay the Spire 2 run.",2435
"key": "tid",2536
"record": {2637
"properties": {2738
"act": {2839
"maximum": 4,2940
"minimum": 1,3041
"type": "integer"3142
},3243
"allies": {33
"description": "Other players in a multiplayer run. Each entry always carries the peer's SteamID64; when we've been able to resolve it, the atproto DID is included too.",44
"description": "Other players in a multiplayer run.",3445
"items": {35
"ref": "#ally",36
"type": "ref"46
"properties": {47
"atproto": {48
"description": "Atproto DID, when known.",49
"format": "did",50
"type": "string"51
},52
"steam": {53
"description": "SteamID64 as a decimal string.",54
"type": "string"55
}56
},57
"required": [58
"steam"59
],60
"type": "object"3761
},3862
"type": "array"3963
},4064
"ascension": {4165
"maximum": 20,4266
"minimum": 0,4367
"type": "integer"4468
},4569
"character": {4670
"description": "Character class id (e.g. 'ironclad', 'silent').",4771
"type": "string"4872
},73
"currentHp": {74
"description": "Local player's current HP at the time of emission (0 if dead).",75
"minimum": 0,76
"type": "integer"77
},4978
"deck": {50
"description": "Card ids in the player's deck.",79
"description": "Card ids in the final deck.",5180
"items": {5281
"type": "string"5382
},5483
"type": "array"5584
},5685
"durationSeconds": {5786
"minimum": 0,5887
"type": "integer"5988
},6089
"endedAt": {6190
"format": "datetime",6291
"type": "string"6392
},6493
"floor": {6594
"minimum": 0,6695
"type": "integer"6796
},6897
"game": {6998
"description": "Optional at-uri of the canonical games.gamesgamesgamesgames.actor.game record for StS2.",7099
"format": "at-uri",71100
"type": "string"72101
},73102
"gameVersion": {74103
"type": "string"75104
},76105
"killedBy": {77106
"description": "Enemy / event that ended the run, if applicable.",78107
"type": "string"79108
},109
"maxHp": {110
"description": "Local player's maximum HP at the time of emission (reflects run-long HP gains/losses).",111
"minimum": 0,112
"type": "integer"113
},80114
"modVersion": {81115
"type": "string"82116
},83117
"outcome": {84118
"description": "How the run ended.",85119
"knownValues": [86120
"in_progress",87121
"victory",88122
"death",89123
"abandoned"90124
],91125
"type": "string"92126
},93127
"potions": {94128
"description": "Potion ids currently held.",95129
"items": {96130
"type": "string"97131
},98132
"type": "array"99133
},100134
"relics": {101135
"description": "Relic ids held at run end.",102136
"items": {103137
"type": "string"104138
},105139
"type": "array"106140
},107141
"score": {108142
"minimum": 0,109143
"type": "integer"110144
},111145
"seed": {112146
"description": "Run seed as displayed in-game.",113147
"type": "string"114148
},115149
"startedAt": {116150
"format": "datetime",117151
"type": "string"118152
},153
"stats": {154
"description": "Aggregated combat stats across the run. All fields optional; counters reflect the local player's own activity.",155
"ref": "lex:me.byjp.pesos.sts2.run#stats",156
"type": "ref"157
},119158
"statsRef": {120159
"description": "at-uri of the user's games.gamesgamesgamesgames.actor.stats record for StS2, updated alongside this run.",121160
"format": "at-uri",122161
"type": "string"123162
},163
"steamID64": {164
"description": "SteamID64 of the run's owner, when playing on Steam.",165
"type": "string"166
},124167
"updatedAt": {125168
"format": "datetime",126169
"type": "string"127170
}128171
},129172
"required": [130173
"outcome",131174
"character",132175
"ascension",133176
"seed",134177
"startedAt",135178
"updatedAt"136179
],137180
"type": "object"138181
},139182
"type": "record"183
},184
"stats": {185
"properties": {186
"biggestDamageDealt": {187
"description": "Largest HP damage dealt by the player in one attack (after block).",188
"minimum": 0,189
"type": "integer"190
},191
"biggestDamageTaken": {192
"description": "Largest HP damage taken by the player in one attack (after block).",193
"minimum": 0,194
"type": "integer"195
},196
"biggestTurnDamageDealt": {197
"description": "Most HP damage the player dealt in one player turn (after block).",198
"minimum": 0,199
"type": "integer"200
},201
"biggestTurnDamageTaken": {202
"description": "Most HP damage the player took in one enemy turn (after block).",203
"minimum": 0,204
"type": "integer"205
},206
"bossesWon": {207
"description": "Boss combats won.",208
"minimum": 0,209
"type": "integer"210
},211
"cardUseDistribution": {212
"description": "Cards played, keyed by card name (id) mapped to the number of times that card was played. Example: { \"strike\": 42, \"bash\": 6 }.",213
"ref": "#distribution",214
"type": "ref"215
},216
"cardsDrawn": {217
"minimum": 0,218
"type": "integer"219
},220
"cardsExhausted": {221
"minimum": 0,222
"type": "integer"223
},224
"cardsPlayed": {225
"minimum": 0,226
"type": "integer"227
},228
"combats": {229
"description": "Total combats entered.",230
"minimum": 0,231
"type": "integer"232
},233
"combatsWon": {234
"description": "Combats the player's side won.",235
"minimum": 0,236
"type": "integer"237
},238
"damageDealt": {239
"description": "Total HP damage dealt by the player to enemies (after block).",240
"minimum": 0,241
"type": "integer"242
},243
"damageTaken": {244
"description": "Total HP damage taken by the player (after block).",245
"minimum": 0,246
"type": "integer"247
},248
"deaths": {249
"description": "Number of times the player went to 0 HP. 0 in solo victory; can exceed 1 in multiplayer where allies revive.",250
"minimum": 0,251
"type": "integer"252
},253
"elitesWon": {254
"description": "Elite combats won.",255
"minimum": 0,256
"type": "integer"257
},258
"goldCurrent": {259
"description": "Gold the player is currently holding at the time of emission.",260
"minimum": 0,261
"type": "integer"262
},263
"goldEarned": {264
"description": "Total gold gained over the run.",265
"minimum": 0,266
"type": "integer"267
},268
"goldSpent": {269
"description": "Total gold spent over the run.",270
"minimum": 0,271
"type": "integer"272
},273
"healingReceived": {274
"description": "Total HP healed by the player across the run (sum of positive HP changes).",275
"minimum": 0,276
"type": "integer"277
},278
"highestBlockInTurn": {279
"description": "Most block gained by the player in a single player turn.",280
"minimum": 0,281
"type": "integer"282
},283
"hitsDealtDistribution": {284
"description": "Hits dealt by the player grouped by the attack's full value (before block). Example: { \"1\": 23, \"2\": 8, \"10\": 1 }.",285
"ref": "#distribution",286
"type": "ref"287
},288
"hitsTakenDistribution": {289
"description": "Hits the player received grouped by the attack's full value (before block). Example: { \"1\": 23, \"2\": 8, \"10\": 1 }.",290
"ref": "#distribution",291
"type": "ref"292
},293
"killCount": {294
"description": "Number of monsters this player dealt the killing blow to.",295
"minimum": 0,296
"type": "integer"297
},298
"longestCombat": {299
"description": "Most player turns in a single combat.",300
"minimum": 0,301
"type": "integer"302
},303
"lowestHp": {304
"description": "Lowest HP the player reached at any tracked moment in the run.",305
"minimum": 0,306
"type": "integer"307
},308
"noDamageTurns": {309
"description": "Enemy turns during which the player took zero unblocked damage.",310
"minimum": 0,311
"type": "integer"312
},313
"potionsUsed": {314
"minimum": 0,315
"type": "integer"316
},317
"turns": {318
"description": "Total player turns taken across all combats.",319
"minimum": 0,320
"type": "integer"321
}322
},323
"type": "object"140324
}141325
},142326
"id": "me.byjp.pesos.sts2.run",143327
"lexicon": 1144328
}