Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
caf8a56
feat(source): add managed source plugins
Junkrat77 Oct 19, 2026
4569636
fix(source): simplify target snapshots and correct discovery boundaries
Junkrat77 Oct 22, 2026
b45127c
chore(source): sync master and regenerate contracts
Junkrat77 Oct 23, 2026
d79b182
fix(source): preserve legacy cursor pagination scope
Junkrat77 Oct 23, 2026
92105fe
fix(source): omit configuration paths from startup logs
Junkrat77 Oct 23, 2026
6ca575c
fix(source): align source listing contract and access tests
Junkrat77 Oct 23, 2026
f034343
fix(auth): separate server admins from scope presets
Junkrat77 Oct 26, 2026
136696c
fix(source): bound collect status to the latest submission
Junkrat77 Oct 26, 2026
f7c8513
fix(source): sync host tooling and restore guidance
Junkrat77 Oct 26, 2026
482ccdf
merge: sync master and integrate source plugin migrations
Junkrat77 Oct 26, 2026
4405d07
fix(source): align CI contracts and fixtures
Junkrat77 Oct 26, 2026
6849156
fix(source): clarify local deployment platform requirements
Junkrat77 Oct 26, 2026
250c8a0
fix(desktop): qualify source plugin server contract
Junkrat77 Oct 26, 2026
6ef5c49
merge: sync master into source plugins
Junkrat77 Oct 27, 2026
753b1a1
merge: sync master into source plugins
Junkrat77 Oct 28, 2026
c7d0bde
fix(source): enforce host guards and refresh stale targets
Junkrat77 Oct 29, 2026
14e5ede
merge: sync master upgrade policy into source plugins
Junkrat77 Oct 29, 2026
35ed63c
fix(source): reject targets exceeding sync budget
Junkrat77 Oct 30, 2026
0a49db9
merge: sync master into source plugins
Junkrat77 Oct 30, 2026
02df847
chore(desktop): qualify merged source plugin server
Junkrat77 Oct 30, 2026
80a16a7
fix(cindy): rebuild worker with source operations
Junkrat77 Oct 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion desktop/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ Installed boundary checks exercise an 8192-byte Unicode note, reject over-budget

After upgrading from an earlier preview, open Connections and select your saved connection. Profiles matching the bundled API contract appear under “Available for this Desktop build”; compare their tested Server builds with your deployment before selecting one, saving, checking and explicitly using the connection again. New connections start with no compatibility selection.

Historical profiles appear as disabled records. A saved incompatible or unavailable selection remains visible with an explanation until explicitly replaced; it is never silently upgraded. For qualified current Server sources, explicitly choose `sqlite-atomic-dd62723d-v1` or `sqlite-atomic-4ffdf4e9-v1` according to the recorded Server sources and wheel, then check the connection before selecting a Scope. Both records match this bundled contract and retain their independently verified operation sets. Historical profiles, including `sqlite-atomic-c535d816-v1`, retain their original Server sources, contracts and operation sets and do not match this bundled contract. The recorded Server source and wheel identities must match the deployment you intend to use. The independently qualified `ci-fixtures` build is for disposable acceptance tests. Historical qualification evidence and remaining requirements are documented in the [validation guide](VALIDATION.md).
Historical profiles appear as disabled records. A saved incompatible or unavailable selection remains visible with an explanation until explicitly replaced; it is never silently upgraded. For the qualified current Server sources, explicitly choose `sqlite-atomic-68491568-v1` and check the connection before selecting a Scope; that record's contract digest matches this build's bundled contract, while `sqlite-atomic-dd62723d-v1`, `sqlite-atomic-98275dbb-v1`, `sqlite-atomic-1da99747-v1`, `sqlite-atomic-8f10c560-v1`, `sqlite-atomic-d9a78567-v1`, `sqlite-atomic-caf2a35a-v1`, `sqlite-atomic-683e2db0-v1` and `sqlite-atomic-cab054db-v1` qualify their corresponding Server source deployments and do not match it. The recorded Server source and wheel identities must match the deployment you intend to use. The independently qualified `ci-fixtures` build is for disposable acceptance tests. Historical qualification evidence and remaining requirements are documented in the [validation guide](VALIDATION.md).

## Build on macOS

