merge: integrate remote main
Some checks failed
Electron E2E / Electron E2E (macos-latest) (push) Has been cancelled
Electron E2E / Electron E2E (ubuntu-latest) (push) Has been cancelled
Electron E2E / Electron E2E (windows-latest) (push) Has been cancelled

This commit is contained in:
2026-09-07 13:43:27 +08:00
124 changed files with 4233 additions and 6599 deletions

View File

@@ -2,7 +2,12 @@
## Status
Accepted and implemented on 2026-08-20.
Superseded on 2026-09-04 by the explicit product decision to remove Learning
from Makelore. Source `5a7cb9b` was integrated as `bd0873f` by task
`20260904-integrate-remove-learning-6e4a9c21`.
This ADR remains only as historical context. Its catalog, route, API, download,
packaging, and release obligations are no longer active.
## Context
@@ -26,6 +31,16 @@ The integrated Learning module previously implemented course generation, an acco
- Removing client download-size checks avoids rejecting otherwise valid streams with missing or inaccurate size metadata, but also removes client-side protection against an archive consuming excessive disk space. Works Square may retain an independent operations upload/storage limit.
- A future historical-data cleanup must be an explicit, user-controlled maintenance feature.
## Superseded Consequences
- Makelore now exposes only Code, Canvas, and Robot as top-level modules.
- Learning Renderer, Main, shared DTO, asset, test, and server-contract sources are removed.
- Old Learning routes fall through to the module chooser and old Learning Host API paths
return the normal not-found response; no compatibility implementation is retained.
- Historical downloaded course data remains untouched and is not read or migrated.
- The literal `makelore-learning:v1` remains frozen only as a cross-module persisted
account-partition compatibility salt; its name does not represent an active module.
## Supersedes
- The Learning course-generation, local-course, OpenMAIC playback, and classroom-runtime behavior introduced by integrated source `01bee31`.
@@ -43,7 +58,6 @@ The integrated Learning module previously implemented course generation, an acco
## Related
- `docs/learning-project-catalog-server-contract.md`
- `.project-docs/20-architecture/system-overview.md`
- `.project-docs/20-architecture/data-flow.md`
- `.project-docs/40-domain/business-rules.md`

View File

@@ -2,7 +2,7 @@
## Status
Accepted / implemented
Accepted / implemented, amended 2026-09-07
Amended on 2026-09-07 to define operation-scoped public activity as transient
presentation state beneath the matching optimistic user message.
@@ -11,6 +11,8 @@ presentation state beneath the matching optimistic user message.
2026-08-30
Last amended: 2026-09-07
## Context
ADR-001 modeled a Workspace as multiple independently selected Conversations, each
@@ -19,6 +21,11 @@ form edits, Quote options, and provider prompts competing representations of the
same design. The coordinated Works Square and MakeLore V2 cutover now provides one
versioned Design Specification and a persistent form throughout the design flow.
The September 7 Canvas presentation refinement keeps that authority model while
making the current production plan easier to edit: conversation and the sole active
plan stay together, Workspace navigation moves to a right Works rail, and references
are expressed through public Prompt aliases bound to canonical Assets.
## Decision
- One Workspace exposes one current Direction, one persistent Agent Session, one
@@ -44,6 +51,21 @@ versioned Design Specification and a persistent form throughout the design flow.
- Electron Main is the only Canvas network authority. Development and packaged
builds use the Works Square V2 contract; there is no V1 DTO adapter, local semantic
adapter, mutable Quote PATCH, editable provider Prompt, or cloud-failure fallback.
- The visible Canvas has two regions: a flexible central conversation timeline with
the only active editable production plan, and a full-height right Works rail for
Workspace navigation. Compact layouts expose that rail as a right Sheet. Terminal
submitted plans collapse into conversation history; they do not create a second
current-plan authority.
- The public `content.concept` projection is the directly editable final Prompt.
References retain stable reference IDs and typed Workspace Asset bindings while
appearing in that Prompt as continuous `@图片N` aliases. The Prompt is the only
visible expression of how a reference affects generation; the adjacent row manages
binding/file state only. An unbound referenced alias blocks Quote availability and
exposes a targeted upload slot.
- Prompt, reference binding, type, aspect-ratio, duration, or output-count changes
enter the existing typed reducer and create a new Specification revision. An offered
plan must be recompiled to a fresh immutable Quote before confirmation. Reference
count/media limits come from service capabilities, not client-only constants.
## Rationale
@@ -62,6 +84,9 @@ and uncertain retries auditable without exposing provider internals.
client smoke remain separate operator gates.
- Replayed activity and generic terminal Gateway events reconcile by the original
operation identity. They do not create another message, form, or retry intent.
- Layout and reference aliases are public projections, not new semantic authorities.
Any future UI must preserve one active plan, stable Asset identity, and the exact
Specification-revision/Quote boundary even if its visual arrangement changes.
## Supersedes
@@ -72,3 +97,6 @@ and uncertain retries auditable without exposing provider internals.
- Client source `b0b5a602b501308a23eb27e2f51a5169b9e46b1e`
- Server source `b5351d54f595ce8eb873593e462e4a556bea0b05`
- Server ADR `ADR-2026-08-28-001`
- Canvas refinement source `1562a49`
- Canvas refinement integration merge `ea1219c`
- Source task `20260906-canvas-reference-images-c4e97a`

