net.anisota.lab.plasmodium

anisota.net

Schema Diff

+16 -4

From

CID
bafyreig2jxicsoh...
Indexed At
2026-07-17 00:33 UTC
View this version

To

CID
bafyreiaycccyx23...
Indexed At
2026-07-17 02:54 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 8 non-breaking changes.

Breaking Changes (2)
  • RemovedVertex RemovedVertex { vertex_id: "net.anisota.lab.plasmodium:body.genome.interSpecies" }
  • RemovedEdge RemovedEdge { src: "net.anisota.lab.plasmodium:body.genome", tgt: "net.anisota.lab.plasmodium:body.genome.interSpecies", kind: "prop", name: Some("interSpecies") }
Non-Breaking Changes (8)
  • AddedVertex AddedVertex { vertex_id: "net.anisota.lab.plasmodium:body.genome.interMode" }
  • AddedVertex AddedVertex { vertex_id: "net.anisota.lab.plasmodium:body.genome.interStrength" }
  • AddedVertex AddedVertex { vertex_id: "net.anisota.lab.plasmodium:body.genome.spawn" }
  • AddedVertex AddedVertex { vertex_id: "net.anisota.lab.plasmodium:body.genome.species:items.renderMode" }
  • AddedEdge AddedEdge { src: "net.anisota.lab.plasmodium:body.genome", tgt: "net.anisota.lab.plasmodium:body.genome.interMode", kind: "prop", name: Some("interMode") }
  • AddedEdge AddedEdge { src: "net.anisota.lab.plasmodium:body.genome", tgt: "net.anisota.lab.plasmodium:body.genome.interStrength", kind: "prop", name: Some("interStrength") }
  • AddedEdge AddedEdge { src: "net.anisota.lab.plasmodium:body.genome", tgt: "net.anisota.lab.plasmodium:body.genome.spawn", kind: "prop", name: Some("spawn") }
  • AddedEdge AddedEdge { src: "net.anisota.lab.plasmodium:body.genome.species:items", tgt: "net.anisota.lab.plasmodium:body.genome.species:items.renderMode", kind: "prop", name: Some("renderMode") }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "net.anisota.lab.plasmodium:body.genome.interSpecies" }

Added Elements

  • AddedVertex { vertex_id: "net.anisota.lab.plasmodium:body.genome.interMode" }
  • AddedVertex { vertex_id: "net.anisota.lab.plasmodium:body.genome.interStrength" }
  • AddedVertex { vertex_id: "net.anisota.lab.plasmodium:body.genome.spawn" }
  • AddedVertex { vertex_id: "net.anisota.lab.plasmodium:body.genome.species:items.renderMode" }

Additional Notes

  • Breaking: RemovedEdge { src: "net.anisota.lab.plasmodium:body.genome", tgt: "net.anisota.lab.plasmodium:body.genome.interSpecies", kind: "prop", name: Some("interSpecies") }
  • Non-breaking: AddedEdge { src: "net.anisota.lab.plasmodium:body.genome", tgt: "net.anisota.lab.plasmodium:body.genome.interMode", kind: "prop", name: Some("interMode") }
  • Non-breaking: AddedEdge { src: "net.anisota.lab.plasmodium:body.genome", tgt: "net.anisota.lab.plasmodium:body.genome.interStrength", kind: "prop", name: Some("interStrength") }
  • Non-breaking: AddedEdge { src: "net.anisota.lab.plasmodium:body.genome", tgt: "net.anisota.lab.plasmodium:body.genome.spawn", kind: "prop", name: Some("spawn") }
  • Non-breaking: AddedEdge { src: "net.anisota.lab.plasmodium:body.genome.species:items", tgt: "net.anisota.lab.plasmodium:body.genome.species:items.renderMode", kind: "prop", name: Some("renderMode") }
1 1
{
2 2
  "id": "net.anisota.lab.plasmodium",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "any",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "name",
11 11
          "seed",
12 12
          "gridSize",
13 13
          "genome",
14 14
          "createdAt"
15 15
        ],
