Releases: jascal/orca-lang
Releases · jascal/orca-lang
Release list
v0.1.30
Changed
- CI / release: npm publishing for
@orcalang/orca-lang,@orcalang/orca-runtime-ts, and@orcalang/orca-mcp-servermigrated from a long-livedNPM_TOKENto OIDC trusted publishing. There is no stored npm credential anymore, and publishes now carry provenance attestations.release.ymlgainsid-token: writeon the three npm jobs, pinspnpm/action-setupto10.33.0(OIDC publish support requires pnpm ≥ 10.18), and dropsNODE_AUTH_TOKEN. The MCP-registry publish is token-less as well (npm ownership is verified via the publishedmcpNamefield). Added arepositoryfield to the three npmpackage.jsonfiles, required for provenance.
No functional or library changes — the train is version-bumped to stay in lockstep.
v0.1.29 — runtime-python QA fixes (RT-06/07/12/14)
Fixed
packages/runtime-python: four QA findings fromreports/python-runtime-qa-report.md(RT-06/07/12/14), reproduced end-to-end and covered by 10 regression tests intests/test_qa_fixes.py:- RT-12 (HIGH):
event.*guards now resolve against the triggering event's payload (e.g.event.amount > 100) instead ofNone. The event is threaded through_evaluate_guard → _eval_guard → _eval_compare/_eval_nullcheck → _resolve_variable. - RT-14 (MED): ordered comparisons (
< > <= >=) fail closed onNone/non-numeric operands instead of falling back to lexicographic string compare (which masked RT-12). Numeric-looking strings still coerce;eq/neunchanged. - RT-06 (MED): a state's
on_entryruns before its invoked child starts (XState order) instead of being dropped by an early return. - RT-07 (MED-HIGH):
resume()/restore()rehydrate invoked child machines andactive_invoke, so a machine that crashed inside aninvokestate is no longer permanently wedged. Sibling defs must be re-registered before resume; a missing sibling is skipped with aUserWarning.
- RT-12 (HIGH):
- Full runtime-python suite: 116 passed.
The npm packages (@orcalang/orca-lang, @orcalang/orca-runtime-ts, @orcalang/orca-mcp-server) are version-bumped to keep the release train in lockstep — no functional changes to them.
v0.1.28
v0.1.28 — orca-runtime-python: ship the cross-tool bridge Python-only release. PyPI 0.1.27 predated the bridge (#13); 0.1.28 is the first published runtime-python with register_foreign_runner + the bridge module (protocol 1.0). npm packages remain 0.1.27 (the Release workflow skips them).
v0.1.27
chore: bump all packages to v0.1.27 8 QA-verified bug fixes across verifier, parser, and compilers plus demo-fortran Makefile warning suppression. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v0.1.26
chore: bump runtime-python to v0.1.26 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v0.1.25
chore: bump runtime-python to v0.1.25 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v0.1.24
chore: bump all packages to v0.1.24
v0.1.21
chore: bump all packages to v0.1.21
v0.1.19
chore: bump all packages to v0.1.19
v0.1.18
Added
packages/runtime-python: production hardening — Gap 1–4, M-1, M-2- Gap 1:
snapshot()now includes"machine"and"definition_version"fields, making snapshots self-describing for external storage - Gap 2:
send()beforestart()/resume()raisesMachineNotActiveErrorinstead of silently returningtaken=False, surfacing sequencing bugs at the call site - Gap 3:
AsyncPersistenceAdapterProtocol for async database/network backends;OrcaMachineaccepts sync or async adapter (auto-detected viaiscoroutinefunction), auto-saves after every transition, gainsload_or_start()convenience method - Gap 4:
MachineDef.versionfield (default"0.1.0"), parsed from- version: X.Y.Zbullet under# machineheading;resume()emits aUserWarningwhen snapshot version does not match the current definition version - M-1:
_validate_machine_def()runs after parsing — checks for states, an[initial]state, valid transition sources/targets, and defined guards (stripping!negation prefix before lookup) - M-2:
TransitionResult.to_state_leafexposes the leaf state name directly, avoiding dot-notation parsing for compound state callers
- Gap 1:
- 18 new tests in
test_production_hardening.py; all 87 runtime-python tests pass