The ISO forms of LocalTime and LocalDateTime omit the seconds field
when the second is 00, so currentTime(), currentDateTime(),
currentTimeInZone() and millisToDateTime() each returned a shorter
string once a minute — HH:mm instead of HH:mm:ss. That failed
testCurrentTime in CI roughly one run in sixty, and silently handed
workloads a differently-shaped timestamp the rest of the time.
Each now formats with an explicit pattern rather than toString(), which
also makes the truncatedTo(SECONDS) calls redundant.
The new test pins the boundary through millisToDateTime, whose instant
comes from the caller: the wall-clock functions can only be asserted
for shape, which catches this one second in sixty. It builds a
timestamp on a whole minute, requires the seconds to be there, and
repeats at second 30 so a fix in the other direction is caught too.
- Persisted min/max/mean/stddev in a new sample_statistics SQLite table; added StatsCommand and made InstantCommand/StatsCommand use per-metric latest timestamp.
- Fixed lost activity metrics on short runs: ActivityExecutor now triggers a bypass-bucket snapshot before op dispensers detach; SQLite reporter is silent under post-close ticks.
- New stress-report bundled app + dummy_session.yaml workload with two new diag op-tasks (cycledelay, errormodulo); c-stress-shaped per-op output, A/B equivalence mode, comparability warning at the top.
- removed NBCLI's foundational-label re-injection.
1. Provided parameter - always takes precedence
2. Current TEMPLATE's default - used if present (even if a previous TEMPLATE set a different default)
3. Previous TEMPLATE's default - only used when current TEMPLATE has no default (e.g., TEMPLATE(var) or ${var})
Added 9 new benchmark classes in nb-engine-core/.../sysperf/engineflow/ for measuring engine flow performance
(stride context, op flow, space mapping, motor operations, etc.)
JMH documentation: Added devdocs/devguide/jmh_engineflow.md
Testing tags:
POM updates: Added test profiles
CONVENTIONS.md updates around test tags
Test annotations: Added 2-3 lines to ~280 test files
Split tests classes to allow one tag set per class (no mixed methods)
- Ops can accept flow context via FlowContextAwareOp.
- StandardAction manages per-stride StrideContext and passes flow context to ops.
- CapturingOp now writes captured values into the flow context.
- Dispensers/adapters expose cycle→space index/name for binding.
- Space mapping logic cleaned up; BaseSpace retains original names.
- Sync motor path replaced by StrideAction plus StrideMotor/dispenser.
- CoreMotor/SyncAction removed; loaders/tests moved to stride motor.
- CycleResultSegmentBuffer adds reset().
- StringCompositor skips local/global refs when deduping specs.
- Planning docs lightly edited.
- Fix SQL syntax error in SelectorTransformer: Move LEFT JOINs before WHERE clause
- Support nested {{...}} expressions in TEMPLATE() defaults
- Fix CMD_await to correctly use activity= parameter instead of alias
- Add available activities list to missing activity error messages
- Add getUnit() method to NBMetric interface
- Update all NBMetric implementations (Counter, Timer, Histogram, Meter, Gauge variants) with unit field
- Update MetricsView to use metric.getUnit() instead of extracting from labels
- Fix InstantCommand SQL join order bug (use joinAllLabelsWithSampleName())
- Update NBCreators with default units (nanoseconds, operations, empty)
- Fix test compilation errors in nb-api, nb-mql-api, and nb-engine-core (12 test files)
- Regenerate all test databases with updated metric constructors
- Move grammar files from src/main/antlr4 to src/main/java/.../grammars following conventions in adapter-cqld4 and
virtdata-lang modules
- Update ANTLR generated output to src/main/java/.../generated with explicit package configuration (-package
argument)
- Add imports for generated MetricsQLLexer/Parser classes in 11 parser and test files; all 285 tests passing
- Replace FEATURE_TRADEOFF_ANALYSIS.md with user-focused METRICSQL_DIFFERENCES.md guide (~40% shorter, removes
internal decision-making)
- Add session metadata (nb.version, nb.commandline, nb.hardware) to all 5 test database generators
- Update TEST_DATABASES.md with metadata documentation and correct regeneration instructions from project root
- Add LabelSetTree (canonical layer): Algebraic tree maintaining strict label set containment relationships with support for merging trees
- Add DisplayTree (display layer): Derived tree with three-pass reduction algorithm:
- Differential label rendering (show only labels differing from parent)
- Sibling condensation (merge siblings differing by single label with comma-separated values)
- Identical label set consolidation (combine nodes with same labels)
- Update MetricsCommand: Use canonical→display tree pipeline for --group-by labelset output
- Fix SummaryCommand: Build single shared canonical tree for all metrics instead of per-metric trees, enabling proper consolidation of metrics with identical label sets
- Add LabelSetTreeTest: 10 tests verifying containment relationships, merging, and rendering
- Result: Metrics with identical label sets now properly consolidated under single parent node (e.g., 20+ separate session=oDChioC entries → 1 node with 20+ child metrics)
- BundledApp integration (@Service selector="mql") accessible via nb5 CLI
- 6 output formats (table, csv, tsv, json, jsonl, markdown) with enum-based architecture
- 107 passing tests with self-validating documentation and 5 test databases
- Add sqlite-jdbc to dependency management and nb-mql-api to nb-engine-all
- Add shutdown hook to update symlink mtimes on session end
Metric filters upgraded: include/exclude clauses, deny-by-default option, cached lookups; Log4J reporter imports simplified.
Help topics fixed end-to-end: classpath scanning handles jars/denied paths, nb help topics prints list, markdown finder hardened.
AppImage launcher opts into --enable-native-access=ALL-UNNAMED to silence JNA warnings.
New metrics_reporting.md gives a concise CLI reporter/filter cheat-sheet.
- expose encodable histogram snapshots, reuse prepared statements, and Base64-encode histogram payloads directly
- propagate histograms flag through CLI/session wiring and document usage in local/sqlite_metrics.md
- expand integration tests to cover histogram capture and ensure SQLite reporter behaviour is exercised
* Update nodewalk parsing/rendering for vectordata 0.1.10
- swap nbvectors predicate imports for vectordata.spec.predicates and make the renderers Function<PNode<?>, String> wrappers with explicit fallback handling
- drive NodewalkParser through PNode.fromBuffer and case-insensitive renderer selection so both CQL and JSON views work with the new API
- refresh predicate-focused tests to use the vectordata types and confirm with targeted Maven test runs
* update to groovy 5 for exprs
* groovy 5 expr support checkpoint
* basic expression libraries and lvar support
* add preprocedssor expr layer to support autoconfig of vector params
* added lvar expr integrated tests
* fixed eventing leak