Skip to content

chore(release): prepare v1.5.0 and refresh product screenshots - #2395

Merged
hidb4ai merged 11 commits into
masterfrom
codex/release-v1.5.0
Nov 2, 2026
Merged

hidb4ai merged 11 commits into
masterfrom
codex/release-v1.5.0

Conversation

@hidb4ai

@hidb4ai hidb4ai commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Which issue or RFC does this PR close?

Release preparation for PowerContext v1.5.0; no issue closure.

Merge order: Depends on #2307 (Gateway alpha) and #2394 (historical Server storage normalization). Merge both into master before merging this release PR or publishing v1.5.0. The release notes describe the final v1.5.0 feature set.

Use squash merge for this PR so superseded recording assets from intermediate commits are excluded from the history introduced into master. The review branch retains its existing commits.

  • Merge feat(gateway): add Rust PowerContext Gateway executor #2307 and fix(migrations): support historical Server upgrade paths #2394, then synchronize this branch with origin/master.
  • Check the combined tree: gateway/ is present and its documented endpoints, memory options, and complete-response buffering match the implementation; historical storage normalization is present and its release description remains accurate.
  • Retain the merged persistence review declaration, compare schema_review.persistence_sha256 with the combined tree, and update the digest and rationale if further persistence changes require it. Run make upgrade-policy-check and make release-check VERSION=1.5.0; publication still requires the existing upgrade acceptance and support-declaration gates.

Rationale for this change

Prepare the v1.5.0 installation references, API metadata, release notes, and upgrade guidance together. Replace all Dashboard and Desktop README images with populated recordings of the applications in their built-in dark themes.

README media tradeoff: The six shared GIFs total 21.09 MiB; the English/Japanese README loads 11.47 MiB and the Chinese README loads 9.63 MiB. The 1280-pixel width, 10 fps, and 17–19.5-second loops preserve readable English/Chinese UI text and complete search, Handoff, and exact-revision reading flows at normal speed. This transfer-size budget is intentional for automatically playing previews. Lossless optimization of the English Dashboard Handoff and Desktop samples saved only 2.55% and 3.27%; full-duration 8 fps samples saved 15.89% and 6.77%. The selected assets retain their current readability, timing, and motion.

