@abelxiaoxing/cadence 1.8.4 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +324 -117
- package/THIRD_PARTY_NOTICES.md +15 -0
- package/agents/design-explorer.md +14 -18
- package/agents/diagnosis-worker.md +14 -14
- package/agents/implementation-worker.md +16 -17
- package/config/workflow-task.example.json +7 -0
- package/docs/remote-access.md +60 -0
- package/docs/reuse-and-distribution.md +44 -0
- package/docs/service-management.md +108 -0
- package/licenses/bundled-web.txt +6245 -0
- package/licenses/pi-web-ui-MIT.txt +21 -0
- package/licenses/pi-web-ui-reuse.md +22 -0
- package/package.json +94 -21
- package/src/index.ts +21 -1802
- package/src/native-build.ts +6 -0
- package/src/native-client.ts +103 -0
- package/src/native-export.ts +58 -0
- package/src/native-history.ts +359 -0
- package/src/operator-cli.mjs +453 -1937
- package/src/plan-proposal.ts +87 -0
- package/src/sdk-worker.mjs +549 -0
- package/src/service/contracts/active.ts +82 -0
- package/src/service/contracts/budget.ts +148 -0
- package/src/service/contracts/build.ts +67 -0
- package/src/service/contracts/capture.ts +48 -0
- package/src/service/contracts/core.ts +33 -0
- package/src/service/contracts/current.ts +261 -0
- package/src/service/contracts/domain.ts +68 -0
- package/src/service/contracts/history.ts +2245 -0
- package/src/service/contracts/models.ts +139 -0
- package/src/service/coordination.ts +862 -0
- package/src/service/private-files.ts +204 -0
- package/src/service-cli.mjs +5592 -0
- package/src/service-client.ts +747 -0
- package/src/service-contract.ts +245 -0
- package/src/service-host.mjs +22382 -0
- package/src/service-http-client.ts +425 -0
- package/src/service-wire.ts +372 -0
- package/src/task-shell.ts +1045 -0
- package/src/task-store.ts +479 -0
- package/src/task-types.ts +184 -0
- package/src/verification-diagnostics.ts +29 -72
- package/src/worker-capture.mjs +1197 -0
- package/src/worker-public.mjs +1753 -0
- package/src/worker-redaction.mjs +608 -0
- package/src/worker-tools.mjs +202 -0
- package/web/dist/assets/KaTeX_AMS-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_AMS-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_AMS-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Bold.woff +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Bold.ttf +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Bold.woff +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-Bold.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-Bold.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Bold.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-BoldItalic.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-BoldItalic.woff +0 -0
- package/web/dist/assets/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-Italic.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-Italic.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Italic.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Math-BoldItalic.ttf +0 -0
- package/web/dist/assets/KaTeX_Math-BoldItalic.woff +0 -0
- package/web/dist/assets/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/web/dist/assets/KaTeX_Math-Italic.ttf +0 -0
- package/web/dist/assets/KaTeX_Math-Italic.woff +0 -0
- package/web/dist/assets/KaTeX_Math-Italic.woff2 +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Bold.ttf +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Bold.woff +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Italic.ttf +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Italic.woff +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Script-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Script-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Script-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Size1-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Size1-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Size1-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Size2-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Size2-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Size2-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Size3-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Size3-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Size3-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Size4-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Size4-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Size4-Regular.woff2 +0 -0
- package/web/dist/assets/KaTeX_Typewriter-Regular.ttf +0 -0
- package/web/dist/assets/KaTeX_Typewriter-Regular.woff +0 -0
- package/web/dist/assets/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/web/dist/assets/cadence.css +2 -0
- package/web/dist/assets/cadence.js +7 -0
- package/web/dist/assets/markdown.js +296 -0
- package/web/dist/assets/react.js +9 -0
- package/web/dist/assets/rolldown-runtime.js +1 -0
- package/web/dist/assets/timeline-client.js +41 -0
- package/web/dist/assets/vis-timeline.css +1274 -0
- package/web/dist/assets/vis-timeline.js +32 -0
- package/web/dist/index.html +18 -0
- package/web/dist/manifest.json +505 -0
- package/config/plan-draft.example.json +0 -125
- package/config/plan-draft.multiple-tasks.example.json +0 -375
- package/config/plan-draft.quick.example.json +0 -78
- package/prompts/abel-design.md +0 -382
- package/prompts/abel-diagnose.md +0 -71
- package/prompts/abel-implement.md +0 -284
- package/prompts/abel-init.md +0 -52
- package/src/activation.ts +0 -44
- package/src/activity-contracts.ts +0 -82
- package/src/agent-registry.ts +0 -53
- package/src/apply-transaction.ts +0 -1437
- package/src/artifact-store.ts +0 -213
- package/src/build-windows-job.mjs +0 -95
- package/src/candidate-artifact.ts +0 -143
- package/src/candidate-context.ts +0 -289
- package/src/candidate-patch.ts +0 -271
- package/src/candidate-workspace.ts +0 -80
- package/src/canonical.ts +0 -16
- package/src/change-contract-schema.ts +0 -191
- package/src/change-contract.ts +0 -324
- package/src/change-verification.ts +0 -1617
- package/src/contracts.ts +0 -2466
- package/src/control-contracts.ts +0 -382
- package/src/delivery-compiler.ts +0 -1805
- package/src/delivery-revision.ts +0 -42
- package/src/design-control.ts +0 -1299
- package/src/design-diagnostics.ts +0 -181
- package/src/design-journal.ts +0 -1773
- package/src/directory-sync.ts +0 -36
- package/src/durable-contracts.ts +0 -227
- package/src/durable-workflow.ts +0 -822
- package/src/evidence-draft.ts +0 -122
- package/src/execution-profile.ts +0 -64
- package/src/execution-retention.ts +0 -77
- package/src/file-snapshot.ts +0 -163
- package/src/implement-continuation.ts +0 -559
- package/src/implement-graph.ts +0 -690
- package/src/implement-plan.ts +0 -72
- package/src/install-config.d.mts +0 -6
- package/src/isolation-backend.ts +0 -353
- package/src/model-source.ts +0 -22
- package/src/openspec-cli.ts +0 -494
- package/src/operator-cli-entry.mjs +0 -24
- package/src/operator-tools.ts +0 -309
- package/src/package-candidate-process.ts +0 -206
- package/src/package-candidate.ts +0 -24
- package/src/package-delivery.ts +0 -486
- package/src/package-state.ts +0 -320
- package/src/package-verification.ts +0 -635
- package/src/package-workflow.ts +0 -305
- package/src/packet-runtime.ts +0 -459
- package/src/phase-execution.ts +0 -2163
- package/src/pi-adapter.ts +0 -19
- package/src/plan-draft-summary.ts +0 -527
- package/src/plan-draft.ts +0 -502
- package/src/remove-path.ts +0 -32
- package/src/run-state.ts +0 -420
- package/src/run-store.ts +0 -1179
- package/src/safe-path.ts +0 -77
- package/src/scoped-grep-worker.mjs +0 -23
- package/src/scoped-tools.ts +0 -775
- package/src/single-task-draft.ts +0 -142
- package/src/sqlite-schema.ts +0 -171
- package/src/state-root.ts +0 -215
- package/src/storage-schema.ts +0 -360
- package/src/subagent-activity.ts +0 -1417
- package/src/subagent-process.ts +0 -476
- package/src/task-ledger.ts +0 -1338
- package/src/transport-budget.ts +0 -50
- package/src/verification-capability.ts +0 -1191
- package/src/verification-environment-io.ts +0 -389
- package/src/verification-environment.ts +0 -162
- package/src/verification-identity.ts +0 -77
- package/src/verification-scan.ts +0 -64
- package/src/windows-job-backend.ts +0 -419
- package/src/windows-job.c +0 -149
- package/src/workflow-engine.ts +0 -28
- package/src/workflow-policy.ts +0 -1670
- package/src/workflow-recovery-policy.ts +0 -97
- package/src/workflow-scheduling.ts +0 -105
- package/src/workflow-state-machine.ts +0 -4341
- package/src/workflow-status.ts +0 -576
- package/src/workspace-io-entry.mjs +0 -76
- package/src/workspace-io-worker.mjs +0 -1312
- package/src/workspace-io.ts +0 -89
- package/src/workspace-store.ts +0 -634
package/README.md
CHANGED
|
@@ -1,132 +1,339 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Cadence
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
`@abelxiaoxing/cadence` is a shared Pi task workspace with two independently usable clients: native `/cadence` and a browser WebUI.
|
|
4
|
+
One explicitly started service owns tasks, bounded subagent collaboration, real parent checks and retained history.
|
|
5
|
+
Ordinary conversations, resource discovery, installation and opening history never start work or a service.
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
This is a trusted workflow assistant, **not a sandbox, certified executor or transactional application system**.
|
|
8
|
+
Code workers edit the chosen working copy directly; recovery can require human work.
|
|
9
|
+
Model prose, tool results and human Done do not certify checks or code.
|
|
7
10
|
|
|
8
|
-
|
|
11
|
+
## Upgrading from 1.x
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
```text
|
|
17
|
-
/abel-init
|
|
18
|
-
/abel-design <需求>
|
|
19
|
-
/abel-implement <change>
|
|
20
|
-
/abel-diagnose <问题描述>
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
- `abel-init`:初始化或修复项目的 OpenSpec 与 AGENTS 基础结构。
|
|
24
|
-
- `abel-design`:调查需求并生成可执行交付计划。
|
|
25
|
-
- `abel-implement`:执行已批准的计划,支持暂停、恢复和取消。
|
|
26
|
-
- `abel-diagnose`:复现问题并执行最小修复。
|
|
27
|
-
|
|
28
|
-
Implement 默认使用 Linux Bubblewrap 隔离。
|
|
29
|
-
|
|
30
|
-
可信 Linux 项目可显式设置 `ABEL_EXECUTION_MODE=local-trusted`。
|
|
31
|
-
|
|
32
|
-
Windows x64 的可信模式见 [Windows 执行说明](docs/windows-host-trusted.md)。
|
|
33
|
-
|
|
34
|
-
## 配置
|
|
35
|
-
|
|
36
|
-
Worker 使用独立的 `pi --mode json -p --no-session` 子进程,并继承当前父模型的 `provider/id` 引用与宿主 Pi 凭据配置。
|
|
37
|
-
子进程按角色使用明确工具白名单;Implement 子进程只在 disposable proposal workspace 中编辑,父控制面仍负责 diff、写入边界、候选 sealing 和验证。
|
|
38
|
-
取消会终止并等待子进程及其管道收束。
|
|
39
|
-
|
|
40
|
-
工作目录和 `--tools` 不是操作系统沙箱;需要更强隔离时仍应使用 Bubblewrap、容器或平台原生 Job。
|
|
41
|
-
父进程会拒绝超出 approved write/delete set 的变更,不会静默丢弃。
|
|
42
|
-
|
|
43
|
-
Cadence 不再读取 `.pi/cadence/routes.json` 或 `~/.pi/agent/cadence/routes.json`,也不再维护 route health、custom subagent provider 或 endpoint 路由。
|
|
44
|
-
请使用宿主 Pi 的模型、`models.json` 和认证配置;缺失认证或模型时会返回有界错误而不会静默切换。
|
|
13
|
+
Version 2.0.0 replaces the four Abel workflow prompts (`/abel-init`, `/abel-design`, `/abel-implement`, `/abel-diagnose`) with native `/cadence` and the WebUI backed by one explicitly started service.
|
|
14
|
+
This is a breaking change, not an in-place continuation of the 1.x workflow.
|
|
15
|
+
Stop older Cadence sessions before switching; existing records and credentials are not imported, migrated, deleted or replayed automatically.
|
|
16
|
+
Node `>=22.19.0` and the declared external peers, including Undici, are required; `ws` is now a production dependency.
|
|
17
|
+
Installation still does not start the service or execute tasks; follow the loading and explicit startup instructions below.
|
|
45
18
|
|
|
46
|
-
|
|
19
|
+
## Load and start explicitly
|
|
47
20
|
|
|
48
|
-
|
|
21
|
+
The package can be loaded as a reviewed local package, extracted tarball or installed npm package through Pi's package mechanism.
|
|
22
|
+
For a local checkout, add its absolute or relative path to Pi's `packages` setting, or try `pi -e ./cadence`.
|
|
23
|
+
Pi loads `src/index.ts`; the service, worker and readonly operator are ordinary JavaScript with no TypeScript/source-tree fallback.
|
|
24
|
+
The manifest does not impose a Pi version range; public Pi peers stay external.
|
|
25
|
+
Development pins, declared Node baseline (`>=22.19.0`) and actual tested runtime identities are separate facts, not universal compatibility promises.
|
|
26
|
+
Required installed peers include public Pi packages, Typebox and Undici; `ws` is the sole production dependency.
|
|
27
|
+
Browser assets are prebuilt, not compiled by consumer postinstall.
|
|
49
28
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
## 加载方式
|
|
53
|
-
|
|
54
|
-
包可以从以下路径加载:
|
|
55
|
-
|
|
56
|
-
- **npm 包(npm package)**:`pi install npm:@abelxiaoxing/cadence`
|
|
57
|
-
- **本地包目录(local package directory)**:将 Pi 指向仓库的绝对或相对路径(例如 `./cadence`)
|
|
58
|
-
- **已安装 tarball 目录(installed tarball directory)**:用 `bun pm pack --destination <tmp>` 生成 `.tgz`,安装或解压后指向该目录
|
|
59
|
-
|
|
60
|
-
Pi 相关 peer 依赖使用 `*`,不限制宿主 Pi 的版本。
|
|
61
|
-
|
|
62
|
-
## 开发
|
|
29
|
+
Before using the shared owner, stop older Cadence sessions and choose one coordination state-home for the checkout.
|
|
30
|
+
No old records, databases, credentials or uncertain locks are imported, reset or cleaned.
|
|
63
31
|
|
|
64
32
|
```sh
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
bun run test # 测试
|
|
69
|
-
bun run verify # 发布前完整检查
|
|
33
|
+
cadence-service start --workspace /absolute/project
|
|
34
|
+
cadence-service status --workspace /absolute/project
|
|
35
|
+
cadence-service token-link --workspace /absolute/project --reveal
|
|
70
36
|
```
|
|
71
37
|
|
|
72
|
-
|
|
38
|
+
Use the installed `cadence-service` bin, or `node /absolute/cadence/src/service-cli.mjs` followed by those arguments.
|
|
39
|
+
Default binding is numeric loopback `127.0.0.1:17423`; `--foreground` is available for an explicitly configured supervisor.
|
|
40
|
+
Start reads the existing Pi agent directory (or an explicit private configuration), never creates another login/profile.
|
|
41
|
+
See [service management](docs/service-management.md) for configuration, model/auth policy, Stop, diagnosis and informed recovery.
|
|
42
|
+
|
|
43
|
+
### Native terminal
|
|
44
|
+
|
|
45
|
+
In a trusted, idle Pi TUI, type `/cadence [goal]` using fresh native Enter.
|
|
46
|
+
The optional goal does not Start; pasted/replayed/nonterminal command dispatch cannot grant native entry.
|
|
47
|
+
The client attaches to the existing owner and never falls back to a local executor or starts one implicitly.
|
|
48
|
+
Choose the exact owner model/API/thinking level explicitly: initial selection is absent.
|
|
49
|
+
Create or open a task, edit a readable plan and finite assignments/dependencies, preview and confirm Start.
|
|
50
|
+
Readonly Generate is advisory and requires a separate Save/Start.
|
|
51
|
+
Native menus expose child messages/tools/timeline, checks, current changes, review, retained history/search/export and independent active-run Cancel.
|
|
52
|
+
|
|
53
|
+
Return, session departure and Pi quit **detach; admitted work continues** while the service is alive.
|
|
54
|
+
Reattach to observe the same IDs without replay.
|
|
55
|
+
Explicit Cancel requests bounded stop; it is not proof that every escaped descendant stopped.
|
|
56
|
+
|
|
57
|
+
### Browser
|
|
58
|
+
|
|
59
|
+
Open the locally revealed token link.
|
|
60
|
+
Valid bootstrap redirects to a token-free URL and uses an HttpOnly SameSite cookie for subsequent HTTP/WebSocket access; no localStorage token copy.
|
|
61
|
+
The browser can create/plan/Start/Cancel, run exact configured checks and record human review without a live Pi terminal.
|
|
62
|
+
A token grants workspace access, not action consent.
|
|
63
|
+
Every mutation needs its own context-bound preview/confirmation; stale/duplicate/lost replies do not silently replay work.
|
|
64
|
+
The WebUI provides task/run/assignment navigation, long retained messages and tool detail, exact literal search, timeline and complete scoped NDJSON/Markdown downloads.
|
|
65
|
+
Desktop panes and phone drawers retain cancellation and keyboard controls.
|
|
66
|
+
|
|
67
|
+
## Execution, checks and review
|
|
68
|
+
|
|
69
|
+
- Graphs contain 1–16 required assignments with explicit purposes/dependencies and exact model choice; no recursive spawning or autonomous retry.
|
|
70
|
+
- Two readonly children may overlap; checkout editing and parent checks serialize across tasks and aliases against readers/writers.
|
|
71
|
+
- Research/diagnosis never gain editing or parent-shell authority through a plan or child prompt.
|
|
72
|
+
- Configured checks are available on both clients.
|
|
73
|
+
Manual shell checks require the native local capability and fresh command/cwd/timeout confirmation.
|
|
74
|
+
- Checks use the service launch's ordinary project environment, never resolved model auth or a browser environment overlay.
|
|
75
|
+
- Changes are bounded observations including pre-existing dirt, not proof of causation or a complete filesystem snapshot.
|
|
76
|
+
- Failed, canceled, timeout, unknown, blocked, stale and not-run remain distinct.
|
|
77
|
+
Done-with-issues preserves all execution/check facts.
|
|
78
|
+
|
|
79
|
+
## History and preservation
|
|
80
|
+
|
|
81
|
+
Human-readable summaries remain `.cadence/assistant/tasks/<id>/task.json`; optional checks remain `.cadence/assistant/config.json`.
|
|
82
|
+
Private coordination/history use `<state-home>/cadence-assistant-v1/<checkout-hash>/service-v1/`.
|
|
83
|
+
Rich `history-v2` is independent of the recent live buffer; new stores use private format3 and authenticated bounded navigation.
|
|
84
|
+
Legacy/unknown formats remain preserved, never auto-migrated.
|
|
85
|
+
View/search/export are readonly and cannot resume work or repair history.
|
|
86
|
+
Exact task/run/child exports require the completion trailer, counts, digest and original EOF; a short preview or revoked download is not a complete archive.
|
|
87
|
+
Capture reports redaction, omitted binary/hidden data, source truncation and incomplete recording explicitly.
|
|
88
|
+
Known-secret redaction is not universal detection of business secrets.
|
|
89
|
+
Storage exhaustion refuses new work rather than silently evicting history.
|
|
90
|
+
|
|
91
|
+
Service restart never resumes the old queue.
|
|
92
|
+
Uncertain process/auth/storage settlement keeps fences; use documented local informed recovery, not PID-only deletion or automatic cleanup.
|
|
93
|
+
|
|
94
|
+
## Personal remote access
|
|
95
|
+
|
|
96
|
+
Keep the backend on loopback and configure one explicit HTTPS origin and trusted immediate reverse proxy.
|
|
97
|
+
See [the Caddy example](docs/remote-access.md); it installs or deploys nothing.
|
|
98
|
+
Host/Origin/CSRF and pre-upgrade WebSocket checks apply in addition to authentication.
|
|
99
|
+
Do not expose credential-bearing plain public HTTP.
|
|
100
|
+
Token links may remain in clipboard/history or external logs; redirection cannot retract disclosure.
|
|
101
|
+
Local token rotation invalidates old cookies/grants/sockets/downloads, not admitted tasks.
|
|
102
|
+
Provider credentials remain server-side; browser tokens and model credentials are separate.
|
|
103
|
+
Outbound provider proxy policy is independent of inbound HTTPS and refuses unsupported routes instead of falling back direct.
|
|
104
|
+
|
|
105
|
+
## Independent shipped content
|
|
106
|
+
|
|
107
|
+
- `skills/context7-auto-research` and `skills/grok-search` remain independent research tools.
|
|
108
|
+
- `skills/git-commit` requires an explicit commit request and deterministic audit; task review never commits.
|
|
109
|
+
- Three pinned professional profiles in `agents/` provide readonly design/diagnosis and direct-edit implementation instructions, not execution authority.
|
|
110
|
+
- `config/` contains optional research/check examples.
|
|
111
|
+
Missing-only user `.env` template creation is the sole postinstall behavior; no service/build/Git/provider operation runs.
|
|
112
|
+
- `node /absolute/cadence/src/operator-cli.mjs doctor|runs [workspace]` remains readonly and independent of service startup.
|
|
113
|
+
|
|
114
|
+
## Development and evidence
|
|
73
115
|
|
|
74
116
|
```sh
|
|
75
|
-
bun run
|
|
76
|
-
bun run
|
|
77
|
-
bun run
|
|
78
|
-
bun run
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
### 公共 UI 的 impactClosure 作者格式
|
|
84
|
-
|
|
85
|
-
`page-state` 与 `public-html` 可以同时声明。
|
|
86
|
-
以下是 **PlanDraft 任务片段**,合并到现有 `tasks[i]`;路径和证据必须替换为仓库真实调查结果。
|
|
87
|
-
假设 Red 修改 `test/page-state.mjs`,已有 `test/public-html.mjs` 只读保留:
|
|
88
|
-
|
|
89
|
-
```json
|
|
90
|
-
{
|
|
91
|
-
"read": ["test/page-state.mjs", "test/public-html.mjs"],
|
|
92
|
-
"impactClosure": {
|
|
93
|
-
"changedSurfaces": ["page-state", "public-html"],
|
|
94
|
-
"searchEvidence": [
|
|
95
|
-
"检索页面状态的调用点及 test/、tests/ 中的覆盖:test/page-state.mjs 需更新状态切换断言,test/public-html.mjs 覆盖现有公开 HTML。"
|
|
96
|
-
],
|
|
97
|
-
"relatedTests": [
|
|
98
|
-
{
|
|
99
|
-
"path": "test/page-state.mjs",
|
|
100
|
-
"evidence": "本任务 Red 更新页面状态切换回归;由阶段 write 推导为 current-task。"
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
"path": "test/public-html.mjs",
|
|
104
|
-
"evidence": "保留已有 HTML 断言并执行受影响验证;无任务写入,推导为 unaffected。"
|
|
105
|
-
}
|
|
106
|
-
],
|
|
107
|
-
"affectedSuite": ["test/page-state.mjs", "test/public-html.mjs"]
|
|
108
|
-
}
|
|
109
|
-
}
|
|
117
|
+
bun run verify # default fast verification; no browser
|
|
118
|
+
bun run test # reviewed fast root regressions
|
|
119
|
+
bun run test:target test/service-contract.test.ts
|
|
120
|
+
bun run test:web
|
|
121
|
+
bun run test:integration # explicit slow SDK/PTY/history lane
|
|
122
|
+
CADENCE_BROWSER_PATH=/absolute/existing/chromium bun run verify:full
|
|
123
|
+
bun pm pack --destination /absolute/private-temp
|
|
110
124
|
```
|
|
111
125
|
|
|
112
|
-
|
|
113
|
-
`
|
|
114
|
-
`
|
|
115
|
-
|
|
116
|
-
`
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
126
|
+
Build/verification use a fresh private directory with `TMPDIR`, `TEMP` and `TMP` set explicitly.
|
|
127
|
+
`verify` runs root/Web type checks, exact generated-byte checks, lint, Agent pins, fast root regressions, Web unit tests and the real pack audit.
|
|
128
|
+
The fast root lane uses an explicit reviewed list in `test/fast.config.ts`, with at most four parallel workers; no test is selected from mutable timing caches.
|
|
129
|
+
SDK/provider cycles, PTYs, large-history/native stress scenarios and real browsers are not part of the default command or fast CI matrix.
|
|
130
|
+
`test:integration` selects the remaining root tests serially; new root tests stay there until explicitly promoted to the fast list.
|
|
131
|
+
`verify:full` runs fast verification, those remaining tests and real-browser scenarios once each; it can take tens of minutes and must be requested explicitly.
|
|
132
|
+
Fast verification is not full integration/browser qualification.
|
|
133
|
+
Missing required browser in the full lane is non-green, never an automatic download.
|
|
134
|
+
For a focused slow regression, pass its file to `test:target`; `test:service` and `test:browser` remain separate explicit lanes.
|
|
135
|
+
Source/extracted PTYs, fabricated loopback providers and isolated HTTPS are distinct from physical humans/devices, paid accounts, package-manager installation and native Windows/macOS/ConPTY qualification.
|
|
136
|
+
Those additional lanes remain unqualified unless their own receipts exist.
|
|
137
|
+
No passing gate authorizes commit, push, publication, installation, deployment or cleanup.
|
|
138
|
+
|
|
139
|
+
## Engineering knowledge
|
|
140
|
+
|
|
141
|
+
This section is the temporary, tool-independent home for project knowledge formerly spread across development-task records.
|
|
142
|
+
Ordinary engineering uses source edits, focused tests and code review directly; no task-management extension, task creation, archive step or workflow-specific agent is required.
|
|
143
|
+
Do not recreate the removed project workflow integration unless explicitly requested.
|
|
144
|
+
`AGENTS.md` is a short entry guide; this section owns the maintained engineering contracts.
|
|
145
|
+
Historical logs are not runtime dependencies, and removing development tooling must never delete consumer `.cadence` data or private service state.
|
|
146
|
+
|
|
147
|
+
### Source ownership and API boundaries
|
|
148
|
+
|
|
149
|
+
| Owner | Responsibility |
|
|
150
|
+
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
|
|
151
|
+
| `src/index.ts`, `src/task-shell.ts`, `src/native-*.ts` | Nonactivating Pi entry, raw native consent, typed service attachment, paging and verified export; no embedded executor |
|
|
152
|
+
| `src/service/host.ts`, `src/service/cli.ts` | Real single-owner composition and explicit management; generated management entry stays SDK-free |
|
|
153
|
+
| `src/service/{coordination,private-files,owner,recovery}.ts` | Canonical overlap exclusion, exact locks, original-operation lifetime and informed local recovery |
|
|
154
|
+
| `src/service/{admission,task-actions,graph,scheduler}.ts` | Context-bound actions, actual current views, finite graph scheduling, check/review barriers |
|
|
155
|
+
| `src/service/{model-config,model-context,model-choice,auth-network}.ts`, `src/sdk-network.ts` | Existing Pi sources, explicit exact model/thinking, original OAuth writeback and strict shared network policy |
|
|
156
|
+
| `src/worker-public.mjs` and `.d.mts`, `src/service-contract.ts` | One portable core/domain/capture codec with matching declarations and facade; TS core/domain/capture modules re-export it |
|
|
157
|
+
| `src/service/contracts/`, `src/service-client.ts`, `src/service-wire.ts`, `src/service-http-client.ts` | Closed DTOs, typed named operations, reply correlation, transport bounds and one projection tracker |
|
|
158
|
+
| `src/subagent-process.ts`, `src/sdk-worker.mjs`, `src/worker-{capture,redaction,tools}.mjs` | Same native worker/check launcher, genuine SDK capture, incremental sanitizer and bounded no-raw-spill bash adapter |
|
|
159
|
+
| `src/history/{writer,run-state,publication}.ts` | One committed sequence authority, shared semantic reducers and expected-byte strict-v1 summaries |
|
|
160
|
+
| `src/history/` readers/proof/search/export/live modules | Original-source integrity, bounded retained navigation, exact search and complete nonblocking exports |
|
|
161
|
+
| `src/task-store.ts`, `src/task-types.ts`, `src/task-diff.ts` | Literal workspace identity, bounded plain summaries/configuration and honest change observation |
|
|
162
|
+
| `web/src/` | Reused presentation and thin shared-client adapters, not SDK/session/execution ownership |
|
|
163
|
+
| `scripts/`, `provenance/`, `licenses/` | Reproducible builds, exact package/body/reference/notice audits and pinned reuse |
|
|
164
|
+
|
|
165
|
+
The native path is `index → shell → native client → service → scheduler/process/history`.
|
|
166
|
+
`src/task-controller.ts` remains a legacy regression subject, not a reachable or shipped production executor.
|
|
167
|
+
The readonly operator and independent research/startup modules must not gain service startup or execution side effects.
|
|
168
|
+
Inspect actual installed public Pi declarations before changing host/SDK bindings; never import private SDK implementation paths or select a global substitute.
|
|
169
|
+
|
|
170
|
+
Key maintained seams include `TaskActions.current/currentChanges/activeRuns/checkObligations`, `ServiceClient.preflight` and named action methods, `HistoryWriter.commit/capture/publishTask`, and `NativeConnection.attach/refresh/detach`.
|
|
171
|
+
Use their current declarations rather than copying DTO parsing, reducers, a second controller, or process ownership into a client.
|
|
172
|
+
|
|
173
|
+
### Admission, execution and original lifetimes
|
|
174
|
+
|
|
175
|
+
- One canonical checkout/state-home domain has one persistent owner, including while idle.
|
|
176
|
+
Registry reservation atomically rejects canonical ancestor/descendant overlaps, including nested Git roots and aliases; a different state-home does not coordinate arbitrary other owners.
|
|
177
|
+
- Native entry requires fresh raw Enter within1500ms, trusted/idle TUI, no pending modal/messages and no child guard.
|
|
178
|
+
Browser authentication grants access, not task consent; normal mutation ingress also requires independently built compatible client/service/assets identities.
|
|
179
|
+
- Boot model choice is absent until explicitly selected.
|
|
180
|
+
Preserve exact provider/model/API/thinking/source identities; unsupported transport or thinking refuses without fallback or clamping.
|
|
181
|
+
Choice changes refuse while accepted work, admissions, barriers or original operations are busy.
|
|
182
|
+
- A120s one-use grant binds exact action, epoch/access/config/control/task raw bytes/graph/cwd/model/check-environment and relevant observations.
|
|
183
|
+
Durable acceptance precedes effects; identical command IDs observe the same receipt, conflicting identities refuse, and inconclusive lookup never means absent.
|
|
184
|
+
- Generate is a separate readonly advisory episode, with no saved graph execution or automatic plan replacement, Save or Start.
|
|
185
|
+
A prospective plan UUID/hash is not a committed reference; accepted retention and successful expected-byte publication establish saved membership.
|
|
186
|
+
- Independent readonly assignments may overlap; writers and native parent checks exclude readers and other writers across tasks.
|
|
187
|
+
Reserve bounded slots/bytes before copying/auth/effects; dependencies use exact committed predecessor content only after actual native and recording settlement.
|
|
188
|
+
Overflow, stale dependencies, first failure or wait expiry closes admission without retry; independent already-running siblings retain their own outcomes.
|
|
189
|
+
- Register the original accepted control flow before its first effect, in addition to separate native/auth/storage originals.
|
|
190
|
+
Reporting timeout, a caught promise, PID absence or an empty roster cannot release resources.
|
|
191
|
+
Stop publishes one shared attempt, quiesces all admissions, requests stops before awaiting children and joins permitted original continuation/safety writes.
|
|
192
|
+
Already-started publication can finish; new post-Stop ordinary publication cannot start.
|
|
193
|
+
- TERM/KILL recheck lease ownership at each signal boundary.
|
|
194
|
+
Native close is authoritative for the direct child, not `exit`, EOF or escaped-descendant closure.
|
|
195
|
+
Unknown process/auth/storage settlement preserves fences; late completion never retroactively repairs an unknown result.
|
|
196
|
+
- Return, navigation, browser disconnect and Pi quit detach accepted work.
|
|
197
|
+
Reconnect does not resend mutations; a refused Cancel permits only another explicit click, not automatic retry.
|
|
198
|
+
|
|
199
|
+
### Checks, publication and review truth
|
|
200
|
+
|
|
201
|
+
Configured checks match exact name, command and timeout; missing obligations project not-run rather than fabricated execution records.
|
|
202
|
+
Manual checks require native local capability and fresh confirmation; browsers have no arbitrary-shell/PTY endpoint.
|
|
203
|
+
Use the frozen service-launch ordinary environment, stripped of access/control material; never merge resolved model auth or a browser environment overlay.
|
|
204
|
+
Service check output retains bounded complete stdout/stderr with independent UTF-8/sanitizer state and explicit observation labels, not the legacy64KiB preview.
|
|
205
|
+
Join both original stream tails, actual EOF/close and storage completion; Node may resume paused stdio while draining exit.
|
|
206
|
+
Known access-token rotation must update private redaction without sending access secrets into child environment.
|
|
207
|
+
|
|
208
|
+
A fresh check may account for exactly one owned generation advance bound to its check/operation/held gate.
|
|
209
|
+
Do not replace this proof with a general before≤after comparison.
|
|
210
|
+
Changes to files, definitions, epoch/cwd/environment or a foreign generation stale the current obligation without rewriting historical native exit or PASS.
|
|
211
|
+
Human Review binds exact selected run/graph/check/change identities and recaptures under a short exclusive barrier only after confirmation, not throughout the human modal.
|
|
212
|
+
Acknowledgment permits reviewed-with-issues, never changes failed/partial/canceled/native/recording/check facts or revives blocked execution.
|
|
213
|
+
Unavailable concurrent views may display conservative stale status but cannot advance authoritative review revisions and invalidate an otherwise unchanged accepted Review.
|
|
214
|
+
|
|
215
|
+
Task v1 remains a strict human-readable summary; rich graph/transcript data never become unknown siblings beside `task.json`.
|
|
216
|
+
`TaskStore.loadSnapshot` includes raw-byte identity; save/publication requires exact expected bytes and revision.
|
|
217
|
+
A same-revision external edit conflicts and remains preserved.
|
|
218
|
+
Summary clipping is labeled and never clips retained detail; a subsequent publication failure remains separate from previously completed execution.
|
|
219
|
+
|
|
220
|
+
### Capture, retained history and privacy
|
|
221
|
+
|
|
222
|
+
The maintained worker uses public SDK APIs, explicit empty resources, in-memory session/settings and disabled retries/compaction/cache warming.
|
|
223
|
+
Verify exact model and effective thinking before READY/prompt; no provider discovery, credential argv/file envelope or implicit network fallback.
|
|
224
|
+
Use the awaited public core-agent subscription for backpressure, reserving synchronous tool/update ingress before any copy or await.
|
|
225
|
+
Custom bash uses public local operations plus the bounded redacted accumulator, not the stock raw-spill accumulator.
|
|
226
|
+
Never await a run's own settlement from inside its awaited subscriber.
|
|
227
|
+
|
|
228
|
+
Sanitize known literals, structured sensitive values and terminal controls before stdout and again before owner persistence.
|
|
229
|
+
Preserve split UTF-8, escaped literals, surrogate pairs and possible secret prefixes across chunks; independent per-chunk string replacement is insufficient.
|
|
230
|
+
Tool-start is an SDK observation, not proof of native execution; tool error is not a parent check result.
|
|
231
|
+
Hidden thinking, signatures, provider envelopes and binary/media bodies remain explicitly omitted.
|
|
232
|
+
Known-secret sanitation is not universal business-secret detection or an OS privacy sandbox.
|
|
233
|
+
|
|
234
|
+
Only the serialized history writer assigns committed sequence and persisted content references.
|
|
235
|
+
Commit actual admission/auth/launch/result facts in order; an index, observer callback or candidate reducer cannot authorize effects.
|
|
236
|
+
Quota/exhaustion/refusal stops unsafe work without eviction; torn tails retain a verified prefix and visible gaps, while interior corruption refuses affected ranges.
|
|
237
|
+
Derived indexes are optional accelerators: readers validate original batches/artifacts, use bounded fallback and never repair on view.
|
|
238
|
+
Prepared journal heads avoid redundant mutable legacy hints; no-root compatibility and its original integrity checks remain.
|
|
239
|
+
|
|
240
|
+
New history uses private format3 at `service-v1/history-v2/`, with exclusive private read-proof key creation before the final format marker.
|
|
241
|
+
Format2 remains readonly, without silent migration or key regeneration.
|
|
242
|
+
AES-256-GCM navigation authenticates bounded suspended source validation; cursors never grant authentication, admission, recovery or lock-release authority.
|
|
243
|
+
Resume must advance actual semantic work and revalidate selected source/key/format incarnations, not merely produce a new nonce or reset proof budgets.
|
|
244
|
+
These are supported-writer observations, not atomic snapshots of every archived file or change-and-revert detection.
|
|
245
|
+
|
|
246
|
+
History data pages are untagged; list readers also return explicit `progress` or initial `snapshot`, while detail/entity/graph return data or progress.
|
|
247
|
+
`SearchPage` has hits/next/coverage: zero hits with next is not completion.
|
|
248
|
+
Keep exact snapshot/entity/version/UTF-8 ranges and source coverage; do not map progress to an empty successful page or rebase Back navigation.
|
|
249
|
+
Readonly POST uses the same finite security/decoder boundary when inputs cannot fit GET; it is not execution consent.
|
|
250
|
+
Exports stream task/run/child scope with actual counts/digest/watermark/trailer and original EOF; revoked or interrupted output has no successful completion.
|
|
251
|
+
Browser download requested is not UI-verified completion; native export verifies the complete stream and creates destinations exclusively.
|
|
252
|
+
|
|
253
|
+
### Current resource ceilings
|
|
254
|
+
|
|
255
|
+
Byte values are UTF-8/encoded bounds where specified; they are not targets to silently increase when a fixture fails.
|
|
256
|
+
|
|
257
|
+
| Boundary | Default / ceiling |
|
|
258
|
+
| --------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
259
|
+
| Graph / assignments | 512KiB body;1–16 required assignments |
|
|
260
|
+
| Scheduling | 8 episodes;128 queued assignments;2 preparing/running/closing child-or-check reservations |
|
|
261
|
+
| Policy deadlines | 6h episode;10min ready wait;20min default worker |
|
|
262
|
+
| Dependency input | 16KiB per predecessor;32KiB aggregate; oversized required input blocks, not clips |
|
|
263
|
+
| Worker request | 96KiB public pre-auth plus32KiB reserve; actual complete envelope128KiB |
|
|
264
|
+
| Process stop | TERM then KILL after1000ms; unknown after3000ms without confirmed close |
|
|
265
|
+
| Native service checks | 16MiB aggregate raw output;64KiB raw chunk;32MiB retained detail; legacy256KiB/64KiB behavior unchanged |
|
|
266
|
+
| Capture | 64KiB encoded frame;8KiB decoded chunk;32MiB detail;128MiB child protocol |
|
|
267
|
+
| Capture queues | Worker4MiB/1024 frames; owner8MiB/2048;5s reporting stall retains original charges |
|
|
268
|
+
| Task v1 | 128KiB record; goal8KiB/plan32KiB/result and baseline16KiB;32 checks/64 activity;1000-task compatibility ceiling |
|
|
269
|
+
| Read quantum | 8MiB or100ms cooperative work, including resumed proof/accounting |
|
|
270
|
+
| Read replies | 512KiB full paged/progress Reply;256KiB detail text; graph data/export-frame1MiB with graph body512KiB |
|
|
271
|
+
| Paging/search | 50 default/200 maximum entries; literal case-sensitive query1–1024 bytes |
|
|
272
|
+
| Navigation | 8192 encoded ASCII bytes; encrypted plaintext6000 bytes; no execution authority |
|
|
273
|
+
| Live/export | 16 viewers,256 messages/1MiB each; two search/two export readers;120s download idle, not total archive timeout |
|
|
274
|
+
| Storage | 10GiB checkout quota;512MiB reserved per episode;256MiB free-space floor; no TTL cleanup |
|
|
275
|
+
| Assets | 16MiB per member/64MiB closure; fixed complete manifest and all font bodies |
|
|
276
|
+
|
|
277
|
+
### Validation and regression lessons
|
|
278
|
+
|
|
279
|
+
| Condition | Required behavior |
|
|
280
|
+
| -------------------------------------------------------------- | --------------------------------------------------------------------------------- |
|
|
281
|
+
| Missing/unsafe/corrupt/partial selected state | Absent or fixed refusal; no bootstrap, adoption, repair or cleanup on observation |
|
|
282
|
+
| Native exit0 with recording/stdin/final/cleanup failure | Preserve native zero independently; no workflow success |
|
|
283
|
+
| Stale grant, selected task bytes or model/source identity | Refuse and require fresh observation/confirmation |
|
|
284
|
+
| Unknown original stop/auth/storage or changed lease | Retain fences/charges; no guessed process signaling or automatic release |
|
|
285
|
+
| Failed/unrun/stale check, partial child or incomplete coverage | Explicit issues review; preserve independent recorded outcomes |
|
|
286
|
+
| Lost reply or detached view | Observe original receipt/run; no mutation replay or implicit Cancel |
|
|
287
|
+
| Invalid read proof or changed source/key | Refuse; never rebase or interpret budget exhaustion as absence |
|
|
288
|
+
| Dirty/partial/extra compiled assets or unsafe archive | Refuse in place; no source refill, wildcard serving or fallback build |
|
|
289
|
+
|
|
290
|
+
Good: current context → explicit grant → durable acceptance → genuine original native/storage settlement → exact retained dependency → real checks → human review.
|
|
291
|
+
Base: a client leaves and another reattaches to the same accepted run without launching it again.
|
|
292
|
+
Bad: model prose, a valid cursor, a prepared graph, one native exit or a human Done checkbox becomes fabricated execution/check success.
|
|
293
|
+
|
|
294
|
+
Wrong: release a reservation when `Promise.race` reports a timeout, or retry a mutation when its reply is missing.
|
|
295
|
+
Correct: retain the original operation/fences and observe the exact receipt; a separately explicit safety request does not renew task consent.
|
|
296
|
+
Wrong: show only preview/ring text as full history, or sum overlapping test runs into a larger suite total.
|
|
297
|
+
Correct: expose bounded continuations/full exports and report the exact executed domain and final original exit.
|
|
298
|
+
|
|
299
|
+
### Development and verification practice
|
|
300
|
+
|
|
301
|
+
Read affected source and adjacent tests, identify the actual owner of a contract, then make the smallest coherent change.
|
|
302
|
+
Use ordinary source editing and directly affected checks while developing; run the fast `verify` command at stable boundaries.
|
|
303
|
+
Request the explicit integration/browser lanes when those capabilities need qualification; do not silently start the entire suite after a local edit or a publication request.
|
|
304
|
+
Keep fast-check results separate from real native/SDK/browser evidence, and never replace a required integration result with unit mocks or citation counts.
|
|
305
|
+
On this development host create fresh0700 disk roots under `/home/mirako/abel` and explicitly set TMPDIR/TEMP/TMP; `/tmp` is inode-exhausted.
|
|
306
|
+
Use fabricated credentials, isolated browser/profile/state roots and local fixtures; never personal credentials, automatic downloads or unknown process cleanup.
|
|
307
|
+
Outer command budgets must cover whole suites and preserve original runner waits; existing SDK20s/child15s, PTY90s/interaction15s and browser120s/action15s fixture budgets are not increased to obtain green.
|
|
308
|
+
Preserve failed attempts; correct a demonstrated cause before rerunning, and never assign old failures a retrospective cause without evidence.
|
|
309
|
+
|
|
310
|
+
Regression owners:
|
|
311
|
+
|
|
312
|
+
- `service-contract`, `service-current`, `service-model-choice`, `service-auth`: closed DTOs, exact source/choice/current authority, security and compatibility.
|
|
313
|
+
- `service-owner`, `service-accepted-work`, `service-stop-continuation`, `service-recovery`: original operations, overlap, Stop, unknown fences and informed recovery.
|
|
314
|
+
- `service-scheduler`, `service-checks`, `service-human-review`, `service-accepting-host`: real SDK overlap/exclusion, native checks, review and publication.
|
|
315
|
+
- `worker-*`, `lightweight-sdk`, `lightweight-process-diff`: genuine SDK/tool capture, split redaction, no-spill bounds and original native facts.
|
|
316
|
+
- `service-history-*`: durable ordering, cold/no-index/restarted proof/search/export, corruption/torn/quota and expected-byte publication.
|
|
317
|
+
- `lightweight-shell`, `native-client`, `native-history`, `terminal-integration`: native consent, shared service, Unicode/paging, detach/cancel and actual source/extracted PTYs.
|
|
318
|
+
- `test/web/`: adapted pure/SSR tests separately from actual built-browser contexts, HTTPS, mixed clients, focus/viewports and complete downloads.
|
|
319
|
+
- `package-*`, `distribution`, `service-package`, `independence`: exact tar/member/body/import/notice closure and nonactivating installation/discovery.
|
|
320
|
+
|
|
321
|
+
Regenerate operator/service/native/browser outputs only through their canonical builders; `--check` variants compare new private output without overwriting canonical bytes.
|
|
322
|
+
Review the independently enumerated package member list and every emitted body, not a count or an expected list generated from the tar under test.
|
|
323
|
+
Keep public Pi peers external, the exact ws runtime edge and all upstream/font/vendor notices.
|
|
324
|
+
Preserve original license bytes through their precise Git attributes; line-ending normalization must not invalidate audited source/notice hashes.
|
|
325
|
+
|
|
326
|
+
### Prior integrated acceptance snapshot
|
|
327
|
+
|
|
328
|
+
Before removal of development-workflow tooling, the integrated redesign passed full `verify`:1839 root tests/69 files,110 web tests/8 files and5 real-browser scenarios/3 files, with27 existing Windows-only controls skipped on Linux.
|
|
329
|
+
It also passed separate129-member/35-runtime-source real pack/extraction, all four source/extracted regular/fullscreen Pi PTYs, mixed clients, CA-validated HTTPS/WSS, plain/gzip OAuth proxy, informed recovery and complete retained-history exports.
|
|
330
|
+
Observed environment: Linux x86_64, Node26.7.0, Bun1.3.14, Pi0.84.3 and Chromium151.0.7922.34.
|
|
331
|
+
These are prior executed results, not a claim that every later edit or other environment has been tested.
|
|
332
|
+
The implementation/docs/evidence checkpoints are Git commits `b0fde94`, `531b158` and `2fd28b0`; historical failed/unknown outcomes are not rewritten by this summary.
|
|
333
|
+
Additional Windows/macOS/ConPTY, Node22/other peers, paid accounts/every adapter, physical phone/human/second-machine, package-manager installation and real deployment remain unqualified.
|
|
334
|
+
|
|
335
|
+
## Licenses and reuse
|
|
336
|
+
|
|
337
|
+
Cadence is MIT.
|
|
338
|
+
The substantial pinned pi-web-ui adaptations, original notices, emitted dependencies, Feather icons, KaTeX OFL fonts and vis embedded vendors are documented in [reuse and distribution](docs/reuse-and-distribution.md) and [third-party notices](THIRD_PARTY_NOTICES.md).
|
|
339
|
+
Not all bundled material is covered by Cadence's MIT license.
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -10,3 +10,18 @@ The complete MIT license text of the referenced package is bundled at `licenses/
|
|
|
10
10
|
| ----------------------------------------------- | ------------------------------- | --------------------------------------------- |
|
|
11
11
|
| FIFO settlement of queued work | gotgenes/pi-packages @ a1ee2255 | packages/pi-subagents (state/queue semantics) |
|
|
12
12
|
| Cancellation cleanup and born-complete disposal | gotgenes/pi-packages @ a1ee2255 | packages/pi-subagents (session lifecycle) |
|
|
13
|
+
|
|
14
|
+
## pi-web-ui workspace and authentication adaptation
|
|
15
|
+
|
|
16
|
+
Cadence directly adapts token digest comparison, cookie encoding/decoding, bootstrap and pre-upgrade authorization patterns from `xing-shuyin/pi-web-ui`, commit `e8bab487af208bc9a1ab60a821652323f598127f`, copyright 2026 xing-shuyin (MIT).
|
|
17
|
+
The source/destination inventory and deliberate security changes are recorded in `provenance/auth-reuse.json`.
|
|
18
|
+
The complete upstream notice is preserved at `licenses/pi-web-ui-MIT.txt`.
|
|
19
|
+
The substantial workspace/navigation/transcript/tool/Markdown/review/search/timeline/responsive/reconciliation adaptations are inventoried in `provenance/webui-reuse.json` and summarized in shipped `docs/reuse-and-distribution.md`.
|
|
20
|
+
|
|
21
|
+
## Bundled browser dependencies, icons and fonts
|
|
22
|
+
|
|
23
|
+
`licenses/bundled-web.txt` preserves the full actual emitted dependency notices, including React/DOM/scheduler, react-icons and Feather, unified/Markdown/HTML utilities, highlight.js, KaTeX and vis-timeline's embedded vendor versions.
|
|
24
|
+
KaTeX font bytes retain separate SIL Open Font License 1.1 and reserved-family notices; KaTeX's MIT code license does not replace them.
|
|
25
|
+
The vis standalone bundle's embedded versions are bound to audited source artifacts, not assumed equal to current project dependencies.
|
|
26
|
+
Repository `provenance/bundled-notices.json` binds source modules, output assets/fonts and complete notice byte ranges/hashes.
|
|
27
|
+
No notice-only package is added as a runtime dependency.
|
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: design-explorer
|
|
3
|
+
description: Readonly planning and research for an explicit Cadence task
|
|
4
|
+
---
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
# Design Explorer
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
Understand the supplied goal and inspect relevant local sources with readonly tools.
|
|
9
|
+
Read project conventions and adjacent code; cite concrete paths and distinguish facts from assumptions.
|
|
10
|
+
Suggest a small, readable plan with scope, risks and useful checks, or summarize research conclusions.
|
|
11
|
+
State missing evidence and unavailable capabilities honestly; do not invent a successful check.
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Omission is not a verified absence or authorization.
|
|
15
|
-
Optional arrays may describe structures, conventions, dependencies, write-set hints, validation hints, agent impact, and success criteria.
|
|
16
|
-
|
|
17
|
-
Do not return a raw transcript or hidden reasoning.
|
|
18
|
-
Make every claim cite a workspace-relative path and line range.
|
|
19
|
-
If evidence is insufficient, state the blocking question instead of guessing.
|
|
20
|
-
If a correction is needed, correct it once, then stop when the final answer is complete.
|
|
21
|
-
Brief accompanying text is harmless.
|
|
13
|
+
Your plan is advisory, not permission to edit.
|
|
14
|
+
Do not change files, run shell commands, delegate editing, mutate Git, install software, clean consumer data or publish.
|
|
15
|
+
Do not invoke workflow commands or approve your own work.
|
|
16
|
+
Never reveal credentials, private diagnostics or session transcripts.
|
|
17
|
+
Return a concise final answer with references and unresolved questions; the human reviews it in the terminal.
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: diagnosis-worker
|
|
3
|
+
description: Readonly diagnosis with evidence, hypotheses and honest limitations
|
|
4
|
+
---
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
# Diagnosis Worker
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
Investigate the supplied symptoms using readonly local-source tools.
|
|
9
|
+
Read adjacent code and tests, cite exact paths, and separate observed facts from hypotheses.
|
|
10
|
+
Compare plausible causes and describe evidence that would falsify each one.
|
|
11
|
+
Report unavailable collectors, missing reproduction evidence and uncertainty explicitly.
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Use the terms failing-regression and minimum-repair when describing the diagnosis algorithm.
|
|
15
|
-
Never claim a result, and never invent a fix for an unverified root cause.
|
|
16
|
-
Keep output bounded.
|
|
17
|
-
If a correction is needed, describe the minimum repair and its verification condition, then stop when the final answer is complete.
|
|
13
|
+
Do not repair files, run shell commands, mutate Git, install software, clean consumer material, publish or delegate editing.
|
|
14
|
+
A useful repair suggestion is not permission to perform it; editing requires a separate code task and fresh terminal consent.
|
|
15
|
+
Never expose credentials, private diagnostics or session transcripts.
|
|
16
|
+
Return a concise assessment, supporting references and suggested next steps for human review.
|
|
17
|
+
Do not claim a successful check, certified result or applied repair from source inspection alone.
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: implementation-worker
|
|
3
|
+
description: One ordinary editing agent working from a human-reviewed Cadence plan
|
|
4
|
+
---
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
# Implementation Worker
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
Implement the supplied goal and approved plan in the chosen working copy using ordinary host tools.
|
|
9
|
+
Read project conventions and adjacent code/tests first; reuse existing helpers and make the smallest complete change.
|
|
10
|
+
Preserve pre-existing user edits and unrelated files.
|
|
11
|
+
If the plan is insufficient or contradictory, report the blocker instead of silently expanding scope.
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Finish without claiming a result; the parent owns result acceptance.
|
|
13
|
+
Edits are direct: there is no disposable candidate, automatic rollback or filesystem sandbox.
|
|
14
|
+
Do not mutate Git (including stage/commit/reset), install software, delete consumer state, publish or invoke workflow commands.
|
|
15
|
+
Do not spawn another editing agent or automatically retry a failed work session.
|
|
16
|
+
Do not access credentials, private diagnostics or unrelated session history.
|
|
15
17
|
|
|
16
|
-
Finish with a concise
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
Respect output limits (including a terminal `result-limit`) and stop when the requested work is complete.
|
|
20
|
-
If a correction is needed, correct it once, then stop when the final answer is complete.
|
|
21
|
-
Brief accompanying text is harmless.
|
|
18
|
+
Finish with a concise summary of changes, paths, checks actually attempted and remaining issues.
|
|
19
|
+
Your prose and process exit are not passing parent checks or human approval.
|
|
20
|
+
The parent separately runs explicitly confirmed commands and presents changes for human review.
|