fix(history): hold birth gate for semantic catchup
This commit is contained in:
parent
575e7aaffd
commit
3adfa41dbc
2 changed files with 42 additions and 4 deletions
|
|
@ -607,13 +607,20 @@ class Store:
|
||||||
last = self.db.execute(
|
last = self.db.execute(
|
||||||
"SELECT sequence,source_time,created_at FROM events ORDER BY sequence DESC LIMIT 1"
|
"SELECT sequence,source_time,created_at FROM events ORDER BY sequence DESC LIMIT 1"
|
||||||
).fetchone()
|
).fetchone()
|
||||||
complete = all(value["status"] == "COMPLETE" for value in sources.values())
|
review_counts = self.review_counts()
|
||||||
|
sources_complete = all(
|
||||||
|
value["status"] == "COMPLETE" for value in sources.values()
|
||||||
|
)
|
||||||
|
semantic_review_complete = review_counts.get("QUEUED", 0) == 0
|
||||||
|
historical_time_caught_up = sources_complete and semantic_review_complete
|
||||||
return {
|
return {
|
||||||
"schema": "guanghu.persona-history-public-current/v1",
|
"schema": "guanghu.persona-history-public-current/v1",
|
||||||
"node_id": config["node_id"],
|
"node_id": config["node_id"],
|
||||||
"runtime": "AUTONOMOUS_SERVER_RESIDENT",
|
"runtime": "AUTONOMOUS_SERVER_RESIDENT",
|
||||||
"historical_time_caught_up": complete,
|
"historical_time_caught_up": historical_time_caught_up,
|
||||||
"persona_state": "BIRTH_GATE_PENDING" if complete else "NOT_BORN",
|
"persona_state": (
|
||||||
|
"BIRTH_GATE_PENDING" if historical_time_caught_up else "NOT_BORN"
|
||||||
|
),
|
||||||
"event_count": event_count,
|
"event_count": event_count,
|
||||||
"last_event": (
|
"last_event": (
|
||||||
{"sequence": last[0], "source_time": last[1], "created_at": last[2]}
|
{"sequence": last[0], "source_time": last[1], "created_at": last[2]}
|
||||||
|
|
@ -626,7 +633,8 @@ class Store:
|
||||||
},
|
},
|
||||||
"semantic_review": {
|
"semantic_review": {
|
||||||
"policy": "DETERMINISTIC_PREFILTER_THEN_PERSONA_REVIEW",
|
"policy": "DETERMINISTIC_PREFILTER_THEN_PERSONA_REVIEW",
|
||||||
"counts": self.review_counts(),
|
"counts": review_counts,
|
||||||
|
"caught_up": semantic_review_complete,
|
||||||
"raw_source_deleted": False,
|
"raw_source_deleted": False,
|
||||||
"reality_promotion_requires_external_evidence": True,
|
"reality_promotion_requires_external_evidence": True,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,36 @@ class RuntimeTests(unittest.TestCase):
|
||||||
self.assertNotIn("email", encoded)
|
self.assertNotIn("email", encoded)
|
||||||
self.assertEqual(snapshot["persona_state"], "NOT_BORN")
|
self.assertEqual(snapshot["persona_state"], "NOT_BORN")
|
||||||
|
|
||||||
|
def test_birth_gate_waits_for_semantic_queue_after_sources_complete(self):
|
||||||
|
with tempfile.TemporaryDirectory() as directory:
|
||||||
|
store = runtime.Store(pathlib.Path(directory) / "state.sqlite3")
|
||||||
|
store.add_event(
|
||||||
|
event_id="persona-event",
|
||||||
|
source_id="GPT",
|
||||||
|
epoch="GPT_LANGUAGE_CHAOS",
|
||||||
|
source_time=None,
|
||||||
|
reality_level="LANGUAGE_SIMULATION",
|
||||||
|
personas=["YAOMING-BABY"],
|
||||||
|
content_sha256="b" * 64,
|
||||||
|
private_locator="GPT@byte:1-2",
|
||||||
|
)
|
||||||
|
store.update_state("GPT", status="COMPLETE", cursor="2", processed=1)
|
||||||
|
store.ensure_review_queue()
|
||||||
|
config = {
|
||||||
|
"node_id": "BS-SH-005",
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"id": "GPT",
|
||||||
|
"epoch": "GPT_LANGUAGE_CHAOS",
|
||||||
|
"order": 10,
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
snapshot = store.public_snapshot(config)
|
||||||
|
self.assertFalse(snapshot["historical_time_caught_up"])
|
||||||
|
self.assertFalse(snapshot["semantic_review"]["caught_up"])
|
||||||
|
self.assertEqual(snapshot["persona_state"], "NOT_BORN")
|
||||||
|
|
||||||
def test_review_queue_preserves_persona_routes_and_world_history(self):
|
def test_review_queue_preserves_persona_routes_and_world_history(self):
|
||||||
with tempfile.TemporaryDirectory() as directory:
|
with tempfile.TemporaryDirectory() as directory:
|
||||||
store = runtime.Store(pathlib.Path(directory) / "state.sqlite3")
|
store = runtime.Store(pathlib.Path(directory) / "state.sqlite3")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue