B. Framework requirements

Requirements norm: Baseline 1 (created March 03, 2025)

B.1. Conceptual requirements

Requirement: Algorithm Decomposability DUNE 1
status: Approved
tags: General, Original
notes: This is ID #01 from the original DUNE document.

The framework shall allow the execution of multiple algorithms.

Requirement: Algorithm Communication Via Data Products DUNE 111
status: Approved
tags: General, Reproducibility, Provenance

The framework shall mediate communication between algorithms via data products.

Requirement: Data Product Representation DUNE 2
status: Approved
tags: Original, General, Accelerators
notes: This is ID #02 from the original DUNE document.

The framework shall separate the persistent representation of data products from their in-memory representations as seen by algorithms.

Requirement: Full utilization of DUNE computing resources DUNE 8
status: Approved
tags: General, Original, Reproducibility
notes: This is ID #05 from the original DUNE document.

The framework shall run on widely-used scientific computing systems in order to fully utilize DUNE computing resources.

Requirement: Algorithm hardware requirements DUNE 9
status: Approved
tags: General, Original, Reproducibility
notes: This is ID #06 from the original DUNE document.

The framework shall provide an API that allows users to express hardware requirements of the algorithms.

Requirement: Algorithms can use a GPU DUNE 11
status: Approved
tags: General, Accelerators, Reproducibility

The framework shall support running algorithms that require a GPU.

Requirement: Support for multiple programming languages DUNE 14
status: Approved
tags: Original, General
notes: This is ID #07 from the original DUNE document. If DUNE decides that additional languages should be supported in the future, a specific requirement can be added for that language as a sub-requirement.

The framework shall support the invocation of algorithms written in multiple programming languages.

Requirement: Support C++ algorithms DUNE 81
status: Approved
tags: General

The framework shall support the invocation of algorithms written in C++.

Requirement: Support Python algorithms DUNE 82
status: Approved
tags: General

The framework shall support the invocation of algorithms written in Python.

Requirement: Persist user-defined metadata DUNE 17
status: Approved
tags: General, Original
notes: This is ID #08 from the original DUNE document.

The framework shall provide user-accessible persistence of user-defined metadata.

Requirement: Framework shall read its own output files DUNE 19
status: Approved
tags: Physics Analysis, Original
notes: This is ID #10 from the original DUNE document.

The framework shall provide the ability to read a framework-produced file as input to a subsequent framework job so that the physics data are equivalent to the physics data obtained from a single execution of the combined job.

Requirement: Presenting data to subsequent algorithms DUNE 20
status: Approved
tags: Physics Analysis

The framework shall present data produced by an already executed algorithm to each subsequent, requesting algorithm.

Requirement: Mix input streams DUNE 21
status: Approved
tags: Physics Analysis, Original
notes: This is ID #11 from the original DUNE document.

The framework shall support the creation of data sets composed of data products derived from data originating from disparate input sources.

Requirement: Flexible data units DUNE 22
status: Approved
tags: Original, Flexible Processing Unit (FPU)
notes: This is ID #12 from the original DUNE document.

The framework shall support flexibly defined, context-aware processing units to address the varying granularity necessary for processing different kinds of data.

Requirement: Definition of data products DUNE 85
status: Approved
tags: Flexible Processing Unit (FPU)

The framework shall provide the ability for user-level code to define data products.

Requirement: Creation of data sets DUNE 86
status: Approved
tags: Flexible Processing Unit (FPU)

The framework shall provide the ability for user-level code to create new data sets.

Requirement: Definition of data families DUNE 87
status: Approved
tags: Flexible Processing Unit (FPU)

The framework shall provide the ability for user-level code to define data families.

Requirement: Definition of data family hierarchies DUNE 88
status: Approved
tags: Flexible Processing Unit (FPU)

The framework shall provide the ability for user-level code to define hierarchies of data families.

Requirement: Process collections of unconstrained size DUNE 25
status: Approved
tags: Original, Flexible Processing Unit (FPU)
notes: This originates from ID #16 from the original DUNE document.

The framework shall support processing of collections that are too large to fit into memory at one time.

Requirement: Unfolding data products DUNE 33
status: Approved
tags: Memory management, Original, Flexible Processing Unit (FPU)
notes: This is ID #58 from the original DUNE document.

The framework shall allow the unfolding of data products into a sequence of finer-grained data products.

