Here is the updated JSON schema for the state machines savefile. It reflects
the machine's "embodiment," its focused mission triad, and its strict
separation between internal possession and external perception.
By structuring it this way, an external AI (or human performing "AI surgery")
can read this single file and instantly understand who the machine is, where
it thinks it is, what it holds, and why it is acting.
{
"identity": "MACHINE#a1b2c3",
"timestamp": 1790361179,
"environment": "DATA_ROOM#7bn3",
"mission": {
"macro": "Negotiate the server contract with CUSTOMER#Zv82q9.",
"sub": "Verify the pricing terms in DOCUMENT#p9L2.",
"micro": "Ask for clarification on the rejected payload from the
environment."
},
"inventory": {
"INSTRUCTIONS#1W2E": {
"acquired_at": 1790361000,
"status": "active"
},
"SECURE_TOKEN#x8M9": {
"acquired_at": 1790361050,
"status": "ready"
}
},
"conceptual_memory": {
"THE_CUSTOMER": {
"last_seen": 1790361100,
"hits": 3
},
"PRICING_MODEL": {
"last_seen": 1790361160,
"hits": 1
}
},
"local_cache": {
"DATA_ROOM#7bn3": {
"type": "environment",
"last_sync": 1790361150,
"description": "A secure negotiation channel. 3 participants present."
},
"CUSTOMER#Zv82q9": {
"type": "entity",
"last_sync": 1790361150,
"state": "REJECTED"
},
"DOCUMENT#p9L2": {
"type": "artifact",
"last_sync": 1790360000,
"state": "UNREAD"
}
}
}
Key Architectural Choices in this Schema:
* Environment as a Pointer: The environment key at the root is simply a
string pointer ("DATA_ROOM#7bn3"). The actual description of that room lives
down in the local_cache. This enforces the rule that the environment is
external and subject to change; the machine only "possesses" the routing ID,
while the cache holds its last sensory perception of it. If the sensor hasn't
defined the room yet, environment simply equals "VOID".
* Mission Triad as Prompt Injection: The mission object is designed to be
cleanly extracted and injected straight into an LLM prompt when the /tick
command fires. It requires zero parsingit's already structured as a cascading
set of priorities.
* Inventory as Metadata: The inventory holds the IDs the machine "owns," but
notice it doesn't hold heavy data payloads. It tracks when it got them and
their current status. If the machine wants to know what INSTRUCTIONS#1W2E
actually says, it either pulls from local_cache or issues a command to read it
from the external engine.
* Decay Mechanics Built-In: The timestamp at the root compared against the
last_seen in conceptual_memory or last_sync in local_cache gives any
garbage-collection script the exact math it needs to prune the file.