Make the reactor root the single version source #1

Merged
james.maes merged 3 commits from kof22/single-revision into develop 2026-11-06 13:53:56 +00:00
8 changed files with 41 additions and 38 deletions

No files matched your search

+2 -2
View File
@@ -1,6 +1,6 @@
# QBit Scripting
> **Paused, unreleased work in progress — 2026-11-04.** Implementation has stopped. This is a source checkpoint, not a production-ready release or a complete installable package set.
> **Version 1.0.** Published to the KOF22 Gitea Maven registry (`com.kingsrook.qbits`). It needs a qualified external worker deployment to compile or run scripts; with none configured every build and execution fails closed (see below).
Start with [current status and build prerequisites](docs/RELEASE-STATUS.md) and [known issues](docs/KNOWN-ISSUES.md). These documents supersede older release-readiness statements below.
@@ -94,4 +94,4 @@ Wrapper install runs all verify gates: real QQQ memory/JDBC actions and protocol
## Maven publication
Published POMs are self-contained: the estate's `flatten-maven-plugin` (`ossrh` mode) resolves `${revision}` and the `qqq.*` version properties at build time, so a consumer needs no `-Drevision`/`-D` override and sees the exact pinned core. Set `qqq.core.version`, `qqq.version` (and for Record Files `qqq.snapshot.version`) once in the release build. The inherited `qbit-build-parent` POM still warns until its owner publishes a literal version. This is a private functional release candidate, not GA and not published.
Published POMs are self-contained: the estate's `flatten-maven-plugin` (`ossrh` mode) resolves `${revision}` and the `qqq.*` version properties at build time, so a consumer needs no `-Drevision`/`-D` override and sees the exact pinned core. Set `qqq.core.version`, `qqq.version` (and for Record Files `qqq.snapshot.version`) once in the release build. The inherited `qbit-build-parent` POM still warns until its owner publishes a literal version.
+3 -4
View File
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- Same parent (qbit-build-parent 2.0.0) as released qbit-printing 1.0.0; QQQ baseline is the public 4.1.0-RC.21. -->
<parent><groupId>com.kingsrook</groupId><artifactId>qbit-build-parent</artifactId><version>2.0.0</version><relativePath/></parent>
<!-- Same parent (qbit-build-parent 2.0.0) as released qbit-printing 1.0.0; QQQ baseline is the public 4.1.0-RC.22. -->
<parent><groupId>com.kingsrook.qbits</groupId><artifactId>qbit-scripting-reactor</artifactId><version>${revision}</version><relativePath>../pom.xml</relativePath></parent>
<groupId>com.kingsrook.qbits</groupId>
<artifactId>qbit-scripting</artifactId>
<version>${revision}</version>
@@ -10,10 +10,9 @@
<description>QQQ QBit: shared compiled-TypeScript script projects, immutable builds, capability broker and record hooks. Execution requires an external isolated worker.</description>
<licenses><license><name>Apache License, Version 2.0</name><url>https://www.apache.org/licenses/LICENSE-2.0</url></license></licenses>
<properties>
<revision>0.1.0-SNAPSHOT</revision>
<maven.compiler.release>21</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<qqq.version>4.1.0-RC.21</qqq.version><qqq.core.version>4.1.0-RC.21</qqq.core.version>
<qqq.version>4.1.0-RC.22</qqq.version><qqq.core.version>4.1.0-RC.22</qqq.core.version>
<maven.compiler.proc>none</maven.compiler.proc>
</properties>
<dependencyManagement><dependencies>
+4 -8
View File
@@ -1,9 +1,5 @@
# Known issues and unfinished work
# Known issues
Updated: 2026-11-04. These are unresolved items, not a plan currently being executed.
- Public Core 4.1.0-RC.21 lacks isolation, pre-update hook, transactional change, durable intent and source-guard APIs required by this source.
- The Core integration and this repository's new aggregate Maven layout were interrupted during validation. Treat both as unfinished; the private qualification artifacts are not public dependency versions.
- The full `base`, RDBMS, middleware and Git integration build, attached test fixtures, clean-consumer resolution and cross-QBit context-script execution still need verification on the final dependency cohort.
- Runtime images, fully untrusted-script containment, resource limits, recovery, Kubernetes deployment and record-save latency need qualification on the actual configured runtime. Existing qualification flags and fail-closed behavior must not be bypassed.
- Source/Git authoring and UI changes also require the matching canonical Next UI release. The earlier private demo is not proof that the current public artifacts provide the full IDE and lifecycle behavior.
- Runtime images, untrusted-script containment, resource limits, recovery, Kubernetes deployment and record-save latency must be qualified on the configured runtime. Existing qualification flags and fail-closed behavior must not be bypassed.
- Source/Git authoring and UI changes require the matching Next UI release.
- Cross-QBit context-script execution depends on the Collaboration and Record Files releases.
+7 -17
View File
@@ -1,27 +1,17 @@
# Scripting — current status
# Scripting — status
Updated: 2026-11-04. **Work stopped at the user's request. Unreleased work in progress; not a production 1.0 release.**
**Version 1.0**, built and published by the shared `ci-workflows` Maven pipeline to the KOF22 Gitea Maven registry (`com.kingsrook.qbits`). The Java reactor (`base`, `rdbms`, `middleware`, `github`) is verified by `mvn deploy` in that pipeline, which runs the tests once.
## Purpose
Shared TypeScript authoring and compilation, immutable published scripts, scoped API capabilities, record lifecycle hooks and isolated execution integration.
## Repository layout
## Layout and build
`base/`, `rdbms/`, `middleware/` and `github/` are the Java reactor modules. `worker/`, `wasm-runtime/`, `supervisor/` and `deploy/` contain separate runtime components and deployment material. A Java package build does not build or qualify every runtime image.
`base/`, `rdbms/`, `middleware/` and `github/` are the Java reactor modules. `worker/`, `wasm-runtime/`, `supervisor/` and `deploy/` are separate runtime components with their own build instructions; a Java package build does not build or qualify runtime images. Use Java 21 and `./mvnw verify`. Depends on QQQ Core `4.1.0-RC.22`.
## Building and installation
## Operating limits
Use Java 21 and the included Maven wrapper. Once compatible Core artifacts are available, use `./mvnw verify` for the Java reactor or `./mvnw -pl base -am verify` for the base subset. Runtime components have separate build instructions. Current source is a checkpoint, not a supported production installation.
Running or compiling script code needs a hardened external worker deployment that you must qualify on your own runtime; with none configured every build and execution fails closed. Do not bypass the existing qualification flags. See [known issues](KNOWN-ISSUES.md).
## Evidence retained
The initial packaging checks passed style validation; deployment configuration tests passed 13 cases. Public Core 4.1.0-RC.21 could not compile the required APIs. A separate Core integration candidate compiled selected modules under a private qualification version and passed 15 transaction-callback tests. The complete Scripting reactor and runtime were not verified before work stopped.
## Source and release state
The starting source was extracted from Website-Backend commit b6fb23825a87412397dec703b9617148ae7eb601, then adapted for standalone packaging. This repository preserves the resulting source and existing licenses. It does not declare a published artifact cohort, completed deployment or complete acceptance.
See [known issues](KNOWN-ISSUES.md) and the README for the existing API and integration documentation. No further implementation, tests, releases or deployment should be started without explicit user instruction. The outstanding dependency order is Core, Collaboration, Scripting/Record Files, then the integrated Generation bridges and matching UI.
The prepared release caller is saved as an inactive reference in docs/release/qrun-release.reference.yaml. No new workflow is being activated by this checkpoint; shared CI/CD design and enrollment remain unfinished.
The outstanding dependency order is Core, Collaboration, Scripting/Record Files, then the Generation bridges and matching UI.
+3 -2
View File
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent><groupId>com.kingsrook</groupId><artifactId>qbit-build-parent</artifactId><version>2.0.0</version><relativePath/></parent>
<parent><groupId>com.kingsrook.qbits</groupId><artifactId>qbit-scripting-reactor</artifactId><version>${revision}</version><relativePath>../pom.xml</relativePath></parent>
<groupId>com.kingsrook.qbits</groupId><artifactId>qbit-scripting-github</artifactId><version>${revision}</version>
<properties><revision>0.1.0-SNAPSHOT</revision><maven.compiler.release>21</maven.compiler.release><maven.compiler.proc>none</maven.compiler.proc><qqq.version>4.1.0-RC.21</qqq.version><qqq.core.version>4.1.0-RC.21</qqq.core.version></properties>
<licenses><license><name>GNU Affero General Public License v3.0</name><url>https://www.gnu.org/licenses/agpl-3.0-standalone.html</url><distribution>repo</distribution></license></licenses>
<properties><maven.compiler.release>21</maven.compiler.release><maven.compiler.proc>none</maven.compiler.proc><qqq.version>4.1.0-RC.22</qqq.version><qqq.core.version>4.1.0-RC.22</qqq.core.version></properties>
<dependencyManagement><dependencies>
<dependency><groupId>com.kingsrook.qqq</groupId><artifactId>qqq-backend-core</artifactId><version>${qqq.core.version}</version></dependency>
<dependency><groupId>com.kingsrook.qqq</groupId><artifactId>qqq-backend-module-rdbms</artifactId><version>${qqq.core.version}</version></dependency>
+3 -2
View File
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent><groupId>com.kingsrook</groupId><artifactId>qbit-build-parent</artifactId><version>2.0.0</version><relativePath/></parent>
<parent><groupId>com.kingsrook.qbits</groupId><artifactId>qbit-scripting-reactor</artifactId><version>${revision}</version><relativePath>../pom.xml</relativePath></parent>
<groupId>com.kingsrook.qbits</groupId><artifactId>qbit-scripting-middleware</artifactId><version>${revision}</version>
<properties><revision>0.1.0-SNAPSHOT</revision><maven.compiler.release>21</maven.compiler.release><maven.compiler.proc>none</maven.compiler.proc><qqq.version>4.1.0-RC.21</qqq.version><qqq.core.version>4.1.0-RC.21</qqq.core.version></properties>
<licenses><license><name>GNU Affero General Public License v3.0</name><url>https://www.gnu.org/licenses/agpl-3.0-standalone.html</url><distribution>repo</distribution></license></licenses>
<properties><maven.compiler.release>21</maven.compiler.release><maven.compiler.proc>none</maven.compiler.proc><qqq.version>4.1.0-RC.22</qqq.version><qqq.core.version>4.1.0-RC.22</qqq.core.version></properties>
<dependencyManagement><dependencies>
<dependency><groupId>com.kingsrook.qqq</groupId><artifactId>qqq-backend-core</artifactId><version>${qqq.core.version}</version></dependency>
<dependency><groupId>com.kingsrook.qqq</groupId><artifactId>qqq-backend-module-rdbms</artifactId><version>${qqq.core.version}</version></dependency>
+16 -1
View File
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- Aggregator only. It is not a parent of any module: every module keeps its own dependency boundary and installs on its own. -->
<!-- Reactor root AND parent of every module, so the one <revision> below is the single version source: the release pipeline rewrites only this root property and
passes no -Drevision, so a module that declared its own revision would stay at the SNAPSHOT. The root keeps the modules' own former parent (qbit-build-parent
2.0.0), so each module's inherited build configuration is unchanged; each module still keeps its own dependency boundary and can be built on its own
(mvn -f <module>/pom.xml resolves this parent through ../pom.xml). -->
<parent><groupId>com.kingsrook</groupId><artifactId>qbit-build-parent</artifactId><version>2.0.0</version><relativePath/></parent>
<groupId>com.kingsrook.qbits</groupId>
<artifactId>qbit-scripting-reactor</artifactId>
<version>${revision}</version>
@@ -18,4 +22,15 @@
<module>middleware</module>
<module>github</module>
</modules>
<build><plugins>
<plugin>
<!-- The reactor root is itself a published pom-packaging module: publish a consumer POM with ${revision} resolved. -->
<groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>1.7.3</version>
<configuration><updatePomFile>true</updatePomFile><flattenMode>ossrh</flattenMode></configuration>
<executions>
<execution><id>flatten</id><phase>process-resources</phase><goals><goal>flatten</goal></goals></execution>
<execution><id>flatten.clean</id><phase>clean</phase><goals><goal>clean</goal></goals></execution>
</executions>
</plugin>
</plugins></build>
</project>
+3 -2
View File
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent><groupId>com.kingsrook</groupId><artifactId>qbit-build-parent</artifactId><version>2.0.0</version><relativePath/></parent>
<parent><groupId>com.kingsrook.qbits</groupId><artifactId>qbit-scripting-reactor</artifactId><version>${revision}</version><relativePath>../pom.xml</relativePath></parent>
<groupId>com.kingsrook.qbits</groupId><artifactId>qbit-scripting-rdbms</artifactId><version>${revision}</version>
<properties><revision>0.1.0-SNAPSHOT</revision><maven.compiler.release>21</maven.compiler.release><maven.compiler.proc>none</maven.compiler.proc><qqq.version>4.1.0-RC.21</qqq.version><qqq.core.version>4.1.0-RC.21</qqq.core.version><qqq.postgres.version>4.1.0-RC.21</qqq.postgres.version></properties>
<licenses><license><name>GNU Affero General Public License v3.0</name><url>https://www.gnu.org/licenses/agpl-3.0-standalone.html</url><distribution>repo</distribution></license></licenses>
<properties><maven.compiler.release>21</maven.compiler.release><maven.compiler.proc>none</maven.compiler.proc><qqq.version>4.1.0-RC.22</qqq.version><qqq.core.version>4.1.0-RC.22</qqq.core.version><qqq.postgres.version>4.1.0-RC.22</qqq.postgres.version></properties>
<dependencyManagement><dependencies>
<dependency><groupId>com.kingsrook.qqq</groupId><artifactId>qqq-backend-core</artifactId><version>${qqq.core.version}</version></dependency>