Requirement: Access to external data sources DUNE 35
status: Approved
tags: Original, Services
notes: This is ID #47 from the original DUNE document. By "external data sources," we mean "data sources **other than** framework-readable data files containing detector readout or simulated physics data."

The framework shall support access to external data sources.

Requirement: Calibration database algorithms DUNE 40
status: Approved
tags: Services
notes: This is ID #68 as proposed to DUNE.

The framework shall support algorithms that provide data from calibration databases.

Requirement: Algorithms independent of framework interface DUNE 43
status: Approved
tags: Services, Original
notes: This is ID #48 from the original DUNE document.

The framework shall support the registration of algorithms that are independent of framework interface.

Requirement: Safely executing thread-safe and non-thread-safe algorithms DUNE 45
status: Approved
tags: Original, Concurrency and multithreading
notes: This is ID #26 from the original DUNE document.

The framework shall safely execute user algorithms declared to be non-thread-safe along with those declared to be thread-safe.

Requirement: Resource specification for the program DUNE 47
status: Approved
tags: Original, Concurrency and multithreading, Resource management
notes: This is ID #28 from the original DUNE document.

The framework shall enable the specification of resources required by the program.

  • See the subsystem design (under preparation)

Requirement: Specification of user-defined resources DUNE 149
status: Approved
tags: Resource management

The framework shall enable the specification of user-defined resources required by the program.

Requirement: Resource specification for algorithms DUNE 52
status: Approved
tags: Original, Concurrency and multithreading, Resource management
notes: This is ID #33 from the original DUNE document.

The framework shall enable the specification of resources required by each algorithm.

Requirement: Serial access to a thread-unsafe resource DUNE 145
status: Approved
tags: Concurrency and multithreading, Original, Resource management

The framework shall permit algorithm authors to specify that the algorithm requires serial access to a thread-unsafe resource.

Requirement: Specification of algorithm's user-defined resources DUNE 155
status: Approved
tags: Resource management

The framework shall enable the specification of user-defined resources required by the algorithm.

Requirement: Resource-based algorithm concurrency DUNE 50
status: Approved
tags: Original, Concurrency and multithreading, Resource management
notes: This is ID #31 from the original DUNE document.

The framework shall dynamically schedule algorithms to execute efficiently according to the availability of each algorithm’s required resources.

Requirement: Optimize memory management for data products DUNE 142
status: Approved
tags: Resource management
notes: Optimization means making the data products available for the shortest period of time possible for all algorithms that require them. The framework, however, may need to run in series multiple algorithms requiring those data products if those algorithms would run out of resources if run concurrently.

The framework shall optimize the memory management of data products.

Requirement: Composable workflows using GPU algorithms and CPU algorithms DUNE 54
status: Approved
tags: Original, Concurrency and multithreading, Resource management
notes: This is ID #36 from the original DUNE document.

The framework shall support composable workflows that use GPU algorithms along with CPU algorithms.

Requirement: Specification of data products required by an algorithm DUNE 65
status: Approved
tags: Registration
notes: This is ID #63 as proposed to DUNE.

The framework shall support the specification of data products required as input by an algorithm.

Requirement: Specification of data products created by an algorithm DUNE 156
status: Approved
tags: Registration

The framework shall support the specification of data products created as output by an algorithm.

Requirement: One configuration per framework execution DUNE 69
status: Approved
tags: Original, Configuration
notes: This is ID #44 from the original DUNE document.

The framework shall accept exactly one configuration per program execution.

Requirement: Framework configuration language DUNE 72
status: Approved
tags: Configuration
notes: This is ID #60 as proposed to DUNE.

The framework shall provide the ability to configure the execution of a framework program at runtime using a human-readable language.

Requirement: I/O plugins DUNE 73
status: Approved
tags: Data I/O layer, Original
notes: This is ID #50 from the original DUNE document. Data includes physics data and metadata (both user-provided and framework metadata). The goal is to enable non-framework developers to implement an IO backend without needing to modify the framework itself.

The framework shall provide a public API that enables the implementation of a concrete IO backend for a specific persistent storage format.

Requirement: Data I/O backward compatibility DUNE 76
status: Approved
tags: Original, Data I/O layer, Backwards compatibility
notes: This is ID #54 from the original DUNE document. Backward compatibility means that new code is able to read data produced by older versions of the framework.

The framework IO subsystem shall support backward compatibility across versions, subject to policy decisions on deprecation provided by DUNE.

Requirement: Algorithm invocation with data products from multiple data sets DUNE 89
status: Approved
tags: Flexible Processing Unit (FPU)

