Repository navigation
refactor!: restore package layering in src - #2244
jackie-cqz wants to merge 15 commits into
Conversation
The Artifact Processing Supervisor replaced in-process APScheduler activation in oceanbase#1523, which also removed the only `start_scheduler` call. The scheduler module, `BuiltinRuntime.start_scheduler`, the scheduled Source and Experience processors, the access-scoped runners the Server factory built for them, and the Scope enumeration helpers that only fed them were left without production callers. Remove that path and its tests. APScheduler stays a dependency because cron bindings still parse expressions with `CronTrigger`. `scheduler_path` on `open_builtin_runtime` and `create_server_app` is now deprecated: it is ignored and emits a DeprecationWarning. The `default_scheduler_path` helper and the `ScheduledSourceProcessor` and `ScheduledExperienceProcessor` exports are removed. In-repository callers, examples, and docs no longer pass or describe the scheduler sidecar. The enforced-mode startup test now checks the background-principal guard through the supervisor's worker security, where it applies, and separately checks that a schedule without a runnable family is rejected at startup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The built-in runtime imported `powercontext.server.authz` in 23 places, and `server.processing_security` imported the runtime composition root while the runtime lazily imported it back. Access control depends only on Core and built-in persistence, so it belongs below the Server. - Move `powercontext.server.authz` to `powercontext.builtin.authz`. - Split processing security: the child-side `WorkerSecuritySpec`, `WorkerSecurity`, and `open_worker_security` move to `powercontext.builtin.authz.worker`; `build_worker_security`, which reads `ServerSettings`, stays in `powercontext.server.processing_security`. - Split Dream access: `DreamAuthorization` in `powercontext.builtin.authz.dream` checks recorded Dream principals for processing children; the Server's `DreamAccess` subclass adds the request-principal Review checks and request IDs. - `deployment_runner` takes the database configuration instead of `ServerSettings`. - Move the `powercontext code` command to `powercontext.cli.code`. The built-in package no longer imports `powercontext.server`. BREAKING CHANGE: import access-control types from `powercontext.builtin.authz` instead of `powercontext.server.authz`. No compatibility alias is provided, because aliasing the old package path would load its submodules twice and break `isinstance` checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Server and the personal service imported `powercontext.cli.env_file` and `powercontext.cli.inference_notice`, and the built-in runtime imported redaction helpers from `powercontext.client.capture`. - Move the standard-library environment-file loader to `powercontext.env_file`. - Move the inference capability notice to `powercontext.server.inference_notice`; the `cli` and `service` commands already depend on the Server package. - Move the credential redaction primitives to `powercontext.redaction`. `powercontext.client.capture` keeps capture-event rendering and uses them. Import `powercontext.env_file` instead of `powercontext.cli.env_file`, and `known_secret_values` and the sensitive-key constants from `powercontext.redaction`. `render_capture_event` is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
|
The only failing check is This looks like a flaky test rather than something this PR introduced:
Could a maintainer please re-run the failed job? I don't have permission to re-run it myself. |
Resolve conflicts with the reusable database upgrade framework (oceanbase#2168): - Keep upstream's `deployment_runner(settings, ...)` and `server/database_migration.py`. The framework needs the full Server settings, so the narrower signature introduced with the access-control move no longer applies. The only remaining `builtin` -> `server` import is annotation-only (`TYPE_CHECKING`). - Adopt upstream's reworked startup tests, and drop `scheduler_path` from them and from the tests the framework added. - Point the upgrade release gate's managed inputs and its tests at `src/powercontext/builtin/authz`, so access control stays under the persistence compatibility review instead of silently leaving it. - Update the persistence digest and append a rationale sentence. The generated table and index DDL for all 59 tables is identical to master on the SQLite and MySQL dialects. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
hireview001
left a comment
There was a problem hiding this comment.
- Resolve merge conflicts with the target branch.
Resolve conflicts with durable owner recovery (oceanbase#2187), which added `server/authz/owner_recovery.py` while this branch moved `server/authz` to `builtin/authz`. - Place `owner_recovery.py` under `builtin/authz` and point its imports, the Server's `app.py` and `factory.py`, and the new owner-recovery tests at the new package path. - Keep the scheduled-runner helpers deleted: the owner-recovery change only threaded its session through `_scheduled_access_runners`, which no longer has a caller. - Drop `scheduler_path` from the call sites upstream added, and update the new `ops` and release-upgrade fixtures for the moved `env_file` and `authz` modules. - Merge the upgrade-support rationale with upstream's owner-recovery text and update the persistence digest. The generated table and index DDL for all 63 tables, including `pc_access_owner_recovery`, is identical to master on the SQLite and MySQL dialects. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
hireview001
left a comment
There was a problem hiding this comment.
- CI failed: Upgrade release gate (failure).
- CI failed: upgrade-acceptance / Verify the selected upgrade matrix (failure).
- CI failed: upgrade-acceptance / Upgrade 1.3.0 / oceanbase / full-server-code (failure).
- CI failed: upgrade-acceptance / Upgrade 1.3.0 / sqlite / full-server-vector (failure).
- CI failed: upgrade-acceptance / Upgrade 1.3.0 / oceanbase / full-server-vector (failure).
- CI failed: upgrade-acceptance / Upgrade 1.3.0 / sqlite / full-server-code (failure).
- CI failed: upgrade-acceptance / Upgrade 1.3.0 / seekdb / full-server-vector (failure).
- CI failed: upgrade-acceptance / Upgrade 1.3.0 / oceanbase / full-server-vector-code (failure).
- CI failed: upgrade-acceptance / Upgrade 1.3.0 / oceanbase / full-server-no-vector (failure).
- CI failed: upgrade-acceptance / Upgrade 1.3.0 / sqlite / full-server-vector-code (failure).
- Additional CI issues: PR checks.
…ships The upgrade acceptance runs `authorization_fixture.py` under each installed release's own interpreter, before and after migration. It imported `PrincipalRef` from `powercontext.builtin.authz`, which exists only in the target wheel. PowerContext 1.3.0 keeps access control in `powercontext.server.authz`, so the source-side check failed with `ModuleNotFoundError` before any migration ran, failing every 1.3.0 case. Select the package with `importlib.util.find_spec` instead of a try/except, so a broken built-in package still fails loudly on the target side instead of silently falling back to the old path. Both the source and the target authorization checks stay in place. Checked against the published 1.3.0 wheel and the freshly built target wheel under `python -I`: the previous fixture reproduces the CI error under 1.3.0, and this one imports under both. The other two scripts run under historical interpreters (`processing_fixture.py`, `upgrade_database_probe.py`) import under both as well. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
hidb4ai
left a comment
There was a problem hiding this comment.
Reviewed 1e487049 against 9c8f061c. The historical-release authorization import regression is fixed, and the required 1.3.0 upgrade matrix and Upgrade release gate pass. I found no remaining PR-introduced blocking defect; the database table/index definitions and HTTP/MCP operation contracts are unchanged.
The CI result is still red because the Python 3.11 and 3.14 code-seekdb shard-0 jobs exceeded their 30-minute job limit; the same shards also time out on master. @jackie-cqz Please obtain successful completion of these checks before merging. This approval does not certify those unfinished shards.
|
@jackie-cqz The head is still Please obtain successful completion of these shards and the aggregate CI gate before merging. The historical-release authorization import issue is fixed; this follow-up concerns the remaining CI completion requirement. |
Resolve conflicts with ownership migration when enabling enforcement (oceanbase#2304), Source evidence declarations (oceanbase#2004), and the 13 other commits that landed since the previous merge. - `server/authz/keys.py` is new upstream; it lands in `builtin/authz/keys.py` and `builtin/authz/__init__.py` exports `bounded_idempotency_key` and `IDEMPOTENCY_KEY_LIMIT` from there. - `server/processing_security.py` keeps only `build_worker_security`. The upstream change to `WorkerSecurity` (bounded idempotency keys) is applied to `builtin/authz/worker.py`, where this branch moved that class. - `server/app.py`, `server/factory.py`, `server/cli.py`: keep the relocated `builtin.authz` imports and add only the names the new upstream code uses (`bounded_idempotency_key`, `OwnerRecovery`). `_scheduled_access_runners` stays deleted; its only upstream change was the bounded key. - `release/upgrade-support.json`: keep the rationale added upstream for the v1_5_0_002 and v1_5_0_003 revisions, append the sentence about this branch's code-organization changes, and recompute the persistence digest. The generated table and index DDL for all 75 tables is identical to master on the SQLite and MySQL dialects. Follow the moves into code that arrived with the merge: - `server/ownership.py`, `builtin/authz/service.py` (new `static_scope_bootstrap_would_grant`), and the new ownership-migration, artifact-plugin, and access-control tests import access control from `powercontext.builtin.authz`. - The new ownership-migration, Atomic Memory evidence, and Source evidence tests stop passing the removed `scheduler_path` argument. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
|
@jackie-cqz I reviewed the new head I found no new demonstrated code defect in the refactor. Local replay hit startup/flush timing limits on both head and base, so it does not establish that this PR caused the CI timeout. Please obtain a successful E2E run and complete the selected automatic upgrade matrix for this head before merging. The passing upgrade evidence and my previous approval for |
Bring in the two commits that landed since the previous merge: the website SEO and Markdown export changes (oceanbase#2454) and the OpenCode setting that turns prompt-time recall off (oceanbase#2455). The merge is textually clean. Neither commit touches `src/`, so nothing needed to follow the access-control, scheduler, or helper moves. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
There was a problem hiding this comment.
Reviewed a3ee50dd against 2853ed98. The merge preserves the previously reviewed runtime refactor and adds no database tables or HTTP/MCP operations relative to the current base. The earlier E2E/upgrade acceptance gap is closed on this head: all Python E2E jobs, the selected 1.3.0 upgrade matrix and Upgrade release gate pass. I found no new PR-introduced blocking code defect.
@jackie-cqz CI still needs successful completion before merging: the Python 3.11 seekDB migration shard exceeded its 25-minute step limit, with the same type of migration timeout present on the base, and macOS LaunchAgent never acquired a hosted runner because of capacity constraints. This approval does not certify those unfinished checks.
GitHub currently also reports this PR as CONFLICTING / DIRTY; please reconcile that mergeability state and obtain successful required checks before merging.
hireview001
left a comment
There was a problem hiding this comment.
- Resolve merge conflicts with the target branch.
- CI failed: CI result (failure).
- CI did not complete: native-service / macos-launchagent (cancelled).
- CI failed: code-seekdb (3.11, 0) (failure).
- CI failed: Main (failure).
Resolve conflicts with the managed observability stack (oceanbase#2388) and the 60 other commits that landed since the previous merge. - `server/cli.py`: keep `powercontext.env_file` and the relocated `server.inference_notice`, and add the new observability notice import. - `cli/observability_notice.py` is new upstream and only the Server's `serve` command uses it. It moves to `server/observability_notice.py`, as `inference_notice` did, so the Server does not import the CLI package. - `release/upgrade-support.json`: keep the rationale added upstream for observability and the SQLite connection-worker drain, append the sentence about this branch's code-organization changes, and recompute the persistence digest after formatting. The generated table and index DDL for all 75 tables is identical to master on the SQLite and MySQL dialects. Follow the moves into code that arrived with the merge: - The observability profile, the service launcher, the demo and host scripts under `deploy/observability`, and the new observability tests import `powercontext.env_file` and `powercontext.builtin.authz`. - Five new provider-observability test calls stop passing the removed `scheduler_path` argument. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
hireview001
left a comment
There was a problem hiding this comment.
- Resolve merge conflicts with the target branch.
knqiufan
left a comment
There was a problem hiding this comment.
Reviewed the package moves, authorization and worker paths, and removal of the superseded scheduler. The historical-release import issue is addressed; no new blocking finding. Focused tests passed. This review does not certify the installed-release upgrade matrix or real external backends.
Resolve the conflict with Source locators (v1_5_0_004), code evidence reuse (oceanbase#2425), and the 79 other commits that landed since the previous merge. - `release/upgrade-support.json`: keep the rationale sentences added upstream for Topic Memory diagnostics, code evidence reuse, and the `pc_artifact_source_locators` relation, append the sentence about this branch's code-organization changes, and recompute the persistence digest after formatting. The generated table and index DDL for all 76 tables is identical to master on the SQLite and MySQL dialects. Follow the removal of the scheduler path into code that arrived with the merge: 15 `scheduler_path` arguments in six new tests (Atomic Memory reconciliation, temporal retention, and unrelated reconciliation, the MiniMax host, the Hermes conformance support, and the release 1.4.0 migrations) are dropped. The new `cli/minimax.py` is imported only inside the CLI package, so it stays where it is. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
hireview001
left a comment
There was a problem hiding this comment.
- CI failed: CI result (failure).
- CI failed: Upgrade release gate (failure).
- CI did not complete: tests (3.14, e2e) (cancelled).
- CI did not complete: tests (3.13, unit) (cancelled).
- CI failed: tests (3.11, e2e) (failure).
- CI did not complete: tests (3.13, e2e) (cancelled).
- CI did not complete: tests (3.14, unit) (cancelled).
- CI did not complete: tests (3.12, e2e) (cancelled).
- CI failed: Main (failure). Failed steps: tests (3.12, e2e) / Run remaining end-to-end tests; tests (3.11, e2e) / Run remaining end-to-end tests; tests (3.13, unit) / Run unit tests.
Resolve the conflict with native minimum_should_match filtering for OceanBase Atomic Memory (oceanbase#2498) and the 7 other commits that landed since the previous merge. - `release/upgrade-support.json`: keep the rationale sentence added upstream for OceanBase lexical retrieval, append the sentence about this branch's code-organization changes, and recompute the persistence digest after formatting. The generated table and index DDL for all 76 tables is identical to master on the SQLite and MySQL dialects. None of the merged commits adds a reference to the moved or removed names, so no other file needed to follow the access-control, scheduler, or helper moves. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
Bring in the 6 first-parent commits that landed since the previous merge, including the fixes for the Atomic Memory reconciliation tests (they now expect the stored Source sequence locator) and the OceanBase scoring connection double (oceanbase#2552), which were failing on master and on this branch for the same reason. The merge is textually clean. None of the merged commits adds a reference to the moved or removed names, and the persistence digest in `release/upgrade-support.json` is unchanged because the commits do not touch the managed inputs. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
Which issue or RFC does this PR close?
No tracking issue. This follows up on the Artifact Processing Supervisor
(RFC 1515, #1523),
which replaced the APScheduler path removed here.
Rationale for this change
A static import scan of
src/powercontext(module-level, deferred, andTYPE_CHECKINGimports) found lower layersimporting upper ones:
builtin→serverTYPE_CHECKING)builtin→clientserver→cliservice→cliThe deferred imports hid a cross-layer cycle:
server/processing_security.pyimported the runtime composition root atmodule level while the runtime imported it back inside functions. Separately, the in-process APScheduler activation
path stayed in the runtime after #1523 removed its only caller.
What changes are included in this PR?
Three commits that can be reviewed one at a time:
refactor(runtime): remove the legacy APScheduler scheduling pathbuiltin/runtime/scheduler.py,BuiltinRuntime.start_scheduler,ScheduledSourceProcessor,ScheduledExperienceProcessor, the access-scoped scheduled runners inserver/factory.py, and the Scopeenumeration helpers that only fed them, together with their tests.
scheduler_pathonopen_builtin_runtimeandcreate_server_appis deprecated: it is ignored and emits aDeprecationWarning.powercontext.paths.default_scheduler_pathis removed.CronTrigger.describe the scheduler sidecar.
refactor(authz)!: move access control into the built-in runtimepowercontext.server.authz→powercontext.builtin.authz. It already depended only on Core and built-inpersistence.
WorkerSecuritySpec,WorkerSecurity,open_worker_security) moves tobuiltin/authz/worker.py.build_worker_securitystays inserver/processing_security.pybecause it readsServerSettings.DreamAuthorization(builtin/authz/dream.py) holds the recorded-principal checks processing children need. TheServer's
DreamAccesssubclass adds the request-principal Review checks and request IDs.powercontext codecommand moves topowercontext.cli.code; the entry point is updated and the command isunchanged.
refactor: move shared helpers out of thecliandclientpackagespowercontext.cli.env_file→powercontext.env_file(standard library only).powercontext.cli.inference_notice→powercontext.server.inference_notice.powercontext.redaction;powercontext.client.capturekeeps capture-eventrendering and uses them.
Merge branch 'master'(eleven merges): resolves conflicts with the reusable database upgrade framework(feat(migrations): complete the reusable database upgrade framework #2168), durable owner recovery (feat(authz): recover external owner writes from durable intents #2187), dedicated database provisioning (feat(storage): provision dedicated seekdb and oceanbase databases #2031), and the managed plugin
framework (feat(artifact): add managed plugin framework and some example #2246), plus the v1.5.0 release preparation (chore(release): prepare v1.5.0 and refresh product screenshots #2395) and ownership migration when enabling
enforcement (fix(access): support ownership migration when enabling enforcement #2304)
deployment_runner(settings, ...)andserver/database_migration.py. The framework needs thefull Server settings, so the access-control move no longer narrows that signature. This leaves one
annotation-only (
TYPE_CHECKING)builtin→serverimport, inbuiltin/persistence/migrations/deployment.py.MANAGED_INPUTSand its tests atsrc/powercontext/builtin/authz.managed_digestskips a missing directory silently, so without this the gate would have stopped coveringaccess control.
owner_recovery.pyunderbuiltin/authzand rewrites its imports,server/app.py,server/factory.py, and the new owner-recovery tests for the new package path. The only code from that PR inthe scheduled-runner helpers this PR deletes was the owner-recovery session threaded through them; with no
caller left, the helpers stay deleted.
server/cli.py, takes the new test setup intests/test_atomic_memory_migration_cli.py, and follows the moves into code that arrived with the merge: thenew
source_managementgateway and the agent-tool-recovery evaluation server import access control frombuiltin.authz,tests/test_cli.pyimports and patches the code command atpowercontext.cli.code, andthe two
scheduler_patharguments added upstream are dropped.release/upgrade-support.json: the persistence digest, plus one rationale sentence in the existingstyle, kept alongside the rationale upstream added. The generated table and index DDL for all 76 persistence
and access tables, including
pc_access_owner_recovery,pc_source_write_plugins, and the plugin framework'stables, is identical to
masteron the SQLite and MySQL dialects, so no table layout or migration encodingchanges. This is a maintainer-owned declaration; please confirm the wording.
server/authz/profiles.pyandservice.pyafter this branch had moved them, and git applied those edits tobuiltin/authz. The newplugin-framework modules under
builtin/runtimeand their tests import access control frombuiltin.authzand the worker-side security from
builtin.authz.worker, so the framework adds no newbuiltin→serverimport. Three follow-ups the merge needed: the
perf_counterimport that the first commit removed isrestored because PreparedContext receipts (feat(context): add bounded PreparedContext receipts #2258) use it, two new tests (fix(tests): initialize native Code Server storage before seeding #2348) stop passing the removed
schedulerargument to the harness helpers, and the CI change-selection test uses the new path ofowner_recovery.py, which classifies the same way.tyfound the two helper callers; a search for thescheduler_path=keyword could not, because they pass it positionally.9c8f061c, 28 commits: the v1.5.0 release preparation (chore(release): prepare v1.5.0 and refresh product screenshots #2395), the Rust PowerContextGateway executor (feat(gateway): add Rust PowerContext Gateway executor #2307) and its conversation-scoped injection (feat(gateway): inject prepared context into Responses requests #2400, fix(gateway): prepare once per user message within a conversation and replay it #2416, feat(gateway): inject by default in combined deployments for host conversations #2417), historical Server upgrade
paths (fix(migrations): support historical Server upgrade paths #2394), and the final request and response privacy checks with their input-encoding evaluation (feat(inference): enforce final request and response privacy checks #2311)):
the only textual conflict was
release/upgrade-support.json,where upstream raised the target to 1.5.0 and extended the rationale for the historical upgrade paths. This PR
keeps that text, re-appends its own sentence, and recomputes the digest; the gate passes. Six files added
upstream still used moved or removed names: the input-encoding evaluation runner
(
evaluation/performance/input_encoding/runner.py) and four new tests passedscheduler_path, and three newtests imported from
powercontext.server.authz. The runner's_open_runtimehelper drops itsscheduler_pathparameter and the tests import from
powercontext.builtin.authz; nothing else needed editing.1190dcbb, 75 commits: ownership migration when enabling enforcement (fix(access): support ownership migration when enabling enforcement #2304), Sourceevidence declarations (feat(memory): persist versioned Source evidence and neutral Atomic Memory projection #2004), and Desktop Linux diagnostics (feat(desktop):add Linux disgnostics integration #2343)): fix(access): support ownership migration when enabling enforcement #2304 added
server/authz/keys.py, which git placed atbuiltin/authz/keys.pyby rename detection, andserver/ownership.py, and it editedWorkerSecurityinserver/processing_security.py, which this branch hadsplit. The class lives in
builtin/authz/worker.py, so the three bounded idempotency keys are applied there andprocessing_security.pykeeps onlybuild_worker_security. Inserver/app.py,factory.py, andcli.pythebranch's
builtin.authzimports are kept, plusbounded_idempotency_keyandOwnerRecovery, which the new codeuses;
_scheduled_access_runnersstays deleted.release/upgrade-support.jsontakes upstream's text for the newv1_5_0_002andv1_5_0_003revisions, re-appends this PR's sentence, and recomputes the digest. A newstatic_scope_bootstrap_would_grantmethod and the new ownership tests importedserver.authz, and 18 calls intests/e2e/test_access_ownership_migration.pyplus two other tests passedscheduler_path; all are updated.code-seekdbjob timeout from 30 to 60 minutes in this range. The twocode-seekdb (…, 0)failures on the previous head were that job hitting the 30-minute limit in the unifiedmigrations step, and the same limit cancelled
code-seekdb (3.11, 0)onmaster.2853ed98, 2 commits: the website SEO and Markdown export changes (feat(website): improve SEO, Markdown exports, and community links #2454) and theOpenCode setting that turns prompt-time recall off (feat(opencode): add a setting that turns prompt-time recall off #2455)): textually clean. Neither commit touches
src/, sonothing needed to follow the moves.
24e0017e, 61 commits: the managed observability stack (feat(observability): add managed monitoring stack and diagnostics #2388), the shared Skillsrefactor (refactor(plugins): share standard Skills across native hosts #2380), and the SQLite connection-worker drain (fix(sqlite): drain failed connection workers #2468)): two conflicts.
server/cli.pykeepspowercontext.env_fileand adds the new observability notice import.release/upgrade-support.jsontakesupstream's text, re-appends this PR's sentence, and recomputes the digest after formatting; the gate passes.
feat(observability): add managed monitoring stack and diagnostics #2388 added
cli/observability_notice.py, which only the Server's CLI uses, so it moves toserver/observability_notice.pylikeinference_noticedid and the Server still imports nothing fromcli.Eight other new files imported
powercontext.cli.env_fileorpowercontext.server.authz, and five new calls intests/test_provider_observability.pypassedscheduler_path; all are updated.code-seekdb (3.11, 0)failure on the previous head was the unified migrations step reaching its 25-minutestep limit (it ran 1513 s). The merge brings in ci(seekdb): distribute native migrations across three shards #2458, which splits that step across three shards and allows it
40 minutes.
da03e70a, 80 commits: Source locators with revisionv1_5_0_004and thepc_artifact_source_locatorsrelation, code evidence reuse (feat(context): reuse code evidence with per-file revalidation #2425), the MiniMax native plugin (feat(minimax): add native plugin setup and verification #2205), and theshared integration lifecycle helpers (refactor(integrations): generate the shared Python plugin helpers from one source #2318)): one conflict, in
release/upgrade-support.json. It keeps thesentences upstream added for those changes, re-appends this PR's sentence, and recomputes the digest after
formatting; the gate passes. The six new tests that passed
scheduler_path(15 arguments) are updated. The newcli/minimax.pyis imported only inside the CLI package, so it stays in place.c4c95e46, 8 commits, among them nativeminimum_should_matchfiltering for OceanBaseAtomic Memory (perf(oceanbase): use native minimum_should_match filtering #2498) and request authentication before body reads (fix(server): authenticate requests before reading their bodies #2512)): one conflict, in
release/upgrade-support.json, resolved the same way. No merged commit adds a reference to a moved or removed name.master's ownMainfails on them too:
tests (3.11, e2e)failed with those 7 onee3c1ee3, andtests (3.11, unit)failed onc4c95e46with the Atomic Memory scoring test below. The jobs for other Python versions andUpgrade release gatewere cancelled or skipped as a result.cfdb617c, 6 first-parent commits): textually clean. It brings in upstream's fixes forboth failures above: the reconciliation tests now expect
SourceSequenceLocator(sequence=…), and test(oceanbase): complete scoring connection double #2552 completesthe scoring test's connection double. The 29 tests in those two files pass on the merged tree. No merged commit
adds a reference to a moved or removed name, and the persistence digest is unchanged.
test(release): import the access-control types the installed release shipstests/release_upgrades/authorization_fixture.pyunder each installed release'sown interpreter, before and after migration. The path rewrite in commit 2 made it import
powercontext.builtin.authz, which PowerContext 1.3.0 does not have, so every 1.3.0 case failed withModuleNotFoundErrorbefore migration started. The fixture now chooses the package withimportlib.util.find_spec, and both the source and target authorization checks are unchanged.Reverse edges that remain and are out of scope:
server→service(5 imports indatabase_migration.py, wheredb-migratestops the personal service before migrating, and in the newerdatabase_admission.py), and onecore→builtinimport inartifacts/indexes.pythat #2246 introduced and this PR does not touch.Are there any user-facing changes?
For Python SDK and embedding users, yes. There are no HTTP, MCP, CLI, configuration, or persisted-format changes.
powercontext.builtin.authzinstead ofpowercontext.server.authz.No alias is provided, because aliasing the old package path would load its submodules a second time and break
isinstancechecks. Jupyter tutorial 13 is updated.powercontext.cli.env_fileis nowpowercontext.env_file.default_scheduler_pathand theScheduledSourceProcessor/ScheduledExperienceProcessorexports are removed.known_secret_valuesand thesensitive-key constants are imported from
powercontext.redaction;render_capture_eventis unchanged.scheduler_pathkeyword onopen_builtin_runtimeandcreate_server_app.are updated in both locales.
How was this change tested?
master(4c527bb0):uv run python -m pytest -n auto --doctest-modulesgives 9942passed, 1064 skipped, 8 failed. All 8 are
tests/evaluation/test_jev_rerank_comparison.py::test_comparison_billing_through_persisted_candidatescases, and theyfail with
PydanticAIConfigurationErrorbecauseANTHROPIC_BASE_URLis set in my shell. They fail identically on anunmodified checkout of
master(cfdb617c) (8 failed, 29 passed in both trees), and withANTHROPIC_BASE_URL,ANTHROPIC_API_KEYandANTHROPIC_AUTH_TOKENunset the file passes (37 passed). The 7 reconciliation tests and thescoring test that failed in the previous run now pass. The timing-bound scheduler test that failed in the two runs
before did not fail in this one.
make checkpasses on4c527bb0when run separately:version-check, pinned workflow actions,integration-manifest-check,integration-guidance-check,upgrade-policy-check,uv lock --locked, all 11prek hooks, and
ty checkfor the package (no diagnostics) and for the Pydantic AI integration. I ran them one byone because
make checkitself stopped on a network error while prek fetched its hook repositories on my machine.test_enforced_mode_cannot_silently_start_without_authentication_or_providerdepended on validation inside theremoved scheduled runners. It now checks the background-principal guard through
build_worker_securitywith arunnable family, and checks that a schedule with no runnable family is still rejected at startup.
byte-identical between
masterand this branch on the SQLite and MySQL dialects.scheduler_pathis ignored with aDeprecationWarningand creates no sidecar, for bothopen_builtin_runtimeandcreate_server_app.ty check, and focused tests (369, 419, and 590 passed). The second commit's batchalso reported
fixture 'migration_backend' not foundfor one e2e test; the same pytest arguments produce the sameerror on
master, and the test passes alone and in the full run.builtin/authz/dream.pykeepsannotation-only imports under
TYPE_CHECKINGso it does not trigger the existingbuiltin.dream.service↔builtin.runtimeimport cycle.its own venv and run with
python -I, the previousauthorization_fixture.pyreproduces the CI error under 1.3.0and the new one imports under both.
processing_fixture.pyandupgrade_database_probe.pyalso import underboth.
make notebooks-test, real-service e2e (--run-real-e2e),toxacross Python versions, and theinstalled-artifact upgrade acceptance matrix (
upgrade-release.yml). The harness requires Linux processownership and cannot run on macOS, so the migration and target-side phases are checked only by CI; only the
policy check was run locally.
AI usage statement
Built with Claude Code. Claude Opus 5.5 did the analysis, implementation, tests, and commit split. Claude Sonnet 5.5
performed the initial read-only repository exploration through subagents, resolved the merge conflicts, and updated
this description. Changes were validated with the commands listed above.
🤖 Generated with Claude Code