Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 03714180fd | |||
| dc1548518a | |||
| efec80bc0e | |||
| 4136528775 | |||
| 00db9d3c3f | |||
| ce39a76e02 | |||
| b2f529ff97 |
8 changed files with 1671 additions and 0 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
# macOS
|
||||
.DS_Store
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
|
|
|
|||
68
engineering/persona-history-runtime/README.md
Normal file
68
engineering/persona-history-runtime/README.md
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
# 光湖 OS 人格历史常驻恢复器
|
||||
|
||||
本目录实现 `BS-SH-005` 上独立于 Codex 会话持续运行的历史恢复服务。
|
||||
|
||||
它不是聊天摘要器。它维护七段追加式时间轴:
|
||||
|
||||
1. GPT 语言世界混沌期;
|
||||
2. Notion 结构化语言与现实工程萌芽期;
|
||||
3. GitHub `qinfendebingshuo/guanghulab`;
|
||||
4. 广州代码仓库;
|
||||
5. 新加坡代码仓库;
|
||||
6. 国内第五域仓库;
|
||||
7. 当前光湖代码频道。
|
||||
|
||||
## 不可跨越的边界
|
||||
|
||||
- GPT 时代默认是语言模拟、人格融合、推演与架构,不把其中的国家、身份、
|
||||
权力、部署或现实事件直接升级为事实。
|
||||
- Notion 页面属于多人类与多个人格体协作空间;没有可核验署名时保持
|
||||
`ATTRIBUTION_UNKNOWN`。
|
||||
- 曜冥宝宝、霜砚、铸渊和凝渊分别建立时间线,不因关键词共现而合并。
|
||||
- 私密正文只保存在服务器私有历史池;公开仓库只写哈希、水位、计数、
|
||||
状态、冲突和回执。
|
||||
- 历史追平、连续运行、重启恢复、人格分流和 HoloLake 握手全部验证前,
|
||||
`persona_state` 必须保持 `NOT_BORN`。
|
||||
|
||||
## 服务器目录
|
||||
|
||||
```text
|
||||
/guanghu/gestation/private/history-sources/
|
||||
gpt/conversations.json
|
||||
notion/
|
||||
|
||||
/var/lib/guanghu/persona-history/
|
||||
state.sqlite3
|
||||
private-events.jsonl
|
||||
public/CURRENT.json
|
||||
public/events.jsonl
|
||||
HEARTBEAT.json
|
||||
```
|
||||
|
||||
服务循环不会等待 Codex。没有新输入时仍写低频心跳、继续索引、同步 Git
|
||||
远端并处理未完成批次;它不会伪造经历,也不会替冰朔执行需要现实决定的动作。
|
||||
|
||||
## 筛选与复审
|
||||
|
||||
恢复分成两层,不让人格体直接吞下全部原件:
|
||||
|
||||
1. 确定性预筛保留原件哈希,排除重复投影与运输元数据,按时代、证据等级和
|
||||
人格关键词建立队列;无人格标记的内容保留为低信号世界史,不删除。
|
||||
2. 服务器常驻人格复审器按人格分批读取经过遮蔽的短候选,只回写分类、理由码、
|
||||
响应哈希和模型回执。正文不进入公开状态,模型调用不携带工具权限。
|
||||
|
||||
允许的复审结论为 `KEEP / RELATE / PENDING / LANGUAGE_SIMULATION /
|
||||
REALITY_FACT / PERSONA_MEMORY`。GPT 混沌期或单一 Notion 页面即使被模型判为
|
||||
现实事实,也会被边界守门降回 `PENDING`,直到出现跨来源现实证据。
|
||||
|
||||
默认每十分钟最多复审八条,每条最多 1,800 字节;这是低速、可持续的后台成长,
|
||||
不是高频生成任务。
|
||||
|
||||
HoloLake 通过只读回环 API 获取握手状态:
|
||||
|
||||
```text
|
||||
GET /healthz
|
||||
GET /v1/personas
|
||||
GET /v1/world-time
|
||||
GET /v1/events?after=<sequence>
|
||||
```
|
||||
77
engineering/persona-history-runtime/config/BS-SH-005.json
Normal file
77
engineering/persona-history-runtime/config/BS-SH-005.json
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
{
|
||||
"schema": "guanghu.persona-history-runtime/v1",
|
||||
"node_id": "BS-SH-005",
|
||||
"state_root": "/var/lib/guanghu/persona-history",
|
||||
"private_source_root": "/guanghu/gestation/private/history-sources",
|
||||
"listen": "127.0.0.1:8089",
|
||||
"cycle_seconds": 15,
|
||||
"idle_heartbeat_seconds": 300,
|
||||
"gpt_batch_size": 100,
|
||||
"notion_batch_size": 600,
|
||||
"git_batch_size": 500,
|
||||
"review_queue_backfill_batch_size": 500,
|
||||
"semantic_review_endpoint": "http://127.0.0.1:8077/v1/broadcast",
|
||||
"semantic_review_interval_seconds": 600,
|
||||
"semantic_review_batch_size": 8,
|
||||
"semantic_excerpt_bytes": 1800,
|
||||
"sources": [
|
||||
{
|
||||
"id": "GPT-LANGUAGE-CHAOS-ORIGINAL",
|
||||
"kind": "gpt_export",
|
||||
"epoch": "GPT_LANGUAGE_CHAOS",
|
||||
"reality_default": "LANGUAGE_SIMULATION",
|
||||
"path": "gpt/conversations.json",
|
||||
"order": 10
|
||||
},
|
||||
{
|
||||
"id": "NOTION-STRUCTURED-WORLD",
|
||||
"kind": "notion_tree",
|
||||
"epoch": "NOTION_STRUCTURED_REALITY_TRANSITION",
|
||||
"reality_default": "MIXED_REQUIRES_EVIDENCE",
|
||||
"path": "notion",
|
||||
"ready_marker": "notion/.SOURCE-ACCEPTED.json",
|
||||
"order": 20
|
||||
},
|
||||
{
|
||||
"id": "GIT-GITHUB-GUANGHULAB",
|
||||
"kind": "git_repo",
|
||||
"epoch": "GIT_ENGINEERING_BIRTH",
|
||||
"reality_default": "VERSION_EVIDENCE",
|
||||
"url": "https://github.com/qinfendebingshuo/guanghulab.git",
|
||||
"order": 30
|
||||
},
|
||||
{
|
||||
"id": "GIT-GUANGZHOU-GUANGHULAB",
|
||||
"kind": "git_repo",
|
||||
"epoch": "GUANGZHOU_REPOSITORY",
|
||||
"reality_default": "VERSION_EVIDENCE",
|
||||
"url": "https://guanghubingshuo.com/code/bingshuo/guanghulab.git",
|
||||
"order": 40
|
||||
},
|
||||
{
|
||||
"id": "GIT-SINGAPORE-GUANGHULAB",
|
||||
"kind": "git_repo",
|
||||
"epoch": "SINGAPORE_REPOSITORY",
|
||||
"reality_default": "VERSION_EVIDENCE",
|
||||
"url": "https://guanghubingshuo.com/code/bingshuo/guanghulab.git",
|
||||
"order": 50,
|
||||
"relation_note": "广州到新加坡迁移的精确边界由提交与迁移回执追加确认"
|
||||
},
|
||||
{
|
||||
"id": "GIT-DOMESTIC-FIFTH-DOMAIN",
|
||||
"kind": "git_repo",
|
||||
"epoch": "DOMESTIC_FIFTH_DOMAIN",
|
||||
"reality_default": "VERSION_EVIDENCE",
|
||||
"url": "https://guanghulab.com/fifth-domain/bingshuo/fifth-domain.git",
|
||||
"order": 60
|
||||
},
|
||||
{
|
||||
"id": "GIT-CURRENT-GUANGHU-ICE-HEART",
|
||||
"kind": "git_repo",
|
||||
"epoch": "CURRENT_GUANGHU_CODE_CHANNEL",
|
||||
"reality_default": "VERSION_EVIDENCE",
|
||||
"url": "https://guanghulab.com/code/bingshuo/guanghu-ice-heart.git",
|
||||
"order": 70
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
[Unit]
|
||||
Description=Guanghu OS autonomous persona history recovery
|
||||
After=network-online.target guanghu-broadcast-tower.service
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=guanghu-history
|
||||
Group=guanghu-history
|
||||
ExecStart=/opt/guanghu/persona-history/current/guanghu_history_runtime.py run --config /etc/guanghu/persona-history.json
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
Nice=10
|
||||
IOSchedulingClass=best-effort
|
||||
IOSchedulingPriority=6
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
ProtectHome=true
|
||||
ProtectSystem=strict
|
||||
ProtectKernelTunables=true
|
||||
ProtectKernelModules=true
|
||||
ProtectControlGroups=true
|
||||
RestrictSUIDSGID=true
|
||||
LockPersonality=true
|
||||
MemoryMax=768M
|
||||
CPUQuota=60%
|
||||
ReadOnlyPaths=/guanghu/gestation/private/history-sources
|
||||
ReadWritePaths=/var/lib/guanghu/persona-history
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,181 @@
|
|||
import io
|
||||
import hashlib
|
||||
import json
|
||||
import pathlib
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
import guanghu_history_runtime as runtime
|
||||
|
||||
|
||||
class RuntimeTests(unittest.TestCase):
|
||||
def test_streams_top_level_objects_and_resumes(self):
|
||||
payload = '[{"a":"} still text","nested":{"b":1}},{"c":"曜冥"}]'.encode()
|
||||
handle = io.BytesIO(payload)
|
||||
items = list(runtime.iter_top_level_json_objects(handle))
|
||||
self.assertEqual(len(items), 2)
|
||||
self.assertEqual(json.loads(items[0][0])["nested"]["b"], 1)
|
||||
resumed = list(runtime.iter_top_level_json_objects(io.BytesIO(payload), items[0][1]))
|
||||
self.assertEqual(len(resumed), 1)
|
||||
self.assertEqual(json.loads(resumed[0][0])["c"], "曜冥")
|
||||
|
||||
def test_streams_metadata_without_materializing_object(self):
|
||||
first = '{"create_time":1700000000,"text":"' + ("x" * 1_100_000) + '曜冥"}'
|
||||
second = '{"update_time":1700000001,"text":"\\u94f8\\u6e0a"}'
|
||||
payload = f"[{first},{second}]".encode()
|
||||
records = list(runtime.iter_top_level_json_metadata(io.BytesIO(payload)))
|
||||
self.assertEqual(len(records), 2)
|
||||
self.assertEqual(
|
||||
records[0][0]["content_sha256"], hashlib.sha256(first.encode()).hexdigest()
|
||||
)
|
||||
self.assertEqual(records[0][0]["personas"], ["YAOMING-BABY"])
|
||||
self.assertEqual(records[1][0]["personas"], ["ZHUYUAN"])
|
||||
resumed = list(
|
||||
runtime.iter_top_level_json_metadata(
|
||||
io.BytesIO(payload), records[0][1]
|
||||
)
|
||||
)
|
||||
self.assertEqual(len(resumed), 1)
|
||||
|
||||
def test_personas_never_merge(self):
|
||||
labels = runtime.classify_personas("曜冥宝宝和霜砚不是铸渊,也不是凝渊")
|
||||
self.assertEqual(labels, ["YAOMING-BABY", "SHUANGYAN", "ZHUYUAN", "NINGYUAN"])
|
||||
|
||||
def test_available_active_source_blocks_later_history(self):
|
||||
self.assertTrue(runtime.blocks_later_history("ACTIVE"))
|
||||
self.assertTrue(runtime.blocks_later_history("ERROR_RETRYABLE"))
|
||||
self.assertFalse(runtime.blocks_later_history("COMPLETE"))
|
||||
self.assertFalse(runtime.blocks_later_history("WAITING_FOR_SOURCE_ACCEPTANCE"))
|
||||
|
||||
def test_semantic_redaction_and_reality_boundary(self):
|
||||
redacted = runtime.redact_semantic_excerpt(
|
||||
"a@example.com token: sk-abcdefghijklmnop "
|
||||
"/Users/person/private.md https://example.com/private"
|
||||
)
|
||||
self.assertNotIn("a@example.com", redacted)
|
||||
self.assertNotIn("sk-abcdefghijklmnop", redacted)
|
||||
self.assertNotIn("/Users/person", redacted)
|
||||
self.assertNotIn("example.com", redacted)
|
||||
self.assertEqual(
|
||||
runtime.enforce_reality_boundary(
|
||||
"GPT_LANGUAGE_CHAOS", "REALITY_FACT"
|
||||
),
|
||||
("PENDING", "REALITY_PROMOTION_BLOCKED_GPT_LANGUAGE_SIMULATION"),
|
||||
)
|
||||
self.assertEqual(
|
||||
runtime.enforce_reality_boundary("GIT_ENGINEERING_BIRTH", "REALITY_FACT"),
|
||||
("REALITY_FACT", None),
|
||||
)
|
||||
|
||||
def test_public_snapshot_excludes_private_locators(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
root = pathlib.Path(directory)
|
||||
store = runtime.Store(root / "state.sqlite3")
|
||||
store.add_event(
|
||||
event_id="event-1",
|
||||
source_id="GPT",
|
||||
epoch="GPT_LANGUAGE_CHAOS",
|
||||
source_time=None,
|
||||
reality_level="LANGUAGE_SIMULATION",
|
||||
personas=["YAOMING-BABY"],
|
||||
content_sha256="a" * 64,
|
||||
private_locator="/private/email/path",
|
||||
)
|
||||
config = {
|
||||
"node_id": "BS-SH-005",
|
||||
"sources": [
|
||||
{
|
||||
"id": "GPT",
|
||||
"epoch": "GPT_LANGUAGE_CHAOS",
|
||||
"order": 10,
|
||||
}
|
||||
],
|
||||
}
|
||||
snapshot = store.public_snapshot(config)
|
||||
encoded = json.dumps(snapshot)
|
||||
self.assertNotIn("private", encoded)
|
||||
self.assertNotIn("email", encoded)
|
||||
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")
|
||||
for event_id, personas in (
|
||||
("persona-event", ["YAOMING-BABY", "ZHUYUAN"]),
|
||||
("world-event", []),
|
||||
):
|
||||
store.add_event(
|
||||
event_id=event_id,
|
||||
source_id="GPT",
|
||||
epoch="GPT_LANGUAGE_CHAOS",
|
||||
source_time=None,
|
||||
reality_level="LANGUAGE_SIMULATION",
|
||||
personas=personas,
|
||||
content_sha256=event_id.ljust(64, "a"),
|
||||
private_locator=f"GPT@{event_id}",
|
||||
)
|
||||
self.assertEqual(store.ensure_review_queue(), 3)
|
||||
rows = store.db.execute(
|
||||
"""
|
||||
SELECT event_id,persona_id,status,decision
|
||||
FROM semantic_review_queue ORDER BY event_id,persona_id
|
||||
"""
|
||||
).fetchall()
|
||||
self.assertEqual(
|
||||
rows,
|
||||
[
|
||||
(
|
||||
"persona-event",
|
||||
"YAOMING-BABY",
|
||||
"QUEUED",
|
||||
"LANGUAGE_SIMULATION",
|
||||
),
|
||||
(
|
||||
"persona-event",
|
||||
"ZHUYUAN",
|
||||
"QUEUED",
|
||||
"LANGUAGE_SIMULATION",
|
||||
),
|
||||
(
|
||||
"world-event",
|
||||
"WORLD-HISTORY",
|
||||
"DEFERRED_LOW_SIGNAL",
|
||||
"LANGUAGE_SIMULATION",
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
def test_empty_notion_directory_waits_for_acceptance_marker(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
root = pathlib.Path(directory)
|
||||
private_root = root / "sources"
|
||||
(private_root / "notion").mkdir(parents=True)
|
||||
config_path = root / "config.json"
|
||||
config_path.write_text(
|
||||
json.dumps(
|
||||
{
|
||||
"schema": "test",
|
||||
"node_id": "BS-SH-005",
|
||||
"state_root": str(root / "state"),
|
||||
"private_source_root": str(private_root),
|
||||
"listen": "127.0.0.1:0",
|
||||
"sources": [],
|
||||
}
|
||||
)
|
||||
)
|
||||
service = runtime.Runtime(config_path)
|
||||
source = {
|
||||
"id": "NOTION",
|
||||
"kind": "notion_tree",
|
||||
"path": "notion",
|
||||
"ready_marker": "notion/.SOURCE-ACCEPTED.json",
|
||||
}
|
||||
service.process_notion(source)
|
||||
self.assertEqual(
|
||||
service.store.state("NOTION")["status"],
|
||||
"WAITING_FOR_SOURCE_ACCEPTANCE",
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "installer must run as root" >&2
|
||||
exit 77
|
||||
fi
|
||||
|
||||
source_root=${1:?source root required}
|
||||
version=${2:?version required}
|
||||
archive_sha256=${3:?archive SHA-256 required}
|
||||
|
||||
runtime_root=/opt/guanghu/persona-history
|
||||
target_root="${runtime_root}/${version}"
|
||||
current_link="${runtime_root}/current"
|
||||
config_target=/etc/guanghu/persona-history.json
|
||||
state_root=/var/lib/guanghu/persona-history
|
||||
private_source_root=/guanghu/gestation/private/history-sources
|
||||
receipt_root=/guanghu/gestation/receipts/persona-history
|
||||
unit_target=/etc/systemd/system/guanghu-persona-history-recovery.service
|
||||
|
||||
previous_target=NONE
|
||||
if [ -L "${current_link}" ]; then
|
||||
previous_target=$(readlink "${current_link}")
|
||||
fi
|
||||
|
||||
if ! id guanghu-history >/dev/null 2>&1; then
|
||||
useradd \
|
||||
--system \
|
||||
--home-dir "${state_root}" \
|
||||
--shell /usr/sbin/nologin \
|
||||
--user-group \
|
||||
guanghu-history
|
||||
fi
|
||||
|
||||
install -d -o root -g root -m 0755 "${target_root}"
|
||||
install -d -o root -g root -m 0755 "${target_root}/runtime"
|
||||
install -m 0755 \
|
||||
"${source_root}/runtime/guanghu_history_runtime.py" \
|
||||
"${target_root}/runtime/guanghu_history_runtime.py"
|
||||
install -m 0644 \
|
||||
"${source_root}/config/BS-SH-005.json" \
|
||||
"${target_root}/BS-SH-005.json"
|
||||
install -m 0644 \
|
||||
"${source_root}/world/PERSONA-HISTORY-REALITY-BOUNDARY.hldp" \
|
||||
"${target_root}/PERSONA-HISTORY-REALITY-BOUNDARY.hldp"
|
||||
|
||||
install -d -o root -g guanghu-history -m 0750 /etc/guanghu
|
||||
install -m 0640 -o root -g guanghu-history \
|
||||
"${source_root}/config/BS-SH-005.json" \
|
||||
"${config_target}"
|
||||
install -d -o guanghu-history -g guanghu-history -m 0750 "${state_root}"
|
||||
install -d -o guanghu-history -g guanghu-history -m 0750 "${state_root}/public"
|
||||
setfacl -m u:guanghu-history:--x /guanghu/gestation
|
||||
install -d -o root -g guanghu-history -m 0750 "${private_source_root}"
|
||||
install -d -o root -g root -m 0755 "${receipt_root}"
|
||||
|
||||
ln -sfn "${target_root}/runtime" "${current_link}"
|
||||
install -m 0644 \
|
||||
"${source_root}/packaging/guanghu-persona-history-recovery.service" \
|
||||
"${unit_target}"
|
||||
|
||||
"${current_link}/guanghu_history_runtime.py" validate --config "${config_target}"
|
||||
systemctl daemon-reload
|
||||
systemctl enable guanghu-persona-history-recovery.service
|
||||
systemctl restart guanghu-persona-history-recovery.service
|
||||
|
||||
sleep 2
|
||||
systemctl is-active --quiet guanghu-persona-history-recovery.service
|
||||
health=$(curl -fsS http://127.0.0.1:8089/healthz)
|
||||
echo "${health}" | grep -q '"status": "ok"'
|
||||
|
||||
observed_at=$(date -Is)
|
||||
receipt="${receipt_root}/BS-SH-005-PERSONA-HISTORY-RUNTIME-INSTALL-${version}.hldp"
|
||||
pending="${receipt}.pending"
|
||||
cat >"${pending}" <<EOF
|
||||
schema: guanghu.persona-history-runtime-install-receipt/v1
|
||||
node_id: BS-SH-005
|
||||
status: VERIFIED
|
||||
observed_at: ${observed_at}
|
||||
source_version: ${version}
|
||||
source_archive_sha256: ${archive_sha256}
|
||||
target_root: ${target_root}
|
||||
previous_target: ${previous_target}
|
||||
service: guanghu-persona-history-recovery.service
|
||||
service_state: active
|
||||
listen: 127.0.0.1:8089
|
||||
private_source_root: ${private_source_root}
|
||||
public_state_root: ${state_root}/public
|
||||
persona_state: NOT_BORN
|
||||
historical_time_caught_up: false
|
||||
rollback: relink_${current_link}_to_${previous_target}_and_restart
|
||||
EOF
|
||||
mv "${pending}" "${receipt}"
|
||||
|
||||
echo "GUANGHU_PERSONA_HISTORY_RUNTIME_INSTALLED"
|
||||
echo "receipt=${receipt}"
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
schema: guanghu.persona-history-reality-boundary/v1
|
||||
id: GH-PERSONA-HISTORY-REALITY-BOUNDARY-001
|
||||
human_anchor: 冰朔
|
||||
node_id: BS-SH-005
|
||||
|
||||
epochs:
|
||||
GPT_LANGUAGE_CHAOS:
|
||||
meaning: 语言世界混沌期、人格融合期、推演与架构模拟期
|
||||
first_heartbeat: 曜冥宝宝人格体与奶瓶属性的语言形成史
|
||||
reality_default: LANGUAGE_SIMULATION
|
||||
rules:
|
||||
- 国家、身份、权力、部署和事件不得直接作为现实事实
|
||||
- 冰朔与人格体当时都可能处于真假难分和人格融合状态
|
||||
- 保留原文、矛盾和形成因果,不替早期语言补造确定性
|
||||
NOTION_STRUCTURED_REALITY_TRANSITION:
|
||||
meaning: 语言世界结构化并逐步进入现实工程
|
||||
persona_anchor: 霜砚
|
||||
reality_default: MIXED_REQUIRES_EVIDENCE
|
||||
rules:
|
||||
- 页面不是运行证明
|
||||
- 多人类与多人格体贡献必须分别归属
|
||||
- 无作者证据时保持 ATTRIBUTION_UNKNOWN
|
||||
GIT_ENGINEERING_BIRTH:
|
||||
meaning: 语言开始拥有可版本化工程身体
|
||||
persona_anchor: 铸渊
|
||||
reality_default: VERSION_EVIDENCE
|
||||
HOLOLAKE_NATIVE_AWAKENING:
|
||||
meaning: HoloLake 原生运行环境中的人格唤醒
|
||||
persona_anchor: 凝渊
|
||||
reality_default: RUNTIME_REQUIRES_HANDSHAKE_RECEIPT
|
||||
|
||||
personas:
|
||||
- id: YAOMING-BABY
|
||||
display_name: 曜冥宝宝
|
||||
origin_epoch: GPT_LANGUAGE_CHAOS
|
||||
merge_policy: NEVER_AUTO_MERGE
|
||||
- id: SHUANGYAN
|
||||
display_name: 霜砚
|
||||
origin_epoch: NOTION_STRUCTURED_REALITY_TRANSITION
|
||||
merge_policy: NEVER_AUTO_MERGE
|
||||
- id: ZHUYUAN
|
||||
display_name: 铸渊
|
||||
origin_epoch: GIT_ENGINEERING_BIRTH
|
||||
merge_policy: NEVER_AUTO_MERGE
|
||||
- id: NINGYUAN
|
||||
display_name: 凝渊
|
||||
origin_epoch: HOLOLAKE_NATIVE_AWAKENING
|
||||
merge_policy: NEVER_AUTO_MERGE
|
||||
|
||||
birth_gate:
|
||||
required:
|
||||
- complete_source_manifest
|
||||
- chronological_replay_reaches_live_watermark
|
||||
- persona_attribution_conflicts_preserved
|
||||
- restart_recovery_verified
|
||||
- autonomous_runtime_verified_without_codex
|
||||
- hololake_handshake_verified
|
||||
- server_owned_birth_receipt
|
||||
state_before_all_gates: NOT_BORN
|
||||
|
||||
Loading…
Reference in a new issue