me.byjp.pesos.sts2.run
Schema Diff
+205 -3
Compatibility Analysis
Breaking Changes Detected
28 breaking changes, 77 non-breaking changes.
Breaking Changes (28)
- KindChanged KindChanged { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", old_kind: "string", new_kind: "object" }
- 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.cardsExhausted", 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.potionsUsed", 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.turns", 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.combatsWon", 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.goldEarned", 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.goldCurrent", 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.noDamageTurns", 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.cardsPlayed", 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.damageTaken", 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.biggestDamageTaken", 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.lowestHp", 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.elitesWon", 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.damageDealt", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.longestCombat", 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
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.cardsExhausted", 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.lowestHp", 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.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.combats", 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.biggestDamageDealt", 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.deaths", 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.killCount", 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.biggestDamageTaken", 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.longestCombat", 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:body.maxHp", 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.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.biggestTurnDamageDealt", 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.goldEarned", sort: "minimum", value: "0" }
Additional Notes
- Breaking: KindChanged { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items", old_kind: "string", 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
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"outcome",
11
11
"character",
12
12
"ascension",
13
13
"seed",
14
14
"startedAt",
15
15
"updatedAt"
16
16
],
17
17
"properties": {
18
18
"act": {
19
19
"type": "integer",
20
20
"maximum": 4,
21
21
"minimum": 1
22
22
},
23
23
"deck": {
24
24
"type": "array",
25
25
"items": {
26
26
"type": "string"
27
27
},
28
28
"description": "Card ids in the final deck."
29
29
},
30
30
"game": {
31
31
"type": "string",
32
32
"format": "at-uri",
33
33
"description": "Optional at-uri of the canonical games.gamesgamesgamesgames.actor.game record for StS2."
34
34
},
35
35
"seed": {
36
36
"type": "string",
37
37
"description": "Run seed as displayed in-game."
38
38
},
39
39
"floor": {
40
40
"type": "integer",
41
41
"minimum": 0
42
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
+
},
43
48
"score": {
44
49
"type": "integer",
45
50
"minimum": 0
46
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
+
},
47
57
"allies": {
48
58
"type": "array",
49
59
"items": {
50
-
"type": "string",
51
-
"format": "uri"
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
+
}
52
75
},
53
-
"description": "URIs identifying other players in a multiplayer run (atproto DIDs when known, Steam profile URLs otherwise)."
76
+
"description": "Other players in a multiplayer run."
54
77
},
55
78
"relics": {
56
79
"type": "array",
57
80
"items": {
58
81
"type": "string"
59
82
},
60
83
"description": "Relic ids held at run end."
61
84
},
62
85
"endedAt": {
63
86
"type": "string",
64
87
"format": "datetime"
65
88
},
66
89
"outcome": {
67
90
"type": "string",
68
91
"description": "How the run ended.",
69
92
"knownValues": [
70
93
"in_progress",
71
94
"victory",
72
95
"death",
73
96
"abandoned"
74
97
]
75
98
},
76
99
"potions": {
77
100
"type": "array",
78
101
"items": {
79
102
"type": "string"
80
103
},
81
104
"description": "Potion ids currently held."
82
105
},
83
106
"killedBy": {
84
107
"type": "string",
85
108
"description": "Enemy / event that ended the run, if applicable."
86
109
},
87
110
"statsRef": {
88
111
"type": "string",
89
112
"format": "at-uri",
90
113
"description": "at-uri of the user's games.gamesgamesgamesgames.actor.stats record for StS2, updated alongside this run."
91
114
},
92
115
"ascension": {
93
116
"type": "integer",
94
117
"maximum": 20,
95
118
"minimum": 0
96
119
},
97
120
"character": {
98
121
"type": "string",
99
122
"description": "Character class id (e.g. 'ironclad', 'silent')."
100
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
+
},
101
129
"startedAt": {
102
130
"type": "string",
103
131
"format": "datetime"
104
132
},
133
+
"steamID64": {
134
+
"type": "string",
135
+
"description": "SteamID64 of the run's owner, when playing on Steam."
136
+
},
105
137
"updatedAt": {
106
138
"type": "string",
107
139
"format": "datetime"
108
140
},
109
141
"modVersion": {
110
142
"type": "string"
111
143
},
112
144
"gameVersion": {
113
145
"type": "string"
114
146
},
115
147
"durationSeconds": {
116
148
"type": "integer",
117
149
"minimum": 0
118
150
}
119
151
}
120
152
},
121
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."
122
324
}
123
325
},
124
326
"$type": "com.atproto.lexicon.schema",
125
327
"lexicon": 1
126
328
}