Expand Down
2 changes: 1 addition & 1 deletion desktop/README.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ Windows GitHub Actions 会构建未签名安装包,安装到临时中文路径

从早期预览版升级后,请打开「连接」并选中已保存的连接。与当前 API 契约匹配的配置显示在「此 Desktop 构建可用」中;先核对已测试的 Server 构建与实际部署,再明确选择、保存、检查并使用该连接。新连接默认不选择兼容配置。

历史配置显示为不可选择的记录。已保存的不匹配或不可用配置仍会显示并说明原因,须明确替换,不会静默升级。对于已资格化的当前 Server 源码,请按记录的 Server 源码和 wheel 明确选择 `sqlite-atomic-dd62723d-v1` 或 `sqlite-atomic-4ffdf4e9-v1`,检查连接后再选择范围。两项记录均匹配本构建的契约,并保留各自独立验证的操作集合。包括 `sqlite-atomic-c535d816-v1` 在内的历史配置保留原有 Server 源码、契约和操作集合,不匹配本构建的打包契约。已记录的 Server 源码和 wheel 身份必须与实际部署一致。独立验证的 `ci-fixtures` 构建仅用于临时验收测试。历史资格证据和剩余要求见[验证说明](VALIDATION.md)。
历史配置显示为不可选择的记录。已保存的不匹配或不可用配置仍会显示并说明原因,须明确替换,不会静默升级。对于已资格化的当前 Server 源码,请按记录的 Server 源码和 wheel 明确选择 `sqlite-atomic-68491568-v1`,检查连接后再选择范围。该记录匹配本构建的契约,并保留独立验证的操作集合。包括 `sqlite-atomic-c535d816-v1` 在内的历史配置保留原有 Server 源码、契约和操作集合,不匹配本构建的打包契约。已记录的 Server 源码和 wheel 身份必须与实际部署一致。独立验证的 `ci-fixtures` 构建仅用于临时验收测试。历史资格证据和剩余要求见[验证说明](VALIDATION.md)。

## 在 macOS 上构建

Expand Down
74 changes: 73 additions & 1 deletion desktop/VALIDATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ The historical Server c535d816 protocol qualification below records the specific

## Compatibility scope

[compatibility.json](src-tauri/src/connections/compatibility.json) preserves each recorded Server source, normalized OpenAPI contract digest, qualification-wheel digest and operation set. The bundled contract digest matches `sqlite-atomic-cc5980f0-v1`, which records the ten protocol operations qualified below. The `sqlite-atomic-dd62723d-v1` and `sqlite-atomic-4ffdf4e9-v1` records retain their migration-framework and release-preparation source qualifications with their original contract digest. Other historical records also retain their exact identities and evidence. Ordinary builds require explicitly selecting the record whose tested Server source and wheel match the deployment, then checking the connection before business operations become available. Records with a different contract digest are disabled in the selector, and saved unavailable selections remain visible until explicitly replaced. Selecting a profile does not extend its recorded operation set or qualify a different Server source. CI builds have their own artifact identities and do not change product qualification.
[compatibility.json](src-tauri/src/connections/compatibility.json) preserves each recorded Server source, normalized OpenAPI contract digest, qualification-wheel digest and operation set. The bundled contract matches `sqlite-atomic-0a49db9b-v1`, which qualifies the eleven protocol operations recorded below. Existing records retain their exact source and contract identities. The `sqlite-atomic-dd62723d-v1` and `sqlite-atomic-4ffdf4e9-v1` records retain their migration-framework and release-preparation source qualifications with their original contract digest. Other historical records also retain their exact identities and evidence. Ordinary builds require explicitly selecting the record whose tested Server source and wheel match the deployment, then checking the connection before business operations become available. Records with a different contract digest are disabled in the selector, and saved unavailable selections remain visible until explicitly replaced. Selecting a profile does not extend its recorded operation set or qualify a different Server source. CI builds have their own artifact identities and do not change product qualification.

The real Server harness covers SQLite with anonymous loopback, static Bearer, HTTPS with explicit CA/base path, and injected-provider/enforced access. It exercises save/search/exact reads, identity changes, binding revocation, ambiguous writes without replay and Scope pagination. Installed UI checks cover repeated launches preserving the existing editor, late committed-save responses preserving a new Scope draft, explicit connection/Scope selection, clipboard copies, connection isolation, draft cancellation, byte limits and independent Server survival after Desktop exit.

Expand All @@ -61,6 +61,44 @@ Selecting a compatibility profile does not attest the remote binary identity. Ex

### Server protocol qualification records

#### Server 0a49db9b protocol qualification

`sqlite-atomic-0a49db9b-v1` qualifies Server sources at `0a49db9bf640703e1067ecda67650f20612d3427`
for OpenAPI digest `bce4e0d3deec56590a29c3c06af4d853fc8cad2917d8832b23c92dd160472ccd`.
The wheel `powercontext-1.4.1.dev0+g0a49db9b-py3-none-any.whl` has SHA-256
`8e57881de55502f99f44a6076bcffee2935f3d3666a00330664f4bcb0fb92150`. It was built from `git archive` of that commit with
`SETUPTOOLS_SCM_PRETEND_VERSION=1.4.1.dev0+g0a49db9b uv build --wheel`.
All 649 packaged runtime files match the archived sources byte for byte;
the sorted runtime path/content-digest manifest has SHA-256
`da9bf44eb0b21cfa72cef3cc863e87322a4c1d98af3dd7409d94d0e9ba57d9a6`.

On 2026-10-30, Linux x86_64, Python 3.12.12 and Rust 1.95.0 ran
`desktop/tests/real_server.py` against that wheel in independent SQLite Server processes.
Anonymous loopback, static Bearer, HTTPS with an explicit CA/base path, and
injected-provider/enforced access all passed. The eleven recorded operations include
Server discovery, health/readiness, principal/capabilities, Scope listing/detail/default,
Atomic Memory save/search and exact Artifact revision reads. The native context owner
also passed identity changes, same-identity revocation, committed writes with lost
responses without replay, Scope pagination and independent Server survival after client exit.

The native probe compiled the unchanged product `connections`, `credentials`, `error`,
`session_observations` and `transport` modules and `server_probe.rs` in a standalone library.
Resolved dependency versions and checksums match the product Cargo lock. The standalone
library excludes the Tauri GUI shell; it links the host's installed D-Bus library.
This qualifies the stated SQLite protocol behavior, not Windows/macOS execution,
native credential persistence, installed GUI workflows, signing or release readiness.
Historical records retain their original identities and evidence.

Reproduce using the archived wheel, native `server_probe` build,
`fixture_qualification.py --server-commit 0a49db9bf640703e1067ecda67650f20612d3427`, and
`real_server.py` as described below. Ignored evidence is retained in
`desktop/.artifacts/real-server.json` and `desktop/.artifacts/qualification-wheel-identity.json`.

本记录绑定上述准确源码、契约和 wheel;649 个运行时文件逐一核对一致。
四种真实 SQLite/HTTP 连接模式均已通过,覆盖包括 Server discovery 在内的十一项协议操作。
原生探针使用未修改的产品协议模块及产品锁文件中的依赖版本。
本次验收不覆盖 Windows/macOS 执行、原生凭据持久化、安装后 GUI 或发布验收。

#### Server cc5980f0 protocol qualification

`sqlite-atomic-cc5980f0-v1` qualifies Server sources at
Expand Down Expand Up @@ -151,6 +189,40 @@ original source, contract and wheel identities.
原生探针通过匿名回环、Bearer、显式 CA/路径前缀 HTTPS 及强制访问控制四种真实 SQLite
协议验收。该记录仅覆盖所列十项操作,不包含 manifest 摘要、Windows、安装包或原生凭据库验收。

#### Server 68491568 protocol qualification

`sqlite-atomic-68491568-v1` qualifies Server sources at `68491568359fd9f5723208bbeeec2f808fd2bcc9`
for OpenAPI digest `b89e721f9fba1c4ef4267b4420af417e5a88a7f7fbe893f639df913b77d24dc0`.
The wheel is `powercontext-1.4.1.dev188+g684915683-py3-none-any.whl`,
SHA-256 `91c54cfd8551cc1590abcedb8bbd7bf9865ffc41667fee7b3ac015c249f8bbfb`. All 634 packaged runtime files
match the clean source commit byte for byte; the sorted runtime manifest digest is
`13a9fac57efe09f5f336f2bb5dcb82b07d2e161dcb31c267f3ef60247a6e805b`
(one `wheel/path sha256` line per file, with a final newline).