The framework shall allow a single invocation of an algorithm with data products from multiple data sets.

Requirement: Algorithm invocation with data products from adjacent data sets DUNE 91
status: Approved
tags: Flexible Processing Unit (FPU)

The framework shall support the invocation of an algorithm with data products belonging to adjacent data sets.

Requirement: User-defined adjacency DUNE 92
status: Approved
tags: Flexible Processing Unit (FPU)

The framework shall support user code that defines adjacency of data sets within a data family.

Requirement: Algorithm invocation with data products from multiple data families DUNE 113
status: Approved
tags: Flexible Processing Unit (FPU)

The framework shall allow a single invocation of an algorithm with data products from multiple data families.

Requirement: Specification of algorithm output FPUs DUNE 90
status: Approved
tags: Flexible Processing Unit (FPU)
notes: To implement this requirement, the algorithm should not know where its created data products are going--that is something that will be specified at the plugin level (perhaps by configuration).

The framework shall support the user specification of which data family to place the data products created by an algorithm.

Requirement: Algorithm-Data Separability DUNE 110
status: Approved
tags: General

The data objects exchanged among algorithms shall be separable from those algorithms.

Requirement: Provenance discovery DUNE 121
status: Approved
tags: Provenance

The framework shall enable users to discover the provenance of data products.

Requirement: Framework recording of metadata for reproduction of output data DUNE 28
status: Approved
tags: Original, Reproducibility, Provenance
notes: This is ID #18 from the original DUNE document.

The framework shall record metadata to output enabling the reproduction of the processing steps used to produce the data recorded in that output.

Requirement: Reproducibility of data products DUNE 122
status: Approved
tags: Reproducibility, Provenance

The framework shall support the reproduction of data products from the provenance stored in the output.

Requirement: Reproducibility with pseudo-random numbers DUNE 36
status: Approved
tags: Original, Reproducibility, Provenance
notes: This is ID #22 from the original DUNE document.

The framework shall provide a facility to produce random numbers enabling algorithms to create reproducible data in concurrent contexts.

Requirement: Thread-safe design for algorithms DUNE 130
status: Approved
tags: Concurrency and multithreading

The framework shall facilitate the development of thread-safe algorithms.

Requirement: Composing configurations of framework components DUNE 133
status: Approved
tags: Configuration

The framework shall support executing programs configured by composing configurations of separate components.

Requirement: Graceful shutdown of framework program DUNE 134
status: Approved
tags: Error handling
notes: A *graceful shutdown* refers to a framework program that completes the processing of all in-flight data, safely closes all open input and output files, cleans up connections to external entities (e.g. databases), etc. before the program ends. This ensures that no resources are left in ill-defined states and that all output files are readable and valid. An important example of this is when a batch job exceeds a time limit and the grid system sends a signal to shutdown the job, which should end gracefully.

The framework shall attempt a graceful shutdown by default.

B.2. Supporting requirements

Requirement: Shut down upon unmet algorithm hardware requirements DUNE 13
status: Approved
tags: General

The framework shall shut down if the platform fails to meet each specified hardware requirement.

Requirement: Emit diagnostic upon unmet algorithm hardware requirements DUNE 112
status: Approved
tags: General

The framework shall emit a diagnostic message for each hardware requirement the platform fails to meet.

Requirement: Provide instructions for writing algorithms in supported languages DUNE 16
status: Approved
tags: Documentation

The framework documentation shall provide instructions for writing framework-executable algorithms in supported languages.

Requirement: Data product I/O independence DUNE 24
status: Approved
tags: Original, Data I/O layer
notes: This is ID #14 from the original DUNE document.

The framework shall support reading from disk only the data products required by a given algorithm.

Requirement: Read collections of unconstrained size DUNE 32
status: Approved
tags: Original, Memory management
notes: This is ID #57 from the original DUNE document. Very large data collections could be 10s of GBs in size, and the memory budget may be a maximum of a few GBs.

The framework shall support the reading of collections too large to hold in memory.

Requirement: Write collections of unconstrained size DUNE 120
status: Approved
tags: Original, Memory management

The framework shall support the writing of collections too large to hold in memory.

Requirement: Configuration comparison DUNE 98
status: Approved
tags: Configuration

The framework shall provide the ability to compare two configurations.

Requirement: Record execution environment DUNE 30
status: Approved
tags: Original, Reproducibility, Provenance
notes: This is ID #20 from the original DUNE document.