View File

@@ -1,7 +1,8 @@
# ADR-008: 交互式 AI 应用 Scaffold 与官方项目插件采用项目级激活
- Status: Accepted / implemented, amended 2026-09-06
- Status: Accepted / implemented, amended 2026-09-07
- Date: 2026-09-04
- Last amended: 2026-09-07
- Applies to: Project creation, `ProjectType`, code-owned official project Plugins, scaffold Skill, release readiness
## Context
@@ -10,16 +11,19 @@
项目服务当前已经只负责 `.makelore/project.json` 与 `knowledge/`。用户确认将小游戏和小程序合并为一个“交互式 AI 应用”类型,并把生成文件、目录以及提交审批要求放进由官方 Marketplace 管理、随签名客户端交付的 Skill。
后续面向青少年用户的验证表明,要求用户在创建时理解产品类型、模板、UUID 与初始化状态仍是多余门槛。用户进一步确认普通创建只应选择目录,其余身份与安全默认由客户端和 Main 自动处理;Scaffold Skill 保持可选能力,而不是创建或进入聊天的前置步骤。
后续实际使用又证明,把伙伴分配作为代码所有官方项目插件的第二个项目级开关会产生重复且相互矛盾的状态。用户进一步确认 Data Service、游戏资源生成、项目初始化与发布检查都应在项目启用后直接对项目生效,伙伴分配只保留给确实采用该范围的其他插件。
## Decision
- 新建项目只提供规范产品类型 `interactive_ai_app`(显示为“交互式 AI 应用”)和 `custom`。`ProjectType` 创建后仍不可变。
- 普通新建项目只要求选择目录,不展示产品类型、模板、原始 UUID、绑定或独立副本选项。Renderer 写入内部默认 `interactive_ai_app`,Main 生成规范 UUID;`ProjectType` 创建后仍不可变。既有 `custom` 项目和底层兼容入口继续支持,但 `custom` 不再作为普通新建选项。
- `mini_game` 与 `mini_program` 只作为历史读取和脚手架兼容别名,在内存中归一为 `interactive_ai_app`。读取或运行脚手架不会改写原配置;后续普通配置变更可以保存规范值。缺少类型字段的旧项目仍归一为 `custom`。
- 项目创建只生成 `.makelore/project.json` 和 `knowledge/`,不生成业务源码、依赖、锁文件或发布模板。
- Main 为新项目自动生成 UUID,并为“其他 metadata 有效、仅缺 `projectId`”的旧配置串行补齐并持久化一次。原始 UUID、bind/independent-copy 选择不进入普通 UI;其他 metadata 缺失或无效仍是配置错误。旧 `initialized` 布尔只保留为 schema 兼容字段,不得阻断有效项目导航、聊天或首个 Agent 创建。
- 代码所有的官方项目插件 `makelore.data-service`、`makelore.game-resource` 与 `makelore.project-scaffold` 采用统一的项目级激活规则。Data Service 随应用提供;Game Resource 与 Project Scaffold 保留 Account Library 获取;三者都保留项目启用语义,但不再要求或展示 Agent 分配。项目启用后,Main-owned effective resolver 自动把完整 Skill/tool 集合提供给该项目的每个父 Agent;child Agent 仍为空。需要伙伴分配的其他 Marketplace 插件继续使用原规则。
- `makelore.game-resource` 的生成操作采用一次确认、一次提交、自动交付。Main 冻结调用时的项目身份与路径,内部轮询已接受的 Provider execution,把全部终态输出保存到该项目固定目录,并只在落盘期间获取共享项目写租约。持久交付 receipt 将 Provider/billing 与本地下载/保存分开;恢复本地交付不得重新提交或计费。Agent 不再暴露 status/save 工具、路径选择或第二次保存确认。
- `makelore.project-scaffold` 提供显式 Skill `makelore-project-scaffold`。固定版本资源随 MakeLore 客户端交付,不经过 Package Store 下载。其脚本生成六个交互式 AI 应用起步文件;写入前预检全部目标,不覆盖已有路径,受控失败时只回滚本次创建的文件和目录。
- `makelore.project-scaffold` 提供可选的显式 Skill `makelore-project-scaffold`,不是项目创建、进入聊天或创建首个 Agent 的前置条件。固定版本资源随 MakeLore 客户端交付,不经过 Package Store 下载。其脚本生成六个交互式 AI 应用起步文件;写入前预检全部目标,不覆盖已有路径,受控失败时只回滚本次创建的文件和目录。
- Scaffold Skill 不安装依赖、不访问网络、不执行构建、不上传、不提交审核,也不提供 `--force`、类型覆盖或模板迁移状态。Main 继续独占固定 npm/Vite 构建、同字节预检、打包和上传;Works Square 继续独占服务端校验、不可变 Release 与运营审核。
- 官方 Plugin 的 `.mjs` 仅因它位于客户端固定、代码所有的 bundled resource root 中而可执行。应用通过不可覆盖的 `MAKELORE_NODE_EXECUTABLE` 向父 Pi worker/Agent Server 提供自身 Node;不得回退系统 Node。该例外不适用于 Marketplace 下载 artifact:P0 下载包仍只接受文本/图片 Skill 资源并拒绝 `.mjs`。第三方 Device Package 的可执行代码继续走自身的披露与确认边界。
- Skill 的发布检查只是只读准备度指导:区分确定阻断、源码包排除影响、运行时/平台待确认项和静态已满足项,并引用项目相对证据。它不能宣称构建、上传、审核或生产发布成功。
@@ -27,7 +31,8 @@
## Consequences
- 模板可随官方 Plugin 版本演进,不再扩大项目创建服务的职责,也不需要把脚本上传为 Marketplace artifact。
- 旧项目无需批量迁移即可继续打开、生成脚手架和发布;新写入只使用规范类型。
- 普通用户可从目录选择直接进入 `/chat`;没有 Agent 时显示非阻塞空状态并提供创建首个 Agent 的入口。Project Configuration 仍处理真正无效的 metadata,但不再承担初始化仪式。
- 旧项目无需批量迁移即可继续打开、生成脚手架和发布;普通新写入使用内部默认 `interactive_ai_app`,既有 `custom` 与历史类型保持兼容。
- 发布规则在 Skill 中可被 Agent 解释和预检,但权威执行仍只有 Main 与 Works Square,避免形成第二套发布实现。
- 这三个代码所有官方身份的既有 Agent assignment 数据不再参与有效资源计算,可以原样保留;账号移除(适用时)或项目禁用仍会阻止新父 Agent 获得资源,运行中的 generation 仍按既有冻结边界切换。
- Game Resource 的 Provider 作业可以继续由 Main 在后台收敛,而项目文件写入只占用短租约;项目切换不改变已冻结的交付目标,应用或响应中断也不把本地交付失败变成第二次付费生成。
@@ -35,7 +40,7 @@
## Supersedes
本决定取代 2026-08-09 的双可发布类型与创建时自动生成模板行为;固定 Vite 构建、artifact contract、运营审核与公共播放边界保持不变。
本决定取代 2026-08-09 的双可发布类型与创建时自动生成模板行为,并于 2026-09-07 取代创建时的类型/身份选择及 `initialized` 工作区 gate;固定 Vite 构建、artifact contract、运营审核与公共播放边界保持不变。
## Related Evidence
@@ -58,3 +63,6 @@
- Automatic Game Resource delivery source task: `20260906-game-resource-auto-delivery-7a4e2c91`
- Automatic Game Resource delivery integration task: `20260906-game-resource-auto-delivery-integration-8c4e1a72`
- Proposal: `10-decisions/proposals/20260904-project-scaffold-implementation-7e4c2a91__interactive-ai-app-type.md`
- Simplified-creation source commit: `af13aca`
- Simplified-creation integration merge: `39d7b7e`
- Simplified-creation source task: `20260906-remove-project-gate-7c31`

