Skip to content

CI: let the native lane build against the 26.12.1-SNAPSHOT engine (refs #289) - #298

Merged
tae898 merged 7 commits into
mainfrom
ci/native-snapshot-engine
Nov 6, 2026
Merged

tae898 merged 7 commits into
mainfrom
ci/native-snapshot-engine

Conversation

@tae898

@tae898 tae898 commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

Refs #289. Columnar faceting (FACETS, CREATE INDEX ... COLUMNAR) is merged in the engine but not released (26.12.1 is expected in the first days of December), and Maven Central's newest arcadedb-engine is 26.11.1. The JVM lane already runs a faceting engine because its jars come from the latest image. The native lane could not, because native/pom.xml has no snapshot repository. This PR lets a manual native run link 26.12.1-SNAPSHOT so I can check the native image against the new parser and index classes before the release.

What changes:

  • native/pom.xml: a <repository> for https://central.sonatype.com/repository/maven-snapshots/ with snapshots enabled and releases disabled. A release version is never requested from it, so every build that does not pass a SNAPSHOT still resolves from Maven Central alone.
  • test-native.yml, plan job: a manual devN run may pass engine=A.B.C-SNAPSHOT. A final or post version is refused with a SNAPSHOT engine (as before, it must link exactly its release), and so is a run with release: true, so release-native.yml cannot publish a wheel built from a snapshot even after DEV_ENGINE is changed later.
  • test-native.yml, wheel step: a SNAPSHOT run passes --skip-notices-check to build_wheel.py, because THIRD_PARTY_NOTICES.md names the engine release and its jars (snapshot jars carry a timestamp and there is no tag to git show the NOTICE from). The wheel version stays 26.12.1.dev0, a valid PEP 440 version; ENGINE_VERSION in the wheel reads 26.12.1-SNAPSHOT.
  • test-native.yml, new dispatch input legs (full, the default, or pull-request): a proof run needs linux-x86_64 and Python 3.12, not four platforms, and the runner cap is shared with upstream.
  • docs/modules/ROOT/pages/development/ci.adoc describes the above.
  • tests/test_columnar_engine_smoke.py, version-gated like test_vector_sql.py: on an engine older than 26.12.1 it asserts that the FACETS clause and CREATE INDEX ... COLUMNAR are refused with the engine's own error; on 26.12.1 or later (including 26.12.1-SNAPSHOT) it asserts that the rows of a FACETS query come back and that the index can be created and dropped. No skips. On the native image it is also the first proof that the image has the reflection metadata for the new parser classes (FacetsClause, FacetItem, FacetRangeItem). If the snapshot run fails on them, I will post the log excerpt in a comment, and fixing the metadata is a separate PR.

What stays: DEV_ENGINE is still 26.11.1, so the pull request gate and the nightly run are unchanged, and release-native.yml is untouched. Flipping the gate to the snapshot would be a one-line change, DEV_ENGINE: "26.12.1-SNAPSHOT" in test-native.yml, plus the bump_engine.py pin check; I have not made it.

@robfrank: I asked on #289 whether the native lane may take its engine from the snapshot repository until 26.12.1 is out. Until you answer, this stays a draft and the snapshot is only used by a manual run.

Checks run locally: bash -n, compile() and pyflakes on the test, pre-commit on all changed files (black, isort, shfmt, actionlint), the pom parses as XML. Nothing was built or tested locally; the proof is the dispatched run of test-native.yml on this branch with engine=26.12.1-SNAPSHOT, legs=pull-request.

What the proof runs on 26.12.1-SNAPSHOT showed (linux x86-64, Python 3.12, native, dispatched with engine=26.12.1-SNAPSHOT): the image and the wheel build, and FACETS and COLUMNAR work inside the native image (both smoke tests pass). A COLUMNAR index is listed in schema:indexes as Type[property]_columnar, plus one row per bucket, not as Type[property]; the test uses that name. The snapshot also made three IMPORT DATABASE tests fail, because the engine now refuses unknown importer setting names (the reason is in the failure message). entityType is not an importer setting; I removed it from the XML test (the statement behaves the same on 26.11.1). The two tests that write `parallel` in backticks fail because the quoted name reaches the importer with its backticks; I filed ArcadeData/arcadedb#11367 and left those two tests alone. They still fail on snapshot runs, so the PR gate stays on 26.11.1 and this PR changes nothing for ordinary runs.

🤖 Generated with Claude Code

#289)

Columnar faceting (FACETS, CREATE INDEX ... COLUMNAR) is merged in the engine but unreleased; Maven Central's newest arcadedb-engine is 26.11.1. The JVM lane already runs it (the `latest` image), the native lane could not: native/pom.xml has no snapshot repository.

- native/pom.xml: a snapshots-on, releases-off repository for the Sonatype snapshot URL. A release version is never asked of it, so the PR gate (DEV_ENGINE 26.11.1) and every release build still resolve from Maven Central alone.
- test-native.yml, plan job: a manual devN run may pass engine=A.B.C-SNAPSHOT; a final or post version, and a release run (release: true), are refused with it, so release-native.yml cannot publish from a snapshot even if DEV_ENGINE is later flipped.
- test-native.yml, wheel step: a SNAPSHOT run skips the THIRD_PARTY_NOTICES.md comparison (it names the engine release and its jars; snapshot jars are timestamped and there is no tag for git show). The wheel version stays 26.12.1.dev0.
- test-native.yml, new dispatch input `legs` (full | pull-request): a proof run needs one platform and one Python, not four platforms.
- tests/test_columnar_engine_smoke.py: version-gated like test_vector_sql.py; an engine older than 26.12.1 must refuse FACETS and COLUMNAR with its own error, a newer one must return the rows and create and drop the index. No skips. On the native image it is the first proof of the reflection metadata for the new parser classes.

DEV_ENGINE is not changed: flipping the gate is a later one-line change, pending the answer on #289.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
tae898 and others added 4 commits November 7, 2026 05:12
…ndex is not listed as FacetDoc[category]

The first native snapshot run passed the FACETS test and failed only on exists_index('FacetDoc[category]'), while the JVM lane passed. The message now shows what schema:indexes lists, so the next run says whether the native build lists the index under another name or not at all (a finding for #292).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…umnar

The native snapshot run showed schema:indexes holds FacetDoc[category]_columnar (type level) and one FacetDoc_0_<id> row per bucket; the inferred name FacetDoc[category] was wrong on any build, so this is not a native gap.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…es its cause

On the 26.12.1-SNAPSHOT native run three IMPORT DATABASE tests answer FAIL (CSV documents and CSV graph with a quoted parallel setting, XML vertices); the engine now refuses an import that read nothing (ArcadeData/arcadedb 4a91847a1f). The helper only compared the status word.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
26.11.1 ignored unknown importer names; the 26.12.1-SNAPSHOT engine refuses them (Unknown importer setting 'entityType'). The XML import is driven by objectNestLevel; the statement behaves the same on 26.11.1 without it. The two tests that quote `parallel` are left for ArcadeData/arcadedb#11367.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@tae898
tae898 marked this pull request as ready for review November 6, 2026 21:09
tae898 and others added 2 commits November 7, 2026 06:18
…Data/arcadedb#11367 is answered

PARALLEL is a reserved word, so an IMPORT DATABASE setting of that name can only be written in backticks (unquoted is a syntax error on 26.11.1). The 26.12.1 engine refuses the quoted name as unknown, which turned the JVM gate (it runs the latest engine image) red for both tests. Below 26.12.1 the import must answer OK as before; from 26.12.1 it must answer FAIL with the importer's reason.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…e that refuses it

PARALLEL is a reserved word, so IMPORT DATABASE can only take it in backticks, and the 26.12.1 engine refuses the quoted name as an unknown importer setting (ArcadeData/arcadedb#11367). The Python examples job runs the latest engine and went red on both examples (the import answered FAIL, so the type was never created). From 26.12.1 the setting is left out and the importer default is used, with a one-line note; below it nothing changes.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@tae898
tae898 merged commit e9e8f26 into main Nov 6, 2026
41 checks passed
@tae898
tae898 deleted the ci/native-snapshot-engine branch November 6, 2026 22:33
@github-actions github-actions Bot added this to the 26.12.1 milestone Nov 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant