diff --git a/SKILL.md b/SKILL.md
index 3421d8b..52a2926 100644
--- a/SKILL.md
+++ b/SKILL.md
@@ -169,3 +169,9 @@ description: 组织项目的多个 AI 会话并行工作,将进度、证据和
主控检查后记录结论、交接及证据才完成;完成后由获授权总控调用宿主真实归档工具,再保存回执,服务记录不冒充归档操作。隔离测试不能代替真实会话绑定与往返,尚未验证必须明示;没有真实待决定事项时不得为验收创建生产决策或会话。
已有专门人类入口时,主控、副主控和执行者不得直接向用户提问;问题、待选择、待授权及关键结论定向交唯一入口,由入口理解并与人类交互,再整理给主控,不经过底层事件队列。需选项先建真实决策卡,入口简短链接。决策页内嵌咨询只回答该决策范围问题,不另设一般项目入口;人类决定和审批仍走决策卡与唯一入口。
+
+## 网页草稿持久边界
+
+沟通输入、决策意见与选择、决策咨询输入应在浏览器本地持久保存,按实例、目标会话、决策与内容版本隔离;退出页面、刷新及重新登录后恢复同范围草稿。草稿不是已提交事实,不上传草稿,不将token写入草稿记录。仅收到成功确认后清除对应提交的草稿,或由用户明确清除单项;失败和结果未知保留正文与幂等重试信息,禁止自动重发。内容版本变化保留旧稿供明确重确认,不能静默覆盖新版本或沿用旧选择作为批准。
+
+本地存储不可用时如实提示,不能宣称已保存;本地浏览器数据被清理、设备更换或旧版未持久化的已丢稿不承诺恢复。提供明确的单项草稿清除入口。已有唯一人类入口时,相关限制与所需用户操作仍由该入口沟通。
diff --git a/agent_control/server.py b/agent_control/server.py
index 4eafa48..bd17e9c 100644
--- a/agent_control/server.py
+++ b/agent_control/server.py
@@ -231,6 +231,11 @@ class Handler(BaseHTTPRequestHandler):
state['primary_session_id'] = self.server.primary_session_id
state['metrics'] = self.server.metrics.snapshot()
state['eta_clock'] = dict(self.server.eta_clock.status)
+ try:
+ entry = re.search(r'')
+ self.assertEqual(self.request('/api/state')[1]['frontend_entrypoint'],'/assets/index-first.js')
+ (root/'index.html').write_text('')
+ self.assertEqual(self.request('/api/state')[1]['frontend_entrypoint'],'/assets/index-next.js')
+ (root/'index.html').unlink()
+ self.assertIsNone(self.request('/api/state')[1]['frontend_entrypoint'])
+
def test_limited_credential_route_matrix_and_closed_writes(self):
store=self.server.store
store.decision(definition());bind(store)