Skip to content

Latest commit

 

History

History
83 lines (76 loc) · 4.46 KB

AGENTS.md

File metadata and controls

83 lines (76 loc) · 4.46 KB

AGENTS.md — tebako-runtime-python

The binding rules are the ecosystem's: tamatebako/AGENTS.md (the workspace root) — read it first. The short version as applied here:

  • Draft PRs only. No merges to main, no tags, no releases without the owner's explicit go-ahead.
  • Prebuilt artifacts flow downward. This factory CONSUMES published releases — CPython source tarballs from tamatebako/python, the link unit from tamatebako/tebako — pinned in contract.yml. Never a source checkout of a sibling repo, in CI or locally.
  • SSOT for versions and pins. Versions, tags, SHAs live in contract.yml (catalog + pins) and .github/matrix.json (env vocabulary) — never hardcoded in workflow YAML or scripts.
  • YAML for all authored config/manifests; named errors and named exit codes, never silent fallbacks.

Repo status: live

Releases publish (the v0.1.x line). tools/build_runtime is implemented (the tebako-runtime-ruby build/lib port): fetch/verify → configure/make → driver link → env-image pack → packaging → sidecars, gated by ci/check_symbol_provenance.sh and tools/boot_smoke. CI carries the ruby factory's shape: _build-platform.yml + the four build-*.yml triggers; under the publish.yml coordinator each leg's publish job releases its own runtime package and OpenPGP-signs its served names — the spec 13 §2a de-rendezvous, tebako-runtime-ruby#161's pattern, split into its own job by tebako-runtime-ruby#190 — through the tebako-release gem (tamatebako/tebako-release-tooling, pinned at contract.yml's release_tooling; this repo declares its identity in scripts/release_adapter.rb and carries no copy of the machinery) — behind the TEBAKO_RELEASE_SIGNING_ENABLED house gate, and the coordinator's one release job audits the whole matrix against the release (read-only) and renders the tpkg-registry.yaml mirror (tools/registry_update.rb — shard-derived, additive, withdrawal-preserving, composite <python>-<tebako> version keys), landed on main by bot PR. The matrix is green end to end, the windows-ucrt64 leg included.

The publish gate opened 2026-09-05; the first release line is v0.1.0, and the xml2rfc payload has since proven the chain end-to-end. The pinned link_unit_release: "v2.3.2" carries the v2.3 arc — the spec-30 spawn dispatch, shim routing, the spec-29 wrapper-exe driver, and the dup-class interpose with the aarch64 dup2 repair (tamatebako/tebako#534/#545) — on top of the three libtfs-preload boot fixes from the v2.1.8–v2.1.10 line: the fcntl interpose (tamatebako/tebako#524, the CPython FileIO boot blocker), the BOOT_LIVE gate + raw early-boot passthrough (tamatebako/tebako#527, the static-jemalloc boot deadlock that wedged the gnu legs), and the fcntl64 export (tamatebako/tebako#529). The POSIX boot-smoke CI legs were red-by-design on the old v2.1.5 pin and are green on the v2.1.10+ line. The windows leg: CPython upstream has zero mingw support, so the leg builds from the line's msys2/ucrt64 scenario tree (tfs-python-<base>-src-windows-msys.tar.gz, tamatebako/python's patches// series) — scripts/compute_matrix.rb skips a windows leg loudly when the pinned source_release ships no such asset for the line (and skips jit lines on windows outright: upstream's JIT whitelist admits MSVC targets only), and tools/boot_smoke hard-kills a wedged child against a CLOCK_MONOTONIC deadline instead of wedging with it. The linked-driver decision and the preload-shim re-exec rationale are recorded in README.md — do not reopen them here; the wrapper pattern (spec 29) is the java stream's.

Repo-local gotchas

  • Tooling is Ruby (stdlib-first; gems only via Gemfile). Ecosystem §12 rules apply: autoload only, no require_relative, no send/instance_variable_get/respond_to? metaprogramming.
  • Gemfile.lock is gitignored (factory convention — resolutions float).
  • contract.yml is validated by scripts/check_contract.rb against schema/contract.schema.yml (bundle exec). A contract bump edits contract.yml and the compiled-in TEBAKO_CONTRACT_VERSION in the same commit (the driver-source parity arm of the check lands with the first build).
  • CI containers are ghcr.io/tamatebako/tpkg-builder-* (tebako-ci-containers) only; the archived v1 tebako-<platform> images are never referenced here. Windows/macOS legs are runner-native.
  • gh pr create bodies: always --body-file — inline --body with backticks executes them (ecosystem §13).