The framework shall record the job’s execution environment.

Requirement: User-selectable list of recordable execution environment components DUNE 100
status: Approved
tags: Reproducibility, Provenance

The framework shall provide the list of recordable components of the execution environment.

Requirement: Save user-selected execution environment components DUNE 101
status: Approved
tags: Reproducibility, Provenance

The framework shall save each execution-environment description selected by the user from the framework-provided-list.

Requirement: Record user-selected items from the shell environment DUNE 123
status: Approved
tags: Provenance

The framework shall record user-selected items from the shell environment.

Requirement: User-provided execution environment information DUNE 124
status: Approved
tags: Provenance

The framework shall record labelled execution environment information provided by the user.

Requirement: Maximum memory usage DUNE 31
status: Approved
tags: Original, Memory management, Resource management
notes: This is ID #59 from the original DUNE document. The maximum memory available is a static quantity that can apply to (a) a job using an entire node with all of its available RSS, and (b) a job using a specific grid slot with a limit on the RSS. It is assumed that the operating system and C++/Python runtimes are not already enforcing this limit.

The framework shall gracefully shut down if the program attempts to exceed a configured memory limit.

Requirement: Diagnostic message when exceeding memory limit DUNE 137
status: Approved
tags: Memory management, Error handling

The framework shall emit a diagnostic message if the program attempts to exceed the configured maximum memory.

Requirement: Algorithm code versioning and build information DUNE 39
status: Approved
tags: Original, Reproducibility, Provenance
notes: This is ID #25 from the original DUNE document.

The framework shall have an option to record build information, including the source code version, associated with each algorithm.

Requirement: Intra-algorithm concurrency and multi-threading DUNE 46
status: Approved
tags: Original, Concurrency and multithreading
notes: This is ID #27 from the original DUNE document. It is the responsibility of the algorithm author to ensure that any parallelism libraries used can work compatibly with those used by the framework itself.

The framework shall allow algorithms to use the same parallelism mechanisms the framework uses to schedule the execution of algorithms.

  • See the subsystem design (under preparation)

Requirement: Specification of maximum number of CPU threads DUNE 146
status: Approved
tags: Resource management

The framework shall enable the specification of the maximum number of CPU threads permitted by the program.

Requirement: Specification of maximum allowed CPU memory DUNE 147
status: Approved
tags: Resource management, Memory management

The framework shall enable the specification of the maximum CPU memory allowed by the program.

Requirement: Specification of GPU resources DUNE 148
status: Approved
tags: Resource management

The framework shall enable the specification of GPU resources required by the program.

Requirement: Specification of algorithm's maximum number of CPU threads DUNE 152
status: Approved
tags: Resource management

The framework shall enable the specification of the maximum number of CPU threads permitted by the algorithm.

Requirement: Specification of algorithm's CPU memory usage DUNE 154
status: Approved
tags: Resource management, Memory management

The framework shall enable the specification of an algorithm’s expected CPU memory usage.

Requirement: Specification of algorithm's GPU resources DUNE 153
status: Approved
tags: Resource management

The framework shall enable the specification of GPU resources required by the algorithm.

Requirement: Remote GPU algorithm support DUNE 42
status: Approved
tags: Services
notes: This is ID #70 as proposed to DUNE.

The framework shall support algorithms that perform calculations using a remote GPU.

Requirement: Local GPU algorithm support DUNE 41
status: Approved
tags: Services
notes: This is ID #69 as proposed to DUNE.

The framework shall support algorithms that perform calculations using a local GPU.

Requirement: Logging resource usage per algorithm invocation DUNE 48
status: Approved
tags: Original, Concurrency and multithreading, Resource management
notes: This is ID #29 from the original DUNE document.

The framework shall support logging the usage of a specified resource for each algorithm using the resource.

Requirement: Elapsed time information DUNE 60
status: Approved
tags: General, Resource management
notes: This is ID #66 as proposed to DUNE. This option is intended to capture wall-clock time and not CPU time. If more granular reporting of CPU vs. IO time is required, dedicated profiling tools like VTune or Linaro Forge should be used.

The framework shall have an option to provide elapsed time information for each algorithm executed in a framework program.

  • See the subsystem design (under preparation)

Requirement: Efficient execution of algorithms requiring access to a network resource DUNE 144
status: Approved
tags: Concurrency and multithreading, Original, Resource management
notes: An example of efficient execution is an algorithm requiring network resource does not occupy a core that can do other work while the algorithm "waits" for the resource to respond.

The framework shall efficiently execute a graph of algorithms where at least one algorithm requires access to a network resource.

Requirement: Optimize availability of external resources DUNE 143
status: Approved
tags: Resource management
notes: Examples of external resources include local GPUs, remote inference servers, and databases. This requirement also serves as a replacement for a former requirement: "The framework MUST be able to broker/cache service replies that might be common to multiple instances of algorithms (reduce load on external service/disk/memory/network/...). E.g. a request for a calibration constant that is common among all FPUs in a run. Not every instance of an algorithm should trigger an actual request to the central database providing these."

The framework shall optimize the availability of external resources.

Requirement: Efficient execution of algorithms with specific CPU memory requirements DUNE 150
status: Approved
tags: Resource management, Memory management

The framework shall efficiently execute a graph of algorithms where at least one algorithm specifies a required amount of CPU memory.

Requirement: Efficient execution of algorithms with specific GPU memory requirements DUNE 151
status: Approved
tags: Resource management, Memory management

The framework shall efficiently execute a graph of algorithms where at least one algorithm specifies a required amount of GPU memory.

Requirement: Emit message describing data flow of program DUNE 68
status: Approved
tags: Concurrency and multithreading
notes: This is ID #64 as proposed to DUNE.

The framework shall have an option to emit a description of the data flow of a configured program without executing the workflow.

Requirement: Emit message stating algorithm resource requirements DUNE 56
status: Approved
tags: Original, Concurrency and multithreading, Resource management
notes: This is ID #38 from the original DUNE document.

The framework shall have an option to emit a message stating the resources required by each algorithm of a configured program without executing the workflow.

Requirement: Monitoring global memory use DUNE 59
status: Approved
tags: General, Memory management, Resource management
notes: This is ID #67 as proposed to DUNE.

The framework shall be able to report the global memory use of the framework program at user-specified points in time.

  • See the subsystem design (under preparation)

Requirement: Framework-independent message logging DUNE 61
status: Approved
tags: General
notes: This is ID #65 as proposed to DUNE.

The framework shall support a logging solution that is usable in an algorithm without that algorithm explicitly relying on the framework.

  • See the subsystem design (under preparation)

Requirement: Configuration validation DUNE 64
status: Approved
tags: Original, Configuration
notes: This is ID #42 from the original DUNE document.

The framework shall validate an algorithm’s configuration against specifications provided at registration time.

Requirement: Algorithm configuration schema availability DUNE 67
status: Approved
tags: Original, Configuration
notes: This is ID #43 from the original DUNE document.

The framework shall have an option to emit an algorithm’s configuration schema in human-readable form.

Requirement: Eager validation of algorithm configuration DUNE 70
status: Approved
tags: Original, Configuration
notes: This is ID #45 from the original DUNE document. Validation includes any reading, parsing, canonicalizing, and checking against applicable schemata.

The framework shall validate the configuration of each algorithm before that algorithm processes data.

Requirement: I/O backend for ROOT DUNE 74
status: Approved
tags: Data I/O layer, Original
notes: This is ID #51 from the original DUNE document.

The framework ecosystem shall support a ROOT IO backend.

Requirement: I/O backend for HDF5 DUNE 141
status: Approved
tags: Data I/O layer, Original

The framework ecosystem shall support an HDF5 IO backend.

Requirement: Data product backward compatibility DUNE 106
status: Approved
tags: Data I/O layer, Backwards compatibility

The framework’s IO subsystem shall support backward compatibility of data products.

Requirement: Metadata backward compatibility DUNE 107
status: Approved
tags: Data I/O layer, Backwards compatibility
notes: Metadata here can include user-visible (including user-provided) metadata, and framework metadata, which may not be user-visible but is necessary for framework operation.

The framework’s IO subsystem shall support backward compatibility of metadata.

Requirement: Configurable data compression DUNE 77
status: Approved
tags: Original, Data I/O layer
notes: This is ID #55 from the original DUNE document.

The framework IO subsystem shall allow user-configuration of compression settings for each concrete IO implementation.

Requirement: User-configurable output file rollover DUNE 78
status: Approved
tags: Original, Data I/O layer
notes: This is ID #56 from the original DUNE document.

The framework shall support user-configurable rollover of output files.

Requirement: Output file rollover due to number of data sets in data family DUNE 109
status: Approved
tags: Data I/O layer
notes: Some examples include limiting the output file to contain data for: (a) 1 subrun ("subrun" is the user-specified family) (b) 100 spills ("spill" is the user-specified family) (c) 10 blobs ("blob" is the user-specified family)