16 16
        "properties": {
17 17
          "name": {
18 18
            "type": "string",
19 19
            "maxLength": 800,
20 20
            "description": "Display name for the organism",
21 21
            "maxGraphemes": 100
22 22
          },
23 23
          "seed": {
24 24
            "type": "integer",
25 25
            "description": "PRNG seed the simulation and genome were initialised with"
26 26
          },
27 27
          "foods": {
28 28
            "type": "array",
29 29
            "items": {
30 30
              "type": "object",
31 31
              "required": [
32 32
                "x",
33 33
                "y",
34 34
                "atStep"
35 35
              ],
36 36
              "properties": {
37 37
                "r": {
38 38
                  "type": "integer",
39 39
                  "description": "Radius in cells"
40 40
                },
41 41
                "x": {
42 42
                  "type": "integer",
43 43
                  "description": "Normalised x scaled 0..1000"
44 44
                },
45 45
                "y": {
46 46
                  "type": "integer",
47 47
                  "description": "Normalised y scaled 0..1000"
48 48
                },
49 49
                "atStep": {
50 50
                  "type": "integer",
51 51
                  "description": "Sim step at which it was dropped"
52 52
                }
53 53
              }
54 54
            },
55 55
            "maxLength": 256,
56 56
            "description": "Ordered food drops the grower placed; each replayed at its step so growth rebuilds identically."
57 57
          },
58 58
          "image": {
59 59
            "type": "string",
60 60
            "maxLength": 120000,
61 61
            "description": "A PNG data URL thumbnail of the organism"
62 62
          },
63 63
          "steps": {
64 64
            "type": "integer",
65 65
            "description": "How many simulation steps the organism had grown when saved"
66 66
          },
67 67
          "genome": {
68 68
            "type": "object",
69 69
            "required": [
70 70
              "species"
71 71
            ],
72 72
            "properties": {
73 73
              "blur": {
74 74
                "type": "integer",
75 75
                "description": "Diffusion (3x3 blur) strength, 0..1000"
76 76
              },
77 +
              "spawn": {
78 +
                "type": "integer",
79 +
                "description": "Initial spawn pattern index: 0 scatter, 1 ring, 2 spore, 3 colonies, 4 poles, 5 spiral"
80 +
              },
77 81
              "species": {
78 82
                "type": "array",
79 83
                "items": {
80 84
                  "type": "object",
81 85
                  "required": [
82 86
                    "sensorAngle",
83 87
                    "rotationAngle",
84 88
                    "sensorOffset",
85 89
                    "step",
86 90
                    "deposit",
87 91
                    "decay",
88 92
                    "density"
89 93
                  ],
90 94
                  "properties": {
91 95
                    "hue": {
92 96
                      "type": "integer",
93 -
                      "description": "Optional per-species colour hue, 0..1000"
97 +
                      "description": "Per-species colour hue, 0..1000 = 0..360 degrees"
94 98
                    },
95 99
                    "step": {
96 100
                      "type": "integer",
97 101
                      "description": "Step size per move, 0..1000 = 0..4 cells"
98 102
                    },
99 103
                    "decay": {
100 104
                      "type": "integer",
101 105
                      "description": "Trail persistence, 0..1000 = 0.80..1.00 retained"
102 106
                    },
103 107
                    "density": {
104 108
                      "type": "integer",
105 109
                      "description": "Fraction of the agent budget this species occupies, 0..1000"
106 110
                    },
107 111
                    "deposit": {
108 112
                      "type": "integer",
109 113
                      "description": "Trail deposit amount, 0..1000"
110 114
                    },
115 +
                    "renderMode": {
116 +
                      "type": "integer",
117 +
                      "description": "Render mode index: 0 filament, 1 veil, 2 crystal, 3 plasma, 4 flow"
118 +
                    },
111 119
                    "sensorAngle": {
112 120
                      "type": "integer",
113 121
                      "description": "Sensor angle SA, 0..1000 = 0..90 degrees"
114 122
                    },
115 123
                    "sensorOffset": {
116 124
                      "type": "integer",
117 125
                      "description": "Sensor distance SO, 0..1000 = 0..32 cells"
118 126
                    },
119 127
                    "rotationAngle": {
120 128
                      "type": "integer",
121 129
                      "description": "Rotation angle RA, 0..1000 = 0..90 degrees"
122 130
                    }
123 131
                  }
124 132
                },
125 133
                "maxLength": 2,
126 134
                "description": "One entry per agent population"
127 135
              },
136 +
              "interMode": {
137 +
                "type": "integer",
138 +
                "description": "Cross-species interaction index: 0 ignore, 1 attract, 2 repel, 3 predator/prey, 4 symbiosis, 5 competition"
139 +
              },
128 140
              "foodWeight": {
129 141
                "type": "integer",
130 142
                "description": "How strongly agents are drawn to the food channel, 0..1000"
131 143
              },
132 -
              "interSpecies": {
144 +
              "interStrength": {
133 145
                "type": "integer",
134 -
                "description": "Cross-species coupling: 0..500 repel, 500 ignore, 500..1000 attract"
146 +
                "description": "Cross-species coupling strength, 0..1000"
135 147
              }
136 148
            },
137 -
            "description": "Behavioural parameters. Global tunables plus one species entry (two when multiSpecies). All continuous values are scaled to integers 0..1000."
149 +
            "description": "Behavioural parameters. Global tunables plus one species entry (two when multiSpecies). Continuous values are scaled to integers 0..1000; enumerated traits (spawn, interMode, renderMode) are small raw integer indices."
138 150
          },
139 151
          "palette": {
140 152
            "type": "string",
141 153
            "maxLength": 40,
142 154
            "description": "Colour palette id (amber, ember, lichen, frost, mono)"
143 155
          },
144 156
          "gridSize": {
145 157
            "type": "integer",
146 158
            "description": "Trail-field grid resolution in cells (square)"
147 159
          },
148 160
          "agentTier": {
149 161
            "type": "integer",
150 162
            "description": "Agent-count tier that grew it (0=small, 1=medium, 2=large). A reopen may cap lower on a weaker device."
151 163
          },
152 164
          "createdAt": {
153 165
            "type": "string",
154 166
            "format": "datetime",
155 167
            "description": "When the organism was saved"
156 168
          },
157 169
          "lastTickAt": {
158 170
            "type": "string",
159 171
            "format": "datetime",
160 172
            "description": "When the organism last advanced, used to grow it forward on reopen"
161 173
          },
162 174
          "inoculations": {
163 175
            "type": "array",
164 176
            "items": {
165 177
              "type": "object",
166 178
              "required": [
167 179
                "x",
168 180
                "y",
169 181
                "species",
170 182
                "atStep"
171 183
              ],
172 184
              "properties": {
173 185
                "r": {
174 186
                  "type": "integer",
175 187
                  "description": "Radius in cells"
176 188
                },
177 189
                "x": {
178 190
                  "type": "integer",
179 191
                  "description": "Normalised x scaled 0..1000"
180 192
                },
181 193
                "y": {
182 194
                  "type": "integer",
183 195
                  "description": "Normalised y scaled 0..1000"
184 196
                },
185 197
                "atStep": {
186 198
                  "type": "integer",
187 199
                  "description": "Sim step at which it was placed"
188 200
                },
189 201
                "species": {
190 202
                  "type": "integer",
191 203
                  "description": "0 or 1"
192 204
                }
193 205
              }
194 206
            },
195 207
            "maxLength": 256,
196 208
            "description": "Ordered inoculation taps (respawned agent patches)."
197 209
          },
198 210
          "multiSpecies": {
199 211
            "type": "boolean",
200 212
            "description": "Whether a second agent population was active"
201 213
          }
202 214
        }
203 215
      },
204 216
      "description": "A Physarum (slime-mould) organism grown in the Anisota Lab's Plasmodium workbench and saved to the owner's collection. Stored as its recipe rather than its pixels: a 'seed', the simulation 'gridSize', a 'genome' of behavioural parameters (all continuous 0..1 tunables scaled to integers 0..1000, since atproto lexicons have no float type), and the ordered 'foods' and 'inoculations' the grower placed. Because the GPU agent simulation is deterministic given the same seed, genome and placements, replaying the recipe regrows the organism. A small PNG thumbnail is kept for display."
205 217
    }
206 218
  },
207 219
  "$type": "com.atproto.lexicon.schema",
208 220
  "lexicon": 1
209 221
}

Compare Other Versions

Lexicon Garden

@