me.byjp.pesos.sts2.run

byjp.me

Schema Diff

+205 -3

From

CID
bafyreibpbtzscdz...
Indexed At
2026-04-21 18:39 UTC
View this version

To

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

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
}

Compare Other Versions

Lexicon Garden

@