Get Auxon

Download package includes Auxon Modality and Conform.
Version 1.27.0ChangelogChecksums

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 and modality-socketcan-collector.

Changed

  • Updated reflector plugins

Added

  • The Modality Reflector debian package now includes modality-barectf-importer and modality-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 the junit-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 with event.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 to modalityd. If this is not specified, the default mode is fast, 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 and modality-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 event
  • modality-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 not when clause bearing behaviors were ever triggered.

Changed

  • conform spec eval now detects whether spec behaviors which have a trigger (a when 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 support until clause as more general and explicit way of describing when-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 to conform spec result list
  • Add --filter to conform result list
  • Add --behavior-filter to conform 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 field license-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 and allowed_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) and conform 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 and modality-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 the conform spec command, which replaces the pre-existing modality 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 to conform spec eval. When provided, conform validates the provided SpeQTr without evaluating it.
  • Optional --with-case-matches flag added to conform 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 to modality 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, and eval 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 when NO_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 (see modality 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 and modality session tag CLI subcommands
  • --include-internal flag added to modality 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 to modality 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 as WITHIN <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 to modality check. Executing modality 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 of modality check now accepts the additional options of html or markdown. These options are only valid in combination with the --suite argument.

  • The --external-probe and --external-event arguments have been added to modality-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 and thumbv7em-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 and rust_begin_unwind as weak to enable linking with no_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, and parameters event fields. Mutation parameters are nested under parameters, 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

Checksums (sha512)

v1.27.0

  • auxon.deb
    CqAFONvOPn1Fzk/8sLBscwjKtggypgqZY5CffXIlXc5mjavgH33BrndktcctDA1eGdPEUA6x+07QK01oT1wAYg
  • auxon-clients-1.27.0-x86_64.msi
    9JBSV3ZdHSlXqkYVACkcWA/tJ68bjO/vCTloEU/7xU8RRxCg+9Ap1db0Mef3wXXV7rBGjWg1QL5rq4C2nvLfqw
  • modality_1.27.0+rhel8.amd64.tar.gz
    iwEJV4/Iw5kE3+z0URJD7xD5jeZuD+EukcLBJaWwUBDmpI62rHiIfFfEONz/LzLaUhg2jRQGN1n78NqdJjBqHg
  • modality_1.27.0+22.04.amd64.tar.gz
    UtSPlFse8Is0lltbklEHNCZc15QxkY/CsuG4kjPNf+tJcrH/L84R5K2MDzp1TLHyvehVpapjREl4SfATkEyKJw
  • modality_1.27.0+20.04.amd64.tar.gz
    YA06Vd2Q2PYc1TsDpUuMOrUs0TlglMJV9UkcxeslpuS4+m3iiMDwNMNuI+d2/+Yfn4Zk5vrQfs1sB+Q9bkiD5g
  • modality_1.27.0+mac.amd64.tar.gz
    8JnGQ1ws9fMbqZliRJ09zFs+QQNp+Sf8va5Ocm1qyA3XSIpMjfAty3z0hNMNB5tgjjLyzsfYhTfLJD3DWCOHXQ
  • modality_1.27.0+22.04.arm64.tar.gz
    NI/zIRPD/cf6amPYDnevrYB/Ro07AxVIYM4CgRcvKbIrbsRemQ7IlzCQO1oCNNElCLN4f6OqlPxP8ElWYWGzJw
  • modality_1.27.0+20.04.arm64.tar.gz
    4XT7esVijmdw8geV287EpHKYlP2bM/i9XSOjyjk4fb4EXcbHmwMuaQmrBkqnTMW9sByjougsyDvYx67/+Y3l0A
  • modality_1.27.0+mac.arm64.tar.gz
    I5pRwmP3YwRC1bSKghyjbvZR8kUXBCZtWASYjWeu074L/f9hytjGB19aLG2NYo0hmI9vs+t6ydTedX1tLcGILA

Docker Images

amd64

  • modalityd
    ghcr.io/auxoncorp/modalityd:latest
  • modality-reflector
    ghcr.io/auxoncorp/modality-reflector:latest

aarch64

  • modalityd
    ghcr.io/auxoncorp/modalityd:aarch64-unknown-linux-gnu-latest
  • modality-reflector
    ghcr.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

arm64