Merge Robot configuration ETag compatibility
This commit is contained in:
@@ -23,7 +23,7 @@ Makelore 是 Electron 桌面客户端。Renderer 负责项目操作与状态展
|
||||
| AI Design Gateway Routing | Main 云端适配器 ↔ Conversation WebSocket;Main → Host API/SSE → Renderer store | 命令、Run 与设计事件共用双向 WebSocket;Conversation 更新按 Workspace + Conversation 路由,任务更新按 Workspace 归并 |
|
||||
|
||||
| Robot Workspace | Account-scoped agent configuration, device activation/binding, assignment, and credential-recovery UI | Renderer receives only safe Works Square projections; credentials, activation-code history, and upstream error bodies remain outside durable UI state. |
|
||||
| AI Hardware Main Route | Fixed `/api/works/ai-hardware` Host API to Works Square proxy | Main owns Bearer auth, stable operation IDs, bounded retry, ETag/If-Match, request/response limits, and error redaction. It never forwards Renderer authorization headers. |
|
||||
| AI Hardware Main Route | Fixed `/api/works/ai-hardware` Host API to Works Square proxy | Main owns Bearer auth, stable operation IDs, bounded retry, ETag/If-Match, request/response limits, and error redaction. Versioned responses accept only canonical strong or weak numeric ETags that equal the DTO revision; mutations always emit strong `If-Match`. It never forwards Renderer authorization headers. |
|
||||
|
||||
## Important Boundaries
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
|
||||
|
||||
## Integrated Through
|
||||
|
||||
- `ea75b06`: Robot configuration reads accept canonical weak numeric response ETags introduced by public response compression only when the numeric revision exactly matches the strictly projected DTO; configuration and assignment writes continue to emit strong `If-Match`.
|
||||
- `fd9b5b46a913c515e94e4e26f185d43866c2581f` / `7a811590c4943b7b1b7ea5f3b4d3ce3ce05622a5`: Codex-style persistent AI Programming context-compaction timeline, run-lifecycle separation, polling-idle completion, and cold-hydration hardening.
|
||||
- `22378efcee07e7fb80b651e65e3202f1a1dfea1d`: AI Canvas bidirectional Agent WebSocket commands, idempotent transport fallback, and Quote-based generation-task recovery.
|
||||
- `aba5cae286807093cf4ef643fe9f498050985c31`: Robot / AI hardware module, Main-owned Works Square proxy, and cross-repository wire contract.
|
||||
@@ -31,6 +32,7 @@ Updater 仍由 Electron Main 选择目标 feed、记录原始诊断并保持失
|
||||
|
||||
## Recently Completed
|
||||
|
||||
- 2026-08-15: Corrected the deployed Robot configuration-read contract after the compressed public Works response was observed with `ETag: W/\"0\"` and matching numeric `config_revision: 0`. Electron Main now accepts only canonical strong or weak numeric response tags, still requires exact DTO revision equality, and always sends strong `If-Match` for mutations. No production client rollout is claimed.
|
||||
- 2026-08-15:AI 编程上下文压缩改为 Codex 风格的会话内时间线事件;手动与自动压缩原位展示并持久保留,历史回放去重且状态只允许从 running 单调进入 completed,压缩完成不再冒充整个 run idle。
|
||||
- 2026-08-14: AI Canvas Agent 命令与流式事件改为共用双向 Conversation WebSocket,并保留仅面向传输故障的幂等 REST 回退;结构化 Gateway 错误不重试且未知文本脱敏;确认生成按 Quote 恢复已落库任务,切换 Conversation 后仍同步 Workspace 任务且不覆盖新会话状态或错误。
|
||||
- 2026-08-13: Integrated the enabled `Makelore Robot` top-level module at `/ai-hardware`. Renderer uses typed safe DTOs while Electron Main owns Works Square authentication, idempotency identities, ETag/If-Match forwarding, response projection, limits, timeouts, and credential recovery. Robot and Canvas routes no longer initialize AI Programming projects/providers. No production deployment or real activation-code smoke is claimed.
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
## Scope
|
||||
|
||||
- On 2026-08-15, resume the existing Integration owner to merge reviewed Robot configuration-schema fix `ea75b06` into local `main`, accepting canonical weak numeric response ETags produced by the deployed compression layer while keeping strong `If-Match` writes.
|
||||
- On 2026-08-15, resume the existing Integration owner to merge reviewed Robot configuration-loading fix `1bcd519` into local `main`, preserving the page error/retry state and Main response-body deadline.
|
||||
- On 2026-08-15, resume the existing Integration owner to merge reviewed source commit `fd9b5b46a913c515e94e4e26f185d43866c2581f` for the Codex-style AI Programming context-compaction timeline into local `main` and promote its accepted lifecycle facts.
|
||||
- On 2026-08-14, resume the existing Integration owner to merge reviewed AI Canvas source commit `22378efcee07e7fb80b651e65e3202f1a1dfea1d` into local `main` and promote its accepted project-memory candidates.
|
||||
@@ -113,6 +114,14 @@ Gate result:
|
||||
- The source changes only the Robot page, Main-owned AI hardware route, focused tests, and its own source task record. It preserves Main-owned auth/idempotency/ETag and introduces no semantic overlap with registered peer work.
|
||||
- Gate result: Passed for the local Robot configuration-loading merge. This request authorizes a local `main` merge, not an automatic remote push.
|
||||
|
||||
### 2026-08-15 Robot Configuration Schema Integration Resume
|
||||
|
||||
- Reused this Integration owner because it still exclusively owns `main` and the repository integration lock; `task_context.py touch` refreshed the existing reservation.
|
||||
- Verified source task `20260815-robot-config-schema-8e2c41` is ready for integration, source commit `ea75b06` is a direct descendant of current `main` at `a26a53a`, and its final read-only Sol review returned PASS.
|
||||
- Production evidence distinguishes the hops: Xiaozhi-to-Works returns a canonical strong numeric ETag, while the compressed public Works response was observed with matching canonical weak `W/\"0\"`, numeric `config_revision: 0`, and the exact expected key set.
|
||||
- The source changes only Electron Main response-revision parsing and its focused route tests. It still requires DTO/revision equality and emits only strong `If-Match` for writes; no authentication, idempotency, response-bound, or redaction boundary changes.
|
||||
- Gate result: Passed for the local Robot configuration-schema merge. Remote push remains outside this resumption.
|
||||
|
||||
## Plan
|
||||
|
||||
1. Fetch `origin/main` and verify local `main`, the remote tip, and reviewed AI Canvas source commit topology.
|
||||
@@ -136,8 +145,18 @@ Gate result:
|
||||
3. Run the 7-file Robot/Main regression suite, typecheck, scoped lint, build, project-document gates, and whitespace checks.
|
||||
4. Obtain an independent read-only Sol PASS/FAIL review, record exact topology and verification, and keep remote push outside this request.
|
||||
|
||||
### 2026-08-15 Robot Configuration Schema Integration Plan
|
||||
|
||||
1. Merge reviewed source commit `ea75b06` into local `main` with a normal no-ff merge while preserving source history.
|
||||
2. Exclude the source-owned task record from the final `main` tree, leaving it reachable on the source commit and feature branch.
|
||||
3. Re-run the AI hardware Main/Renderer/page regression selection, typecheck, scoped lint, build, project-document gates, and whitespace checks.
|
||||
4. Obtain an independent read-only Sol PASS/FAIL review and keep the pre-existing remote-push blocker separate.
|
||||
|
||||
## Outcome
|
||||
|
||||
- On 2026-08-15, merged reviewed Robot configuration-schema source `ea75b06` into local `main` without textual conflict and excluded its source-owned task record from the final tree.
|
||||
- Confirmed the failure was transport-contract drift, not a Xiaozhi/Works DTO failure: response compression weakened the origin strong revision ETag to canonical `W/\"0\"`; Main now accepts only canonical strong or weak numeric response tags whose revision equals the strictly projected body.
|
||||
- Preserved optimistic concurrency and security boundaries: PATCH/PUT still send strong `If-Match`, and authentication, idempotency, size/deadline limits, fixed paths, and error redaction are unchanged.
|
||||
- On 2026-08-15, formed the reviewed Robot configuration-loading fix as source commit `1bcd51964da04e5d80b461547d6bcccfafc0bec9` on its isolated feature branch.
|
||||
- Fetched `origin/main` and verified both local and remote-tracking `main` were exactly `a4050f0a6567e8203630bf5d16b57f00c45caab8` with zero ahead/behind before integration.
|
||||
- Started a normal `--no-ff --no-commit` merge of `1bcd519`; Git reported no textual conflicts. The source task record remains reachable on source commit `1bcd519` and its feature branch and is excluded from the `main` result to preserve project-document ownership boundaries.
|
||||
@@ -214,6 +233,12 @@ Gate result:
|
||||
|
||||
## Verification
|
||||
|
||||
- Robot configuration-schema source TDD recorded `2 failed, 23 passed` before the fix with `AI_HARDWARE_INVALID_ETAG` for the deployed weak-tag shape.
|
||||
- Merged-tree AI hardware route suite passed `25/25`; the seven-file Robot/Main regression selection passed `78/78`.
|
||||
- Merged-tree `pnpm run typecheck`, scoped ESLint, and `pnpm run build:vite` passed; build retains only existing chunk-size and mixed-import warnings.
|
||||
- Merged-tree `pnpm test` passed `156` files / `1727` tests.
|
||||
- Task-aware project-document drift, task registry doctor, staged whitespace checks, and unmerged-entry checks passed.
|
||||
- Independent final Robot response-ETag integration review returned `PASS` with no P0-P2 findings; it confirmed weak ETags are accepted only on responses, write preconditions remain strong, and the parsed ETag must equal the projected DTO revision.
|
||||
- 2026-08-15 Robot configuration-loading merged-tree regression selection — 7 files / 74 tests passed.
|
||||
- Robot merged-tree `pnpm run typecheck` — passed.
|
||||
- ESLint on the four merged TypeScript/TSX files — passed.
|
||||
|
||||
Reference in New Issue
Block a user