me.byjp.pesos.sts2.run

byjp.me

Schema Diff

+206 -22

From

CID
bafyreifnwpbfs3h...
Indexed At
2026-04-22 07:54 UTC
View this version

To

CID
bafyreiaqpnf3lg4...
Indexed At
2026-04-25 08:51 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

33 breaking changes, 77 non-breaking changes.

Breaking Changes (33)
  • 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#ally", tgt: "me.byjp.pesos.sts2.run#ally.steam", kind: "prop", name: Some("steam") }
  • KindChanged KindChanged { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", old_kind: "ref", new_kind: "object" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.highestBlockInTurn", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.healingReceived", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageDealt", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.elitesWon", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.goldCurrent", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.bossesWon", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageTaken", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageDealt", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.maxHp", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.deaths", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsDrawn", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.currentHp", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.goldEarned", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.damageTaken", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.turns", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageTaken", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.potionsUsed", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.damageDealt", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsPlayed", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.combats", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.goldSpent", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsExhausted", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.longestCombat", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.noDamageTurns", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.combatsWon", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.killCount", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.lowestHp", sort: "minimum", value: "0" }
Non-Breaking Changes (77)
  • 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#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.cid", kind: "prop", name: Some("cid") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.key", kind: "prop", name: Some("key") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.signature", kind: "prop", name: Some("signature") }
  • 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: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.allies:items", tgt: "me.byjp.pesos.sts2.run:body.allies:items.steam", kind: "prop", name: Some("steam") }

Migration Guidance

Removed Elements

  • 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 Elements

  • 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

  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.currentHp", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageDealt", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.combats", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.elitesWon", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.lowestHp", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsPlayed", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.killCount", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.maxHp", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.healingReceived", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.goldCurrent", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.potionsUsed", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.highestBlockInTurn", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.goldSpent", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.longestCombat", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageTaken", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.combatsWon", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.noDamageTurns", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageTaken", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.deaths", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.goldEarned", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageDealt", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.bossesWon", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.damageDealt", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.turns", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.damageTaken", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsDrawn", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsExhausted", sort: "minimum", value: "0" }

Additional Notes

  • 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#ally", tgt: "me.byjp.pesos.sts2.run#ally.steam", kind: "prop", name: Some("steam") }
  • 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#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.cid", kind: "prop", name: Some("cid") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.key", kind: "prop", name: Some("key") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.signature", kind: "prop", name: Some("signature") }
  • 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: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.allies:items", tgt: "me.byjp.pesos.sts2.run:body.allies:items.steam", kind: "prop", name: Some("steam") }