View File

@@ -4,12 +4,11 @@
| ID | Decision | Status | Date | Applies To | Detail |
|---|---|---|---|---|---|
| ADR-008 | 交互式 AI 应用使用单一规范类型,项目创建、代码所有的官方项目插件激活与发布权威分离 | Accepted / implemented, amended 2026-09-06 | 2026-09-04 | Project creation、`ProjectType`、Official Plugins、Marketplace delivery、project-wide activation、Game Resource auto-delivery、release readiness | `adr-008-interactive-ai-app-scaffold.md` |
| ADR-007 | AI Design 采用单一 Current Specification、Living Form 与不可变 Quote 的 V2 权威 | Accepted / implemented | 2026-08-30 | AI Design Renderer、Electron Main、Works Square V2 API | `adr-007-ai-design-living-form-v2.md` |
| ADR-008 | 交互式 AI 应用使用单一内部默认类型;目录式创建、Main-owned UUID、项目级官方插件、可选 Scaffold Skill 与发布权威分离 | Accepted / implemented, amended 2026-09-07 | 2026-09-04 | Project creation、`ProjectType`/identity、Official Plugins、Marketplace delivery、project-wide activation、Game Resource auto-delivery、release readiness | `adr-008-interactive-ai-app-scaffold.md` |
| ADR-007 | AI Design 采用单一 Current Specification、Living Form 与不可变 Quote 的 V2 权威;active plan 与 reference alias 是其公共投影 | Accepted / implemented, amended 2026-09-07 | 2026-08-30 | AI Design Renderer、Electron Main、Works Square V2 API | `adr-007-ai-design-living-form-v2.md` |
| ADR-002 | Robot V1 采用 Main 门控的引导式热点配网并衔接现有六位 Binding | Accepted / implemented, default on | 2026-08-16 | Robot Renderer、Host API、Electron Main、现有固件热点入口 | `adr-002-robot-guided-hotspot-binding-v1.md` |
| ADR-003 | Robot 配网页内扫描并连接 Windows/macOS 热点 | Accepted / implemented with physical release gates pending | 2026-08-16 | Robot Renderer、Host API、Electron Main、Windows WLAN、macOS CoreWLAN/CoreLocation | `adr-003-robot-in-app-hotspot-connection.md` |
| ADR-004 | Works Square 统一拥有桌面认证生命周期边界 | Accepted / implemented | 2026-08-19 | Renderer、Host API、Electron Main、Works Square auth facade | `adr-004-square-auth-lifecycle-boundary.md` |
| ADR-005 | Learning 采用运营精选项目目录、直接渲染经校验的 HTTPS README 图片、下载不做大小校验并退役课程运行时 | Accepted / implemented, amended 2026-08-20 | 2026-08-20 | Learning Renderer、Host API、Electron Main、Works Square operations/API | `adr-005-learning-project-catalog.md` |
| ADR-006 | Makelore Code 以 Pi `0.84.2` 为唯一 runtime,父 Conversation 复用一个 Main-owned Agent Server 并隔离逻辑 Runtime/Session/provider/lease,产品只暴露 Snapshot/Patch 合同 | Accepted / implemented, amended 2026-08-31 | 2026-08-26 | Code Renderer、Host API、Electron Main、Pi runtime、Provider/resource、packaging | `adr-006-pi-runtime-hard-cutover.md` |
## Superseded Decisions
@@ -17,6 +16,7 @@
| ID | Decision | Superseded By | Date |
|---|---|---|---|
| ADR-001 | AI 绘画 Workspace / Conversation 状态归属 | ADR-007 | 2026-08-30 |
| ADR-005 | Learning 运营精选项目目录与下载边界 | 2026-09-04 用户产品决定:从 Makelore 移除 Learning;源 `5a7cb9b`,集成 `bd0873f` | 2026-09-04 |
## Decision Criteria