The framework shall have an option to rollover output files according to a configurable limit on the number of data sets in a user-specified data family.

Requirement: Output file rollover due to file size DUNE 138
status: Approved
tags: Data I/O layer

The framework shall have an option to rollover output files according to a configurable limit on output-file size.

Requirement: Output file rollover due to user-defined quantities DUNE 139
status: Approved
tags: Data I/O layer
notes: An example of an aggregated value of a user-derived quantity is the number of protons on target (POTs).

The framework shall have an option to rollover output files according to a configurable limit on the aggregated value of a user-derived quantity.

Requirement: Output file rollover due to file lifetime DUNE 140
status: Approved
tags: Data I/O layer

The framework shall have an option to rollover output files according to a configurable limit on the time the file has been open.

Requirement: ProtoDUNE single-phase raw data DUNE 116
status: Deferred
tags: Backwards compatibility, Data I/O layer
notes: ProtoDUNE single-phase was used in run 1. For this requirement, the framework *ecosystem* is responsible for processing run 1 data (e.g. the framework might not read the run 1 data directly, but a translation program might first prepare the run 1 data for reading within the framework).

The framework ecosystem shall support processing ProtoDUNE single-phase raw data.

Requirement: ProtoDUNE dual-phase raw data DUNE 117
status: Deferred
tags: Backwards compatibility, Data I/O layer
notes: ProtoDUNE dual-phase was used in run 1. For this requirement, the framework *ecosystem* is responsible for processing run 1 data (e.g. the framework might not read the run 1 data directly, but a translation program might first prepare the run 1 data for reading within the framework).

The framework ecosystem shall support processing ProtoDUNE dual-phase raw data.

Requirement: ProtoDUNE II horizontal-drift raw data DUNE 118
status: Approved
tags: Backwards compatibility, Data I/O layer

The framework ecosystem shall support processing ProtoDUNE II horizontal-drift raw data.

Requirement: ProtoDUNE II vertical-drift raw data DUNE 119
status: Approved
tags: Backwards compatibility, Data I/O layer

The framework ecosystem shall support processing ProtoDUNE II vertical-drift raw data.

Requirement: Framework configuration persistency DUNE 27
status: Approved
tags: Original, Configuration, Reproducibility, Provenance
notes: This is ID #17 from the original DUNE document. This requirement is in support of documenting and reproducing previous results.

The framework shall provide an option to persist the configuration of each framework execution to the output of that execution.

Requirement: Independence from unique hardware characteristics DUNE 63
status: Approved
tags: Reproducibility, Provenance
notes: This is ID #62 as proposed to DUNE.

The framework shall operate independently of unique characteristics of existing hardware.

Requirement: Command line interface (CLI) DUNE 125
status: Approved
tags: Configuration

The framework shall provide a command-line interface that allows the setting of configuration parameters.

Requirement: Support local configuration changes DUNE 126
status: Approved
tags: Configuration

The framework shall support the use of local configuration changes with respect to a separate complete configuration to modify the execution of a program.

Requirement: Configuration tracing DUNE 127
status: Approved
tags: Configuration

The framework configuration system shall have an option to provide diagnostic information for an evaluated configuration, including origins of final parameter values.

Requirement: Configuration language single point of maintenance DUNE 128
status: Approved
tags: Configuration
notes: This must be met by each configuration language.

The language used for configuring a framework program shall include features for maintaining hierarchical configurations from a single point of maintenance.

Requirement: Enable identification of data sets containing chunked data products DUNE 129
status: Approved
tags: Provenance, Chunkification

The framework shall record metadata identifying data sets where the framework took special measures to process data collections of unconstrained size.

Requirement: Framework build flags DUNE 131
status: Approved
tags: Debugging

The framework build system shall support options that enable debugging executed code.

Requirement: Floating-point environment DUNE 132
status: Approved
tags: Reproducibility, Error handling, Debugging

The framework shall allow the per-execution setting of the float-point environment to control the handling of IEEE floating-point exceptions.

Requirement: Graceful shutdown for uncaught exception DUNE 135
status: Approved
tags: Error handling

The framework shall by default attempt a graceful shutdown upon receiving an uncaught exception from user algorithms.

Requirement: Graceful shutdown for received signal DUNE 136
status: Approved
tags: Error handling

The framework shall by default attempt a graceful shutdown when receiving a signal.