1 1
{
2 2
  "id": "me.byjp.pesos.sts2.run",
3 3
  "defs": {
4 -
    "ally": {
5 -
      "type": "object",
6 -
      "required": [
7 -
        "steam"
8 -
      ],
9 -
      "properties": {
10 -
        "steam": {
11 -
          "type": "string",
12 -
          "description": "SteamID64 as a decimal string."
13 -
        },
14 -
        "atproto": {
15 -
          "type": "string",
16 -
          "format": "did",
17 -
          "description": "Atproto DID, when known."
18 -
        }
19 -
      },
20 -
      "description": "A co-op peer. Identified by SteamID64 always; an atproto DID is included when we've resolved one for this Steam user."
21 -
    },
22 4
    "main": {
23 5
      "key": "tid",
24 6
      "type": "record",
25 7
      "record": {
26 8
        "type": "object",
27 9
        "required": [
28 10
          "outcome",
29 11
          "character",
30 12
          "ascension",
31 13
          "seed",
32 14
          "startedAt",
33 15
          "updatedAt"
34 16
        ],
35 17
        "properties": {
36 18
          "act": {
37 19
            "type": "integer",
38 20
            "maximum": 4,
39 21
            "minimum": 1
40 22
          },
41 23
          "deck": {
42 24
            "type": "array",
43 25
            "items": {
44 26
              "type": "string"
45 27
            },
46 -
            "description": "Card ids in the player's deck."
28 +
            "description": "Card ids in the final deck."
47 29
          },
48 30
          "game": {
49 31
            "type": "string",
50 32
            "format": "at-uri",
51 33
            "description": "Optional at-uri of the canonical games.gamesgamesgamesgames.actor.game record for StS2."
52 34
          },
53 35
          "seed": {
54 36
            "type": "string",
55 37
            "description": "Run seed as displayed in-game."
56 38
          },
57 39
          "floor": {
58 40
            "type": "integer",
59 41
            "minimum": 0
60 42
          },
43 +
          "maxHp": {
44 +
            "type": "integer",
45 +
            "minimum": 0,
46 +
            "description": "Local player's maximum HP at the time of emission (reflects run-long HP gains/losses)."
47 +
          },
61 48
          "score": {
62 49
            "type": "integer",
63 50
            "minimum": 0
64 51
          },
52 +
          "stats": {
53 +
            "ref": "lex:me.byjp.pesos.sts2.run#stats",
54 +
            "type": "ref",
55 +
            "description": "Aggregated combat stats across the run. All fields optional; counters reflect the local player's own activity."
56 +
          },
65 57
          "allies": {
66 58
            "type": "array",
67 59
            "items": {
68 -
              "ref": "#ally",
69 -
              "type": "ref"
60 +
              "type": "object",
61 +
              "required": [
62 +
                "steam"
63 +
              ],
64 +
              "properties": {
65 +
                "steam": {
66 +
                  "type": "string",
67 +
                  "description": "SteamID64 as a decimal string."
68 +
                },
69 +
                "atproto": {
70 +
                  "type": "string",
71 +
                  "format": "did",
72 +
                  "description": "Atproto DID, when known."
73 +
                }
74 +
              }
70 75
            },
71 -
            "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."
76 +
            "description": "Other players in a multiplayer run."
72 77
          },
73 78
          "relics": {
74 79
            "type": "array",
75 80
            "items": {
76 81
              "type": "string"
77 82
            },
78 83
            "description": "Relic ids held at run end."
79 84
          },
80 85
          "endedAt": {
81 86
            "type": "string",
82 87
            "format": "datetime"
83 88
          },
84 89
          "outcome": {
85 90
            "type": "string",
86 91
            "description": "How the run ended.",
87 92
            "knownValues": [
88 93
              "in_progress",
89 94
              "victory",
90 95
              "death",
91 96
              "abandoned"
92 97
            ]
93 98
          },
94 99
          "potions": {
95 100
            "type": "array",
96 101
            "items": {
97 102
              "type": "string"
98 103
            },
99 104
            "description": "Potion ids currently held."
100 105
          },
101 106
          "killedBy": {
102 107
            "type": "string",
103 108
            "description": "Enemy / event that ended the run, if applicable."
104 109
          },
105 110
          "statsRef": {
106 111
            "type": "string",
107 112
            "format": "at-uri",
108 113
            "description": "at-uri of the user's games.gamesgamesgamesgames.actor.stats record for StS2, updated alongside this run."
109 114
          },
110 115
          "ascension": {
111 116
            "type": "integer",
112 117
            "maximum": 20,
113 118
            "minimum": 0
114 119
          },
115 120
          "character": {
116 121
            "type": "string",
117 122
            "description": "Character class id (e.g. 'ironclad', 'silent')."
118 123
          },
124 +
          "currentHp": {
125 +
            "type": "integer",
126 +
            "minimum": 0,
127 +
            "description": "Local player's current HP at the time of emission (0 if dead)."
128 +
          },
119 129
          "startedAt": {
120 130
            "type": "string",
121 131
            "format": "datetime"
122 132
          },
133 +
          "steamID64": {
134 +
            "type": "string",
135 +
            "description": "SteamID64 of the run's owner, when playing on Steam."
136 +
          },
123 137
          "updatedAt": {
124 138
            "type": "string",
125 139
            "format": "datetime"
126 140
          },
127 141
          "modVersion": {
128 142
            "type": "string"
129 143
          },
130 144
          "gameVersion": {
131 145
            "type": "string"
132 146
          },
133 147
          "durationSeconds": {
134 148
            "type": "integer",
135 149
            "minimum": 0
136 150
          }
137 151
        }
138 152
      },
139 153
      "description": "A single Slay the Spire 2 run."
154 +
    },
155 +
    "stats": {
156 +
      "type": "object",
157 +
      "properties": {
158 +
        "turns": {
159 +
          "type": "integer",
160 +
          "minimum": 0,
161 +
          "description": "Total player turns taken across all combats."
162 +
        },
163 +
        "deaths": {
164 +
          "type": "integer",
165 +
          "minimum": 0,
166 +
          "description": "Number of times the player went to 0 HP. 0 in solo victory; can exceed 1 in multiplayer where allies revive."
167 +
        },
168 +
        "combats": {
169 +
          "type": "integer",
170 +
          "minimum": 0,
171 +
          "description": "Total combats entered."
172 +
        },
173 +
        "lowestHp": {
174 +
          "type": "integer",
175 +
          "minimum": 0,
176 +
          "description": "Lowest HP the player reached at any tracked moment in the run."
177 +
        },
178 +
        "bossesWon": {
179 +
          "type": "integer",
180 +
          "minimum": 0,
181 +
          "description": "Boss combats won."
182 +
        },
183 +
        "elitesWon": {
184 +
          "type": "integer",
185 +
          "minimum": 0,
186 +
          "description": "Elite combats won."
187 +
        },
188 +
        "goldSpent": {
189 +
          "type": "integer",
190 +
          "minimum": 0,
191 +
          "description": "Total gold spent over the run."
192 +
        },
193 +
        "killCount": {
194 +
          "type": "integer",
195 +
          "minimum": 0,
196 +
          "description": "Number of monsters this player dealt the killing blow to."
197 +
        },
198 +
        "cardsDrawn": {
199 +
          "type": "integer",
200 +
          "minimum": 0
201 +
        },
202 +
        "combatsWon": {
203 +
          "type": "integer",
204 +
          "minimum": 0,
205 +
          "description": "Combats the player's side won."
206 +
        },
207 +
        "goldEarned": {
208 +
          "type": "integer",
209 +
          "minimum": 0,
210 +
          "description": "Total gold gained over the run."
211 +
        },
212 +
        "cardsPlayed": {
213 +
          "type": "integer",
214 +
          "minimum": 0
215 +
        },
216 +
        "damageDealt": {
217 +
          "type": "integer",
218 +
          "minimum": 0,
219 +
          "description": "Total HP damage dealt by the player to enemies (after block)."
220 +
        },
221 +
        "damageTaken": {
222 +
          "type": "integer",
223 +
          "minimum": 0,
224 +
          "description": "Total HP damage taken by the player (after block)."
225 +
        },
226 +
        "goldCurrent": {
227 +
          "type": "integer",
228 +
          "minimum": 0,
229 +
          "description": "Gold the player is currently holding at the time of emission."
230 +
        },
231 +
        "potionsUsed": {
232 +
          "type": "integer",
233 +
          "minimum": 0
234 +
        },
235 +
        "longestCombat": {
236 +
          "type": "integer",
237 +
          "minimum": 0,
238 +
          "description": "Most player turns in a single combat."
239 +
        },
240 +
        "noDamageTurns": {
241 +
          "type": "integer",
242 +
          "minimum": 0,
243 +
          "description": "Enemy turns during which the player took zero unblocked damage."
244 +
        },
245 +
        "cardsExhausted": {
246 +
          "type": "integer",
247 +
          "minimum": 0
248 +
        },
249 +
        "healingReceived": {
250 +
          "type": "integer",
251 +
          "minimum": 0,
252 +
          "description": "Total HP healed by the player across the run (sum of positive HP changes)."
253 +
        },
254 +
        "biggestDamageDealt": {
255 +
          "type": "integer",
256 +
          "minimum": 0,
257 +
          "description": "Largest HP damage dealt by the player in one attack (after block)."
258 +
        },
259 +
        "biggestDamageTaken": {
260 +
          "type": "integer",
261 +
          "minimum": 0,
262 +
          "description": "Largest HP damage taken by the player in one attack (after block)."
263 +
        },
264 +
        "highestBlockInTurn": {
265 +
          "type": "integer",
266 +
          "minimum": 0,
267 +
          "description": "Most block gained by the player in a single player turn."
268 +
        },
269 +
        "cardUseDistribution": {
270 +
          "ref": "#distribution",
271 +
          "type": "ref",
272 +
          "description": "Cards played, keyed by card name (id) mapped to the number of times that card was played. Example: { \"strike\": 42, \"bash\": 6 }."
273 +
        },
274 +
        "hitsDealtDistribution": {
275 +
          "ref": "#distribution",
276 +
          "type": "ref",
277 +
          "description": "Hits dealt by the player grouped by the attack's full value (before block). Example: { \"1\": 23, \"2\": 8, \"10\": 1 }."
278 +
        },
279 +
        "hitsTakenDistribution": {
280 +
          "ref": "#distribution",
281 +
          "type": "ref",
282 +
          "description": "Hits the player received grouped by the attack's full value (before block). Example: { \"1\": 23, \"2\": 8, \"10\": 1 }."
283 +
        },
284 +
        "biggestTurnDamageDealt": {
285 +
          "type": "integer",
286 +
          "minimum": 0,
287 +
          "description": "Most HP damage the player dealt in one player turn (after block)."
288 +
        },
289 +
        "biggestTurnDamageTaken": {
290 +
          "type": "integer",
291 +
          "minimum": 0,
292 +
          "description": "Most HP damage the player took in one enemy turn (after block)."
293 +
        }
294 +
      }
295 +
    },
296 +
    "attestation": {
297 +
      "type": "object",
298 +
      "required": [
299 +
        "cid",
300 +
        "key",
301 +
        "signature"
302 +
      ],
303 +
      "properties": {
304 +
        "cid": {
305 +
          "type": "string",
306 +
          "description": "CIDv1 (DAG-CBOR + SHA-256) of the record body that was signed."
307 +
        },
308 +
        "key": {
309 +
          "type": "string",
310 +
          "format": "did",
311 +
          "description": "did:key identifying the signing key."
312 +
        },
313 +
        "signature": {
314 +
          "type": "bytes",
315 +
          "description": "P-256 ECDSA signature (low-S, IEEE P1363 r‖s) over the content CID bytes."
316 +
        }
317 +
      },
318 +
      "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."
319 +
    },
320 +
    "distribution": {
321 +
      "type": "object",
322 +
      "properties": {},
323 +
      "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."
140 324
    }
141 325
  },
142 326
  "$type": "com.atproto.lexicon.schema",
143 327
  "lexicon": 1
144 328
}

Compare Other Versions

Lexicon Garden

@