What changes are included in this PR?

  • Run make version-bump VERSION=1.5.0, regenerate Python, Dify, and Desktop contracts, and keep independent plugin/Desktop package versions and historical migration identifiers intact. Align the Server identity regression test with the v1.5 API contract.
  • Add English and Chinese release notes covering Source/Artifact plugins, context receipts and manifests, inference protection, Rust PowerContext Gateway (alpha, feat(gateway): add Rust PowerContext Gateway executor #2307), historical Server database migrations (fix(migrations): support historical Server upgrade paths #2394), Desktop/Ops, integrations, and deployment changes. Document coordinated client upgrades, the explain/reason replacement, prompt v2 requirements, and the existing upgrade restrictions.
  • Synchronize both migration guides and the upgrade acceptance README with the v1.5.0 target and v1_5_0_001; correct the release guide to require all twelve installed-release upgrade configurations.
  • Replace every Dashboard and Desktop README image with six bilingual dark-theme GIFs across the three README editions. Separate recordings show Dashboard memory search and saved revisions, Handoff reading and revision history, and native Desktop Scope selection, search and exact-revision reading. Each GIF is 1280 pixels wide at 10 fps and runs for 17–19.5 seconds. Remove the unused static screenshots and their README links. The isolated Atlas Commerce demonstration contains real persisted Sources, memories, Handoffs, and revision history; the configured LLM extracted memories and prepared the Handoff drafts, which were reviewed before committing. No existing user database was modified.
  • Add a Desktop compatibility record for the new contract digest, backed by a wheel from 112db11e885c38b997da2177e03a4065a7e35dc3, byte-for-byte checks of all 679 runtime files, and the unchanged native real-Server harness. Historical qualification records are preserved.

Are there any user-facing changes?

Installation examples and the website changelog target v1.5.0. All Dashboard and Desktop README images are looping dark-theme recordings of populated Memory and Handoff workflows, including native Desktop search and the exact-revision reader.

This preparation PR adds no runtime behavior or database migration. upgrade-required remains in force; the full installed-release upgrade matrix has not been run locally or waived. The registered 1.4.0 source bridge remains outside that matrix. The Desktop recordings are Linux development-preview captures, not Windows/macOS distribution qualification. Creating this PR does not publish a tag, GitHub Release, or package.

How was this change tested?

  • make release-check VERSION=1.5.0
  • Website pnpm lint and pnpm test — 36 tests passed with the expanded bilingual release notes.
  • make contract-test — 62 passed.
  • Python 3.11.13: pytest tests/test_server.py tests/test_release_version.py tests/test_api_contract.py -q — 143 passed, including the updated Server identity assertion.
  • uv run pytest tests/test_release_version.py tests/test_upgrade_release_gate.py -q — 132 passed, 1 skipped.
  • Desktop generate:check, typecheck, and test — 148 frontend tests passed; Dify generated-contract drift check passed.
  • taskset -c 0,1,8,9 .venv/bin/python desktop/tests/real_server.py — anonymous loopback, Bearer, HTTPS/CA/base path, and injected-provider/enforced-access modes passed against the built wheel. All four Servers exited normally. Earlier unpinned attempts exceeded the cold-start readiness window on CPUs with substantial VM steal; no test assertions or timeouts were changed.
  • uv run prek run -a — all hooks, including ty check, passed.
  • make docs-test — website lint, tests, link checks, and static build, rerun with the GIF assets.
  • Visually inspected key frames from all six dark-theme GIFs. Decoded every GIF frame and verified consistent dark rendering, dimensions, duration, looping and file hashes; all six exported website GIFs match their source hashes. Confirmed every Dashboard and Desktop README image points to a GIF and the removed PNGs have no remaining references. Selected revisions were read back through the public API; native Desktop text matched the HTTP results. Temporary services and the capture container were stopped after validation.

AI usage statement

OpenAI Codex (GPT-6), including delegated agents, was used for release preparation, generated-file updates, validation and real application recordings. Demonstration content also used the configured LLM through the real PowerContext runtime.

@hidb4ai hidb4ai added the 1.5.0 v1.5.0 release tracking label Nov 2, 2026
@AlexStocks

Copy link
Copy Markdown
Contributor

Reviewed c91bddcb (base 5c249808). This is release preparation only — no runtime or schema change — so I focused on whether every claim in the PR holds, and on whether the version bump reached every place that repeats the same fact.

What I verified (all passed)

Version synchronization. scripts/release_version.py --check reports Release references match 1.5.0 against the head tree; no 1.4.1 remains in any of the twelve managed files (upgrade-support.json's single hit is the historical PowerContext 1.4.1 assigns … v1_4_1_001 sentence in the rationale, which is correct as history). No stale install pin exists anywhere else in the tree.

Contract digest. The new value 83dc6819…bedc7 is reproducible: sha256 of openapi/powercontext.yaml after \r\n → \n normalization, which is exactly what desktop/scripts/generate.mjs:69-71 hashes. It matches transport/operations.json, ui/src/generated/operations.ts, and the new sqlite-atomic-112db11e-v1 record, so that record will actually be selectable rather than disabled as a digest mismatch. All eleven operations in the record exist in operations.json; the evidence anchor resolves to the new #### Server 112db11e protocol qualification heading.

Desktop qualification numbers. git describe --tags --long 112db11e yields powercontext-v1.4.1-132-g112db11e, i.e. exactly powercontext-1.4.2.dev132+g112db11e8 as recorded. src/powercontext at 112db11e contains exactly 679 files, matching "all 679 packaged runtime files". The master merge 3c8cfaa5 touches only evaluation/coding/swebench_pro/**, so VALIDATION.md's statement that runtime, OpenAPI and native client sources still matched the qualified commit is accurate.

Screenshots. Resolutions match the SCREENSHOTS.md table byte-for-byte (1600×1084, 1600×1000, 1440×1100). The English Desktop capture shows "This request returned its limit of 10 matches"; the Chinese one shows "本次返回 8 条" — both as documented. Both are anonymous loopback (http://127.0.0.1:18865/, 未认证(本机服务)), with no paths, e-mails or tokens visible.

Migration documentation. The chains in both guides match down_revision in code for SQLite and MySQL (s1402 → v1_4_1_004 → v1_4_1_005 → v1_4_1_006 → v1_5_0_001), and both source manifests reach v1_5_0_001. examples/artifact_plugins/{incident_report,ticket_summary} exist. The release-note migration path receipt.retrieval.searches[].fallback_reason is correct per PreparedContextReceipt → retrieval.searches[], and explain is genuinely absent from the contract.

Checks. scripts/upgrade_release_gate.py passes; tests/test_api_contract.py + tests/test_desktop_contract.py → 58 passed; tests/test_release_version.py + tests/test_upgrade_release_gate.py → 125 passed, 6 skipped (two bash -e -c cases fail identically on base 5c249808, so they are a Windows-shell artifact, not this PR).

🟡 P2 — the third copy of the "target release" claim was not synchronized

tests/release_upgrades/README.md:10-11 still reads:

The declared target release is 1.4.1. Public migration output maps the two source baselines to v1_3_0_000 / v1_4_0_000 and the shared steps to v1_4_1_001–v1_4_1_006.

Both halves of that sentence now contradict release/upgrade-support.json ("target_version": "1.5.0") and the two guides this PR updated to v1_5_0_001. The v1_4_1_006 half was already stale on master, but the target-version half only became wrong here — and this README is what a maintainer reads while deciding whether the gate covers the release they are about to publish.

Posting this in the summary rather than inline because the file is not part of the diff; there is no changed line to anchor a thread to. Suggested replacement:

The declared target release is **1.5.0**. Public migration output maps the two source baselines to
`v1_3_0_000` / `v1_4_0_000` and the shared steps to `v1_4_1_001`–`v1_5_0_001`.

Merge

Content is accurate and the release metadata is internally consistent, so nothing here blocks the merge on its own: mergeable after the one-line README fix (or now, if you would rather defer that to a follow-up). The gateway BLOCKED state is the two required approvals, not a finding.

Two things I could not verify and did not assume: the exact recipe behind the manifest digest b74203e2… (the file count it summarizes is right, but I could not reproduce the hash without your harness), and the provenance of the demonstration content (nine English memories, "both Handoffs", revision 2 vs revision 1) — those depend on the captured Server state, not on the repository.

'Request include_receipt during context preparation to inspect selected exact revisions, retrieval and fallback modes, omissions, configuration, and stage timings without returning query or evidence bodies. Receipts are bounded, ephemeral diagnostics; unavailable or oversized receipts leave the original prepared context usable. Normal host injection keeps the default response shape.',
'Browse a bounded, paginated Atomic Memory manifest before reading selected exact revisions. New writes retain a short description, with a text preview for explicit writes and descriptions generated within existing extraction calls. Historical descriptions can remain absent; reading the manifest never generates summaries. Extraction instructions also preserve subject, scope, and applicability when facts concern different entities.',
'Opt in to final inference request and complete-response checks at owned provider transports. Enforcing mode refuses forbidden content or incomplete inspection; disabled remains the default. Public context admission and short-lived exact Atomic Memory reuse proofs let external executors check their final payloads and current permissions. This protection does not provide general-purpose redaction or a provider cache.',
'Introduce the optional Rust PowerContext Gateway in alpha, with OpenAI-compatible Chat Completions and Responses endpoints, request checks before sending, and complete-response checks before release. Opt-in memory injection for Chat Completions and capture of turns that pass release checks support later recall; both are disabled by default. Build and run the Gateway separately, either standalone or alongside Core over a private Unix domain socket. The alpha buffers complete responses for inspection and does not provide real-time token streaming to clients. Its APIs and behavior may change.',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] 这一条描述的能力在本分支不可达,而正文没有约束合入顺序

gateway/ 在本 head(53bc5689)和 base(5c249808)都是 0 个文件:

  • git ls-tree -r --name-only refs/pr/2395 -- gateway | wc -l → 0
  • 全仓 git grep -l "pc-gateway\|powercontext gateway" 只命中 4 篇 RFC(docs/{en,zh}/rfcs/2086-*、docs/{en,zh}/rfcs/2199-*),2199 仍是 Proposal
  • 依赖的 feat(gateway): add Rust PowerContext Gateway executor #2307 当前 state=OPEN,且带未闭合的 P1

正文写的是 "Rust PowerContext Gateway (alpha, #2307)",只给了编号,没有写"须先合并 #2307"。在 #2307 落地前本分支不可单独发布:站点 changelog 会公开一个拿不到的组件,而仓库里没有任何 Gateway 的构建或运行入口供读者核对 "Build and run the Gateway separately" 这句话。

建议在正文补一条合入顺序约束(例如 Depends on #2307; merge it first, then re-check this bullet),并在 #2307 合并后按新 head 复核本条:届时 gateway/ 应出现在树内,"OpenAI-compatible Chat Completions and Responses endpoints" 与 "buffers complete responses / no real-time token streaming" 才具备可核对的实现。

Comment thread website/src/lib/releases.ts Resolved
Comment thread README.md Resolved
Comment thread website/src/lib/releases.ts Resolved
@hidb4ai
hidb4ai merged commit f57dad8 into master Nov 2, 2026
8 checks passed
jackie-cqz added a commit to jackie-cqz/powercontext that referenced this pull request Nov 3, 2026
Resolve the conflict with the v1.5.0 release preparation (oceanbase#2395) and the 27
other commits that landed since the previous merge, including the Rust
PowerContext Gateway executor (oceanbase#2307) and historical Server upgrade paths
(oceanbase#2394).

- `release/upgrade-support.json`: keep the target version and the rationale
  added upstream, append the sentence about this branch's code-organization
  changes, and recompute the persistence digest. The generated table and index
  DDL for all 72 tables is identical to master on the SQLite and MySQL
  dialects.

Follow the moves into code that arrived with the merge:

- `evaluation/performance/input_encoding/runner.py`: `_open_runtime` no longer
  takes a `scheduler_path`, and its callers stop passing one.
- Four new input-encoding and context-protection tests stop passing
  `scheduler_path` to `open_builtin_runtime` and `create_server_app`.
- Three new tests import access control from `powercontext.builtin.authz`.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1.5.0 v1.5.0 release tracking

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants