Fix Story 1.3: StateStore spec compliance and minor cleanup
Critical Fix: - StateStore now uses global Hooks.callAll directly (per spec) - Removed hooks parameter from StateStore constructor - Updated module.js to pass only adapter.settings - Updated tests to stub globalThis.Hooks Minor Cleanup: - Fixed misleading warning in SocketHandler.registerPendingOp - Added clarifying comment for setMatrix _revision behavior Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
Vendored
+47
@@ -15,6 +15,7 @@ export const SOCKET_PAYLOADS = Object.freeze({
|
||||
opId: "op-001",
|
||||
userId: "user-abc",
|
||||
targetState: "hidden",
|
||||
baseRevision: 0,
|
||||
}),
|
||||
}),
|
||||
|
||||
@@ -35,6 +36,7 @@ export const SOCKET_PAYLOADS = Object.freeze({
|
||||
payload: Object.freeze({
|
||||
userId: "user-abc",
|
||||
targetState: "hidden",
|
||||
baseRevision: 0,
|
||||
// opId intentionally omitted
|
||||
}),
|
||||
}),
|
||||
@@ -46,6 +48,7 @@ export const SOCKET_PAYLOADS = Object.freeze({
|
||||
opId: "op-002",
|
||||
userId: "user-abc",
|
||||
targetState: "invisible", // not a valid VisibilityState
|
||||
baseRevision: 0,
|
||||
}),
|
||||
}),
|
||||
|
||||
@@ -56,6 +59,7 @@ export const SOCKET_PAYLOADS = Object.freeze({
|
||||
opId: "op-003",
|
||||
userId: "user-abc",
|
||||
targetState: "hidden",
|
||||
baseRevision: 0,
|
||||
extraField: "should-not-be-here",
|
||||
}),
|
||||
}),
|
||||
@@ -76,4 +80,47 @@ export const SOCKET_PAYLOADS = Object.freeze({
|
||||
// revision intentionally omitted
|
||||
}),
|
||||
}),
|
||||
|
||||
// ── Stale ACK — opId not in pendingOps ───────────────────────────────────
|
||||
staleEcho: Object.freeze({
|
||||
event: "scrying-pool.visibility.updated",
|
||||
payload: Object.freeze({
|
||||
opId: "op-stale-999", // not registered in any pendingOps map
|
||||
userId: "user-abc",
|
||||
state: "hidden",
|
||||
revision: 5,
|
||||
}),
|
||||
}),
|
||||
|
||||
// ── Timeout/retry sequence: intent that will time out ────────────────────
|
||||
timeoutIntent: Object.freeze({
|
||||
event: "scrying-pool.visibility.set",
|
||||
payload: Object.freeze({
|
||||
opId: "op-timeout-001",
|
||||
userId: "user-abc",
|
||||
targetState: "hidden",
|
||||
baseRevision: 0,
|
||||
}),
|
||||
}),
|
||||
|
||||
// ── Hydration payload (persisted world setting shape) ────────────────────
|
||||
hydrationPayload: Object.freeze({
|
||||
_version: 1,
|
||||
matrix: Object.freeze({
|
||||
"user-001": "active",
|
||||
"user-002": "hidden",
|
||||
}),
|
||||
}),
|
||||
|
||||
// ── Malformed: missing baseRevision in intent ─────────────────────────────
|
||||
missingBaseRevision: Object.freeze({
|
||||
event: "scrying-pool.visibility.set",
|
||||
payload: Object.freeze({
|
||||
opId: "op-006",
|
||||
userId: "user-abc",
|
||||
targetState: "hidden",
|
||||
// baseRevision intentionally omitted
|
||||
}),
|
||||
}),
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user