docs: finalize integrated local product state
This commit is contained in:
@@ -4,6 +4,18 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
|
||||
|
||||
## Integrated Through
|
||||
|
||||
- Plugin-navigation sources `b3f4166` and `e237941` from task
|
||||
`20260831-consolidate-plugin-navigation-3d9a6c71` are integrated through
|
||||
merge `a278ca3`. Coding history/quota source `d523b72` from task
|
||||
`20260831-fix-history-quota-errors-6c2a91e4` is integrated through merge
|
||||
`69832e0`, and assistant progress-preview source `8d878eb` from task
|
||||
`20260831-show-progress-messages-a14f9c2d` is integrated through merge
|
||||
`a8fd95f`. Project Configuration now owns the only visible Plugin Services
|
||||
surface; Pi compaction no longer removes visible active-branch history;
|
||||
recognized Token Point exhaustion remains safely actionable after reopen;
|
||||
and collapsed process previews remain anchored to their first displayable
|
||||
line. Historical source `b1f51be` remains explicitly excluded because
|
||||
ADR-005 continues to retire the OpenMAIC Learning Player packaging chain.
|
||||
- Human-authorized takeover task `20260831-promote-main-merge-5e9c7a31` completed
|
||||
the already-started local `main` merge as
|
||||
`03a9e866d4366e0a1cb416e26b424fe981071310`, recorded the transfer in
|
||||
@@ -49,7 +61,9 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
|
||||
the authenticated Marketplace/Library client, immutable Package Store, trusted
|
||||
release verification, effective installed-plugin resolution, and frozen Pi worker
|
||||
materialization; Renderer exposes Marketplace, My Plugins, and Project Plugins
|
||||
projections without receiving credentials, paths, Admissions, or signed URLs.
|
||||
projections only inside Project Configuration's single Plugin Services sheet,
|
||||
without receiving credentials, paths, Admissions, or signed URLs. The former
|
||||
standalone routes are compatibility redirects to the corresponding sheet tab.
|
||||
Data Service remains system-included and consumes zero Token Points. R7 Standards
|
||||
and Spec reviews passed with zero findings, and XMA-01 passed all twelve live groups
|
||||
against real PostgreSQL and a signed-in packaged Windows client. The later
|
||||
@@ -215,9 +229,11 @@ Canvas 侧栏提供“获取灵感”进入 Prompt Museum。列表、筛选、
|
||||
|
||||
Makelore 在会话恢复、登录和刷新后由 Electron Main 请求 Works `/api/auth/me`,Renderer 只获得 Code、Canvas、Learning、Robot 四个布尔权限。缺失 `module_access` 或任一字段时默认开启;服务端 `design` 显式映射客户端 `painting`。被关闭的模块卡片置灰且不可点击,根路由、深层路由和别名路由均在 `MainLayout` 或模块初始化前阻断。Code provider 等待认证权限加载完成;权限查询返回终止性 `401` 时同时清理 Main 和 Renderer 会话。`/settings` 是全局设置,不受 Code 入口策略阻断。该机制只是客户端入口策略,不代替服务端 API 授权。
|
||||
|
||||
插件不再占用编程侧栏或独立产品页面。项目配置中的“插件服务”是唯一可见入口,并以 URL-backed 的“发现插件 / 我的插件 / 项目启用”标签分别承载 Marketplace、账号 Library/本机安装和当前项目启用配置;旧 `/plugin-marketplace`、`/my-plugins` 与 `/project-plugins` 路由只做兼容跳转。获取、设备安装、项目启用、Agent Skill 分配、运行授权和计费仍是独立生命周期,不因导航合并而自动推进。
|
||||
|
||||
AI 学习现在是已启用的运营精选项目目录,并继续受登录和 `module_access.learning` 控制。Renderer 通过 Main-owned Host API 获取分页项目卡片和 README 详情;Markdown 支持 GFM、禁用原始 HTML。服务端发布时只校验图片 URL 为无凭据、默认端口、无 fragment 且当前 DNS 结果全部为公网地址的 HTTPS URL,保留地址而不下载、识别格式、转码或镜像;客户端仅为 README 图片节点启用直连,因此 SVG 和 Electron 支持的其他格式可直接显示,单图失败不阻断详情。封面和历史发布媒体继续走受控路径。详情页的下载按钮打开系统保存对话框;Main 将 ZIP 流式写入临时文件,只允许最多五跳同 Works origin 重定向,不校验 `Content-Length`、`archiveBytes`、实际流字节数或客户端大小上限,校验 SHA-256 和 ZIP 签名后原子保存,Renderer 只接收 `saved` 或 `cancelled`。课程生成、进度、本地课程库、OpenMAIC player、Agent、ASR、课堂 runtime、Learning IPC 和 player artifact 打包已删除且没有兼容读取路径;历史课程数据保留但不再读取。服务端和客户端源码契约已完成,不代表生产部署或真实账号安装包联调已经完成。
|
||||
|
||||
AI 编程已经硬切到精确 pin 的 Pi `0.84.2`,不存在 OpenCode fallback 或双 runtime。project、Agent 与 Conversation 只在 `.makelore/project.json` 和 `.makelore/conversations.json` 使用本地 schema v2;当前客户端不从 `.niancode` 或 `.opencode` 读取、迁移或删除项目元数据。Electron Main 按需启动一个长驻父 Agent Server,每条 active/warm Conversation 在其中拥有独立 Runtime/Session/channel、credential store、extension context、generation/seq、Snapshot/Patch、model/thinking、队列、interaction 与错误状态,Composer 在 lazy prepare 期间仍可编辑。Renderer 只通过 `/api/coding/*` 和 Snapshot-first/`patch-batch` SSE 消费产品中立合同;gap/reconnect 只恢复目标 Conversation,accepted/uncertain mutation 不自动重放。未解析 Conversation 第一次选模先 validate 并持久化 resolved metadata,再 prepare;同账号模型切换使用 target `set_model`,跨账号只重建目标逻辑线程。top-level 逻辑 turn 并发为 4,warm idle logical-thread LRU 为 8;independent child 进程并发为 4 并使用 FIFO 进程预算 8;coding child 与 parent 共用项目 write lease。prompt/compact confirmation timeout 后仍保留 run/Agent-Server-or-child-process/background ownership,迟到 success/failure/exit/abort 单调且 exactly-once 收敛,页面隐藏不会停止 active/uncertain run。线程级替换只使目标 generation 失效;整个 Agent Server 退出会统一使所有旧 channel 失效,但 Main/Renderer 存活且下次恢复只重启一个 Server。Pi `0.84.2` 手动 compact 不发 `agent_settled`,由 correlated compact RPC 结果终结。父 Provider credential 只进入选中逻辑线程的内存 credential store,child 凭据只进入该短命进程;确定性的 Works user-context 缺失会失效 gateway credential、fail fast、不重放并投影固定 Provider-auth 错误,不归类为 Pi crash。真实 Provider 验证仍为用户明确接受的未验证风险,macOS x64/arm64 与 native non-WSL Linux 也未通过平台发布门禁。
|
||||
AI 编程已经硬切到精确 pin 的 Pi `0.84.2`,不存在 OpenCode fallback 或双 runtime。project、Agent 与 Conversation 只在 `.makelore/project.json` 和 `.makelore/conversations.json` 使用本地 schema v2;当前客户端不从 `.niancode` 或 `.opencode` 读取、迁移或删除项目元数据。Electron Main 按需启动一个长驻父 Agent Server,每条 active/warm Conversation 在其中拥有独立 Runtime/Session/channel、credential store、extension context、generation/seq、Snapshot/Patch、model/thinking、队列、interaction 与错误状态,Composer 在 lazy prepare 期间仍可编辑。Renderer 只通过 `/api/coding/*` 和 Snapshot-first/`patch-batch` SSE 消费产品中立合同;gap/reconnect 只恢复目标 Conversation,accepted/uncertain mutation 不自动重放。Session hydration 沿完整 active branch 投影可见历史,Pi compaction 只改变模型上下文并保持 summary 私有;Renderer 首次挂载最近 120 个节点,向上滚动时按 100 个节点追加更早内容并补偿新增高度以保持阅读锚点。折叠的 thinking、助手过程说明与工具输出固定展示第一条可见内容和首个非空行,横向偏移保持为零,展开后仍显示完整内容。未解析 Conversation 第一次选模先 validate 并持久化 resolved metadata,再 prepare;同账号模型切换使用 target `set_model`,跨账号只重建目标逻辑线程。top-level 逻辑 turn 并发为 4,warm idle logical-thread LRU 为 8;independent child 进程并发为 4 并使用 FIFO 进程预算 8;coding child 与 parent 共用项目 write lease。prompt/compact confirmation timeout 后仍保留 run/Agent-Server-or-child-process/background ownership,迟到 success/failure/exit/abort 单调且 exactly-once 收敛,页面隐藏不会停止 active/uncertain run。线程级替换只使目标 generation 失效;整个 Agent Server 退出会统一使所有旧 channel 失效,但 Main/Renderer 存活且下次恢复只重启一个 Server。Pi `0.84.2` 手动 compact 不发 `agent_settled`,由 correlated compact RPC 结果终结。父 Provider credential 只进入选中逻辑线程的内存 credential store,child 凭据只进入该短命进程;确定性的 Works user-context 缺失会失效 gateway credential、fail fast、不重放并投影固定 Provider-auth 错误,不归类为 Pi crash。精确的 `403 token_point_balance_exhausted` / `词元点数余额不足` 上游响应会在 Main 内归类为不可重试的配额耗尽,Renderer 只收到稳定 `CODING_PROVIDER_QUOTA_EXHAUSTED` 与安全中文提示;重开会话仍保留该提示,不暴露上游 request id 或原始错误正文。真实 Provider 验证仍为用户明确接受的未验证风险,macOS x64/arm64 与 native non-WSL Linux 也未通过平台发布门禁。
|
||||
|
||||
Updater 仍由 Electron Main 选择目标 feed、记录原始诊断并保持失败语义。正式稳定源缺少对应平台 manifest 时,设置页只显示一条简洁中文提示并允许重试,不把缺包误报为已是最新版,也不向普通界面暴露堆栈、URL、路径或错误码;签名产物发布和真实升级安装仍属于外部 Release Gate。
|
||||
|
||||
@@ -225,6 +241,12 @@ Robot 绑定设备默认先显示“引导配网 / 已有激活码”路径选
|
||||
|
||||
## Recently Completed
|
||||
|
||||
- 2026-09-01: Integrated the consolidated Plugin Services navigation, complete
|
||||
active-branch Coding history with scroll-anchor preservation, narrow Token Point
|
||||
quota feedback, and stable first-line process previews. Combined typecheck,
|
||||
focused/full unit tests, lint, Vite/Electron builds, and five focused Electron
|
||||
E2E scenarios passed. The obsolete Learning Player packaging branch remains
|
||||
excluded by explicit human confirmation and ADR-005 remains authoritative.
|
||||
- 2026-08-31: Integrated the provider-neutral `makelore.game-resource` hosted Plugin
|
||||
client with fetched `origin/main`. Generic schema-2 `platform_hosted` packages now
|
||||
materialize frozen Skill/tool snapshots only for eligible parent Pi logical threads;
|
||||
@@ -308,4 +330,4 @@ Robot 绑定设备默认先显示“引导配网 / 已有激活码”路径选
|
||||
|
||||
## Last Updated
|
||||
|
||||
2026-08-31
|
||||
2026-09-01
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
- Worktree: /Users/inmanx/Documents/makelore
|
||||
- Base commit: 9ed70ba925a7e544f17bf5b418846df9d4145a2a
|
||||
- Owner: codex
|
||||
- Status: Planning
|
||||
- Status: Ready for finalization
|
||||
|
||||
## Scope
|
||||
|
||||
@@ -54,8 +54,13 @@
|
||||
`http://localhost:5173/` and Electron Main owns Host API port `13210`.
|
||||
- Exactly one local branch remains outside `main`:
|
||||
`codex/learning-player-release-fix@b1f51be`. Its five-file patch restores the
|
||||
retired OpenMAIC Learning Player packaging supply chain, contradicts ADR-005,
|
||||
and requires an explicit product-direction decision before integration.
|
||||
retired OpenMAIC Learning Player packaging supply chain and contradicts
|
||||
ADR-005. On 2026-09-01 the user explicitly confirmed that this branch must
|
||||
remain excluded, so ADR-005 stays authoritative and the branch is preserved
|
||||
unchanged as historical local state.
|
||||
- Promoted the accepted Plugin Services, complete visible history, quota
|
||||
feedback, and first-line process-preview facts into `README.md`,
|
||||
`current-state.md`, and `module-map.md`; no accepted ADR was reversed.
|
||||
|
||||
## Verification
|
||||
|
||||
@@ -75,21 +80,22 @@
|
||||
- Runtime probes: Vite returned HTTP 200; the Host API returned its expected
|
||||
unauthenticated HTTP 401 challenge; Node PID 39837 and Electron PID 39847
|
||||
listen on ports 5173 and 13210 respectively.
|
||||
- `check_project_docs.py`: passed.
|
||||
- `git diff --check`: passed after canonical promotion.
|
||||
- `check_doc_drift.py --task-id 20260901-integrate-all-local-4d7a9c21`:
|
||||
correctly blocked this intake task because nine immutable source-task
|
||||
records entered through the merges after its base. No source record was
|
||||
edited; a successor Integration Gate will use this complete intake as its
|
||||
base and perform the final task-aware certification.
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Obtain the required human choice for the ADR-005 conflict. If the historical
|
||||
Learning branch remains excluded, finalize canonical documentation around
|
||||
the three accepted product changes and close the Integration Gate. If it is
|
||||
explicitly accepted, first reverse ADR-005 and reconcile the branch against
|
||||
the current Learning boundary rather than taking a mechanical merge side.
|
||||
- Open a fresh finalization Integration Gate based after these source-task
|
||||
merges. This task intentionally introduced foreign immutable task records,
|
||||
so the task-aware drift checker must certify the final tree from the
|
||||
post-intake base rather than misattribute those records to canonical edits.
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- Promote the Plugin Services source task into `current-state.md` and
|
||||
`module-map.md`: Project Configuration is the sole visible plugin surface,
|
||||
with discover/mine/project tabs and compatibility-only standalone routes.
|
||||
- Promote the Coding history/quota source task into `README.md` and
|
||||
`current-state.md`: compaction may bound model context without removing the
|
||||
visible active-branch history, and recognized Provider quota failures remain
|
||||
actionable after reopen.
|
||||
- Applied to `README.md`, `current-state.md`, and `module-map.md`; no remaining
|
||||
promotion candidate is known.
|
||||
|
||||
Reference in New Issue
Block a user