Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
7 changes: 7 additions & 0 deletions .changes/runtime-core-py/0.1.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## 0.1.1 - 2026-08-24

### Fixed

- Acquire the Extension wheel from its Registry without resolving dependencies
there, then let pip install ordinary Python dependencies from its package
index.
8 changes: 8 additions & 0 deletions runtimes/core-py/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
This changelog records notable changes to this independently released Python
package. It is generated by [Changie](https://changie.dev/).

## 0.1.1 - 2026-08-24

### Fixed

- Acquire the Extension wheel from its Registry without resolving dependencies
there, then let pip install ordinary Python dependencies from its package
index.

## 0.1.0 - 2026-08-19

### Added
Expand Down
2 changes: 1 addition & 1 deletion runtimes/core-py/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "inkcre-extension-runtime-core-py"
version = "0.1.0"
version = "0.1.1"
description = "InKCre Core Python Extension Host Runtime"
requires-python = ">=3.12,<3.14"
dependencies = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,7 @@ def acquire(
download = self._runner(
[
"download",
"--no-deps",
"--only-binary=:all:",
"--dest",
str(wheel_dir),
Expand All @@ -250,9 +251,7 @@ def acquire(
):
extension_wheels.append(wheel)
except zipfile.BadZipFile as error:
raise ExtensionAcquisitionError(
"Downloaded dependency wheel is invalid"
) from error
raise ExtensionAcquisitionError("Downloaded wheel is invalid") from error
if len(extension_wheels) != 1:
raise ExtensionAcquisitionError(
"Registry did not yield exactly one Extension wheel"
Expand All @@ -263,10 +262,6 @@ def acquire(
[
"install",
"--no-compile",
"--only-binary=:all:",
"--no-index",
"--find-links",
str(wheel_dir),
str(extension_wheel),
]
)
Expand Down
9 changes: 5 additions & 4 deletions tasks/extension-setup-wizard/active/00-state.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@

## Current Gate

Batches 1–3 and local package-release preparation are complete. Toolkit 0.2.0
and both Runtime 0.1.0 packages must be committed, pushed and published before
the Peer manifests can receive normal released dependencies and frozen locks.
Every remote mutation remains separately gated.
Batches 1–3 and the Python dependency-acquisition correction are locally
complete. Core Runtime 0.1.1 must be committed, pushed and published before
Core PR #65 can receive the released dependency and frozen lock. Its preview
producer finalization correction is locally ready in the Core worktree. Every
remote mutation remains separately gated.
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,29 @@
corrected protected-main release run; then update Core PDM and Client pnpm
released locks and rerun their frozen full checks.

## Python dependency acquisition correction

- Preview acceptance of Twitter 0.2.0 reproduced pip resolving `authlib` from
the Extension Registry's Simple API. That Registry owns Extension
Distributions, not ordinary third-party Python packages.
- Runtime 0.1.1 downloads the exact Extension wheel with `--no-deps`, validates
its installed Extension record, and then installs the local wheel while pip
resolves ordinary dependencies from its normal package index.
- This keeps Registry Release resolution exact without turning a Peer preview
Registry into a PyPI mirror or combining the two authorities through an
extra index.
- Core PR #65's preview producer now finalizes each raw PEP 517 wheel through
the released Toolkit before writing its preview inventory. The static
Registry therefore hosts the same installed-record-bearing Distribution that
the Runtime contract consumes.
- A disposable Python 3.12 environment completed the real acquisition path
against a locally built seven-Extension sibling Registry: Twitter 0.2.0 was
downloaded as the exact Extension wheel, its ordinary dependency closure was
resolved by pip, and installed-record discovery returned
`extensions.twitter:Extension`.
- The ext-reg static/build/type contract passes. Worker dry build requires the
repository-declared Node 22 runtime and passes there; the initially active
Node 26 executable lacks the Pyodide flag expected by this toolchain. Core's
format, lint and type checks pass, as does its seven-wheel preview build.

Do not append investigation narrative or restate historical product decisions.
4 changes: 4 additions & 0 deletions tasks/extension-setup-wizard/packet.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@ authority. Their status and replacement are recorded in
- Preview delivery must not use full-tree public reads, byte comparisons,
cache-busters, digest substitutions or indiscriminate long propagation
retries; ordinary provider signals and focused probes retain observability.
- Python acquisition separates package authorities: the Extension Registry
supplies only the exact Extension wheel, while standard pip resolves its
ordinary Python dependencies from the normal package index. A Peer preview
Registry is not a PyPI mirror or an extra index for one combined resolution.

## Review/Implementation Loop

Expand Down