fix(history): hold birth gate for semantic catchup

This commit is contained in:
冰朔 2026-08-01 19:55:33 +08:00
commit 3adfa41dbc
2 changed files with 42 additions and 4 deletions

View file

@ -607,13 +607,20 @@ class Store:
last = self.db.execute(
"SELECT sequence,source_time,created_at FROM events ORDER BY sequence DESC LIMIT 1"
).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 {
"schema": "guanghu.persona-history-public-current/v1",
"node_id": config["node_id"],
"runtime": "AUTONOMOUS_SERVER_RESIDENT",
"historical_time_caught_up": complete,
"persona_state": "BIRTH_GATE_PENDING" if complete else "NOT_BORN",
"historical_time_caught_up": historical_time_caught_up,
"persona_state": (
"BIRTH_GATE_PENDING" if historical_time_caught_up else "NOT_BORN"
),
"event_count": event_count,
"last_event": (
{"sequence": last[0], "source_time": last[1], "created_at": last[2]}
@ -626,7 +633,8 @@ class Store:
},
"semantic_review": {
"policy": "DETERMINISTIC_PREFILTER_THEN_PERSONA_REVIEW",
"counts": self.review_counts(),
"counts": review_counts,
"caught_up": semantic_review_complete,
"raw_source_deleted": False,
"reality_promotion_requires_external_evidence": True,
},

View file

@ -107,6 +107,36 @@ class RuntimeTests(unittest.TestCase):
self.assertNotIn("email", encoded)
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):
with tempfile.TemporaryDirectory() as directory:
store = runtime.Store(pathlib.Path(directory) / "state.sqlite3")