Get Auxon
Request a License Key
To use the Auxon suite you need a license key. Request yours here.
Get Started
Check out our Docs to hit the ground running.
Changelog
Added
- The Modality Reflector debian package now includes the
modality-barectf-proxy-collector
.
Added
- The Modality Reflector debian package now includes
modality-can-importer
andmodality-socketcan-collector
.
Changed
- Updated reflector plugins
Added
- The Modality Reflector debian package now includes
modality-barectf-importer
andmodality-barectf-tcp-collector
.
Changed
- The modality-sdk package has been split into 3 separate packages. The main package is now multiarch-compatible.
Added
- Added 'deviant experiment delete' command.
Changed
- Improved the quality of fault localization results.
- Improve indexing performance for workspaces with custom interactions that use user-defined attributes.
Fixed
- The 'modality' command line now prints all log messages to stderr.
Changed
- Improved the quality of behavior-level fault localization.
Changed
- Updated reflector plugins
Fixed
- Packaging for macOS
Added
- The Modality Reflector debian package now includes
modality-trace-recorder-proxy-collector
- System components are now displayed in the experiment impact report
- Added the 'modality segment compare' command
- The Modality hosted apt repos now support Debian 12 (Bookworm) and Ubuntu 24.04 (Noble)
Added
- The Modality Reflector now supports event attribute rollover tracking
- SpeQTr queries can now opt in to timestamp-based causality on a per- relationship basis with 'using lax causality'.
- System components may now be more directly represented in Modality, by configuring a component segmentation method in the workspace configuration.
Fixed
- The Modality Reflector plugin shutdown now waits for all plugins to be gracefully shutdown before shutting down the ingest service
Changed
- Updated reflector plugins
Fixed
- Allow string mutators parameters with finite domain in an experiment
Added
- Reflector CLI options to override timeline metadata
Fixed
- Updated statistical library to fix experiment impact analysis
Changed
- Updated reflector plugins
Changed
- 'null' segments no longer appear. Previously, whenever a timeline did not contain the attributes required by a workpace segmentation rule, it would be place into a segment named 'null'. That null segment is no longer created. If a timeline doesn't have the required attributes for any of a workspace's segmentation rules, it will not appear in any segments.
Fixed
- Fixed intermittent mutator disconnections for mutators hosted by a reflector.
- Cleaned up some superfluous error logging.
Added
-
Expressions used in SpeQTr (including specs and queries) now support quoted attribute keys. Now you can write expressions such as:
_.'bar-baz' = 12
. The strings follow the normal escaping rules -
The
conform spec inspect
command now supports thejunit-xml
output format which makes it integrate spec results into any reporting tool which supports the standard JUnit XML file format. -
The reflector's local HTTP API has a new endpoint,
/override_timeline_attrs
. By posting to this endpoint, custom automation and tool integrations can adjust the reflector's timeline on the fly.
Changed
- The Modality Reflector now supports running multiple plugin instances defined in a reflector configuration file.
- The Modality Reflector will now run all plugins defined in a reflector configuration file by default.
Changed
- Improved the performance of
modality log
- Updated reflector plugins
Changed
- Updated reflector plugins
Fixed
- Docker images now use exec in the entry point scripts so that they receive signals from Docker
Changed
- Re-enable the stats indexer, using a more correct and more efficient serialization format.
- The
modality workspace sync
command works across the full system now, including the event database itself and all derived indexes.
Fixed
- Improve data ingest performance when events from multiple timelines are interleaved on a single connection.
- Fixed an rarely occurring database locking error in the event database.
Added
- The event attribute
event.interaction.reverse
may now be used on the receive side of an explicit interaction (one withevent.interaction.remote_event.*
). This will instruct Modality to reverse the direction of the interaction, making the send side be the receive side and vice-versa.
Changed
- Disabled the stats indexer
- Updated reflector plugins
Added
- Workspace/segment APIs to the public v2 APIs for retrieving experiment results, mutators, and mutations
modality event inspect
command to inspect event instances and their attributes- Added the
--strict-index-consistency
option tomodalityd
. If this is not specified, the default mode isfast
, which may leave some data unindexed if the process is abnormally terminated under heavy write load. - The Modality Reflector package now includes the
modality-defmt-importer
andmodality-defmt-rtt-collector
plugins: https://github.com/auxoncorp/modality-defmt-plugins
Changed
deviant mutator list
now considers the data scope based the ingest mutator announcement eventmodality-reflector
now handles user-configurable plugin shutdown signaling (on supported platforms)- Removed request timeout from
modality workspace sync-indices
command modality tail
no longer displays timeline interactions, as they cannot be reliably synthesized from streaming data.modality log
now displays a stable hexadecimal-formatted interaction id, instead of a command-scoped counter.
Fixed
- Improved the performance of the backend code which serves the contents of the 'events' panel in the VS Code extension, which may be noticeable with large datasets.
exists(...)
may now be used as the only clause of a behavior case.- Fixed several cases of mis-attribution in the 'logical analysis'
mode of
conform spec eval
, which is enabled by default. It will now more accurately identify the part of a spec which is most closely related to the reason it failed. - Aggregate queries / specs now preserve timestamp information, so you can compare the result of a time-based aggregate to a time value.
modality query --wait-until
now works if you are starting with a completely empty database.- SpeQTr errors related to behavior and case blocks are now localized to the first line of the block, rather than the entire block. That is, the red squiggle in VS code is now far less obnoxious.
Changed
- Updated reflector plugins
Fixed
- Plugin packaging
Changed
- The Modality Reflector package now includes the
modality-trace-recorder-rtt-collector
plugin: https://github.com/auxoncorp/modality-trace-recorder-plugin
Added
- HTML output format support for
conform spec coverage
- Listed/inspected mutations now contain an optional region-based details summary
modality workspace sync-indices
CLI command to explicitly synchronize the interaction indices
Changed
- Updated reflector plugins
- Update docker image dependencies
Fixed
modality-reflector
plugin-specific config file generation timeline attribute normalization.
Changed
- Updated reflector plugins
Fixed
- Packaging for macOS
Added
conform spec coverage
CLI command introduced, providing reporting on whether the specs of interest were fully exercised in the relevant region. This draws on internal tracking of spec behavior case match counts and whether or notwhen
clause bearing behaviors were ever triggered.
Changed
conform spec eval
now detects whether spec behaviors which have a trigger (awhen
clause) were ever found in the evaluated region. If such a behavior never triggered, the spec result is considered inconclusive in the displayed output.
Added
modality user auth-token
CLI command to get/set the current system user's auth token- Add events summary for timeline to the public v2 API
- Add
conform spec batch-eval
CLI command to evaluate a batch of specs conform spec update
subcommand gained the--force-create
option. When present, the command will create a spec with the update's content, even if a spec by that name did not previously exist.- Add spec summary for segment to the public v2 API
Changed
conform spec update
will no longer create a new version of a spec if the provided update content is exactly the same as the current version's content.
Added
- SpeQTr's
behavior
blocks now supportuntil
clause as more general and explicit way of describingwhen
-based triggered behaviors with an explicit end boundary. - The Modality Reflector package now includes the
modality-json-importer
plugin: https://github.com/auxoncorp/modality-json-plugins
Fixed
- Fixed docker image
latest
tagging for modalityd and modality-reflector - Python notebooks tarball packaging directory
Fixed
- Remove auto vacuum from connection preparation
- No more incremental vacuum
Changed
- Improved indexing performance
- Auto-start interaction indexing on startup
Changed
- Version bump
Added
modality-reflector
can now auto-generate timeline override values through the CLI- Mutator constraint support in experiment definitions
- HTTP API to reset reflector, regenerate timeline IDs and auto-generated values, and restart plugins
Changed
- Improved
modality log
performance - Improved segmentation and indexing performance
- Update
modality-sdk
dependency and debian package - Refactor SBFL tracking implementation, support per-behavior analysis
- Revise fault localization output formatting
Fixed
- Workspace deletion
- Event coordinate queries
- EventCoordinate equality in expression evaluation
- Timeline ID comparisons
modality log
--around
and--radius
Added
- Future-proofing for database changes with a more consistent migration strategy for all databases.
- Support for declarative interactions
- Add causal partitioning flag to segmentation rules
- Add
timeline
parameter to log, logs a specific timeline conform exec
a single behavior- Print latest receive time in
modality segment list
output - Print segment timestamps in
conform spec eval
- Support event patterns as
modality log
args - Add a command line option to enable TSP in modalityd, off by default
- Restore fault localization, currently over events-with-arbitrary-attr-groupings type elements
- Support for spec metadata in list, inspect commands
- Add
--with-attributes
toconform spec result list
- Add
--filter
toconform result list
- Add
--behavior-filter
toconform spec eval
- Add
modality log ignore
subcommand - Add
modality tail
command, which prints the log output of the last event in each timeline in scope.modality tail --follow
does the same, then continues to print new events as they arrive.
Changed
- Improved implementation of log
--from
,--to
- New timeline and event ID syntax
- Refactor
conform spec eval
output - Remove global data scope
- Support raw uuids in
modality log <thing>
- Automatically start a pager for CLIs
- Include timeline name and event name in default event list grouping
Fixed
- Event and timeline attributes containing floats with the IEEE754
NaN
values are now supported for storage. Previously these floats would crash the storage layer on attempted ingest.
Added
modalityd
now accepts an offline license file via the configuration file fieldlicense-file
or the CLI option--license-file
.
Changed
- Modality's authorization model has been updated:
- Capabilities may now be associated with a user, as well as with an auth token.
- By default, an auth token inherits the capabilities of the user for whom it is minted.
- Added the
allow_manage_users
andallowed_mutator_filter
capabilities. - Added the
modality user set-capabilities
command
Fixed
- Debian package naming conflicts between conform and speqtr-lsp
Fixed
- Background processing is now correctly stopped when cancelling the
execution of the
modality query
(with aggregate) andconform spec eval
commands.
Added
- The SpeQTr LSP server is now included in the release packages.
- The monitored pipeline example, which is used in the tutorials, is now included in the release packages.
- Debian packages now support Ubuntu 22.04.
Changed
Fixed
- Debian package man page conflict
Added
- Modality can now integrate with the OpenTelemetry ecosystem. The 'modality-otel-collector' plugin is now included in the reflector package, implementing an OTLP receiver that stores traces in Modality: https://github.com/auxoncorp/modality-otel-receiver.
- Added support for the s390x architecture.
Changed
-
Updated the TraceRecorder plugins to v0.3.1: https://github.com/auxoncorp/modality-trace-recorder-plugin
-
The 'modality log' subcommand has a new rendering and layout algorithm that works better with short-lived timelines and callout patterns.
-
The CTF reflector plugins have been migrated to an open source repository: https://github.com/auxoncorp/modality-ctf-plugins
Added
- New subcommand
conform result delete
deletes specific spec evaluation result sets
Changed
- The Modality Reflector package now includes the
modality-trace-recorder-tcp-collector
andmodality-trace-recorder-itm-collector
plugins: https://github.com/auxoncorp/modality-trace-recorder-plugin
Fixed
- Fixed CLI colorized output auto detection when
TERM=xterm
- Added missing
run_id
attribute to the CTF and modality-probe reflector plugins
Added
- A new command line tool,
conform
, has been added to provide an interface to the Conform product's capabilities to manage and evaluate SpeQTr specifications in the form of theconform spec
command, which replaces the pre-existingmodality spec
family of subcommands. - New subcommand
conform spec result list
provides a way to list prior spec evaluations. - New subcommand
conform spec result inspect
provides detailed insight into a particular spec evaluation. - More advanced logical analysis of spec evaluation results has been added. The analysis can more precisely identify where a spec is failing to find matches and suggest event name, attribute name, and literal value substitutions that could lead to success.
- Optional
--validation-only
flag added toconform spec eval
. When provided,conform
validates the provided SpeQTr without evaluating it. - Optional
--with-case-matches
flag added toconform spec eval
. When provided, a more detailed count of how often each case in each behavior matched will be presented. - Option
--user <user-name>
added tomodality user mint-auth-token
. When provided, the auth token will be linked to the given user rather than from the configuration context's user. - Added
COPY_CERTS_PATH
environment variable to Modality Reflector Dockerfile. When set, all.crt
files in the path will be copied to the image.
Changed
- The
conform spec inspect
command now includes information about the version history of the spec in question, and related spec evaluation result summaries. - The
conform spec create
,update
, andeval
commands can now work with a SpeQTr document provided via standard process input. Supply the--from-stdin
flag to do so. This replaces the pre-existing pattern of providing a SpeQTr document as an explicit inline command line argument. - The SpeQTr syntax for possibly-repeatedly-occurring behaviors has changed. Use the keyword "when" instead of "trigger"
- The SpeQTr syntax for acceptable-but-not-normal behavior cases has changed. Use the keyword "recovery" instead of "error"
Fixed
- An error is now reported for queries or specifications which use a constraint on a negative relationship, instead of silently ignoring the constraint. This will be directly supported in the future.
Changed
- Modality Reflector listens on all interfaces instead of localhost by default
Fixed
- modalityd Dockerfile
--connect-addr
uses port 14182 instead of 14184 whenNO_TLS
is set
Added
- The Modality Reflector package now includes the
modality-trace-recorder-importer
plugin: https://github.com/auxoncorp/modality-trace-recorder-plugin - Added the
modality wait-until
command, which repeatedly executes a boolean query until it achieves success or an optional deadline is reached. - SpeQTr queries may now include quotes around event and timeline names in the 'event@timeline' form, making it more convenient to work with events and timelines with spaces in their names.
Changed
- Modality's query execution engine has been improved to increase the performance of matching complex queries, such as join or fork patterns.
- Ingest clients no longer need to explicitly provide the timeline ID attribute in the metadata
- Improved Modality configuration file modalityd URL parameter format handling
Changed
- Modality 0.9 is a substantial revision to the core data model to support integration with a variety of event sources. It is not backwards compatible with previous releases of Modality.
- The trace data ingest protocol has been redesigned to support the extensible core data model. A client SDK (currently available for Rust) is available at https://github.com/auxoncorp/modality-sdk.
- The new Reflector component (see
modality-reflector
) allows for trace collection and annotation in diverse operational scenarios. It can host server-style data import plugins (currently lttng-live) or import-style (currently ctf). It can also host mutation plugins, which will be made available in a future release. - TLS is supported for all connections to modalityd.
- Sessions have been removed, in favor of a system of workspaces (see
modality workspace
) and dynamically computed segments (seemodality segment
) for managing views over collected trace data. - License management has changed. The product license is now part of
modalityd configuration, and user authentication is performed using
a token (see the
modality user
subcommands). - A 'subscriber' plugin for the Rust tracing library tracing.rs is now available which sends trace data directly to Modality: https://github.com/auxoncorp/modality-tracing-rs.
Added
- Tags on objective measurements
Added
- Session tagging support
modality sut tag
andmodality session tag
CLI subcommands--include-internal
flag added tomodality log
command.
Changed
- Concealed optional
--suspicion-ranking
and--auto-payload-bucketing
arguments to reduce UX cognitive load and confusion. modality log
command is significantly faster.
Added
-
--suspicion-ranking <ample | amplebiased | ochiai | zoltar | naish2 | kulczynski2 | k2>
argument added to fault-localization, which gives the user more manual control over which suspicion-ranking computation to use. -
--event-buckets <event-name>@<probe-name [<list-of-comma-separated-floats>]
argument added to fault-localization to help narrow the focus of localization. If present, the provided list of numbers is used to determine how to group the observed payload values for that event during this analysis. Auto-bucketing will be disabled, and not-specified events will be ignored for this analysis. This argument may be specified more than once, for a different event-and-probe each time. -
--all-sessions
option tomodality check
to evaluate a given trace expression against all available sessions. -
modality metrics cross-similarity
command to compare similarity of a given session to all other selected sessions. -
The fault-localization metric gained the
--precondition
and--postcondition
flags, which may be used together with--good-scenarios
and--bad-scenarios
.
Changed
-
Improved license cache windback detection.
-
The default fault-localization suspicion ranking approach is now "amplebiased". The prior behavior is available by selecting the "ochiai" option with the
--suspicion-ranking
argument. -
Revised the output of fault-localization to be easier to understand.
-
Changed the
--good-sessions
and--bad-sessions
flags to fault-localization to--good-scenarios
and--bad-scenarios
.
Fixed
- License error response not being decoded properly.
Added
-
modality metrics similarity <region-expression-a> <region-expression-b>
now gives per-event analysis of the differences in payload distributions between the regions. -
Python C API bindings.
Changed
- Only log modalityd info level messages by default.
Fixed
modality check -v
now provides targeted errors for specifications and queries which use relationship constraints such asWITHIN <time>
.
Changed
- Mark more
__aeabi_
probe library symbols as weak.
Fixed
- c-example Dockerfile added to the Linux installer packages.
Added
-
The
modality objective report
subcommand, which produces a measurement-centric report containing possible explanations of failed measurement specifications. -
The
--suite
argument has been added tomodality check
. Executingmodality check --suite path/to/suite-file.toml
will cause all of the trace specifications in the supplied file to be executed and the outcome of each of those checks will be reported. The check-suite TOML format is akin to the objective definition file format. Example:
# suite-file.toml
[[measurement]]
name = 'Expected heartbeat event with payload'
check = 'EXISTS HEARTBEAT @ MONITOR(_.payload = 2)'
[[measurement]]
name = 'Heartbeat gap tolerance'
check = 'NEVER HEARTBEAT @ MONITOR -> AFTER 600ms HEARTBEAT @ MONITOR'
-
The
--format
argument ofmodality check
now accepts the additional options ofhtml
ormarkdown
. These options are only valid in combination with the--suite
argument. -
The
--external-probe
and--external-event
arguments have been added tomodality-probe manifest-gen
to supply additional manifest entries external to the source code being searched.
Added
-
Modality is now available via Docker. See Modality's container registry.
-
Where possible,
modality check -v[…]
provides suggestions and/or outliers for inequalities in event pattern expressions. -
Probe library targets
thumbv7m-none-eabi
andthumbv7em-none-eabihf
-
modality config
has a new flag,--refresh-license
, which clears the local license cache and fetches a new copy from the licensing server. -
The C example now contains an example of using the Modality SDK from a builder container. It also contains an example Jenkins pipeline file, showing how Modality can be integrated in a CI context.
-
modalityd
provides user-visible logging output on startup by default to indicate startup success.
Changed
-
Marked probe library symbols
rust_eh_personality
andrust_begin_unwind
as weak to enable linking withno_std
Rust applications. -
Internal improvements to objective-outcome and check reporting.
Changed
-
modality check -v […]
gives more precise counterexamples by focusing its rewriting on only the failing part of the specification. -
modality check -v […]
includes context from the given specification in its messaging.
Changed
-
modality log
now displays mutation-related events and their metadata by default. -
modality check -v […]
provides context when possible, and better focuses on the problematic section of the specification in question. -
Event expressions now have access to the mutation-related information via the
mutator
,mutator_tag
, andparameters
event fields. Mutation parameters are nested underparameters
, like this:ev.parameters.my_mutation_parameter
.
Added
-
modality check -v […]
now has more specific language about the type of failure it encountered. -
modality-probe-sys Rust crate and example.
Changed
modality query
now accepts a specification as input, automatically extracting a query from it to execute.
Added
-
This CHANGELOG.
-
Generate arm64 Debian packages.
-
The
modality config
command, which displays the configuration values currently in use by Modality, or updates the fields in a target Modality configuration file. -
modality check -vv
will now display a counter-query for any failed spec, when possible. -
The Modality query language has been extended to support
NOT
operations at the event pattern level.
Changed
-
Adjust the build environment for the binaries so they run with glibc >= 2.25
-
Reduce remote repository dependencies
Fixed
- Handle extremely large valid float ranges for generated mutator parameters
Initial public release. See Modality Docs for an introduction to Modality, as well as installation instructions and guides to using Modality.
Added
- Initial release of Modality.
Checksums (sha512)
v1.27.0
- auxon.debCqAFONvOPn1Fzk/8sLBscwjKtggypgqZY5CffXIlXc5mjavgH33BrndktcctDA1eGdPEUA6x+07QK01oT1wAYg
- auxon-clients-1.27.0-x86_64.msi9JBSV3ZdHSlXqkYVACkcWA/tJ68bjO/vCTloEU/7xU8RRxCg+9Ap1db0Mef3wXXV7rBGjWg1QL5rq4C2nvLfqw
- modality_1.27.0+rhel8.amd64.tar.gziwEJV4/Iw5kE3+z0URJD7xD5jeZuD+EukcLBJaWwUBDmpI62rHiIfFfEONz/LzLaUhg2jRQGN1n78NqdJjBqHg
- modality_1.27.0+22.04.amd64.tar.gzUtSPlFse8Is0lltbklEHNCZc15QxkY/CsuG4kjPNf+tJcrH/L84R5K2MDzp1TLHyvehVpapjREl4SfATkEyKJw
- modality_1.27.0+20.04.amd64.tar.gzYA06Vd2Q2PYc1TsDpUuMOrUs0TlglMJV9UkcxeslpuS4+m3iiMDwNMNuI+d2/+Yfn4Zk5vrQfs1sB+Q9bkiD5g
- modality_1.27.0+mac.amd64.tar.gz8JnGQ1ws9fMbqZliRJ09zFs+QQNp+Sf8va5Ocm1qyA3XSIpMjfAty3z0hNMNB5tgjjLyzsfYhTfLJD3DWCOHXQ
- modality_1.27.0+22.04.arm64.tar.gzNI/zIRPD/cf6amPYDnevrYB/Ro07AxVIYM4CgRcvKbIrbsRemQ7IlzCQO1oCNNElCLN4f6OqlPxP8ElWYWGzJw
- modality_1.27.0+20.04.arm64.tar.gz4XT7esVijmdw8geV287EpHKYlP2bM/i9XSOjyjk4fb4EXcbHmwMuaQmrBkqnTMW9sByjougsyDvYx67/+Y3l0A
- modality_1.27.0+mac.arm64.tar.gzI5pRwmP3YwRC1bSKghyjbvZR8kUXBCZtWASYjWeu074L/f9hytjGB19aLG2NYo0hmI9vs+t6ydTedX1tLcGILA
Docker Images
amd64
- modalitydghcr.io/auxoncorp/modalityd:latest
- modality-reflectorghcr.io/auxoncorp/modality-reflector:latest
aarch64
- modalitydghcr.io/auxoncorp/modalityd:aarch64-unknown-linux-gnu-latest
- modality-reflectorghcr.io/auxoncorp/modality-reflector:aarch64-unknown-linux-gnu-latest
Tarballs
The tarball packages contain the server and client binaries for Modality, Conform and Deviant, along with the Modality Reflector and all currently available plugins. Choose the one that matches your Linux distribution's core libraries (libssl must match; a newer glibc is typically okay).amd64
- glibc 2.31, libssl 1.1
- glibc 2.35, libssl 3
- glibc 2.31, libssl 1.1
- glibc 2.31, libssl 1.1
arm64
- glibc 2.35, libssl 3
- glibc 2.31, libssl 1.1
- glibc 2.31, libssl 1.1