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
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ Our work is in two places, each with its own rules:
- `bindings/python/`: the Python bindings. Read `bindings/python/AGENTS.md` before changing anything there.
- `benchmarks/`: the benchmark harness and its published results. Read `benchmarks/AGENTS.md` (and its `README.md`) before changing anything there.

The Java engine under `engine/` and the per-language `e2e-*` suites belong to upstream. Report a cause there instead of changing it here: file an issue, and send a pull request only for a low-hanging fix (`bindings/python/docs/development/upstream-issues.md`). The periodic `bindings/python` update to upstream is a separate routine (`bindings/python/docs/development/upstream-bindings-pr.md`).
The Java engine under `engine/` and the per-language `e2e-*` suites belong to upstream. Report a cause there instead of changing it here: file an issue, and send a pull request only for a low-hanging fix (`bindings/python/docs/development/upstream-issues.md`). The periodic `bindings/python` update to upstream is retired: upstream deleted `bindings/python` in ArcadeData/arcadedb#10615 (2026-10-23) and the bindings continue in ArcadeData/arcadedb-python (`bindings/python/docs/development/upstream-bindings-pr.md`).

Planned changes, not final and not yet public: the Python bindings may move to their own repository and PyPI project, and the benchmarks to `humemai/dbbench`, in mid-November 2026, after the last measuring pass and before the paper is submitted. Until then do not rename or move this repository, and do not change the release or upstream-sync routines without asking. The record is `.notes/bench/DECISIONS.md` #182 and #190.
Planned changes, not final and not yet public: the Python bindings may move to their own repository and PyPI project, and the benchmarks to `humemai/dbbench`, in mid-November 2026, after the last measuring pass and before the paper is submitted. Until then do not rename or move this repository, and do not change the release routine without asking. The upstream-sync routine (`sync-upstream.sh` and `make-upstream-pr-branch.sh`) is retired by the user's decision of 2026-10-25 ("Stop syncing"): do not run it, because a sync would merge upstream's deletion of `bindings/python` (#10615) into this fork (`bindings/python/docs/development/sync-upstream.md`). The record is `.notes/bench/DECISIONS.md` #182 and #190.
2 changes: 1 addition & 1 deletion benchmarks/experiments/CAMPAIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Per campaign, once:

1. Settle the instrument before any cell runs: the query set, the measurement set, the durability rule, the fairness invariants, and the answer checking. A change mid-campaign splits the rows, so this is the only free moment (DECISIONS #82d, #88, #89, #90; PROTOCOL.md). The method pages in the package documentation (`bindings/python/docs/benchmarks/`) describe the same instrument without numbers, so they change in this step too, never later.
2. Smoke every adapter, one cell per engine per lane, and keep the evidence (the smoke's rows and logs). Smoke wherever a machine is free: nothing in the fairness contract touches a smoke, and the bench host is reserved only while a published cell runs, so a smoke on the real corpora there is both faster and a better test than a capped slice on the laptop. One runner per host, always: `runner.py` sweeps every `dbbench=1` container on the machine at startup, so it takes a host-wide lock first (`$TMPDIR/dbbench-runner.lock`, whichever checkout it runs from) and a second runner is refused at startup (BUGS F58).
3. Pin ArcadeDB: sync upstream to the release the campaign runs and build the wheel by the routine in `bindings/python/docs/development/upstream-bindings-pr.md`, run our Java reproductions on the built engine to confirm every fix it should carry is intact, and record the engine commit inside that wheel as the campaign's pin (the pin is the commit, not the version string, DECISIONS #49). For a stable release the pin is the release's own jar commit (26.10.1: `d36b4ca3a`), the wheel is the official jars plus this tree's bridge and package, and the pair is placed by the recipe in `.notes/bench/repin-round5/REPIN-START.md`. The served arm's matched pair is built from the same image by `build_matched_pair.sh` (HANDOFF.md). One wheel, one pin, held start to finish.
3. Pin ArcadeDB: build the wheel for the release the campaign runs (the upstream sync is retired, so the engine tree does not move and the jars come from the release image; `bindings/python/docs/development/build-architecture.md#local-build`), run our Java reproductions on the built engine to confirm every fix it should carry is intact, and record the engine commit inside that wheel as the campaign's pin (the pin is the commit, not the version string, DECISIONS #49). For a stable release the pin is the release's own jar commit (26.10.1: `d36b4ca3a`), the wheel is the official jars plus this tree's bridge and package, and the pair is placed by the recipe in `.notes/bench/repin-round5/REPIN-START.md`. The served arm's matched pair is built from the same image by `build_matched_pair.sh` (HANDOFF.md). One wheel, one pin, held start to finish.
4. Re-pin every comparator to its latest stable release, smoking the risky jumps on their own (COMPARATORS.md, DECISIONS #87).
5. Run the campaign, landing each stage into the freeze (section 6 below).
6. Regenerate the query budgets from the campaign's own rows (`python3 derive_budgets.py > budgets.py` reads the freeze, `results/runs_paper.csv`) so the next campaign's caps are measurements at the corpora it will run rather than projections, and commit the table with the freeze (DECISIONS #106).
Expand Down
4 changes: 2 additions & 2 deletions bindings/python/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ Paths in this file are relative to the repository root (the directory that conta
| changing docs | `bindings/python/docs/development/documentation.md` |
| touching CI or the wheel build | `bindings/python/docs/development/ci-setup.md`, `bindings/python/docs/development/build-architecture.md` |
| touching the Java bridge or the architecture | `bindings/python/docs/development/bridge.md`, `bindings/python/docs/development/architecture.md` |
| syncing upstream, or testing an engine fix | `bindings/python/docs/development/sync-upstream.md` |
| testing an engine fix, or why the upstream sync is retired (do not run `sync-upstream.sh`) | `bindings/python/docs/development/sync-upstream.md` |
| reporting an engine bug upstream, sending a low-hanging engine fix, or checking an upstream fix to one of our issues | `bindings/python/docs/development/upstream-issues.md` |
| sending the periodic `bindings/python` update to ArcadeData/arcadedb | `bindings/python/docs/development/upstream-bindings-pr.md` |
| the periodic `bindings/python` update to ArcadeData/arcadedb (retired 2026-10-25; the bindings continue in ArcadeData/arcadedb-python) | `bindings/python/docs/development/upstream-bindings-pr.md` |
| releasing | `bindings/python/docs/development/release.md` |
| debugging a build, JVM or test failure | `bindings/python/docs/development/troubleshooting.md` |
| making a performance claim, or working around an engine bug | `bindings/python/docs/guide/performance.md`, `bindings/python/docs/guide/known-issues.md`, `bindings/python/docs/benchmarks/protocol.md` |
Expand Down
4 changes: 2 additions & 2 deletions bindings/python/docs/development/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -394,8 +394,8 @@ new page to the `nav` in `mkdocs.yml`.
git clone https://github.com/YOUR_USERNAME/arcadedb-embedded-python.git
cd arcadedb-embedded-python/bindings/python

# Track this repository. Do not call the remote "upstream": this repository's own
# scripts (sync-upstream.sh) use that name for ArcadeData/arcadedb.
# Track this repository. Do not call the remote "upstream": in this repository's
# checkout that name is ArcadeData/arcadedb (sync-upstream.sh, now retired, used it).
git remote add humemai https://github.com/humemai/arcadedb-embedded-python.git
```

Expand Down
30 changes: 18 additions & 12 deletions bindings/python/docs/development/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@ Complete workflow for releasing ArcadeDB Python bindings to PyPI with versioned
## Where the Version Comes From

This fork does not set its own version. The wheel version is derived from the root
`pom.xml`, and `pom.xml` belongs to upstream ArcadeDB: it arrives with each
`./sync-upstream.sh` run. Never edit it here; a local change would conflict with the
next sync.
`pom.xml`, and `pom.xml` belongs to upstream ArcadeDB: it used to arrive with each
`./sync-upstream.sh` run.

!!! warning "The upstream sync is retired (2026-10-25)"
ArcadeData/arcadedb deleted `bindings/python` in #10615 (2026-10-23), and by the user's decision of 2026-10-25 ("Stop syncing") `sync-upstream.sh` no longer runs ([Syncing Upstream](sync-upstream.md)). `pom.xml` therefore no longer advances on its own, and steps 1, 7 and 8 below, which were written around the sync, are retired. It does not need to advance: `pom.xml` stays at `26.11.1-SNAPSHOT`, and the only releases this repository still cuts match that base, the `26.11.1.devN` native previews and the final `26.11.1` warning shims for the old package names. From 26.11.1 on, `arcadedb` and `arcadedb-native` are released from ArcadeData/arcadedb-python, and this repository is archived. Any other release from here: ask first (see the root `AGENTS.md`).

- Between releases, upstream's `main` reads `X.Y.Z-SNAPSHOT`, and the wheel builds as `X.Y.Z.dev0`.
- Upstream cuts a release with a commit titled "Set release version to X.Y.Z", which
Expand All @@ -23,14 +25,16 @@ next sync.
!!! warning "Upstream uses the same version numbers"
ArcadeDB's release tags carry the same numbers as ours (`26.9.1` is both their
engine release and our wheel release). Always fetch `upstream` with `--no-tags`
(`sync-upstream.sh` does). If their tag is ever fetched, `git tag -a X.Y.Z` fails
(the retired `sync-upstream.sh` did). If their tag is ever fetched, `git tag -a X.Y.Z` fails
with "already exists", but `git push origin X.Y.Z` still succeeds and publishes
upstream's commit. Check what a tag points to before pushing it (step 4 below).
`git config remote.upstream.tagopt --no-tags` makes `git fetch upstream` skip tags for good.

## Release Checklist (stable `X.Y.Z`)

### 1. Sync to Upstream's Release Commit
### 1. Sync to Upstream's Release Commit (retired)

This step no longer runs: `sync-upstream.sh` is retired. What follows is the record of how it worked.

```bash
# Find upstream's release commit without fetching its tags
Expand All @@ -41,10 +45,8 @@ git log upstream/main --oneline --grep "Set release version to X.Y.Z"
./sync-upstream.sh --until <commit>
```

If the merge stops on conflicts, resolve them as described in
[Syncing Upstream](sync-upstream.md#when-the-merge-stops-on-conflicts), including the
fork-owned restore and the `.github` prune the script skips in that case. Afterwards
`pom.xml` reads `X.Y.Z`.
If the merge stopped on conflicts, the fork-owned restore and the `.github` prune had to be done by hand (the earlier version of [Syncing Upstream](sync-upstream.md) in git history has the steps). Afterwards
`pom.xml` read `X.Y.Z`.

### 2. Build and Test

Expand Down Expand Up @@ -185,7 +187,9 @@ Read the previous release at that page and keep its shape:
- a Security section for upstream advisories that matter to embedded use;
- what the bindings added, and a pointer to [Known Engine Issues](../guide/known-issues.md).

### 7. After the Release
### 7. After the Release (retired)

This step no longer runs: `sync-upstream.sh` is retired. What follows is the record.

Return `main` to upstream's development line with a normal sync. It brings the next
`-SNAPSHOT` version; there is no version bump to make here.
Expand All @@ -194,7 +198,9 @@ Return `main` to upstream's development line with a normal sync. It brings the n
./sync-upstream.sh
```

### 8. Open the Upstream Pull Request, Last
### 8. Open the Upstream Pull Request, Last (retired)

This step no longer runs: upstream deleted `bindings/python`, and the bindings continue in ArcadeData/arcadedb-python. What follows is the record.

Only now regenerate the `python-bindings` branch and open the pull request to
ArcadeData/arcadedb: it is built on the `upstream-main` mirror that this sync just
Expand Down Expand Up @@ -444,6 +450,6 @@ uv run --project .. --group docs mike alias --update-aliases \
- [Documentation Development](documentation.md) - Working with MkDocs
- [Testing Guide](testing.md) - Running test suite
- [Contributing Guide](contributing.md) - Development workflow
- [Syncing Upstream](sync-upstream.md) - How upstream changes arrive
- [Syncing Upstream](sync-upstream.md) - Retired; why, and how to test an engine fix
- [GitHub Actions Docs](https://docs.github.com/en/actions)
- [PyPI Publishing Guide](https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/)
Loading
Loading