Releases: galax-io/ai-plugins
Releases · galax-io/ai-plugins
Release list
2026-07-31 — galaxio-gatling-pro 1.3.0
galaxio-gatling-pro 1.3.0
simulation.conf now answers which keys a run requires, per protocol.
Added
- A key registry in
references/resource-files.md, checked against Picatinny's own
SimulationConfigon the0.xand1.xlines. Every default parameter with its type and the
condition that makes it required, then the custom keys each protocol declares. Required means
the getter carries no default, and because every accessor is alazy valthe throw lands at
first access — which is why a project can leave out what it never reads. - The two defaulted keys, named as traps.
stagesNumberdefaults to1, so a staged profile
missing it runs one stage at full intensity and reports a complete breaking-point test that
never stepped.testDurationdefaults to(rampDuration + stageDuration) * stagesNumber—
exactly the lengthmaxDurationmust exceed — so omitting it truncates the run, and it drags
rampDurationandstageDurationinto the required set for any simulation that reads it. intensityis a string, not a double.IntensityConvertertakes at most one digit after
the decimal point, so16.67fails where16.7or"1000 rpm"works.IntensityConverter
itself reads no config.baseUrlis scoped by the holder, not the request. Picatinny's accessor is lazy, but the
shared holder is not, so a JDBC-only simulation reaching into a holder that also builds an HTTP
protocol still forces the key.- Every protocol reference names its own config keys.
dbUrl,dbUseranddbPasswordfor
JDBC;kafkaUrlfor Kafka;amqpHost,amqpPort,amqpLoginandamqpPasswordfor AMQP;
jmsUrl,jmsUserandjmsPasswordfor JMS;baseUrlfor HTTP.usersandpacingare
named where the closed model introduces them. - What a
-Doverride can carry. System properties do not go through the HOCON parser, so
every value arrives as a string: both duration spellings work, but a list- or object-valued key
cannot be overridden this way and fails at startup with a type error.
Changed
${?VAR}is stated as the rule that makes a variable mandatory, not only as a secrets
idiom: with no default line above it, an unset variable leaves the key undefined and the run
stops on first read, naming it.migrate.mdcounted two 3.12 rows where the table has three. An upgrade following the
count leftstopInjectorin place, which does not exist from 3.12.- Duplication across dispatch axes removed. The Session invariant no longer repeats in
lang-scala.md, thesaveAs-needs-a-passing-check rule no longer repeats in
protocol-http.md, and the package-object trap is stated once inlang-scala.mdrather than
twice withstarter-tree.md. Facts repeated between sibling files on the same axis are left
alone: an agent reads one language file and one build file, never two.
2026-07-31 — galaxio-gatling-pro 1.2.1
galaxio-gatling-pro 1.2.1
The skill reads 13% shorter with every rule, coordinate and command it had before.
Changed
SKILL.mdstack detection is half its former size. All five shell commands are unchanged,
and so is the table that reads a Gatling line out of an artifact name —
gatling-charts-highchartsagainstgatling-maven-pluginagainstio.gatling.gradle, plus
the-latesttrap. What went was the dispatch-ordering rationale, which the numbered dispatch
tables already are, and the framing around the rules rather than the rules.- The opening section is now the three steps, the greenfield default and one rule. "An
existing repository outranks this skill" survives, as does the greenfield stack — Gatling
3.13.x, Scala 2.13, Java 17, sbt. - Two rules moved from detection to dispatch, where the choice they govern is actually made:
that the Galaxio libraries ship Java facades and so are not gated by language, and that adding
a protocol plugin means taking its release for the line you are on rather than raising the
line. - 3.10.x and 3.12.x are described accurately. The skill said it carried no coordinates for
them whilepicatinny-0-x.mdsupplied one for 3.10.x. The claim now names what is true: the
version matrix has no column for either line.
Removed
- Prose explaining the skill's own construction, in
SKILL.mdand across all 23 reference
files — why the reference tree is split, which file owns which fact, what a typical task
loads. None of it changed what the skill does, and it was read on every activation. The
design rationale now lives in the repository'sAGENTS.md, where authors read it. - Restatements of the adjacent code, table or command, and the pointers that duplicated an
invariant already loaded fromSKILL.md.
2026-07-30 — galaxio-gatling-pro 1.2.0
galaxio-gatling-pro 1.2.0
Four Gatling lines are covered — 3.9.x, 3.11.x, 3.13.x, 3.15.x — and every version number now lives in one file.
Added
- Gatling 3.9.x, where both the old and new API spellings compile — the skill says to write
the one that survives 3.11. - Gatling 3.15.x, a supported target for any project without a Galaxio dependency.
references/versions.md. One matrix, a column per line, holding every coordinate the skill
names — a row read across the columns is where that library crosses.references/version-lookup.md. Two commands: what is published, and which line a release
targets. Used wherever a current version used to be written down.- Routing for 3.10.x, 3.12.x and 3.14.x. A detected 3.10.x used to match no row and silently
got 3.13 coordinates — wrong on every one.
Changed
- Snapshots are gone, thresholds stay. Out:
3.13.5,3.11.5,1.25.0and every other
"current release" number. In: every crossing, every build-plugin floor, the version traps. - Bounds follow the line. A range is a closed line,
+an open one whose top is looked up. - The Galaxio ceiling is a dependency fact, not a limit of the skill — stopping at 3.13.x
applies only to projects keeping Picatinny or a protocol plugin. - One fact, one file. Numbers live in
versions.md, line deltas inmigrate.md, Picatinny's
API thresholds in the Picatinny references. Protocol and build references carry no versions at
all —--add-openshad been spelled out in twelve files, the crossing table in four. - Picatinny
0.xcovers0.14.0upward — the class set is identical up to0.16.0.
Fixed
- Java 8 on 3.9.x is a Scala-only floor. The
javaapifacade every Java and Kotlin project
goes through is class-file major 61 in the very first0.14.xand0.10.3jars, so a Java or
Kotlin project on that line needs 17 like every other. gatling-gradleis bounded on every line: an open bound on a plugin whose major.minor is the
Gatling line silently moves the project off it.gatling-maven-plugin 4.8.0needs Maven 3.6.3+, dropped in the consolidation while three build
references still promised it.- Picatinny's two extra utility classes arrive at
0.17.0, not0.18.2. gatling-picatinnyhas no 3.12 release at all —SKILL.mdclaimed one sat between the
crossing columns.
8 more lines
- A
0.xPicatinny pin spans three Gatling lines, so raising it can move the Gatling line
without changing an import. The reference said it never could. httpConcurrentRequestswas marked unavailable on the profiled lines; 3.15.x is now one.
Removed
references/beyond-3-13.mdand the fourreferences/version-3-*.mdprofiles, folded into
versions.md;references/migrate-3-11-to-3-13.mdrenamed toreferences/migrate.md.
2026-07-30 — galaxio-gatling-pro 1.1.0
galaxio-gatling-pro 1.1.0
Added
- Two Gatling version profiles,
references/version-3-13.mdand
references/version-3-11.md, which own every version number and dependency
coordinate;references/migrate-3-11-to-3-13.mdfor the upgrade between them; and
references/beyond-3-13.md, which records why the skill stops at 3.13.x. - One build reference per supported combination —
build-sbt-scala.md,
build-maven-{java,kotlin,scala}.md,build-gradle-{java,kotlin,scala}.md— each
carrying its own source roots, run commands, build-plugin floor and the list of what to
add to the build file. A build file is a cell of the language-by-tool matrix, so three
files by tool could not avoid mixing languages. - Per-language references (
lang-scala.md,lang-java.md,lang-kotlin.md), including
theinjectOpen/injectClosedsplit and the KotlinshouldBealias. - One Picatinny reference per Picatinny major —
picatinny-1-x.mdandpicatinny-0-x.md—
pluspicatinny-substitutes.mdfor projects that cannot take the dependency. The split is
on the Picatinny pin, not the Gatling line, because1.xspans both:1.0.1–1.10.4
target Gatling 3.11.5 and1.12.0+ target 3.13.5.0.xis not the same library with
fewer features — the Faker package does not exist, theRandom*Feederfamily is the
current API rather than a deprecated one,assertionFromYamlcarries no deprecation, and
getStringListParam,getConfigParamand everygetOpt…variant are absent. All three
document the modules the skill never covered — transactions, JWT, Redis and
IntensityConverter— and theorg.galaxio.gatling.javaapifacade, present throughout. - Per-protocol references (
protocol-http.md,protocol-jdbc.md,protocol-kafka.md,
protocol-messaging.md) andworkload-models.mdfor injection profiles. references/starter-tree.md: the minimal project that compiles and runs — package clauses
and every import — andreferences/resource-files.mdforsimulation.conf,logback.xml,
the feeder CSV and the body template, which the layout demanded but nothing specified. They
are separate files so that needing one resource does not mean reading the whole project.- The rule that decides generated data against a CSV: identifiers the system under test must
already know come from a CSV, everything else may be generated. Backwards, it produces a
run that is green because it measured the error path. - The JDBC driver requirement, the
JdbcProtocolBuilderandsimpleCheckTypeimports, and
the parameterized-query case in Java and Kotlin. - An Invariants section in
SKILL.mdfor the rules that hold on every stack, including the
rule that an existing repository outranks this skill, HOCON environment substitution so
credentials stay out of a committedsimulation.conf, and alogback.xmllevel guard.
71 more lines
- Detection guidance for the two build-plugin numbering schemes:
gatling-charts-highcharts,gatling-test-framework,gatling-appand
${gatling.version}name the Gatling line,gatling-maven-pluginandgatling-sbtare
on their own 4.x numbering and say nothing about it, andio.gatling.gradleis the
exception whose leading major.minor tracks the line.
Changed
SKILL.mdis an index. Dispatch narrows by language, then build tool, then Gatling
version, and only the matching references load. The body is 347 lines, down from 458:
detection, dispatch and the invariants that apply to every stack. Anything that varies by
version, build tool, language or protocol is a reference, loaded on demand.- The default line for a new project is Gatling 3.13.x, not 3.11.x — that is where every
library's current release sits. It is not where they only exist: Picatinny and the JDBC,
Kafka and AMQP plugins each publish for 3.11.x too, so a Galaxio dependency is never
evidence of the line. Every one of them declaresgatling-coreatprovidedscope; the
project's own Gatling pin decides, and the library version is checked against it. - Picatinny and the Galaxio protocol plugins are documented for all three languages. The
_2.13suffix names the artifact, not the caller: each ships a Java and Kotlin facade
underorg.galaxio.gatling…javaapi. - The Codex sidecar and the plugin description no longer describe the skill as Scala-only.
Fixed
- The Picatinny coordinate was written as
org.galaxio.gatling-picatinny, which does not
resolve. It isorg.galaxio %% gatling-picatinnyin sbt andgatling-picatinny_2.13
in Maven and Gradle. - The sbt Picatinny dependency was missing its
% Testscope. - The JDBC section documented only
queryP. Addedquery, the insert, batch and
stored-procedure forms, the full HikariCP pool table, and the 1.5.0 behaviour changes —
where(...)no longer accepts expression language, and a literal"NULL"is kept as
text. - The Picatinny feeder example paired
RandomUUIDFeederwith the fakerPredefimport,
which does not provide it. Scala now usesGeneratedFeederfrom the faker API; the
legacy objects live inorg.galaxio.gatling.feedersand are deprecated from1.5.0. ${?VAR}was described as making a variable mandatory. It is HOCON's optional
substitution: with a default on the line above, an unset variable silently leaves the
default in place. The samplesimulation.confgavebaseUrlalocalhostdefault under
that misreading, so a run with no environment exported would have measured nothing and
reported green. Keys that must come from the environment now carry no default.intensitywas documented as requests per second while being passed to
rampUsersPerSec/constantUsersPerSec, which meter virtual-user arrivals. A scenario
issuingkrequests per iteration ran at roughlyktimes the stated rate.- The staged profile's duration was given as
stagesNumber * stageDuration + (stagesNumber - 1) * rampDuration, one full ramp short of
the profile the same file recommends: a starting rate of zero puts a ramp before every
level, so it isstagesNumber * (stageDuration + rampDuration). SizingtestDurationfrom
the old formula truncated the top stage while the report still looked complete. - The 3.11 profile listed Picatinny
0.18.2as the ceiling and claimed the JDBC, Kafka and
AMQP plugins had no 3.11 releases. The real ceilings are1.10.4,0.17.2,0.20.5and
1.0.4; the old table cost a thirteen-release Picatinny downgrade and turned adding a
protocol plugin into a whole-project Gatling upgrade. gatling-gradlewas pinned as3.11.0, which does not exist — the line starts at
3.11.1— and as3.13.1 or lateron the 3.13 profile, where "or later" would move the
project to Gatling 3.14.x or 3.15.x, since that plugin's major.minor is the Gatling line.- The no-Picatinny config holder called
ConfigFactory.load("simulation.conf"). That
argument is a resource basename, so it looked forsimulation.conf.conf, found nothing,
and fell back to system properties alone — the failure the holder exists to prevent. - The 3.11 Picatinny file claimed the same typed getters as the later line.
0.xhas five;
getStringListParam,getConfigParamand everygetOpt…variant arrive with1.x. - The closed-model Scala scenario called
pace(pacing)withpacingdefined nowhere. - Version detection recursed into
project/, matching sbt's own build output, and never
looked atgradle/libs.versions.toml,settings.gradle[.kts]orbuildSrc— where a
Gradle project usually keeps the version — so a catalog-based project read as greenfield. gatling.confwas listed in the mandatory layout whileresource-files.mdsays not to
create one without something to override.
Removed
references/imports.md,cases.md,protocols.mdandbuild-files.md. Their content
is redistributed across the version, build-tool, language and protocol references.