full diff

me.byjp.pesos.sts2.run

byjp.me +196 −12
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": 1
144328}

Compare other versions