On 2026-10-26, Linux x86_64, Python 3.12.12 and Rust 1.95.0 ran the existing
`desktop/tests/real_server.py` harness against this wheel and independent SQLite Servers.
All four modes passed: anonymous loopback, static Bearer, HTTPS with an explicit CA/base path,
and an injected provider with enforced access. The ten recorded operations cover Atomic Memory
save/search/exact reads, Scope selection and pagination, identity changes and revocation,
committed writes with lost responses without replay, and Server survival after client exit.

The native client compiled the unchanged product `connections`, `credentials`, `error` and
`transport` modules and existing `server_probe.rs` in a standalone library, excluding the Tauri GUI
shell. Every resolved dependency version and checksum matches the product Cargo lock.
This qualifies the stated SQLite protocol behavior, not Windows/macOS execution, native credential
persistence, installed GUI workflows, signing or release readiness. Historical records retain their
original identities and evidence.

Reproduce from the recorded source using the wheel build, native `server_probe` build,
`fixture_qualification.py --server-commit 68491568359fd9f5723208bbeeec2f808fd2bcc9`, and
`real_server.py` commands described below for Linux protocol-only qualification.
Ignored evidence is retained in `desktop/.artifacts/real-server.json` and
`desktop/.artifacts/qualification-wheel-identity.json`.

本记录绑定上述精确源码、契约和 wheel;四种真实 SQLite/HTTP 连接模式均已通过。
原生客户端使用未修改的产品协议模块,依赖版本及校验和与产品 Cargo 锁文件一致。
本次验收不覆盖 Windows/macOS 执行、原生凭据库、安装后 GUI 或发布验收。

#### Server 4ffdf4e9 protocol qualification

`sqlite-atomic-4ffdf4e9-v1` qualifies the v1.4.1 preparation sources at
Expand Down
39 changes: 39 additions & 0 deletions desktop/src-tauri/src/connections/compatibility.json
Original file line number Diff line number Diff line change
Expand Up @@ -304,5 +304,44 @@
"search_memory"
],
"evidence": "desktop/VALIDATION.md#server-c535d816-protocol-qualification"
},
{
"id": "sqlite-atomic-68491568-v1",
"serverCommit": "68491568359fd9f5723208bbeeec2f808fd2bcc9",
"contractSha256": "b89e721f9fba1c4ef4267b4420af417e5a88a7f7fbe893f639df913b77d24dc0",
"artifactSha256": "91c54cfd8551cc1590abcedb8bbd7bf9865ffc41667fee7b3ac015c249f8bbfb",
"operations": [
"get_access_principal",
"get_artifact_revision",
"get_capabilities",
"get_default_scope",
"get_liveness",
"get_readiness",
"get_scope",
"list_scopes",
"remember_memory",
"search_memory"
],
"evidence": "desktop/VALIDATION.md#server-68491568-protocol-qualification"
},
{
"id": "sqlite-atomic-0a49db9b-v1",
"serverCommit": "0a49db9bf640703e1067ecda67650f20612d3427",
"contractSha256": "bce4e0d3deec56590a29c3c06af4d853fc8cad2917d8832b23c92dd160472ccd",
"artifactSha256": "8e57881de55502f99f44a6076bcffee2935f3d3666a00330664f4bcb0fb92150",
"operations": [
"get_access_principal",
"get_artifact_revision",
"get_capabilities",
"get_default_scope",
"get_liveness",
"get_readiness",
"get_scope",
"get_server_info",
"list_scopes",
"remember_memory",
"search_memory"
],
"evidence": "desktop/VALIDATION.md#server-0a49db9b-protocol-qualification"
}
]
2 changes: 1 addition & 1 deletion desktop/src-tauri/src/transport/operations.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"contractSha256": "fd8f5dcf8dfb1a02c186623c08c3c62217ecdbc21a80cd5d9c329f3497b85f7d",
"contractSha256": "bce4e0d3deec56590a29c3c06af4d853fc8cad2917d8832b23c92dd160472ccd",
"operations": {
"get_liveness": {
"method": "GET",
Expand Down
Loading
Loading