From 1d54d6e83c344ee6c7871ba67aadb55b7ba2a63a Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Mon, 1 Jun 2026 11:22:19 +0200 Subject: [PATCH 01/15] `Audit Trail` product name changed to `Audit Trails` * `Naming Conventions` section in the `CLAUDE.md` file has been changed accordingly * README files and source docs of public exposed entities for Move, Rust and WASM/TS have been checked and edited according to the new `Naming Conventions` --- CLAUDE.md | 37 ++++++++++------- README.md | 36 ++++++++-------- audit-trail-move/README.md | 6 +-- audit-trail-move/sources/audit_trail.move | 2 +- audit-trail-move/sources/locking.move | 2 +- audit-trail-move/sources/permission.move | 14 +++---- audit-trail-move/sources/record.move | 2 +- audit-trail-move/sources/record_tags.move | 2 +- audit-trail-rs/README.md | 41 ++++++++++--------- audit-trail-rs/src/client/full_client.rs | 2 +- audit-trail-rs/src/core/access/mod.rs | 2 +- audit-trail-rs/src/core/locking/mod.rs | 2 +- audit-trail-rs/src/core/mod.rs | 2 +- audit-trail-rs/src/core/records/mod.rs | 2 +- audit-trail-rs/src/core/tags/mod.rs | 2 +- .../src/core/types/RoleMap-README.md | 2 +- audit-trail-rs/src/core/types/event.rs | 2 +- audit-trail-rs/src/core/types/mod.rs | 2 +- audit-trail-rs/src/error.rs | 2 +- audit-trail-rs/src/package.rs | 6 +-- .../wasm/audit_trail_wasm/examples/README.md | 2 +- .../src/trail_handle/records.rs | 4 +- bindings/wasm/audit_trail_wasm/src/types.rs | 2 +- examples/audit-trail/README.md | 12 +++--- notarization-rs/README.md | 2 +- 25 files changed, 100 insertions(+), 90 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 842b1fe8..770d740c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -15,23 +15,30 @@ IOTA Notarization enables creation of immutable, on-chain records for arbitrary whatever suites into the context the best. In this stylguide `Toolkit` is used for referencing the term. Use "title case" allways for `Notarization Toolkit` (never use `Notarization toolkit` or `notarization toolkit`). - The IOTA Trust Framework consist of Trust Framework Products (TF products) -- The Notarization Toolkit contains two TF products: **Single Notarization** and **Audit Trail** - - In the context of Notarization Toolkit documentation, Single Notarization and Audit Trail are called components - - In the context of IOTA Trust Framework documentation, Single Notarization and Audit Trail are called TF products +- The Notarization Toolkit contains two TF products: **Single Notarization** and **Audit Trails** + - In the context of Notarization Toolkit documentation, Single Notarization and Audit Trails are called components + - In the context of IOTA Trust Framework documentation, Single Notarization and Audit Trails are called TF products - These rules also apply to future TF products in the Notarization Toolkit (i.e. "Proof of Inclusion") -- The name of TF products resp. Notarization Toolkit components is allways a singular term - - Use capitalization (a.k.a. title case) for the words of a product name if the product is meant itself - examples `Audit Trail`, `Notarization` - - Use plural (i.e. `audit trails` or `notarizations`) only where multiple instances of the TF product are meant +- Regarding usage of singular and plural in TF product resp. Notarization Toolkit component names: + - If the product is meant itself: + - Use the product name (i.e. `Audit Trails`, `Notarization`) with singular form - example: "Audit Trails is the best ..." + - Use capitalization (a.k.a. title case) - examples `Audit Trails`, `Notarization` + - If multiple instances of a product (typically equivalent to multiple on-chain objects) are meant: + - Use plural (i.e. `Using multiple audit trails facilitates ...` or `Avoid creating too much notarizations for ...`) - Use lower case for the plural form - except at the beginning of sentences and in markdown titles - - In situations where the TF product itself or the plural form can be addressed choose whatever fits best - - This rule - including capitalization aspects - only applies to TF products resp. Notarization Toolkit components using - plural for other entities like i.e. Notarization Methods (`Locked Notarization`, `Dynamic Notarization` - see below) is OK. - - Example `Audit Trail`: - - Do not use `Audit Trails` - always use `Audit Trail` to denote the product itself - - Use plural (i.e. `audit trails` or `Audit trails`) only where multiple instances of the TF product are meant - Examples: - - `A client for creating and managing audit trails on the IOTA blockchain` - - `Audit trails and their records are ...` - - `Audit trails provide ...` (could also be `Audit Trail provides ...`) + - If the TF product or multiple product instances could be meant: Prefer the TF product variant if possible. Only + use the plural variant where clearly more suitable. + - This rule - including the capitalization aspects - only applies to TF products (resp. Toolkit components). Using the + plural form with title case for other entities like i.e. Notarization Methods (`Locked Notarization`, `Dynamic Notarization` - see below) is OK. + - If onchain objects of the TF product are addressed: + - In source code documentation related to the TF product specific Move object type (i.e. `AuditTrail`, `Notarization`), + the type name followed by "object" resp. "objects" shall be used (examples: "To create a `Notarization` object use ...", + "`AuditTrail` objects can be batch deleted using ..."). + - In less technical documentation, typically in the context of general descriptions of TF products or Notarization Toolkit components: + - the product name in singular of plural form shall be used (see above) without any extensions + - if the onchain object, equivalent to the product itself, is addressed, use either the Move object type based form (see above) + or the product name followed by "object" resp. "objects" (examples: "`Notarization` onchain objects facilitate ...", + "Audit Trails on-chain objects must be managed ... ") whatever is most suitable. - Regarding Single Notarization (Component/TF product): - Single Notarization provides two **Notarization Methods**: **Locked Notarization** and **Dynamic Notarization** - There might be additional Notarization Methods in future versions of Single Notarization (i.e. "Custom Notarization") diff --git a/README.md b/README.md index d3b68c0d..bbb3ab70 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ The toolkit includes: - **Single Notarization** Use this for individual locked or dynamic notarizations of arbitrary data, documents, hashes, or latest-state records. -- **Audit Trail** +- **Audit Trails** Use this for structured record histories with sequential entries, role-based access control, locking, and tagging. Each toolkit component is available as: @@ -50,31 +50,31 @@ Use **Single Notarization** when your main need is proving the existence, integr ### I want an audit trail -Use **Audit Trail** when you need a structured record history with permissions, capabilities, tagging, and write or delete controls. +Use **Audit Trails** when you need a structured record history with permissions, capabilities, tagging, and write or delete controls. -- [Audit Trail Rust Package](./audit-trail-rs) -- [Audit Trail Move Package](./audit-trail-move) -- [Audit Trail Wasm Package](./bindings/wasm/audit_trail_wasm) -- [Audit Trail examples](./bindings/wasm/audit_trail_wasm/examples/README.md) +- [Audit Trails Rust Package](./audit-trail-rs) +- [Audit Trails Move Package](./audit-trail-move) +- [Audit Trails Wasm Package](./bindings/wasm/audit_trail_wasm) +- [Audit Trails examples](./bindings/wasm/audit_trail_wasm/examples/README.md) ### I want the on-chain contracts - [Single Notarization Move](./notarization-move) -- [Audit Trail Move](./audit-trail-move) +- [Audit Trails Move](./audit-trail-move) ### I want to build an application - [Single Notarization Rust](./notarization-rs) -- [Audit Trail Rust](./audit-trail-rs) +- [Audit Trails Rust](./audit-trail-rs) - [Single Notarization Wasm](./bindings/wasm/notarization_wasm) -- [Audit Trail Wasm](./bindings/wasm/audit_trail_wasm) +- [Audit Trails Wasm](./bindings/wasm/audit_trail_wasm) ## Toolkit Components | Component | Best for | Move Package | Rust Package | Wasm Package | | ------------------- | --------------------------------------------------------------------------- | ------------------------------------------ | -------------------------------------- | -------------------------------------------------------- | | Single Notarization | Individual locked or dynamic notarizations for documents, hashes, and state | [`notarization-move`](./notarization-move) | [`notarization-rs`](./notarization-rs) | [`notarization_wasm`](./bindings/wasm/notarization_wasm) | -| Audit Trail | Shared sequential records with roles, capabilities, tagging, and locking | [`audit-trail-move`](./audit-trail-move) | [`audit-trail-rs`](./audit-trail-rs) | [`audit_trail_wasm`](./bindings/wasm/audit_trail_wasm) | +| Audit Trails | Shared sequential records with roles, capabilities, tagging, and locking | [`audit-trail-move`](./audit-trail-move) | [`audit-trail-rs`](./audit-trail-rs) | [`audit_trail_wasm`](./bindings/wasm/audit_trail_wasm) | ### Which one should I use? @@ -82,8 +82,8 @@ Use **Audit Trail** when you need a structured record history with permissions, | ------------------------------------------------------------------------- | ------------------- | | Locked proof object for arbitrary data | Single Notarization | | Dynamic latest-state notarization flow | Single Notarization | -| Shared sequential records with roles, capabilities, and record tag policy | Audit Trail | -| Team or system audit log with governance and operational controls | Audit Trail | +| Shared sequential records with roles, capabilities, and record tag policy | Audit Trails | +| Team or system audit log with governance and operational controls | Audit Trails | ## Documentation And Resources @@ -95,12 +95,12 @@ Use **Audit Trail** when you need a structured record history with permissions, - [Single Notarization examples](./bindings/wasm/notarization_wasm/examples/README.md) - [IOTA Notarization Docs Portal](https://docs.iota.org/developer/iota-notarization) -### Audit Trail +### Audit Trails -- [Audit Trail Rust Package README](./audit-trail-rs/README.md) -- [Audit Trail Move Package README](./audit-trail-move/README.md) -- [Audit Trail Wasm Package README](./bindings/wasm/audit_trail_wasm/README.md) -- [Audit Trail examples](./bindings/wasm/audit_trail_wasm/examples/README.md) +- [Audit Trails Rust Package README](./audit-trail-rs/README.md) +- [Audit Trails Move Package README](./audit-trail-move/README.md) +- [Audit Trails Wasm Package README](./bindings/wasm/audit_trail_wasm/README.md) +- [Audit Trails examples](./bindings/wasm/audit_trail_wasm/examples/README.md) ### Shared @@ -111,7 +111,7 @@ Use **Audit Trail** when you need a structured record history with permissions, [Foreign Function Interface (FFI)](https://en.wikipedia.org/wiki/Foreign_function_interface) bindings available in this repository: - [Web Assembly for Single Notarization](./bindings/wasm/notarization_wasm) -- [Web Assembly for Audit Trail](./bindings/wasm/audit_trail_wasm) +- [Web Assembly for Audit Trails](./bindings/wasm/audit_trail_wasm) ## Contributing diff --git a/audit-trail-move/README.md b/audit-trail-move/README.md index e287b356..c2d8f4b2 100644 --- a/audit-trail-move/README.md +++ b/audit-trail-move/README.md @@ -16,11 +16,11 @@ --- -# IOTA Audit Trail Move Package +# IOTA Audit Trails Move Package ## Introduction -`audit-trail-move` is the on-chain Move package behind IOTA Audit Trail. +`audit-trail-move` is the on-chain Move package behind IOTA Audit Trails. It defines the shared `AuditTrail` object and the supporting types needed for: @@ -81,7 +81,7 @@ The package history files [`Move.lock`](./Move.lock) and [`Move.history.json`](. ## Contributing -We would love to have you help us with the development of IOTA Audit Trail. Each and every contribution is greatly valued. +We would love to have you help us with the development of IOTA Audit Trails. Each and every contribution is greatly valued. Please review the [contribution](https://docs.iota.org/developer/iota-notarization/contribute) sections in the [IOTA Docs Portal](https://docs.iota.org/developer/iota-notarization/). diff --git a/audit-trail-move/sources/audit_trail.move b/audit-trail-move/sources/audit_trail.move index 8fe5986a..fa7dea3d 100644 --- a/audit-trail-move/sources/audit_trail.move +++ b/audit-trail-move/sources/audit_trail.move @@ -1,7 +1,7 @@ // Copyright (c) 2025 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -/// Audit Trail with role-based access control and timelock +/// Audit Trails with role-based access control and timelock /// A trail is a tamper-proof, sequential chain of notarized records where each /// entry references its predecessor, ensuring verifiable continuity and /// integrity. diff --git a/audit-trail-move/sources/locking.move b/audit-trail-move/sources/locking.move index cb3ab762..4147d639 100644 --- a/audit-trail-move/sources/locking.move +++ b/audit-trail-move/sources/locking.move @@ -1,7 +1,7 @@ // Copyright (c) 2025 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -/// Locking configuration for Audit Trail records +/// Locking configuration for audit trail records module audit_trail::locking; use iota::clock::Clock; diff --git a/audit-trail-move/sources/permission.move b/audit-trail-move/sources/permission.move index d773818f..60fa96a1 100644 --- a/audit-trail-move/sources/permission.move +++ b/audit-trail-move/sources/permission.move @@ -6,10 +6,10 @@ module audit_trail::permission; use iota::vec_set::{Self, VecSet}; -/// Existing permissions for the Audit Trail object +/// Existing permissions for the `AuditTrail` object public enum Permission has copy, drop, store { // --- Whole Audit Trail related - Proposed role: `Admin` --- - /// Destroy the whole Audit Trail object + /// Destroy the whole `AuditTrail` object DeleteAuditTrail, /// Delete records in batches for cleanup workflows DeleteAllRecords, @@ -25,9 +25,9 @@ public enum Permission has copy, drop, store { UpdateLockingConfig, /// Update the delete_record_lock configuration which is part of the locking configuration UpdateLockingConfigForDeleteRecord, - /// Update the delete_lock configuration for the whole Audit Trail + /// Update the delete_lock configuration for the whole `AuditTrail` object UpdateLockingConfigForDeleteTrail, - /// Update the write_lock configuration for the whole Audit Trail + /// Update the write_lock configuration for the whole `AuditTrail` object UpdateLockingConfigForWrite, // --- Role Management - Proposed role: `RoleAdmin` --- /// Add new roles with associated permissions @@ -164,7 +164,7 @@ public fun metadata_admin_permissions(): VecSet { // ------- Constructor functions for all Permission variants ------------- -/// Returns a permission allowing to destroy the whole Audit Trail object +/// Returns a permission allowing to destroy the whole `AuditTrail` object public fun delete_audit_trail(): Permission { Permission::DeleteAuditTrail } @@ -199,12 +199,12 @@ public fun update_locking_config_for_delete_record(): Permission { Permission::UpdateLockingConfigForDeleteRecord } -/// Returns a permission allowing to update the delete_lock configuration for the whole Audit Trail +/// Returns a permission allowing to update the delete_lock configuration for the whole `AuditTrail` object public fun update_locking_config_for_delete_trail(): Permission { Permission::UpdateLockingConfigForDeleteTrail } -/// Returns a permission allowing to update the write_lock configuration for the whole Audit Trail +/// Returns a permission allowing to update the write_lock configuration for the whole `AuditTrail` object public fun update_locking_config_for_write(): Permission { Permission::UpdateLockingConfigForWrite } diff --git a/audit-trail-move/sources/record.move b/audit-trail-move/sources/record.move index e95a2351..837c24f5 100644 --- a/audit-trail-move/sources/record.move +++ b/audit-trail-move/sources/record.move @@ -1,7 +1,7 @@ // Copyright (c) 2025 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -/// Record module for Audit Trail entries +/// Record module for audit trail entries /// /// A Record represents a single entry in an audit trail, stored in a /// LinkedTable and addressed by trail_id + sequence_number. diff --git a/audit-trail-move/sources/record_tags.move b/audit-trail-move/sources/record_tags.move index 04d30df9..4c4999e6 100644 --- a/audit-trail-move/sources/record_tags.move +++ b/audit-trail-move/sources/record_tags.move @@ -1,7 +1,7 @@ // Copyright (c) 2025 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -/// Record tag types and helper predicates for Audit Trail. +/// Record tag types and helper predicates for Audit Trails. module audit_trail::record_tags; use audit_trail::permission::Permission; diff --git a/audit-trail-rs/README.md b/audit-trail-rs/README.md index 00df58f2..a66fe6e7 100644 --- a/audit-trail-rs/README.md +++ b/audit-trail-rs/README.md @@ -1,14 +1,14 @@ -# IOTA Audit Trail Rust Package +# IOTA Audit Trails Rust Package ## Introduction -The Audit Trail Rust package provides the Rust client for structured record histories in the IOTA Notarization Toolkit. +The Audit Trails Rust package provides the Rust client for structured record histories in the IOTA Notarization Toolkit. The package also provides an `AuditTrailBuilder` that creates audit trail objects on the IOTA ledger and an `AuditTrailHandle` that interacts with existing trails. The handle maps to one on-chain audit trail and provides typed APIs for records, access control, locking, tags, metadata, migration, and deletion. -Use Audit Trail when you need a governed record history with sequential entries, role-based permissions, capabilities, +Use Audit Trails when you need a governed record history with sequential entries, role-based permissions, capabilities, locking, and tagging. Use Single Notarization when you need one locked or dynamic notarized object for arbitrary data, documents, hashes, or latest-state records. @@ -19,11 +19,11 @@ You can find the full IOTA Notarization Toolkit documentation [here](https://doc The following workflows demonstrate how `AuditTrailBuilder` and `AuditTrailHandle` instances create, update, govern, and delete audit trail objects on the ledger. -### Creating an Audit Trail +### Creating an `AuditTrail` Object -An _Audit Trail_ is created on the ledger using the `AuditTrailClient::create_trail()` function. To create an _Audit -Trail_, specify the following initial arguments with the `AuditTrailBuilder` setter functions. The terms used here are -defined in the [glossary below](#glossary). +An `AuditTrail` on-chain object is created on the ledger using the `AuditTrailClient::create_trail()` function. To +create an `AuditTrail` object, specify the following initial arguments with the `AuditTrailBuilder` setter functions. +The terms used here are defined in the [glossary below](#glossary). - Optional `Initial Record` that becomes sequence number `0` - Optional `Immutable Metadata` @@ -32,14 +32,14 @@ defined in the [glossary below](#glossary). - Optional `Record Tag Registry` - Optional initial admin address -After an _Audit Trail_ has been created, the creator receives an Admin capability object. This capability authorizes +After an `AuditTrail` object has been created, the creator receives an Admin capability object. This capability authorizes administrative operations such as defining roles, issuing capabilities, updating locks, managing tags, and deleting the trail. -#### Creating a new Audit Trail on the Ledger +#### Creating a new `AuditTrail` Object on the Ledger The following sequence diagram explains the interaction between the involved technical components and the `Admin` when an -_Audit Trail_ is created on the ledger: +`AuditTrail` object is created on the ledger: ```mermaid sequenceDiagram @@ -77,7 +77,7 @@ or `TrailRecords::list_page()`. To add a record, the sender must hold a capability whose role allows record writes. Tagged records must use a tag already defined in the trail's tag registry, and the sender's role must allow that tag. -#### Appending a Record to an Existing Audit Trail +#### Appending a Record to an Existing `AuditTrail` Object The following sequence diagram shows the component interaction when a `Record Admin` appends a new record: @@ -102,7 +102,7 @@ sequenceDiagram Lib ->>- RecordAdmin: RecordAdded + IotaTransactionBlockResponse ``` -#### Reading Records from an Existing Audit Trail +#### Reading Records from an Existing `AuditTrail` Object The following sequence diagram explains the component interaction for `Verifiers` or other parties fetching trail records: @@ -202,12 +202,15 @@ sequenceDiagram Lib ->>- LockingAdmin: () + IotaTransactionBlockResponse ``` -#### Deleting an Audit Trail +#### Deleting an `AuditTrail` Object -The lifecycle of an _Audit Trail_ deletion can be described as: +The workflow of deletion an `AuditTrail` object can be described as: - Delete all eligible unlocked records with `TrailRecords::delete()` or `TrailRecords::delete_records_batch()` -- Wait until the `Delete Trail Lock` allows trail deletion, if a lock is configured +- If not all records have been deleted: + - if a lock is configured, wait until the `Delete Trail Lock` allows trail deletion, + - if records are tag protected, notify a user with an appropriate role granting the needed tag access, + to delete the remaining records - Delete the trail object with `AuditTrailHandle::delete_audit_trail()` The trail deletion process does not remove records automatically. The trail must be empty before @@ -215,7 +218,7 @@ The trail deletion process does not remove records automatically. The trail must ## Glossary -- `Audit Trail`: A shared on-chain object that stores ordered records, metadata, locking configuration, tag registry, +- `AuditTrail` object: A shared on-chain object that stores ordered records, metadata, locking configuration, tag registry, roles, and capability state. - `Record`: A single trail entry stored at a sequence number. Records contain `Data`, optional record metadata, an optional tag, and creation information. @@ -245,9 +248,9 @@ The trail deletion process does not remove records automatically. The trail must ## Documentation And Resources -- [Audit Trail Move Package](https://github.com/iotaledger/notarization/tree/main/audit-trail-move): On-chain contract package that defines the shared object model, permissions, locking, and events. -- [Audit Trail Wasm Package](https://github.com/iotaledger/notarization/tree/main/bindings/wasm/audit_trail_wasm): JavaScript and TypeScript bindings for browser and Node.js integrations. -- [Audit Trail Wasm Examples](https://github.com/iotaledger/notarization/tree/main/bindings/wasm/audit_trail_wasm/examples/README.md): Runnable audit-trail examples for JS and TS consumers. +- [Audit Trails Move Package](https://github.com/iotaledger/notarization/tree/main/audit-trail-move): On-chain contract package that defines the shared object model, permissions, locking, and events. +- [Audit Trails Wasm Package](https://github.com/iotaledger/notarization/tree/main/bindings/wasm/audit_trail_wasm): JavaScript and TypeScript bindings for browser and Node.js integrations. +- [Audit Trails Wasm Examples](https://github.com/iotaledger/notarization/tree/main/bindings/wasm/audit_trail_wasm/examples/README.md): Runnable audit-trail examples for JS and TS consumers. - [Repository Examples](https://github.com/iotaledger/notarization/tree/main/examples/README.md): End-to-end examples across the Notarization Toolkit. This README is also used as the crate-level rustdoc entry point, while the source files provide detailed API documentation for all public types and methods. diff --git a/audit-trail-rs/src/client/full_client.rs b/audit-trail-rs/src/client/full_client.rs index a8ac8c79..14dad37f 100644 --- a/audit-trail-rs/src/client/full_client.rs +++ b/audit-trail-rs/src/client/full_client.rs @@ -1,7 +1,7 @@ // Copyright 2020-2026 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -//! # Audit Trail Client +//! # Audit Trails Client //! //! The full client extends [`AuditTrailClientReadOnly`] with signing support and write //! transaction builders. diff --git a/audit-trail-rs/src/core/access/mod.rs b/audit-trail-rs/src/core/access/mod.rs index d1e9332f..a1296b0c 100644 --- a/audit-trail-rs/src/core/access/mod.rs +++ b/audit-trail-rs/src/core/access/mod.rs @@ -1,7 +1,7 @@ // Copyright 2020-2026 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -//! Role and capability management APIs for Audit Trail. +//! Role and capability management APIs for Audit Trails. //! //! This module is the Rust-facing wrapper around the access-control state integrated into each audit trail. //! Roles grant [`crate::core::types::PermissionSet`] values, while capability objects bind one role to one trail and diff --git a/audit-trail-rs/src/core/locking/mod.rs b/audit-trail-rs/src/core/locking/mod.rs index e987fa1f..37149282 100644 --- a/audit-trail-rs/src/core/locking/mod.rs +++ b/audit-trail-rs/src/core/locking/mod.rs @@ -1,7 +1,7 @@ // Copyright 2020-2026 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -//! Locking configuration APIs for Audit Trail. +//! Locking configuration APIs for Audit Trails. use iota_interaction::types::base_types::ObjectID; use iota_interaction::{IotaKeySignature, OptionalSync}; diff --git a/audit-trail-rs/src/core/mod.rs b/audit-trail-rs/src/core/mod.rs index d8dc6480..80eb219d 100644 --- a/audit-trail-rs/src/core/mod.rs +++ b/audit-trail-rs/src/core/mod.rs @@ -1,7 +1,7 @@ // Copyright 2020-2025 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -//! Core handles, builders, transactions, and domain types for Audit Trail. +//! Core handles, builders, transactions, and domain types for Audit Trails. //! //! This namespace contains the main trail-facing Rust API: //! diff --git a/audit-trail-rs/src/core/records/mod.rs b/audit-trail-rs/src/core/records/mod.rs index b9682644..938cfbec 100644 --- a/audit-trail-rs/src/core/records/mod.rs +++ b/audit-trail-rs/src/core/records/mod.rs @@ -1,7 +1,7 @@ // Copyright 2020-2026 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -//! Record read and mutation APIs for Audit Trail. +//! Record read and mutation APIs for Audit Trails. use std::collections::{BTreeMap, HashMap}; diff --git a/audit-trail-rs/src/core/tags/mod.rs b/audit-trail-rs/src/core/tags/mod.rs index 660aa2f8..8935ba67 100644 --- a/audit-trail-rs/src/core/tags/mod.rs +++ b/audit-trail-rs/src/core/tags/mod.rs @@ -1,7 +1,7 @@ // Copyright 2020-2026 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -//! Record-tag registry APIs for Audit Trail. +//! Record-tag registry APIs for Audit Trails. use iota_interaction::types::base_types::ObjectID; use iota_interaction::{IotaKeySignature, OptionalSync}; diff --git a/audit-trail-rs/src/core/types/RoleMap-README.md b/audit-trail-rs/src/core/types/RoleMap-README.md index 6e54c58a..4fec6838 100644 --- a/audit-trail-rs/src/core/types/RoleMap-README.md +++ b/audit-trail-rs/src/core/types/RoleMap-README.md @@ -1,4 +1,4 @@ -# Role-Based Access Control for Audit Trail +# Role-Based Access Control for Audit Trails Audit trails provide an access control registry (a.k.a. `RoleMap`), defining who may perform which operations by combining two primitives: diff --git a/audit-trail-rs/src/core/types/event.rs b/audit-trail-rs/src/core/types/event.rs index c398d168..392f2f0a 100644 --- a/audit-trail-rs/src/core/types/event.rs +++ b/audit-trail-rs/src/core/types/event.rs @@ -10,7 +10,7 @@ use serde_aux::field_attributes::{deserialize_number_from_string, deserialize_op use super::{Permission, PermissionSet, RoleTags}; -/// Generic wrapper for Audit Trail events. +/// Generic wrapper for Audit Trails events. #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct Event { /// Parsed event payload. diff --git a/audit-trail-rs/src/core/types/mod.rs b/audit-trail-rs/src/core/types/mod.rs index ad546240..00ba88c3 100644 --- a/audit-trail-rs/src/core/types/mod.rs +++ b/audit-trail-rs/src/core/types/mod.rs @@ -1,7 +1,7 @@ // Copyright 2020-2026 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -//! Shared serializable domain types for Audit Trail. +//! Shared serializable domain types for Audit Trails. //! //! These types stay close to the on-chain data model so they can deserialize ledger state and events while also //! serving as the typed inputs and outputs of the Rust client API. diff --git a/audit-trail-rs/src/error.rs b/audit-trail-rs/src/error.rs index a20c368d..6aa33505 100644 --- a/audit-trail-rs/src/error.rs +++ b/audit-trail-rs/src/error.rs @@ -5,7 +5,7 @@ use crate::iota_interaction_adapter::AdapterError; -/// Errors that can occur when reading or mutating an Audit Trail. +/// Errors that can occur when reading or mutating an `AuditTrail` object. #[derive(Debug, thiserror::Error, strum::IntoStaticStr)] #[non_exhaustive] pub enum Error { diff --git a/audit-trail-rs/src/package.rs b/audit-trail-rs/src/package.rs index 749b4d7e..38d7af94 100644 --- a/audit-trail-rs/src/package.rs +++ b/audit-trail-rs/src/package.rs @@ -1,10 +1,10 @@ // Copyright 2020-2026 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -//! Package management for Audit Trail smart contracts. +//! Package management for Audit Trails smart contracts. //! //! This module handles package ID resolution and registry management -//! for the Audit Trail Move Package. +//! for the Audit Trails Move Package. #![allow(dead_code)] @@ -22,7 +22,7 @@ use crate::error::Error; type PackageRegistryLock = RwLockReadGuard<'static, PackageRegistry>; type PackageRegistryLockMut = RwLockWriteGuard<'static, PackageRegistry>; -/// Global registry for Audit Trail Package information. +/// Global registry for Audit Trails Package information. static AUDIT_TRAIL_PACKAGE_REGISTRY: LazyLock> = LazyLock::new(|| { let package_history_json = include_str!(concat!( env!("CARGO_MANIFEST_DIR"), diff --git a/bindings/wasm/audit_trail_wasm/examples/README.md b/bindings/wasm/audit_trail_wasm/examples/README.md index 6f967994..b250be48 100644 --- a/bindings/wasm/audit_trail_wasm/examples/README.md +++ b/bindings/wasm/audit_trail_wasm/examples/README.md @@ -1,4 +1,4 @@ -# IOTA Audit Trail WASM Examples +# IOTA Audit Trails WASM Examples The examples in this folder demonstrate how to use the `@iota/audit-trail` package. diff --git a/bindings/wasm/audit_trail_wasm/src/trail_handle/records.rs b/bindings/wasm/audit_trail_wasm/src/trail_handle/records.rs index f067ead7..db1ff92d 100644 --- a/bindings/wasm/audit_trail_wasm/src/trail_handle/records.rs +++ b/bindings/wasm/audit_trail_wasm/src/trail_handle/records.rs @@ -126,12 +126,12 @@ impl WasmTrailRecords { /// @param cursor - Sequence-number cursor for the page boundary; pass `null` for the first /// page and reuse {@link PaginatedRecord.nextCursor} for subsequent pages. /// @param limit - Maximum number of records to return; may not exceed the maximum page size defined in the - /// Audit Trail Rust crate. + /// Audit Trails Rust crate. /// /// @returns A {@link PaginatedRecord} carrying the loaded records and pagination metadata. /// /// @throws When the trail object cannot be fetched, a record cannot be deserialized, or - /// `limit` exceeds the maximum page size defined in the Audit Trail Rust crate. + /// `limit` exceeds the maximum page size defined in the Audit Trails Rust crate. #[wasm_bindgen(js_name = listPage)] pub async fn list_page(&self, cursor: Option, limit: usize) -> Result { let page = self diff --git a/bindings/wasm/audit_trail_wasm/src/types.rs b/bindings/wasm/audit_trail_wasm/src/types.rs index 1e2f3aed..3067446d 100644 --- a/bindings/wasm/audit_trail_wasm/src/types.rs +++ b/bindings/wasm/audit_trail_wasm/src/types.rs @@ -171,7 +171,7 @@ fn sorted_role_entries(roles: HashMap) -> Vec **Note:** On localnet both `IOTA_AUDIT_TRAIL_PKG_ID` and `IOTA_TF_COMPONENTS_PKG_ID` resolve to the same package ID because the TfComponents dependency is published together with the Audit Trail Package. +> **Note:** On localnet both `IOTA_AUDIT_TRAIL_PKG_ID` and `IOTA_TF_COMPONENTS_PKG_ID` resolve to the same package ID because the TfComponents dependency is published together with the Audit Trails Package. ## Running Examples @@ -85,7 +85,7 @@ IOTA_AUDIT_TRAIL_PKG_ID=0x... IOTA_TF_COMPONENTS_PKG_ID=0x... cargo run --releas ## Key Concepts -### Audit Trail +### Audit Trails An audit trail is an on-chain object that stores an ordered sequence of records. Each trail has: @@ -167,4 +167,4 @@ Trails support three independent lock dimensions: - Delete-trail locks ensure data retention requirements are met - Revoking a capability adds it to the trail's revoked-capability registry, blocking future use -For more detailed information about IOTA Audit Trail concepts and advanced usage, refer to the official IOTA documentation. +For more detailed information about IOTA Audit Trails concepts and advanced usage, refer to the official IOTA documentation. diff --git a/notarization-rs/README.md b/notarization-rs/README.md index fd721d15..31517e0a 100644 --- a/notarization-rs/README.md +++ b/notarization-rs/README.md @@ -8,7 +8,7 @@ notarization objects. The builder returns a `Notarization` struct instance that typed methods for interacting with it. Use Single Notarization when you need one notarized object for arbitrary data, documents, hashes, or latest-state -records. Use Audit Trail when you need a structured record history with roles, capabilities, locking, and tagging. +records. Use Audit Trails when you need a structured record history with roles, capabilities, locking, and tagging. You can find the full IOTA Notarization Toolkit documentation [here](https://docs.iota.org/developer/iota-notarization). From fdd8c93d54b19363a1e3f6b5b0f1856682f94306 Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Mon, 1 Jun 2026 12:02:52 +0200 Subject: [PATCH 02/15] Rename Audit Trails Move package to `IotaAuditTrails` --- audit-trail-move/Move.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/audit-trail-move/Move.toml b/audit-trail-move/Move.toml index bf3488cd..78e54635 100644 --- a/audit-trail-move/Move.toml +++ b/audit-trail-move/Move.toml @@ -1,5 +1,5 @@ [package] -name = "IotaAuditTrail" +name = "IotaAuditTrails" edition = "2024.beta" [dependencies] From 25bc40531798f153fb02a5df986a1affc3eb63e8 Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Mon, 1 Jun 2026 12:04:14 +0200 Subject: [PATCH 03/15] Add Permission::Migrate to admin_permissions() in the AT Rust package. --- audit-trail-rs/src/core/types/permission.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/audit-trail-rs/src/core/types/permission.rs b/audit-trail-rs/src/core/types/permission.rs index a837ad93..72695b00 100644 --- a/audit-trail-rs/src/core/types/permission.rs +++ b/audit-trail-rs/src/core/types/permission.rs @@ -141,6 +141,7 @@ impl PermissionSet { Permission::AddRoles, Permission::UpdateRoles, Permission::DeleteRoles, + Permission::Migrate, ]), } } From 17cbd09facca6ed3941f1948171287868e4632c6 Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Mon, 1 Jun 2026 12:09:05 +0200 Subject: [PATCH 04/15] Fix dprint issue --- audit-trail-rs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/audit-trail-rs/README.md b/audit-trail-rs/README.md index a66fe6e7..6c4684f9 100644 --- a/audit-trail-rs/README.md +++ b/audit-trail-rs/README.md @@ -210,7 +210,7 @@ The workflow of deletion an `AuditTrail` object can be described as: - If not all records have been deleted: - if a lock is configured, wait until the `Delete Trail Lock` allows trail deletion, - if records are tag protected, notify a user with an appropriate role granting the needed tag access, - to delete the remaining records + to delete the remaining records - Delete the trail object with `AuditTrailHandle::delete_audit_trail()` The trail deletion process does not remove records automatically. The trail must be empty before From 03167d915c0c4e4c81d3ccb59680dac053fb1250 Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Tue, 2 Jun 2026 10:06:14 +0200 Subject: [PATCH 05/15] Delete audit/trail_wasm/docs folder because it's auto generated and contained in .gitignore --- bindings/wasm/audit_trail_wasm/docs/wasm/api_ref.md | 9 --------- .../docs/wasm/audit_trails_wasm/api_ref.md | 9 --------- .../wasm/audit_trails_wasm/classes/DefaultHttpClient.md | 7 ------- 3 files changed, 25 deletions(-) delete mode 100644 bindings/wasm/audit_trail_wasm/docs/wasm/api_ref.md delete mode 100644 bindings/wasm/audit_trail_wasm/docs/wasm/audit_trails_wasm/api_ref.md delete mode 100644 bindings/wasm/audit_trail_wasm/docs/wasm/audit_trails_wasm/classes/DefaultHttpClient.md diff --git a/bindings/wasm/audit_trail_wasm/docs/wasm/api_ref.md b/bindings/wasm/audit_trail_wasm/docs/wasm/api_ref.md deleted file mode 100644 index 95a4cd62..00000000 --- a/bindings/wasm/audit_trail_wasm/docs/wasm/api_ref.md +++ /dev/null @@ -1,9 +0,0 @@ -**@iota/audit-trail API documentation** - ---- - -# @iota/audit-trail API documentation - -## Modules - -- [audit\_trail\_wasm](audit_trail_wasm/api_ref.md) diff --git a/bindings/wasm/audit_trail_wasm/docs/wasm/audit_trails_wasm/api_ref.md b/bindings/wasm/audit_trail_wasm/docs/wasm/audit_trails_wasm/api_ref.md deleted file mode 100644 index e9c5b2e1..00000000 --- a/bindings/wasm/audit_trail_wasm/docs/wasm/audit_trails_wasm/api_ref.md +++ /dev/null @@ -1,9 +0,0 @@ -[**@iota/audit-trail API documentation**](../api_ref.md) - ---- - -# audit\_trail\_wasm - -## Classes - -- [DefaultHttpClient](classes/DefaultHttpClient.md) diff --git a/bindings/wasm/audit_trail_wasm/docs/wasm/audit_trails_wasm/classes/DefaultHttpClient.md b/bindings/wasm/audit_trail_wasm/docs/wasm/audit_trails_wasm/classes/DefaultHttpClient.md deleted file mode 100644 index d3d974e5..00000000 --- a/bindings/wasm/audit_trail_wasm/docs/wasm/audit_trails_wasm/classes/DefaultHttpClient.md +++ /dev/null @@ -1,7 +0,0 @@ -[**@iota/audit-trail API documentation**](../../api_ref.md) - ---- - -# Class: DefaultHttpClient - -A default implementation for HttpClient. From ef5c9d3083c76a9eeb056c32aa0c70b263a3b27b Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Tue, 2 Jun 2026 10:08:46 +0200 Subject: [PATCH 06/15] Rename "@iota/audit-trail" npmjs package to "@iota/audit-trails" --- bindings/wasm/audit_trail_wasm/README.md | 2 +- .../wasm/audit_trail_wasm/cypress/app/package-lock.json | 6 +++--- bindings/wasm/audit_trail_wasm/cypress/app/package.json | 2 +- .../wasm/audit_trail_wasm/cypress/app/src/audit_trail.ts | 4 ++-- bindings/wasm/audit_trail_wasm/examples/README.md | 2 +- .../audit_trail_wasm/examples/src/01_create_audit_trail.ts | 2 +- .../examples/src/02_add_and_read_records.ts | 2 +- .../audit_trail_wasm/examples/src/03_update_metadata.ts | 2 +- .../audit_trail_wasm/examples/src/04_configure_locking.ts | 2 +- .../wasm/audit_trail_wasm/examples/src/05_manage_access.ts | 2 +- .../wasm/audit_trail_wasm/examples/src/06_delete_records.ts | 2 +- .../examples/src/07_access_read_only_methods.ts | 2 +- .../audit_trail_wasm/examples/src/08_delete_audit_trail.ts | 2 +- .../examples/src/advanced/09_tagged_records.ts | 2 +- .../examples/src/advanced/10_capability_constraints.ts | 2 +- .../examples/src/advanced/11_manage_record_tags.ts | 2 +- .../examples/src/real-world/01_customs_clearance.ts | 2 +- .../examples/src/real-world/02_clinical_trial.ts | 2 +- .../examples/src/real-world/03_digital_product_passport.ts | 2 +- bindings/wasm/audit_trail_wasm/examples/src/util.ts | 2 +- bindings/wasm/audit_trail_wasm/examples/tsconfig.node.json | 2 +- bindings/wasm/audit_trail_wasm/examples/tsconfig.web.json | 2 +- bindings/wasm/audit_trail_wasm/package-lock.json | 4 ++-- bindings/wasm/audit_trail_wasm/package.json | 2 +- bindings/wasm/audit_trail_wasm/tsconfig.json | 2 +- bindings/wasm/audit_trail_wasm/typedoc.json | 2 +- 26 files changed, 30 insertions(+), 30 deletions(-) diff --git a/bindings/wasm/audit_trail_wasm/README.md b/bindings/wasm/audit_trail_wasm/README.md index bf833e57..13d1c571 100644 --- a/bindings/wasm/audit_trail_wasm/README.md +++ b/bindings/wasm/audit_trail_wasm/README.md @@ -53,7 +53,7 @@ The package intentionally separates transaction construction from submission so ## Minimal TypeScript shape ```ts -import { AuditTrailClientReadOnly } from "@iota/audit-trail-wasm"; +import { AuditTrailClientReadOnly } from "@iota/audit-trails-wasm"; const client = await AuditTrailClientReadOnly.create(iotaClient); const trail = client.trail(trailId); diff --git a/bindings/wasm/audit_trail_wasm/cypress/app/package-lock.json b/bindings/wasm/audit_trail_wasm/cypress/app/package-lock.json index ffaa7de8..d117eb2a 100644 --- a/bindings/wasm/audit_trail_wasm/cypress/app/package-lock.json +++ b/bindings/wasm/audit_trail_wasm/cypress/app/package-lock.json @@ -8,7 +8,7 @@ "name": "vite-project", "version": "0.0.0", "dependencies": { - "@iota/audit-trail": "file:../..", + "@iota/audit-trails": "file:../..", "@iota/iota-sdk": "^1.0.0" }, "devDependencies": { @@ -18,7 +18,7 @@ } }, "../..": { - "name": "@iota/audit-trail", + "name": "@iota/audit-trails", "version": "0.1.0-alpha", "license": "Apache-2.0", "dependencies": { @@ -565,7 +565,7 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@iota/audit-trail": { + "node_modules/@iota/audit-trails": { "resolved": "../..", "link": true }, diff --git a/bindings/wasm/audit_trail_wasm/cypress/app/package.json b/bindings/wasm/audit_trail_wasm/cypress/app/package.json index 71ed8f81..8d53977f 100644 --- a/bindings/wasm/audit_trail_wasm/cypress/app/package.json +++ b/bindings/wasm/audit_trail_wasm/cypress/app/package.json @@ -15,6 +15,6 @@ }, "dependencies": { "@iota/iota-sdk": "^1.0.0", - "@iota/audit-trail": "file:../.." + "@iota/audit-trails": "file:../.." } } \ No newline at end of file diff --git a/bindings/wasm/audit_trail_wasm/cypress/app/src/audit_trail.ts b/bindings/wasm/audit_trail_wasm/cypress/app/src/audit_trail.ts index d5bbf1f7..62a69656 100644 --- a/bindings/wasm/audit_trail_wasm/cypress/app/src/audit_trail.ts +++ b/bindings/wasm/audit_trail_wasm/cypress/app/src/audit_trail.ts @@ -1,6 +1,6 @@ -import url from "@iota/audit-trail/web/audit_trail_wasm_bg.wasm?url"; +import url from "@iota/audit-trails/web/audit_trail_wasm_bg.wasm?url"; -import { init } from "@iota/audit-trail/web"; +import { init } from "@iota/audit-trails/web"; import { main } from "../../../examples/dist/web/web-main"; export const runTest = async (example: string) => { diff --git a/bindings/wasm/audit_trail_wasm/examples/README.md b/bindings/wasm/audit_trail_wasm/examples/README.md index b250be48..2c0e4660 100644 --- a/bindings/wasm/audit_trail_wasm/examples/README.md +++ b/bindings/wasm/audit_trail_wasm/examples/README.md @@ -1,6 +1,6 @@ # IOTA Audit Trails WASM Examples -The examples in this folder demonstrate how to use the `@iota/audit-trail` package. +The examples in this folder demonstrate how to use the `@iota/audit-trails` package. ## Environment diff --git a/bindings/wasm/audit_trail_wasm/examples/src/01_create_audit_trail.ts b/bindings/wasm/audit_trail_wasm/examples/src/01_create_audit_trail.ts index 60c3eb62..4e6e8bb6 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/01_create_audit_trail.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/01_create_audit_trail.ts @@ -15,7 +15,7 @@ * 3. Define a RecordAdmin role and issue a capability for it. */ -import { CapabilityIssueOptions, PermissionSet } from "@iota/audit-trail/node"; +import { CapabilityIssueOptions, PermissionSet } from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { createTrailWithSeedRecord, getFundedClient, TEST_GAS_BUDGET } from "./util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/02_add_and_read_records.ts b/bindings/wasm/audit_trail_wasm/examples/src/02_add_and_read_records.ts index 8dff158e..da9d8946 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/02_add_and_read_records.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/02_add_and_read_records.ts @@ -14,7 +14,7 @@ * 3. Paginate through records. */ -import { CapabilityIssueOptions, Data, PermissionSet } from "@iota/audit-trail/node"; +import { CapabilityIssueOptions, Data, PermissionSet } from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { createTrailWithSeedRecord, getFundedClient, TEST_GAS_BUDGET } from "./util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/03_update_metadata.ts b/bindings/wasm/audit_trail_wasm/examples/src/03_update_metadata.ts index 0f1fab35..e72daa39 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/03_update_metadata.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/03_update_metadata.ts @@ -15,7 +15,7 @@ * 4. Verify that immutable metadata never changes. */ -import { CapabilityIssueOptions, PermissionSet } from "@iota/audit-trail/node"; +import { CapabilityIssueOptions, PermissionSet } from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { getFundedClient, TEST_GAS_BUDGET } from "./util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/04_configure_locking.ts b/bindings/wasm/audit_trail_wasm/examples/src/04_configure_locking.ts index c44a8b33..1190929b 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/04_configure_locking.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/04_configure_locking.ts @@ -23,7 +23,7 @@ import { LockingWindow, PermissionSet, TimeLock, -} from "@iota/audit-trail/node"; +} from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { createTrailWithSeedRecord, getFundedClient, TEST_GAS_BUDGET } from "./util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/05_manage_access.ts b/bindings/wasm/audit_trail_wasm/examples/src/05_manage_access.ts index 771da219..c99afe7d 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/05_manage_access.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/05_manage_access.ts @@ -16,7 +16,7 @@ * 4. Remove the role after its capabilities are no longer needed. */ -import { CapabilityIssueOptions, Permission, PermissionSet } from "@iota/audit-trail/node"; +import { CapabilityIssueOptions, Permission, PermissionSet } from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { createTrailWithSeedRecord, getFundedClient, TEST_GAS_BUDGET } from "./util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/06_delete_records.ts b/bindings/wasm/audit_trail_wasm/examples/src/06_delete_records.ts index 04eeb4c4..de5e6370 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/06_delete_records.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/06_delete_records.ts @@ -14,7 +14,7 @@ * 3. Delete the remaining records in one batch. */ -import { CapabilityIssueOptions, Data, Permission, PermissionSet } from "@iota/audit-trail/node"; +import { CapabilityIssueOptions, Data, Permission, PermissionSet } from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { getFundedClient, TEST_GAS_BUDGET } from "./util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/07_access_read_only_methods.ts b/bindings/wasm/audit_trail_wasm/examples/src/07_access_read_only_methods.ts index fafa3098..65f0a092 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/07_access_read_only_methods.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/07_access_read_only_methods.ts @@ -22,7 +22,7 @@ import { LockingWindow, PermissionSet, TimeLock, -} from "@iota/audit-trail/node"; +} from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { getFundedClient, TEST_GAS_BUDGET } from "./util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/08_delete_audit_trail.ts b/bindings/wasm/audit_trail_wasm/examples/src/08_delete_audit_trail.ts index 0098dd39..3dcf7a53 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/08_delete_audit_trail.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/08_delete_audit_trail.ts @@ -14,7 +14,7 @@ * 3. Delete the trail once its records are gone. */ -import { CapabilityIssueOptions, Data, Permission, PermissionSet } from "@iota/audit-trail/node"; +import { CapabilityIssueOptions, Data, Permission, PermissionSet } from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { getFundedClient, TEST_GAS_BUDGET } from "./util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/advanced/09_tagged_records.ts b/bindings/wasm/audit_trail_wasm/examples/src/advanced/09_tagged_records.ts index c4c0f1d6..61d69d16 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/advanced/09_tagged_records.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/advanced/09_tagged_records.ts @@ -16,7 +16,7 @@ * 4. Show that the holder can add only records matching the allowed tag. */ -import { CapabilityIssueOptions, Data, Permission, PermissionSet, RoleTags } from "@iota/audit-trail/node"; +import { CapabilityIssueOptions, Data, Permission, PermissionSet, RoleTags } from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { getFundedClient, TEST_GAS_BUDGET } from "../util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/advanced/10_capability_constraints.ts b/bindings/wasm/audit_trail_wasm/examples/src/advanced/10_capability_constraints.ts index 1f132e99..2ed733d8 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/advanced/10_capability_constraints.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/advanced/10_capability_constraints.ts @@ -17,7 +17,7 @@ * 3. Revoke the capability and confirm the bound holder can no longer use it. */ -import { CapabilityIssueOptions, Data, PermissionSet } from "@iota/audit-trail/node"; +import { CapabilityIssueOptions, Data, PermissionSet } from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { createTrailWithSeedRecord, getFundedClient, TEST_GAS_BUDGET } from "../util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/advanced/11_manage_record_tags.ts b/bindings/wasm/audit_trail_wasm/examples/src/advanced/11_manage_record_tags.ts index 986ee54d..72d7f823 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/advanced/11_manage_record_tags.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/advanced/11_manage_record_tags.ts @@ -16,7 +16,7 @@ * 3. Show that tags still in use by roles or records cannot be removed. */ -import { CapabilityIssueOptions, Data, PermissionSet, RoleTags } from "@iota/audit-trail/node"; +import { CapabilityIssueOptions, Data, PermissionSet, RoleTags } from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { getFundedClient, TEST_GAS_BUDGET } from "../util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/real-world/01_customs_clearance.ts b/bindings/wasm/audit_trail_wasm/examples/src/real-world/01_customs_clearance.ts index da0dde79..0cde78a9 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/real-world/01_customs_clearance.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/real-world/01_customs_clearance.ts @@ -37,7 +37,7 @@ import { LockingWindow, PermissionSet, TimeLock, -} from "@iota/audit-trail/node"; +} from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { getFundedClient, issueTaggedRecordRole, TEST_GAS_BUDGET } from "../util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/real-world/02_clinical_trial.ts b/bindings/wasm/audit_trail_wasm/examples/src/real-world/02_clinical_trial.ts index 39b2df4e..69439e95 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/real-world/02_clinical_trial.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/real-world/02_clinical_trial.ts @@ -40,7 +40,7 @@ import { LockingWindow, PermissionSet, TimeLock, -} from "@iota/audit-trail/node"; +} from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { getFundedClient, issueTaggedRecordRole, TEST_GAS_BUDGET } from "../util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/real-world/03_digital_product_passport.ts b/bindings/wasm/audit_trail_wasm/examples/src/real-world/03_digital_product_passport.ts index 40dde98a..9598a51d 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/real-world/03_digital_product_passport.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/real-world/03_digital_product_passport.ts @@ -44,7 +44,7 @@ * 1-LCC reward record */ -import { AuditTrailClient, CapabilityIssueOptions, Data, PermissionSet, RoleTags } from "@iota/audit-trail/node"; +import { AuditTrailClient, CapabilityIssueOptions, Data, PermissionSet, RoleTags } from "@iota/audit-trails/node"; import { strict as assert } from "assert"; import { getFundedClient, issueTaggedRecordRole, TEST_GAS_BUDGET } from "../util"; diff --git a/bindings/wasm/audit_trail_wasm/examples/src/util.ts b/bindings/wasm/audit_trail_wasm/examples/src/util.ts index a7b4795c..3fd3ef1f 100644 --- a/bindings/wasm/audit_trail_wasm/examples/src/util.ts +++ b/bindings/wasm/audit_trail_wasm/examples/src/util.ts @@ -12,7 +12,7 @@ import { PermissionSet, RoleTags, TimeLock, -} from "@iota/audit-trail/node"; +} from "@iota/audit-trails/node"; import { Ed25519KeypairSigner } from "@iota/iota-interaction-ts/node/test_utils"; import { IotaClient } from "@iota/iota-sdk/client"; import { getFaucetHost, requestIotaFromFaucetV0 } from "@iota/iota-sdk/faucet"; diff --git a/bindings/wasm/audit_trail_wasm/examples/tsconfig.node.json b/bindings/wasm/audit_trail_wasm/examples/tsconfig.node.json index e82ad401..3250200f 100644 --- a/bindings/wasm/audit_trail_wasm/examples/tsconfig.node.json +++ b/bindings/wasm/audit_trail_wasm/examples/tsconfig.node.json @@ -11,7 +11,7 @@ "moduleResolution": "node", "skipLibCheck": true, "paths": { - "@iota/audit-trail/node": [ + "@iota/audit-trails/node": [ "../node" ] } diff --git a/bindings/wasm/audit_trail_wasm/examples/tsconfig.web.json b/bindings/wasm/audit_trail_wasm/examples/tsconfig.web.json index 4bfdc7c0..b4f376cd 100644 --- a/bindings/wasm/audit_trail_wasm/examples/tsconfig.web.json +++ b/bindings/wasm/audit_trail_wasm/examples/tsconfig.web.json @@ -11,7 +11,7 @@ "moduleResolution": "node", "skipLibCheck": true, "paths": { - "@iota/audit-trail/node": [ + "@iota/audit-trails/node": [ "../web" ] } diff --git a/bindings/wasm/audit_trail_wasm/package-lock.json b/bindings/wasm/audit_trail_wasm/package-lock.json index 8e84782f..d6492ff6 100644 --- a/bindings/wasm/audit_trail_wasm/package-lock.json +++ b/bindings/wasm/audit_trail_wasm/package-lock.json @@ -1,11 +1,11 @@ { - "name": "@iota/audit-trail", + "name": "@iota/audit-trails", "version": "0.1.0-alpha", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@iota/audit-trail", + "name": "@iota/audit-trails", "version": "0.1.0-alpha", "license": "Apache-2.0", "dependencies": { diff --git a/bindings/wasm/audit_trail_wasm/package.json b/bindings/wasm/audit_trail_wasm/package.json index aaf6ee3e..b3782ffa 100644 --- a/bindings/wasm/audit_trail_wasm/package.json +++ b/bindings/wasm/audit_trail_wasm/package.json @@ -1,5 +1,5 @@ { - "name": "@iota/audit-trail", + "name": "@iota/audit-trails", "author": "IOTA Foundation ", "description": "WASM bindings for IOTA Audit Trail. To be used in JavaScript/TypeScript.", "homepage": "https://www.iota.org", diff --git a/bindings/wasm/audit_trail_wasm/tsconfig.json b/bindings/wasm/audit_trail_wasm/tsconfig.json index 6b1fd874..a741de44 100644 --- a/bindings/wasm/audit_trail_wasm/tsconfig.json +++ b/bindings/wasm/audit_trail_wasm/tsconfig.json @@ -3,7 +3,7 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "@iota/audit-trail/*": [ + "@iota/audit-trails/*": [ "./*" ] } diff --git a/bindings/wasm/audit_trail_wasm/typedoc.json b/bindings/wasm/audit_trail_wasm/typedoc.json index c28f411b..57f0ba99 100644 --- a/bindings/wasm/audit_trail_wasm/typedoc.json +++ b/bindings/wasm/audit_trail_wasm/typedoc.json @@ -1,5 +1,5 @@ { - "name": "@iota/audit-trail API documentation", + "name": "@iota/audit-trails API documentation", "extends": [ "../typedoc.json" ], From 875a6267f3feb633bc910d8204fc9f1b9c9ed1a8 Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Tue, 2 Jun 2026 10:10:31 +0200 Subject: [PATCH 07/15] Rename "@iota/audit-trail" npmjs package to "@iota/audit-trails" in GH workflows --- .github/workflows/wasm-publish.yml | 2 +- .github/workflows/wasm-retag-npm.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/wasm-publish.yml b/.github/workflows/wasm-publish.yml index 5b86d731..28be0b54 100644 --- a/.github/workflows/wasm-publish.yml +++ b/.github/workflows/wasm-publish.yml @@ -145,4 +145,4 @@ jobs: if: ${{ github.event.inputs.package == 'audit-trail' }} shell: bash run: | - npm dist-tag add @iota/audit-trail@${{ github.event.inputs.retag-version }} ${{ github.event.inputs.retag-tag }} + npm dist-tag add @iota/audit-trails@${{ github.event.inputs.retag-version }} ${{ github.event.inputs.retag-tag }} diff --git a/.github/workflows/wasm-retag-npm.yml b/.github/workflows/wasm-retag-npm.yml index e51b3f0d..4d4fabdb 100644 --- a/.github/workflows/wasm-retag-npm.yml +++ b/.github/workflows/wasm-retag-npm.yml @@ -42,4 +42,4 @@ jobs: env: NODE_AUTH_TOKEN: ${{ secrets.NPM_NOTARIZATION_TOKEN }} run: | - npm dist-tag add @iota/audit-trail@${{ github.event.inputs.version }} ${{ github.event.inputs.tag }} + npm dist-tag add @iota/audit-trails@${{ github.event.inputs.version }} ${{ github.event.inputs.tag }} From 73ee14af0250841222081261b2e3f247def26085 Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Tue, 2 Jun 2026 11:50:03 +0200 Subject: [PATCH 08/15] Rename Rust crate `audit_trail` to `audit_trails` - folder names are kept as-is --- .cargo/config.toml | 2 +- audit-trail-move/README.md | 2 +- audit-trail-rs/Cargo.toml | 2 +- audit-trail-rs/src/client/full_client.rs | 10 +++++----- audit-trail-rs/src/core/types/record.rs | 8 ++++---- audit-trail-rs/tests/e2e/access.rs | 2 +- audit-trail-rs/tests/e2e/client.rs | 4 ++-- audit-trail-rs/tests/e2e/locking.rs | 2 +- audit-trail-rs/tests/e2e/records.rs | 4 ++-- audit-trail-rs/tests/e2e/trail.rs | 2 +- bindings/wasm/audit_trail_wasm/Cargo.toml | 4 ++-- bindings/wasm/audit_trail_wasm/src/builder.rs | 2 +- bindings/wasm/audit_trail_wasm/src/client.rs | 2 +- .../wasm/audit_trail_wasm/src/client_read_only.rs | 2 +- bindings/wasm/audit_trail_wasm/src/trail.rs | 14 +++++++------- .../audit_trail_wasm/src/trail_handle/access.rs | 2 +- .../audit_trail_wasm/src/trail_handle/locking.rs | 2 +- .../wasm/audit_trail_wasm/src/trail_handle/mod.rs | 2 +- .../audit_trail_wasm/src/trail_handle/records.rs | 4 ++-- .../wasm/audit_trail_wasm/src/trail_handle/tags.rs | 2 +- bindings/wasm/audit_trail_wasm/src/types.rs | 2 +- examples/Cargo.toml | 2 +- examples/audit-trail/01_create_audit_trail.rs | 2 +- examples/audit-trail/02_add_and_read_records.rs | 2 +- examples/audit-trail/03_update_metadata.rs | 2 +- examples/audit-trail/04_configure_locking.rs | 2 +- examples/audit-trail/05_manage_access.rs | 4 ++-- examples/audit-trail/06_delete_records.rs | 2 +- .../audit-trail/07_access_read_only_methods.rs | 2 +- examples/audit-trail/08_delete_audit_trail.rs | 2 +- examples/audit-trail/advanced/09_tagged_records.rs | 4 ++-- .../advanced/10_capability_constraints.rs | 2 +- .../audit-trail/advanced/11_manage_record_tags.rs | 2 +- .../audit-trail/real-world/01_customs_clearance.rs | 2 +- .../audit-trail/real-world/02_clinical_trial.rs | 2 +- .../real-world/03_digital_product_passport.rs | 4 ++-- examples/utils/utils.rs | 4 ++-- 37 files changed, 58 insertions(+), 58 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 3f2baa11..8aeb29f4 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,3 +1,3 @@ [alias] docs-notarization = "doc -p notarization" -docs-audit-trail = "doc -p audit_trail" +docs-audit-trail = "doc -p audit_trails" diff --git a/audit-trail-move/README.md b/audit-trail-move/README.md index c2d8f4b2..66d404ad 100644 --- a/audit-trail-move/README.md +++ b/audit-trail-move/README.md @@ -20,7 +20,7 @@ ## Introduction -`audit-trail-move` is the on-chain Move package behind IOTA Audit Trails. +`IotaAuditTrails` is the on-chain Move package behind IOTA Audit Trails. It defines the shared `AuditTrail` object and the supporting types needed for: diff --git a/audit-trail-rs/Cargo.toml b/audit-trail-rs/Cargo.toml index b4c050d4..ed248654 100644 --- a/audit-trail-rs/Cargo.toml +++ b/audit-trail-rs/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "audit_trail" +name = "audit_trails" version = "0.1.0-alpha" authors.workspace = true edition.workspace = true diff --git a/audit-trail-rs/src/client/full_client.rs b/audit-trail-rs/src/client/full_client.rs index 14dad37f..5a2114f0 100644 --- a/audit-trail-rs/src/client/full_client.rs +++ b/audit-trail-rs/src/client/full_client.rs @@ -12,8 +12,8 @@ //! that you can configure before signing and submitting: //! //! ```rust,no_run -//! # use audit_trail::AuditTrailClient; -//! # use audit_trail::core::types::Data; +//! # use audit_trails::AuditTrailClient; +//! # use audit_trails::core::types::Data; //! # async fn example( //! # client: &AuditTrailClient< //! # impl secret_storage::Signer + iota_interaction::OptionalSync, @@ -42,8 +42,8 @@ //! ## Example Workflow //! //! ```rust,no_run -//! # use audit_trail::AuditTrailClient; -//! # use audit_trail::core::types::{Data, PermissionSet, RoleTags}; +//! # use audit_trails::AuditTrailClient; +//! # use audit_trails::core::types::{Data, PermissionSet, RoleTags}; //! # async fn example( //! # client: &AuditTrailClient< //! # impl secret_storage::Signer + iota_interaction::OptionalSync, @@ -166,7 +166,7 @@ impl AuditTrailClient { /// /// # Examples /// ```rust,ignore - /// # use audit_trail::client::AuditTrailClient; + /// # use audit_trails::client::AuditTrailClient; /// /// # #[tokio::main] /// # async fn main() -> anyhow::Result<()> { diff --git a/audit-trail-rs/src/core/types/record.rs b/audit-trail-rs/src/core/types/record.rs index 954aae1c..e3ce1a49 100644 --- a/audit-trail-rs/src/core/types/record.rs +++ b/audit-trail-rs/src/core/types/record.rs @@ -63,7 +63,7 @@ impl InitialRecord { /// # Examples /// /// ```rust - /// use audit_trail::core::types::{Data, InitialRecord}; + /// use audit_trails::core::types::{Data, InitialRecord}; /// /// let record = InitialRecord::new( /// Data::text("hello"), @@ -135,7 +135,7 @@ impl RecordCorrection { /// ```rust /// use std::collections::HashSet; /// - /// use audit_trail::core::types::RecordCorrection; + /// use audit_trails::core::types::RecordCorrection; /// /// let correction = RecordCorrection::with_replaces(HashSet::from([1, 2])); /// @@ -211,7 +211,7 @@ impl Data { /// # Examples /// /// ```rust - /// use audit_trail::core::types::Data; + /// use audit_trails::core::types::Data; /// /// assert_eq!(Data::bytes([1_u8, 2, 3]), Data::Bytes(vec![1, 2, 3])); /// ``` @@ -224,7 +224,7 @@ impl Data { /// # Examples /// /// ```rust - /// use audit_trail::core::types::Data; + /// use audit_trails::core::types::Data; /// /// assert_eq!(Data::text("hello"), Data::Text("hello".to_string())); /// ``` diff --git a/audit-trail-rs/tests/e2e/access.rs b/audit-trail-rs/tests/e2e/access.rs index 9dbb13f2..00713565 100644 --- a/audit-trail-rs/tests/e2e/access.rs +++ b/audit-trail-rs/tests/e2e/access.rs @@ -3,7 +3,7 @@ use std::collections::HashSet; -use audit_trail::core::types::{CapabilityIssueOptions, Data, Permission, PermissionSet, RoleTags}; +use audit_trails::core::types::{CapabilityIssueOptions, Data, Permission, PermissionSet, RoleTags}; use iota_interaction::types::base_types::IotaAddress; use product_common::core_client::CoreClient; diff --git a/audit-trail-rs/tests/e2e/client.rs b/audit-trail-rs/tests/e2e/client.rs index 739273b9..e1a3e103 100644 --- a/audit-trail-rs/tests/e2e/client.rs +++ b/audit-trail-rs/tests/e2e/client.rs @@ -7,11 +7,11 @@ use std::str::FromStr; use std::sync::Arc; use anyhow::{Context, anyhow}; -use audit_trail::core::types::{ +use audit_trails::core::types::{ Capability, CapabilityIssueOptions, CapabilityIssued, Data, InitialRecord, Permission, PermissionSet, RoleCreated, RoleTags, }; -use audit_trail::{AuditTrailClient, PackageOverrides}; +use audit_trails::{AuditTrailClient, PackageOverrides}; use iota_interaction::types::base_types::{IotaAddress, ObjectID, ObjectRef}; use iota_interaction::types::crypto::PublicKey; use iota_interaction::{IOTA_LOCAL_NETWORK_URL, IotaClient, IotaClientBuilder}; diff --git a/audit-trail-rs/tests/e2e/locking.rs b/audit-trail-rs/tests/e2e/locking.rs index 5a153c26..7810cff0 100644 --- a/audit-trail-rs/tests/e2e/locking.rs +++ b/audit-trail-rs/tests/e2e/locking.rs @@ -1,7 +1,7 @@ // Copyright 2020-2026 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -use audit_trail::core::types::{ +use audit_trails::core::types::{ CapabilityIssueOptions, Data, InitialRecord, LockingConfig, LockingWindow, Permission, TimeLock, }; use iota_interaction::types::base_types::ObjectID; diff --git a/audit-trail-rs/tests/e2e/records.rs b/audit-trail-rs/tests/e2e/records.rs index cc902665..c6c34b8e 100644 --- a/audit-trail-rs/tests/e2e/records.rs +++ b/audit-trail-rs/tests/e2e/records.rs @@ -3,10 +3,10 @@ use std::time::{SystemTime, UNIX_EPOCH}; -use audit_trail::core::types::{ +use audit_trails::core::types::{ CapabilityIssueOptions, Data, InitialRecord, LockingConfig, LockingWindow, Permission, RoleTags, TimeLock, }; -use audit_trail::error::Error; +use audit_trails::error::Error; use iota_interaction::types::base_types::ObjectID; use product_common::core_client::CoreClient; use tokio::time::{Duration, sleep}; diff --git a/audit-trail-rs/tests/e2e/trail.rs b/audit-trail-rs/tests/e2e/trail.rs index 530ca6ca..fe7f635e 100644 --- a/audit-trail-rs/tests/e2e/trail.rs +++ b/audit-trail-rs/tests/e2e/trail.rs @@ -1,7 +1,7 @@ // Copyright 2020-2026 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -use audit_trail::core::types::{ +use audit_trails::core::types::{ CapabilityIssueOptions, Data, ImmutableMetadata, InitialRecord, LockingConfig, LockingWindow, Permission, RoleTags, TimeLock, }; diff --git a/bindings/wasm/audit_trail_wasm/Cargo.toml b/bindings/wasm/audit_trail_wasm/Cargo.toml index d8627547..9c036b1f 100644 --- a/bindings/wasm/audit_trail_wasm/Cargo.toml +++ b/bindings/wasm/audit_trail_wasm/Cargo.toml @@ -10,14 +10,14 @@ publish = false readme = "README.md" repository = "https://github.com/iotaledger/notarization.git" resolver = "2" -description = "Web Assembly bindings for the audit_trail crate." +description = "Web Assembly bindings for the audit_trails crate." [lib] crate-type = ["cdylib", "rlib"] [dependencies] anyhow = "1.0.95" -audit_trail = { path = "../../../audit-trail-rs", default-features = false, features = ["gas-station", "default-http-client"] } +audit_trails = { path = "../../../audit-trail-rs", default-features = false, features = ["gas-station", "default-http-client"] } bcs = "0.1.6" console_error_panic_hook = { version = "0.1" } iota_interaction = { git = "https://github.com/iotaledger/product-core.git", tag = "v0.8.19", package = "iota_interaction", default-features = false } diff --git a/bindings/wasm/audit_trail_wasm/src/builder.rs b/bindings/wasm/audit_trail_wasm/src/builder.rs index 5034fa57..d7532fc7 100644 --- a/bindings/wasm/audit_trail_wasm/src/builder.rs +++ b/bindings/wasm/audit_trail_wasm/src/builder.rs @@ -1,7 +1,7 @@ // Copyright 2026 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -use audit_trail::core::builder::AuditTrailBuilder; +use audit_trails::core::builder::AuditTrailBuilder; use iota_interaction_ts::wasm_error::{Result, WasmResult}; use product_common::bindings::transaction::WasmTransactionBuilder; use product_common::bindings::utils::{into_transaction_builder, parse_wasm_iota_address}; diff --git a/bindings/wasm/audit_trail_wasm/src/client.rs b/bindings/wasm/audit_trail_wasm/src/client.rs index 7a8b52aa..1625a51d 100644 --- a/bindings/wasm/audit_trail_wasm/src/client.rs +++ b/bindings/wasm/audit_trail_wasm/src/client.rs @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 use anyhow::anyhow; -use audit_trail::{AuditTrailClient, AuditTrailClientReadOnly, PackageOverrides}; +use audit_trails::{AuditTrailClient, AuditTrailClientReadOnly, PackageOverrides}; use iota_interaction_ts::bindings::{WasmIotaClient, WasmPublicKey, WasmTransactionSigner}; use iota_interaction_ts::wasm_error::{wasm_error, Result, WasmResult}; use product_common::bindings::utils::parse_wasm_object_id; diff --git a/bindings/wasm/audit_trail_wasm/src/client_read_only.rs b/bindings/wasm/audit_trail_wasm/src/client_read_only.rs index 746a201a..9a469b86 100644 --- a/bindings/wasm/audit_trail_wasm/src/client_read_only.rs +++ b/bindings/wasm/audit_trail_wasm/src/client_read_only.rs @@ -1,7 +1,7 @@ // Copyright 2026 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -use audit_trail::{AuditTrailClientReadOnly, PackageOverrides}; +use audit_trails::{AuditTrailClientReadOnly, PackageOverrides}; use iota_interaction_ts::bindings::WasmIotaClient; use iota_interaction_ts::wasm_error::{Result, WasmResult}; use product_common::bindings::utils::parse_wasm_object_id; diff --git a/bindings/wasm/audit_trail_wasm/src/trail.rs b/bindings/wasm/audit_trail_wasm/src/trail.rs index acac8a89..92eaff17 100644 --- a/bindings/wasm/audit_trail_wasm/src/trail.rs +++ b/bindings/wasm/audit_trail_wasm/src/trail.rs @@ -1,18 +1,18 @@ // Copyright 2026 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -use audit_trail::core::access::{ +use audit_trails::core::access::{ CleanupRevokedCapabilities, CreateRole, DeleteRole, DestroyCapability, DestroyInitialAdminCapability, IssueCapability, RevokeCapability, RevokeInitialAdminCapability, UpdateRole, }; -use audit_trail::core::create::{CreateTrail, TrailCreated}; -use audit_trail::core::locking::{ +use audit_trails::core::create::{CreateTrail, TrailCreated}; +use audit_trails::core::locking::{ UpdateDeleteRecordWindow, UpdateDeleteTrailLock, UpdateLockingConfig, UpdateWriteLock, }; -use audit_trail::core::records::{AddRecord, DeleteRecord, DeleteRecordsBatch}; -use audit_trail::core::tags::{AddRecordTag, RemoveRecordTag}; -use audit_trail::core::trail::{DeleteAuditTrail, Migrate, UpdateMetadata}; -use audit_trail::core::types::{ +use audit_trails::core::records::{AddRecord, DeleteRecord, DeleteRecordsBatch}; +use audit_trails::core::tags::{AddRecordTag, RemoveRecordTag}; +use audit_trails::core::trail::{DeleteAuditTrail, Migrate, UpdateMetadata}; +use audit_trails::core::types::{ AuditTrailDeleted, CapabilityDestroyed, CapabilityIssued, CapabilityRevoked, OnChainAuditTrail, RecordAdded, RecordDeleted, RevokedCapabilitiesCleanedUp, RoleCreated, RoleDeleted, RoleUpdated, }; diff --git a/bindings/wasm/audit_trail_wasm/src/trail_handle/access.rs b/bindings/wasm/audit_trail_wasm/src/trail_handle/access.rs index f76d9209..54b3c0b4 100644 --- a/bindings/wasm/audit_trail_wasm/src/trail_handle/access.rs +++ b/bindings/wasm/audit_trail_wasm/src/trail_handle/access.rs @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 use anyhow::anyhow; -use audit_trail::AuditTrailClient; +use audit_trails::AuditTrailClient; use iota_interaction::types::base_types::ObjectID; use iota_interaction_ts::bindings::WasmTransactionSigner; use iota_interaction_ts::wasm_error::{wasm_error, Result}; diff --git a/bindings/wasm/audit_trail_wasm/src/trail_handle/locking.rs b/bindings/wasm/audit_trail_wasm/src/trail_handle/locking.rs index b1e0eaa2..fa749025 100644 --- a/bindings/wasm/audit_trail_wasm/src/trail_handle/locking.rs +++ b/bindings/wasm/audit_trail_wasm/src/trail_handle/locking.rs @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 use anyhow::anyhow; -use audit_trail::{AuditTrailClient, AuditTrailClientReadOnly}; +use audit_trails::{AuditTrailClient, AuditTrailClientReadOnly}; use iota_interaction::types::base_types::ObjectID; use iota_interaction_ts::bindings::WasmTransactionSigner; use iota_interaction_ts::wasm_error::{wasm_error, Result, WasmResult}; diff --git a/bindings/wasm/audit_trail_wasm/src/trail_handle/mod.rs b/bindings/wasm/audit_trail_wasm/src/trail_handle/mod.rs index 58556c30..d8bf0c34 100644 --- a/bindings/wasm/audit_trail_wasm/src/trail_handle/mod.rs +++ b/bindings/wasm/audit_trail_wasm/src/trail_handle/mod.rs @@ -10,7 +10,7 @@ mod tags; pub(crate) use access::WasmTrailAccess; use anyhow::anyhow; -use audit_trail::{AuditTrailClient, AuditTrailClientReadOnly}; +use audit_trails::{AuditTrailClient, AuditTrailClientReadOnly}; use iota_interaction::types::base_types::ObjectID; use iota_interaction_ts::bindings::WasmTransactionSigner; use iota_interaction_ts::wasm_error::{wasm_error, Result, WasmResult}; diff --git a/bindings/wasm/audit_trail_wasm/src/trail_handle/records.rs b/bindings/wasm/audit_trail_wasm/src/trail_handle/records.rs index db1ff92d..8bb660fa 100644 --- a/bindings/wasm/audit_trail_wasm/src/trail_handle/records.rs +++ b/bindings/wasm/audit_trail_wasm/src/trail_handle/records.rs @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 use anyhow::anyhow; -use audit_trail::core::types::Data as AuditTrailData; -use audit_trail::{AuditTrailClient, AuditTrailClientReadOnly}; +use audit_trails::core::types::Data as AuditTrailData; +use audit_trails::{AuditTrailClient, AuditTrailClientReadOnly}; use iota_interaction::types::base_types::ObjectID; use iota_interaction_ts::bindings::WasmTransactionSigner; use iota_interaction_ts::wasm_error::{wasm_error, Result, WasmResult}; diff --git a/bindings/wasm/audit_trail_wasm/src/trail_handle/tags.rs b/bindings/wasm/audit_trail_wasm/src/trail_handle/tags.rs index 08f999a1..d8f6777d 100644 --- a/bindings/wasm/audit_trail_wasm/src/trail_handle/tags.rs +++ b/bindings/wasm/audit_trail_wasm/src/trail_handle/tags.rs @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 use anyhow::anyhow; -use audit_trail::{AuditTrailClient, AuditTrailClientReadOnly}; +use audit_trails::{AuditTrailClient, AuditTrailClientReadOnly}; use iota_interaction::types::base_types::ObjectID; use iota_interaction_ts::bindings::WasmTransactionSigner; use iota_interaction_ts::wasm_error::{wasm_error, Result, WasmResult}; diff --git a/bindings/wasm/audit_trail_wasm/src/types.rs b/bindings/wasm/audit_trail_wasm/src/types.rs index 3067446d..8aa38ac6 100644 --- a/bindings/wasm/audit_trail_wasm/src/types.rs +++ b/bindings/wasm/audit_trail_wasm/src/types.rs @@ -3,7 +3,7 @@ use std::collections::{HashMap, HashSet}; -use audit_trail::core::types::{ +use audit_trails::core::types::{ AuditTrailCreated, AuditTrailDeleted, Capability, CapabilityAdminPermissions, CapabilityDestroyed, CapabilityIssueOptions, CapabilityIssued, CapabilityRevoked, Data, ImmutableMetadata, LockingConfig, LockingWindow, PaginatedRecord, Permission, PermissionSet, Record, RecordAdded, RecordCorrection, RecordDeleted, diff --git a/examples/Cargo.toml b/examples/Cargo.toml index 9b36bd75..2d49341d 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -106,7 +106,7 @@ path = "audit-trail/real-world/03_digital_product_passport.rs" [dependencies] anyhow.workspace = true -audit_trail = { path = "../audit-trail-rs" } +audit_trails = { path = "../audit-trail-rs" } chrono = { workspace = true } iota-sdk = { workspace = true } notarization = { path = "../notarization-rs" } diff --git a/examples/audit-trail/01_create_audit_trail.rs b/examples/audit-trail/01_create_audit_trail.rs index e19b5154..1df16669 100644 --- a/examples/audit-trail/01_create_audit_trail.rs +++ b/examples/audit-trail/01_create_audit_trail.rs @@ -7,7 +7,7 @@ //! - **Record admin client**: Receives a RecordAdmin capability bound to their address so it can write records. use anyhow::Result; -use audit_trail::core::types::{CapabilityIssueOptions, Data, ImmutableMetadata, InitialRecord, PermissionSet}; +use audit_trails::core::types::{CapabilityIssueOptions, Data, ImmutableMetadata, InitialRecord, PermissionSet}; use examples::get_funded_audit_trail_client; use product_common::core_client::CoreClient; diff --git a/examples/audit-trail/02_add_and_read_records.rs b/examples/audit-trail/02_add_and_read_records.rs index 7ad7c3f3..c9f4fe85 100644 --- a/examples/audit-trail/02_add_and_read_records.rs +++ b/examples/audit-trail/02_add_and_read_records.rs @@ -8,7 +8,7 @@ //! the example focused on one trail handle after delegation. use anyhow::{Result, ensure}; -use audit_trail::core::types::{CapabilityIssueOptions, Data, InitialRecord, PermissionSet}; +use audit_trails::core::types::{CapabilityIssueOptions, Data, InitialRecord, PermissionSet}; use examples::get_funded_audit_trail_client; use product_common::core_client::CoreClient; diff --git a/examples/audit-trail/03_update_metadata.rs b/examples/audit-trail/03_update_metadata.rs index 2fe2e6fa..ddb8d754 100644 --- a/examples/audit-trail/03_update_metadata.rs +++ b/examples/audit-trail/03_update_metadata.rs @@ -8,7 +8,7 @@ //! record-write permissions. use anyhow::{Result, ensure}; -use audit_trail::core::types::{CapabilityIssueOptions, Data, ImmutableMetadata, InitialRecord, PermissionSet}; +use audit_trails::core::types::{CapabilityIssueOptions, Data, ImmutableMetadata, InitialRecord, PermissionSet}; use examples::get_funded_audit_trail_client; use product_common::core_client::CoreClient; diff --git a/examples/audit-trail/04_configure_locking.rs b/examples/audit-trail/04_configure_locking.rs index 2bef9894..6a6645ea 100644 --- a/examples/audit-trail/04_configure_locking.rs +++ b/examples/audit-trail/04_configure_locking.rs @@ -9,7 +9,7 @@ //! checked by the admin. use anyhow::{Result, ensure}; -use audit_trail::core::types::{CapabilityIssueOptions, Data, InitialRecord, LockingWindow, PermissionSet, TimeLock}; +use audit_trails::core::types::{CapabilityIssueOptions, Data, InitialRecord, LockingWindow, PermissionSet, TimeLock}; use examples::get_funded_audit_trail_client; use product_common::core_client::CoreClient; diff --git a/examples/audit-trail/05_manage_access.rs b/examples/audit-trail/05_manage_access.rs index 5e17a436..34145ec5 100644 --- a/examples/audit-trail/05_manage_access.rs +++ b/examples/audit-trail/05_manage_access.rs @@ -11,7 +11,7 @@ use std::collections::HashSet; use anyhow::{Result, ensure}; -use audit_trail::core::types::{CapabilityIssueOptions, Data, Permission, PermissionSet}; +use audit_trails::core::types::{CapabilityIssueOptions, Data, Permission, PermissionSet}; use examples::get_funded_audit_trail_client; use product_common::core_client::CoreClient; @@ -30,7 +30,7 @@ async fn main() -> Result<()> { let created_trail = admin_client .create_trail() - .with_initial_record(audit_trail::core::types::InitialRecord::new( + .with_initial_record(audit_trails::core::types::InitialRecord::new( Data::text("Trail created"), None, None, diff --git a/examples/audit-trail/06_delete_records.rs b/examples/audit-trail/06_delete_records.rs index 05e9bd78..3f0a421c 100644 --- a/examples/audit-trail/06_delete_records.rs +++ b/examples/audit-trail/06_delete_records.rs @@ -10,7 +10,7 @@ use std::collections::HashSet; use anyhow::{Result, ensure}; -use audit_trail::core::types::{CapabilityIssueOptions, Data, InitialRecord, Permission, PermissionSet}; +use audit_trails::core::types::{CapabilityIssueOptions, Data, InitialRecord, Permission, PermissionSet}; use examples::get_funded_audit_trail_client; use product_common::core_client::CoreClient; diff --git a/examples/audit-trail/07_access_read_only_methods.rs b/examples/audit-trail/07_access_read_only_methods.rs index 25e23c9c..ce5f5d88 100644 --- a/examples/audit-trail/07_access_read_only_methods.rs +++ b/examples/audit-trail/07_access_read_only_methods.rs @@ -8,7 +8,7 @@ //! by any address — no capability required. use anyhow::{Result, ensure}; -use audit_trail::core::types::{ +use audit_trails::core::types::{ CapabilityIssueOptions, Data, ImmutableMetadata, InitialRecord, LockingConfig, LockingWindow, PermissionSet, TimeLock, }; diff --git a/examples/audit-trail/08_delete_audit_trail.rs b/examples/audit-trail/08_delete_audit_trail.rs index fbfa4eab..d84582cb 100644 --- a/examples/audit-trail/08_delete_audit_trail.rs +++ b/examples/audit-trail/08_delete_audit_trail.rs @@ -10,7 +10,7 @@ use std::collections::HashSet; use anyhow::{Result, ensure}; -use audit_trail::core::types::{CapabilityIssueOptions, Data, InitialRecord, Permission, PermissionSet}; +use audit_trails::core::types::{CapabilityIssueOptions, Data, InitialRecord, Permission, PermissionSet}; use examples::get_funded_audit_trail_client; use product_common::core_client::CoreClient; diff --git a/examples/audit-trail/advanced/09_tagged_records.rs b/examples/audit-trail/advanced/09_tagged_records.rs index 0c085146..b29dca1f 100644 --- a/examples/audit-trail/advanced/09_tagged_records.rs +++ b/examples/audit-trail/advanced/09_tagged_records.rs @@ -9,7 +9,7 @@ //! from writing `legal`-tagged records. use anyhow::{Result, ensure}; -use audit_trail::core::types::{CapabilityIssueOptions, Data, InitialRecord, Permission, RoleTags}; +use audit_trails::core::types::{CapabilityIssueOptions, Data, InitialRecord, Permission, RoleTags}; use examples::get_funded_audit_trail_client; use product_common::core_client::CoreClient; @@ -47,7 +47,7 @@ async fn main() -> Result<()> { .access() .for_role(finance_writer_role) .create( - audit_trail::core::types::PermissionSet { + audit_trails::core::types::PermissionSet { permissions: [Permission::AddRecord].into_iter().collect(), }, Some(RoleTags::new(["finance"])), diff --git a/examples/audit-trail/advanced/10_capability_constraints.rs b/examples/audit-trail/advanced/10_capability_constraints.rs index 03757bf0..86a64fbd 100644 --- a/examples/audit-trail/advanced/10_capability_constraints.rs +++ b/examples/audit-trail/advanced/10_capability_constraints.rs @@ -11,7 +11,7 @@ //! attempts are rejected by the Move contract. use anyhow::{Result, ensure}; -use audit_trail::core::types::{CapabilityIssueOptions, Data, InitialRecord, PermissionSet}; +use audit_trails::core::types::{CapabilityIssueOptions, Data, InitialRecord, PermissionSet}; use examples::get_funded_audit_trail_client; use product_common::core_client::CoreClient; diff --git a/examples/audit-trail/advanced/11_manage_record_tags.rs b/examples/audit-trail/advanced/11_manage_record_tags.rs index 9d7e7632..d2e58810 100644 --- a/examples/audit-trail/advanced/11_manage_record_tags.rs +++ b/examples/audit-trail/advanced/11_manage_record_tags.rs @@ -9,7 +9,7 @@ //! keeps the `finance` tag in use and therefore unremovable. use anyhow::{Result, ensure}; -use audit_trail::core::types::{CapabilityIssueOptions, Data, InitialRecord, PermissionSet, RoleTags}; +use audit_trails::core::types::{CapabilityIssueOptions, Data, InitialRecord, PermissionSet, RoleTags}; use examples::get_funded_audit_trail_client; use product_common::core_client::CoreClient; diff --git a/examples/audit-trail/real-world/01_customs_clearance.rs b/examples/audit-trail/real-world/01_customs_clearance.rs index 1d202ef2..4961bdfc 100644 --- a/examples/audit-trail/real-world/01_customs_clearance.rs +++ b/examples/audit-trail/real-world/01_customs_clearance.rs @@ -28,7 +28,7 @@ //! - locking: writes are frozen once the shipment is fully cleared use anyhow::{Result, ensure}; -use audit_trail::core::types::{ +use audit_trails::core::types::{ CapabilityIssueOptions, Data, ImmutableMetadata, InitialRecord, LockingConfig, LockingWindow, PermissionSet, TimeLock, }; diff --git a/examples/audit-trail/real-world/02_clinical_trial.rs b/examples/audit-trail/real-world/02_clinical_trial.rs index 50c3b171..f32eb808 100644 --- a/examples/audit-trail/real-world/02_clinical_trial.rs +++ b/examples/audit-trail/real-world/02_clinical_trial.rs @@ -32,7 +32,7 @@ //! - read-only verification: a regulator inspects the trail without write access use anyhow::{Result, ensure}; -use audit_trail::core::types::{ +use audit_trails::core::types::{ CapabilityIssueOptions, Data, ImmutableMetadata, InitialRecord, LockingConfig, LockingWindow, PermissionSet, TimeLock, }; diff --git a/examples/audit-trail/real-world/03_digital_product_passport.rs b/examples/audit-trail/real-world/03_digital_product_passport.rs index 93fd6d21..26e1f138 100644 --- a/examples/audit-trail/real-world/03_digital_product_passport.rs +++ b/examples/audit-trail/real-world/03_digital_product_passport.rs @@ -37,8 +37,8 @@ //! 76% health score and a 1-LCC reward record use anyhow::{Result, ensure}; -use audit_trail::AuditTrailClient; -use audit_trail::core::types::{ +use audit_trails::AuditTrailClient; +use audit_trails::core::types::{ CapabilityIssueOptions, Data, ImmutableMetadata, InitialRecord, PermissionSet, RoleTags, }; use examples::{get_funded_audit_trail_client, issue_tagged_record_role}; diff --git a/examples/utils/utils.rs b/examples/utils/utils.rs index cbc4f4f1..a24179be 100644 --- a/examples/utils/utils.rs +++ b/examples/utils/utils.rs @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 use anyhow::Context; -use audit_trail::core::types::{CapabilityIssueOptions, PermissionSet, RoleTags}; -use audit_trail::{AuditTrailClient, PackageOverrides}; +use audit_trails::core::types::{CapabilityIssueOptions, PermissionSet, RoleTags}; +use audit_trails::{AuditTrailClient, PackageOverrides}; use iota_sdk::types::base_types::{IotaAddress, ObjectID}; use iota_sdk::{IOTA_LOCAL_NETWORK_URL, IotaClientBuilder}; use notarization::client::{NotarizationClient, NotarizationClientReadOnly}; From 8462ae41fcffb779fb85a2580cab2133974eaac9 Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Tue, 2 Jun 2026 12:52:06 +0200 Subject: [PATCH 09/15] Explicitly list permissions in all permission_set function docs and use these functions as source of truth in all other docs. --- audit-trail-move/sources/audit_trail.move | 7 ++- audit-trail-move/sources/permission.move | 54 ++++++++++++++++--- audit-trail-rs/src/core/builder.rs | 7 +-- audit-trail-rs/src/core/types/permission.rs | 38 +++++++++++++ bindings/wasm/audit_trail_wasm/src/builder.rs | 15 +++--- bindings/wasm/audit_trail_wasm/src/trail.rs | 3 +- bindings/wasm/audit_trail_wasm/src/types.rs | 32 +++++++++++ 7 files changed, 134 insertions(+), 22 deletions(-) diff --git a/audit-trail-move/sources/audit_trail.move b/audit-trail-move/sources/audit_trail.move index fa7dea3d..2070756e 100644 --- a/audit-trail-move/sources/audit_trail.move +++ b/audit-trail-move/sources/audit_trail.move @@ -160,10 +160,9 @@ public fun new_trail_metadata(name: String, description: Option): Immuta /// Creates a new audit trail with an optional initial record and shares it on-chain. /// /// Initialises the trail's role map with a single role named "Admin" associated with -/// the permissions `DeleteAuditTrail`, `AddCapabilities`, `RevokeCapabilities`, -/// `AddRoles`, `UpdateRoles` and `DeleteRoles`. The creator receives an initial admin -/// capability that may be used to define further roles and to issue capabilities to -/// other users. +/// the permission set defined by the `permission::admin_permissions()` function. The +/// creator receives an initial admin capability that may be used to define further +/// roles and to issue capabilities to other users. /// /// When `initial_record` is provided it is stored at sequence number `0`; otherwise /// the trail is created empty. If the initial record carries a tag, that tag must diff --git a/audit-trail-move/sources/permission.move b/audit-trail-move/sources/permission.move index 60fa96a1..f04b382a 100644 --- a/audit-trail-move/sources/permission.move +++ b/audit-trail-move/sources/permission.move @@ -94,9 +94,19 @@ public fun has_permission(set: &VecSet, perm: &Permission): bool { vec_set::contains(set, perm) } -// ------Functions creating permission sets for often used roles --------- +// ------ Functions creating permission sets for often used roles --------- -/// Create permissions typically used for the `Admin` role +/// Creates the permission set typically used for the `Admin` role. +/// +/// Includes the following permissions: +/// * `AddCapabilities` +/// * `RevokeCapabilities` +/// * `AddRecordTags` +/// * `DeleteRecordTags` +/// * `AddRoles` +/// * `UpdateRoles` +/// * `DeleteRoles` +/// * `Migrate` public fun admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(add_capabilities()); @@ -110,7 +120,12 @@ public fun admin_permissions(): VecSet { perms } -/// Create permissions typical used for the `RecordAdmin` role +/// Creates the permission set typically used for the `RecordAdmin` role. +/// +/// Includes the following permissions: +/// * `AddRecord` +/// * `DeleteRecord` +/// * `CorrectRecord` public fun record_admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(add_record()); @@ -119,7 +134,13 @@ public fun record_admin_permissions(): VecSet { perms } -/// Create permissions typical used for the `LockingAdmin` role +/// Creates the permission set typically used for the `LockingAdmin` role. +/// +/// Includes the following permissions: +/// * `UpdateLockingConfig` +/// * `UpdateLockingConfigForDeleteTrail` +/// * `UpdateLockingConfigForDeleteRecord` +/// * `UpdateLockingConfigForWrite` public fun locking_admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(update_locking_config()); @@ -129,7 +150,12 @@ public fun locking_admin_permissions(): VecSet { perms } -/// Create permissions typical used for the `RoleAdmin` role +/// Creates the permission set typically used for the `RoleAdmin` role. +/// +/// Includes the following permissions: +/// * `AddRoles` +/// * `UpdateRoles` +/// * `DeleteRoles` public fun role_admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(add_roles()); @@ -138,7 +164,11 @@ public fun role_admin_permissions(): VecSet { perms } -/// Create permissions typically used for the `TagAdmin` role +/// Creates the permission set typically used for the `TagAdmin` role. +/// +/// Includes the following permissions: +/// * `AddRecordTags` +/// * `DeleteRecordTags` public fun tag_admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(add_record_tags()); @@ -146,7 +176,11 @@ public fun tag_admin_permissions(): VecSet { perms } -/// Create permissions typical used for the `CapAdmin` role +/// Creates the permission set typically used for the `CapAdmin` role. +/// +/// Includes the following permissions: +/// * `AddCapabilities` +/// * `RevokeCapabilities` public fun cap_admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(add_capabilities()); @@ -154,7 +188,11 @@ public fun cap_admin_permissions(): VecSet { perms } -/// Create permissions typical used for the `MetadataAdmin` role +/// Creates the permission set typically used for the `MetadataAdmin` role. +/// +/// Includes the following permissions: +/// * `UpdateMetadata` +/// * `DeleteMetadata` public fun metadata_admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(update_metadata()); diff --git a/audit-trail-rs/src/core/builder.rs b/audit-trail-rs/src/core/builder.rs index 544e237d..fc951b42 100644 --- a/audit-trail-rs/src/core/builder.rs +++ b/audit-trail-rs/src/core/builder.rs @@ -118,9 +118,10 @@ impl AuditTrailBuilder { /// Finalizes the builder and creates the trail-creation transaction builder. /// /// Validates the configured [`LockingConfig`] before returning the transaction. Currently this rejects: - /// - [`LockingWindow::CountBased`] with `count == 0` (mirrors the Move `ECountWindowMustBePositive` abort). - /// - [`TimeLock::UntilDestroyed`] used as `delete_trail_lock` (mirrors the Move - /// `EUntilDestroyedNotSupportedForDeleteTrail` abort). `write_lock` may still be `UntilDestroyed`. + /// - [`LockingWindow::CountBased`](super::types::LockingWindow::CountBased) with `count == 0` (mirrors the + /// Move `ECountWindowMustBePositive` abort). + /// - [`TimeLock::UntilDestroyed`](super::types::TimeLock::UntilDestroyed) used as `delete_trail_lock` (mirrors + /// the Move `EUntilDestroyedNotSupportedForDeleteTrail` abort). `write_lock` may still be `UntilDestroyed`. /// /// # Errors /// diff --git a/audit-trail-rs/src/core/types/permission.rs b/audit-trail-rs/src/core/types/permission.rs index 72695b00..262c04f7 100644 --- a/audit-trail-rs/src/core/types/permission.rs +++ b/audit-trail-rs/src/core/types/permission.rs @@ -128,6 +128,16 @@ impl PermissionSet { } /// Returns the recommended permission set for the `Admin` role. /// + /// Includes the following permissions: + /// - [`Permission::AddCapabilities`] + /// - [`Permission::RevokeCapabilities`] + /// - [`Permission::AddRecordTags`] + /// - [`Permission::DeleteRecordTags`] + /// - [`Permission::AddRoles`] + /// - [`Permission::UpdateRoles`] + /// - [`Permission::DeleteRoles`] + /// - [`Permission::Migrate`] + /// /// Mirrors `audit_trail::permission::admin_permissions` in the Move /// package. This is the same set the package seeds when a trail is /// created and the initial-admin capability is minted. @@ -147,6 +157,11 @@ impl PermissionSet { } /// Returns the permissions needed to administer records. + /// + /// Includes the following permissions: + /// - [`Permission::AddRecord`] + /// - [`Permission::DeleteRecord`] + /// - [`Permission::CorrectRecord`] pub fn record_admin_permissions() -> Self { Self { permissions: HashSet::from([ @@ -158,6 +173,12 @@ impl PermissionSet { } /// Returns the permissions needed to administer locking rules. + /// + /// Includes the following permissions: + /// - [`Permission::UpdateLockingConfig`] + /// - [`Permission::UpdateLockingConfigForDeleteTrail`] + /// - [`Permission::UpdateLockingConfigForDeleteRecord`] + /// - [`Permission::UpdateLockingConfigForWrite`] pub fn locking_admin_permissions() -> Self { Self { permissions: HashSet::from([ @@ -170,6 +191,11 @@ impl PermissionSet { } /// Returns the permissions needed to administer roles. + /// + /// Includes the following permissions: + /// - [`Permission::AddRoles`] + /// - [`Permission::UpdateRoles`] + /// - [`Permission::DeleteRoles`] pub fn role_admin_permissions() -> Self { Self { permissions: HashSet::from([Permission::AddRoles, Permission::UpdateRoles, Permission::DeleteRoles]), @@ -177,6 +203,10 @@ impl PermissionSet { } /// Returns the permissions needed to administer record tags. + /// + /// Includes the following permissions: + /// - [`Permission::AddRecordTags`] + /// - [`Permission::DeleteRecordTags`] pub fn tag_admin_permissions() -> Self { Self { permissions: HashSet::from([Permission::AddRecordTags, Permission::DeleteRecordTags]), @@ -184,6 +214,10 @@ impl PermissionSet { } /// Returns the permissions needed to issue and revoke capabilities. + /// + /// Includes the following permissions: + /// - [`Permission::AddCapabilities`] + /// - [`Permission::RevokeCapabilities`] pub fn cap_admin_permissions() -> Self { Self { permissions: HashSet::from_iter(vec![Permission::AddCapabilities, Permission::RevokeCapabilities]), @@ -191,6 +225,10 @@ impl PermissionSet { } /// Returns the permissions needed to administer mutable metadata. + /// + /// Includes the following permissions: + /// - [`Permission::UpdateMetadata`] + /// - [`Permission::DeleteMetadata`] pub fn metadata_admin_permissions() -> Self { Self { permissions: HashSet::from_iter(vec![Permission::UpdateMetadata, Permission::DeleteMetadata]), diff --git a/bindings/wasm/audit_trail_wasm/src/builder.rs b/bindings/wasm/audit_trail_wasm/src/builder.rs index d7532fc7..bc979428 100644 --- a/bindings/wasm/audit_trail_wasm/src/builder.rs +++ b/bindings/wasm/audit_trail_wasm/src/builder.rs @@ -15,8 +15,9 @@ use crate::types::WasmLockingConfig; /// /// @remarks /// The resulting transaction publishes the trail as a *shared* object, seeds the reserved -/// {@link RoleMap.initialAdminRoleName | Admin} role with the recommended admin permissions, and -/// transfers a freshly minted initial-admin {@link Capability} to the configured admin address. An +/// {@link RoleMap.initialAdminRoleName | Admin} role with the permission set returned by +/// {@link PermissionSet.adminPermissions}, and transfers a freshly minted initial-admin +/// {@link Capability} to the configured admin address. An /// admin address must be set (either through {@link AuditTrailBuilder.withAdmin} or by constructing /// the builder via {@link AuditTrailClient.createTrail}, which seeds it with the signer); otherwise /// {@link AuditTrailBuilder.finish} produces a transaction that fails to build. When an initial @@ -130,8 +131,9 @@ impl WasmAuditTrailBuilder { /// /// @remarks /// On execution the trail's role map is seeded with a single role named `"Admin"` carrying the - /// recommended admin permissions, and a freshly minted initial-admin capability is transferred - /// to this address. Setting an admin is required before {@link AuditTrailBuilder.finish} can + /// permission set returned by {@link PermissionSet.adminPermissions}, and a freshly minted + /// initial-admin capability is transferred to this address. Setting an admin is required before + /// {@link AuditTrailBuilder.finish} can /// produce a viable transaction; constructing the builder via /// {@link AuditTrailClient.createTrail} already seeds it with the signer address. /// @@ -150,8 +152,9 @@ impl WasmAuditTrailBuilder { /// /// @remarks /// On execution the audit-trail package shares the new trail object, seeds the reserved - /// {@link RoleMap.initialAdminRoleName | Admin} role, transfers an initial-admin capability to - /// the configured admin address, and optionally stores the initial record at sequence number + /// {@link RoleMap.initialAdminRoleName | Admin} role with the permission set returned by + /// {@link PermissionSet.adminPermissions}, transfers an initial-admin capability to the + /// configured admin address, and optionally stores the initial record at sequence number /// `0`. /// /// @returns A {@link TransactionBuilder} wrapping the {@link CreateTrail} transaction. diff --git a/bindings/wasm/audit_trail_wasm/src/trail.rs b/bindings/wasm/audit_trail_wasm/src/trail.rs index 92eaff17..d4a39063 100644 --- a/bindings/wasm/audit_trail_wasm/src/trail.rs +++ b/bindings/wasm/audit_trail_wasm/src/trail.rs @@ -182,7 +182,8 @@ async fn apply_trail_created( /// /// @remarks /// On execution the audit-trail package shares the new trail object, seeds the reserved -/// {@link RoleMap.initialAdminRoleName | Admin} role, transfers a fresh initial-admin capability to +/// {@link RoleMap.initialAdminRoleName | Admin} role with the permission set returned by +/// {@link PermissionSet.adminPermissions}, transfers a fresh initial-admin capability to /// the admin address, and optionally stores the initial record at sequence number `0`, validating /// its tag against the registry. /// diff --git a/bindings/wasm/audit_trail_wasm/src/types.rs b/bindings/wasm/audit_trail_wasm/src/types.rs index 8aa38ac6..f36649fa 100644 --- a/bindings/wasm/audit_trail_wasm/src/types.rs +++ b/bindings/wasm/audit_trail_wasm/src/types.rs @@ -292,6 +292,12 @@ impl WasmPermissionSet { /// Returns the recommended permission set for the reserved initial-admin role. /// + /// @remarks + /// Includes the {@link Permission.AddCapabilities}, {@link Permission.RevokeCapabilities}, + /// {@link Permission.AddRecordTags}, {@link Permission.DeleteRecordTags}, + /// {@link Permission.AddRoles}, {@link Permission.UpdateRoles}, {@link Permission.DeleteRoles} + /// and {@link Permission.Migrate} permissions. + /// /// @returns A {@link PermissionSet} that authorizes role and capability administration. #[wasm_bindgen(js_name = adminPermissions)] pub fn admin_permissions() -> Self { @@ -300,6 +306,10 @@ impl WasmPermissionSet { /// Returns the permissions needed to administer records. /// + /// @remarks + /// Includes the {@link Permission.AddRecord}, {@link Permission.DeleteRecord} and + /// {@link Permission.CorrectRecord} permissions. + /// /// @returns A {@link PermissionSet} that authorizes record reads, writes, and deletions. #[wasm_bindgen(js_name = recordAdminPermissions)] pub fn record_admin_permissions() -> Self { @@ -308,6 +318,12 @@ impl WasmPermissionSet { /// Returns the permissions needed to administer locking rules. /// + /// @remarks + /// Includes the {@link Permission.UpdateLockingConfig}, + /// {@link Permission.UpdateLockingConfigForDeleteTrail}, + /// {@link Permission.UpdateLockingConfigForDeleteRecord} and + /// {@link Permission.UpdateLockingConfigForWrite} permissions. + /// /// @returns A {@link PermissionSet} that authorizes updates to all locking dimensions. #[wasm_bindgen(js_name = lockingAdminPermissions)] pub fn locking_admin_permissions() -> Self { @@ -316,6 +332,10 @@ impl WasmPermissionSet { /// Returns the permissions needed to administer roles. /// + /// @remarks + /// Includes the {@link Permission.AddRoles}, {@link Permission.UpdateRoles} and + /// {@link Permission.DeleteRoles} permissions. + /// /// @returns A {@link PermissionSet} that authorizes adding, updating, and deleting roles. #[wasm_bindgen(js_name = roleAdminPermissions)] pub fn role_admin_permissions() -> Self { @@ -324,6 +344,10 @@ impl WasmPermissionSet { /// Returns the permissions needed to issue and revoke capabilities. /// + /// @remarks + /// Includes the {@link Permission.AddCapabilities} and {@link Permission.RevokeCapabilities} + /// permissions. + /// /// @returns A {@link PermissionSet} that authorizes the capability lifecycle. #[wasm_bindgen(js_name = capAdminPermissions)] pub fn cap_admin_permissions() -> Self { @@ -332,6 +356,10 @@ impl WasmPermissionSet { /// Returns the permissions needed to administer mutable metadata. /// + /// @remarks + /// Includes the {@link Permission.UpdateMetadata} and {@link Permission.DeleteMetadata} + /// permissions. + /// /// @returns A {@link PermissionSet} that authorizes updating and clearing /// `updatableMetadata`. #[wasm_bindgen(js_name = metadataAdminPermissions)] @@ -341,6 +369,10 @@ impl WasmPermissionSet { /// Returns the permissions needed to administer record tags. /// + /// @remarks + /// Includes the {@link Permission.AddRecordTags} and {@link Permission.DeleteRecordTags} + /// permissions. + /// /// @returns A {@link PermissionSet} that authorizes adding and removing entries from the /// trail's record-tag registry. #[wasm_bindgen(js_name = tagAdminPermissions)] From 21dec9e763b80d381e6b29cf6e2f43b6f023695e Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Tue, 2 Jun 2026 15:49:08 +0200 Subject: [PATCH 10/15] Revert "Explicitly list permissions in all permission_set function docs and use these functions as source of truth in all other docs." This reverts commit 8462ae41fcffb779fb85a2580cab2133974eaac9. --- audit-trail-move/sources/audit_trail.move | 7 +-- audit-trail-move/sources/permission.move | 54 +++---------------- audit-trail-rs/src/core/builder.rs | 7 ++- audit-trail-rs/src/core/types/permission.rs | 38 ------------- bindings/wasm/audit_trail_wasm/src/builder.rs | 15 +++--- bindings/wasm/audit_trail_wasm/src/trail.rs | 3 +- bindings/wasm/audit_trail_wasm/src/types.rs | 32 ----------- 7 files changed, 22 insertions(+), 134 deletions(-) diff --git a/audit-trail-move/sources/audit_trail.move b/audit-trail-move/sources/audit_trail.move index 2070756e..fa7dea3d 100644 --- a/audit-trail-move/sources/audit_trail.move +++ b/audit-trail-move/sources/audit_trail.move @@ -160,9 +160,10 @@ public fun new_trail_metadata(name: String, description: Option): Immuta /// Creates a new audit trail with an optional initial record and shares it on-chain. /// /// Initialises the trail's role map with a single role named "Admin" associated with -/// the permission set defined by the `permission::admin_permissions()` function. The -/// creator receives an initial admin capability that may be used to define further -/// roles and to issue capabilities to other users. +/// the permissions `DeleteAuditTrail`, `AddCapabilities`, `RevokeCapabilities`, +/// `AddRoles`, `UpdateRoles` and `DeleteRoles`. The creator receives an initial admin +/// capability that may be used to define further roles and to issue capabilities to +/// other users. /// /// When `initial_record` is provided it is stored at sequence number `0`; otherwise /// the trail is created empty. If the initial record carries a tag, that tag must diff --git a/audit-trail-move/sources/permission.move b/audit-trail-move/sources/permission.move index f04b382a..60fa96a1 100644 --- a/audit-trail-move/sources/permission.move +++ b/audit-trail-move/sources/permission.move @@ -94,19 +94,9 @@ public fun has_permission(set: &VecSet, perm: &Permission): bool { vec_set::contains(set, perm) } -// ------ Functions creating permission sets for often used roles --------- +// ------Functions creating permission sets for often used roles --------- -/// Creates the permission set typically used for the `Admin` role. -/// -/// Includes the following permissions: -/// * `AddCapabilities` -/// * `RevokeCapabilities` -/// * `AddRecordTags` -/// * `DeleteRecordTags` -/// * `AddRoles` -/// * `UpdateRoles` -/// * `DeleteRoles` -/// * `Migrate` +/// Create permissions typically used for the `Admin` role public fun admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(add_capabilities()); @@ -120,12 +110,7 @@ public fun admin_permissions(): VecSet { perms } -/// Creates the permission set typically used for the `RecordAdmin` role. -/// -/// Includes the following permissions: -/// * `AddRecord` -/// * `DeleteRecord` -/// * `CorrectRecord` +/// Create permissions typical used for the `RecordAdmin` role public fun record_admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(add_record()); @@ -134,13 +119,7 @@ public fun record_admin_permissions(): VecSet { perms } -/// Creates the permission set typically used for the `LockingAdmin` role. -/// -/// Includes the following permissions: -/// * `UpdateLockingConfig` -/// * `UpdateLockingConfigForDeleteTrail` -/// * `UpdateLockingConfigForDeleteRecord` -/// * `UpdateLockingConfigForWrite` +/// Create permissions typical used for the `LockingAdmin` role public fun locking_admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(update_locking_config()); @@ -150,12 +129,7 @@ public fun locking_admin_permissions(): VecSet { perms } -/// Creates the permission set typically used for the `RoleAdmin` role. -/// -/// Includes the following permissions: -/// * `AddRoles` -/// * `UpdateRoles` -/// * `DeleteRoles` +/// Create permissions typical used for the `RoleAdmin` role public fun role_admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(add_roles()); @@ -164,11 +138,7 @@ public fun role_admin_permissions(): VecSet { perms } -/// Creates the permission set typically used for the `TagAdmin` role. -/// -/// Includes the following permissions: -/// * `AddRecordTags` -/// * `DeleteRecordTags` +/// Create permissions typically used for the `TagAdmin` role public fun tag_admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(add_record_tags()); @@ -176,11 +146,7 @@ public fun tag_admin_permissions(): VecSet { perms } -/// Creates the permission set typically used for the `CapAdmin` role. -/// -/// Includes the following permissions: -/// * `AddCapabilities` -/// * `RevokeCapabilities` +/// Create permissions typical used for the `CapAdmin` role public fun cap_admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(add_capabilities()); @@ -188,11 +154,7 @@ public fun cap_admin_permissions(): VecSet { perms } -/// Creates the permission set typically used for the `MetadataAdmin` role. -/// -/// Includes the following permissions: -/// * `UpdateMetadata` -/// * `DeleteMetadata` +/// Create permissions typical used for the `MetadataAdmin` role public fun metadata_admin_permissions(): VecSet { let mut perms = vec_set::empty(); perms.insert(update_metadata()); diff --git a/audit-trail-rs/src/core/builder.rs b/audit-trail-rs/src/core/builder.rs index fc951b42..544e237d 100644 --- a/audit-trail-rs/src/core/builder.rs +++ b/audit-trail-rs/src/core/builder.rs @@ -118,10 +118,9 @@ impl AuditTrailBuilder { /// Finalizes the builder and creates the trail-creation transaction builder. /// /// Validates the configured [`LockingConfig`] before returning the transaction. Currently this rejects: - /// - [`LockingWindow::CountBased`](super::types::LockingWindow::CountBased) with `count == 0` (mirrors the - /// Move `ECountWindowMustBePositive` abort). - /// - [`TimeLock::UntilDestroyed`](super::types::TimeLock::UntilDestroyed) used as `delete_trail_lock` (mirrors - /// the Move `EUntilDestroyedNotSupportedForDeleteTrail` abort). `write_lock` may still be `UntilDestroyed`. + /// - [`LockingWindow::CountBased`] with `count == 0` (mirrors the Move `ECountWindowMustBePositive` abort). + /// - [`TimeLock::UntilDestroyed`] used as `delete_trail_lock` (mirrors the Move + /// `EUntilDestroyedNotSupportedForDeleteTrail` abort). `write_lock` may still be `UntilDestroyed`. /// /// # Errors /// diff --git a/audit-trail-rs/src/core/types/permission.rs b/audit-trail-rs/src/core/types/permission.rs index 262c04f7..72695b00 100644 --- a/audit-trail-rs/src/core/types/permission.rs +++ b/audit-trail-rs/src/core/types/permission.rs @@ -128,16 +128,6 @@ impl PermissionSet { } /// Returns the recommended permission set for the `Admin` role. /// - /// Includes the following permissions: - /// - [`Permission::AddCapabilities`] - /// - [`Permission::RevokeCapabilities`] - /// - [`Permission::AddRecordTags`] - /// - [`Permission::DeleteRecordTags`] - /// - [`Permission::AddRoles`] - /// - [`Permission::UpdateRoles`] - /// - [`Permission::DeleteRoles`] - /// - [`Permission::Migrate`] - /// /// Mirrors `audit_trail::permission::admin_permissions` in the Move /// package. This is the same set the package seeds when a trail is /// created and the initial-admin capability is minted. @@ -157,11 +147,6 @@ impl PermissionSet { } /// Returns the permissions needed to administer records. - /// - /// Includes the following permissions: - /// - [`Permission::AddRecord`] - /// - [`Permission::DeleteRecord`] - /// - [`Permission::CorrectRecord`] pub fn record_admin_permissions() -> Self { Self { permissions: HashSet::from([ @@ -173,12 +158,6 @@ impl PermissionSet { } /// Returns the permissions needed to administer locking rules. - /// - /// Includes the following permissions: - /// - [`Permission::UpdateLockingConfig`] - /// - [`Permission::UpdateLockingConfigForDeleteTrail`] - /// - [`Permission::UpdateLockingConfigForDeleteRecord`] - /// - [`Permission::UpdateLockingConfigForWrite`] pub fn locking_admin_permissions() -> Self { Self { permissions: HashSet::from([ @@ -191,11 +170,6 @@ impl PermissionSet { } /// Returns the permissions needed to administer roles. - /// - /// Includes the following permissions: - /// - [`Permission::AddRoles`] - /// - [`Permission::UpdateRoles`] - /// - [`Permission::DeleteRoles`] pub fn role_admin_permissions() -> Self { Self { permissions: HashSet::from([Permission::AddRoles, Permission::UpdateRoles, Permission::DeleteRoles]), @@ -203,10 +177,6 @@ impl PermissionSet { } /// Returns the permissions needed to administer record tags. - /// - /// Includes the following permissions: - /// - [`Permission::AddRecordTags`] - /// - [`Permission::DeleteRecordTags`] pub fn tag_admin_permissions() -> Self { Self { permissions: HashSet::from([Permission::AddRecordTags, Permission::DeleteRecordTags]), @@ -214,10 +184,6 @@ impl PermissionSet { } /// Returns the permissions needed to issue and revoke capabilities. - /// - /// Includes the following permissions: - /// - [`Permission::AddCapabilities`] - /// - [`Permission::RevokeCapabilities`] pub fn cap_admin_permissions() -> Self { Self { permissions: HashSet::from_iter(vec![Permission::AddCapabilities, Permission::RevokeCapabilities]), @@ -225,10 +191,6 @@ impl PermissionSet { } /// Returns the permissions needed to administer mutable metadata. - /// - /// Includes the following permissions: - /// - [`Permission::UpdateMetadata`] - /// - [`Permission::DeleteMetadata`] pub fn metadata_admin_permissions() -> Self { Self { permissions: HashSet::from_iter(vec![Permission::UpdateMetadata, Permission::DeleteMetadata]), diff --git a/bindings/wasm/audit_trail_wasm/src/builder.rs b/bindings/wasm/audit_trail_wasm/src/builder.rs index bc979428..d7532fc7 100644 --- a/bindings/wasm/audit_trail_wasm/src/builder.rs +++ b/bindings/wasm/audit_trail_wasm/src/builder.rs @@ -15,9 +15,8 @@ use crate::types::WasmLockingConfig; /// /// @remarks /// The resulting transaction publishes the trail as a *shared* object, seeds the reserved -/// {@link RoleMap.initialAdminRoleName | Admin} role with the permission set returned by -/// {@link PermissionSet.adminPermissions}, and transfers a freshly minted initial-admin -/// {@link Capability} to the configured admin address. An +/// {@link RoleMap.initialAdminRoleName | Admin} role with the recommended admin permissions, and +/// transfers a freshly minted initial-admin {@link Capability} to the configured admin address. An /// admin address must be set (either through {@link AuditTrailBuilder.withAdmin} or by constructing /// the builder via {@link AuditTrailClient.createTrail}, which seeds it with the signer); otherwise /// {@link AuditTrailBuilder.finish} produces a transaction that fails to build. When an initial @@ -131,9 +130,8 @@ impl WasmAuditTrailBuilder { /// /// @remarks /// On execution the trail's role map is seeded with a single role named `"Admin"` carrying the - /// permission set returned by {@link PermissionSet.adminPermissions}, and a freshly minted - /// initial-admin capability is transferred to this address. Setting an admin is required before - /// {@link AuditTrailBuilder.finish} can + /// recommended admin permissions, and a freshly minted initial-admin capability is transferred + /// to this address. Setting an admin is required before {@link AuditTrailBuilder.finish} can /// produce a viable transaction; constructing the builder via /// {@link AuditTrailClient.createTrail} already seeds it with the signer address. /// @@ -152,9 +150,8 @@ impl WasmAuditTrailBuilder { /// /// @remarks /// On execution the audit-trail package shares the new trail object, seeds the reserved - /// {@link RoleMap.initialAdminRoleName | Admin} role with the permission set returned by - /// {@link PermissionSet.adminPermissions}, transfers an initial-admin capability to the - /// configured admin address, and optionally stores the initial record at sequence number + /// {@link RoleMap.initialAdminRoleName | Admin} role, transfers an initial-admin capability to + /// the configured admin address, and optionally stores the initial record at sequence number /// `0`. /// /// @returns A {@link TransactionBuilder} wrapping the {@link CreateTrail} transaction. diff --git a/bindings/wasm/audit_trail_wasm/src/trail.rs b/bindings/wasm/audit_trail_wasm/src/trail.rs index d4a39063..92eaff17 100644 --- a/bindings/wasm/audit_trail_wasm/src/trail.rs +++ b/bindings/wasm/audit_trail_wasm/src/trail.rs @@ -182,8 +182,7 @@ async fn apply_trail_created( /// /// @remarks /// On execution the audit-trail package shares the new trail object, seeds the reserved -/// {@link RoleMap.initialAdminRoleName | Admin} role with the permission set returned by -/// {@link PermissionSet.adminPermissions}, transfers a fresh initial-admin capability to +/// {@link RoleMap.initialAdminRoleName | Admin} role, transfers a fresh initial-admin capability to /// the admin address, and optionally stores the initial record at sequence number `0`, validating /// its tag against the registry. /// diff --git a/bindings/wasm/audit_trail_wasm/src/types.rs b/bindings/wasm/audit_trail_wasm/src/types.rs index f36649fa..8aa38ac6 100644 --- a/bindings/wasm/audit_trail_wasm/src/types.rs +++ b/bindings/wasm/audit_trail_wasm/src/types.rs @@ -292,12 +292,6 @@ impl WasmPermissionSet { /// Returns the recommended permission set for the reserved initial-admin role. /// - /// @remarks - /// Includes the {@link Permission.AddCapabilities}, {@link Permission.RevokeCapabilities}, - /// {@link Permission.AddRecordTags}, {@link Permission.DeleteRecordTags}, - /// {@link Permission.AddRoles}, {@link Permission.UpdateRoles}, {@link Permission.DeleteRoles} - /// and {@link Permission.Migrate} permissions. - /// /// @returns A {@link PermissionSet} that authorizes role and capability administration. #[wasm_bindgen(js_name = adminPermissions)] pub fn admin_permissions() -> Self { @@ -306,10 +300,6 @@ impl WasmPermissionSet { /// Returns the permissions needed to administer records. /// - /// @remarks - /// Includes the {@link Permission.AddRecord}, {@link Permission.DeleteRecord} and - /// {@link Permission.CorrectRecord} permissions. - /// /// @returns A {@link PermissionSet} that authorizes record reads, writes, and deletions. #[wasm_bindgen(js_name = recordAdminPermissions)] pub fn record_admin_permissions() -> Self { @@ -318,12 +308,6 @@ impl WasmPermissionSet { /// Returns the permissions needed to administer locking rules. /// - /// @remarks - /// Includes the {@link Permission.UpdateLockingConfig}, - /// {@link Permission.UpdateLockingConfigForDeleteTrail}, - /// {@link Permission.UpdateLockingConfigForDeleteRecord} and - /// {@link Permission.UpdateLockingConfigForWrite} permissions. - /// /// @returns A {@link PermissionSet} that authorizes updates to all locking dimensions. #[wasm_bindgen(js_name = lockingAdminPermissions)] pub fn locking_admin_permissions() -> Self { @@ -332,10 +316,6 @@ impl WasmPermissionSet { /// Returns the permissions needed to administer roles. /// - /// @remarks - /// Includes the {@link Permission.AddRoles}, {@link Permission.UpdateRoles} and - /// {@link Permission.DeleteRoles} permissions. - /// /// @returns A {@link PermissionSet} that authorizes adding, updating, and deleting roles. #[wasm_bindgen(js_name = roleAdminPermissions)] pub fn role_admin_permissions() -> Self { @@ -344,10 +324,6 @@ impl WasmPermissionSet { /// Returns the permissions needed to issue and revoke capabilities. /// - /// @remarks - /// Includes the {@link Permission.AddCapabilities} and {@link Permission.RevokeCapabilities} - /// permissions. - /// /// @returns A {@link PermissionSet} that authorizes the capability lifecycle. #[wasm_bindgen(js_name = capAdminPermissions)] pub fn cap_admin_permissions() -> Self { @@ -356,10 +332,6 @@ impl WasmPermissionSet { /// Returns the permissions needed to administer mutable metadata. /// - /// @remarks - /// Includes the {@link Permission.UpdateMetadata} and {@link Permission.DeleteMetadata} - /// permissions. - /// /// @returns A {@link PermissionSet} that authorizes updating and clearing /// `updatableMetadata`. #[wasm_bindgen(js_name = metadataAdminPermissions)] @@ -369,10 +341,6 @@ impl WasmPermissionSet { /// Returns the permissions needed to administer record tags. /// - /// @remarks - /// Includes the {@link Permission.AddRecordTags} and {@link Permission.DeleteRecordTags} - /// permissions. - /// /// @returns A {@link PermissionSet} that authorizes adding and removing entries from the /// trail's record-tag registry. #[wasm_bindgen(js_name = tagAdminPermissions)] From 49392eaf2444a34eb8a36fd01a86821cbb298c6e Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Tue, 2 Jun 2026 16:26:07 +0200 Subject: [PATCH 11/15] Rename the Audit Trails Move package address to `audit_trails` --- .claude/skills/sync-product-docs/SKILL.md | 2 +- .claude/skills/update-api-mapping/SKILL.md | 2 +- MOVE-DOC-STYLEGUIDE.md | 4 +- audit-trail-move/Move.toml | 2 +- audit-trail-move/README.md | 10 +- audit-trail-move/api_mapping.toml | 244 +++++++++--------- audit-trail-move/scripts/publish_package.sh | 2 +- audit-trail-move/sources/audit_trail.move | 4 +- audit-trail-move/sources/locking.move | 2 +- audit-trail-move/sources/permission.move | 2 +- audit-trail-move/sources/record.move | 4 +- audit-trail-move/sources/record_tags.move | 4 +- audit-trail-move/tests/capability_tests.move | 22 +- .../tests/create_audit_trail_tests.move | 16 +- audit-trail-move/tests/locking_tests.move | 10 +- audit-trail-move/tests/metadata_tests.move | 8 +- audit-trail-move/tests/permission_tests.move | 4 +- audit-trail-move/tests/record_tests.move | 20 +- audit-trail-move/tests/role_tests.move | 20 +- audit-trail-move/tests/test_utils.move | 4 +- audit-trail-rs/src/core/types/permission.rs | 2 +- audit-trail-rs/src/package.rs | 2 +- audit-trail-rs/tests/e2e/client.rs | 6 +- .../wasm/audit_trail_wasm/examples/README.md | 12 +- 24 files changed, 204 insertions(+), 204 deletions(-) diff --git a/.claude/skills/sync-product-docs/SKILL.md b/.claude/skills/sync-product-docs/SKILL.md index f7657747..2b40fb85 100644 --- a/.claude/skills/sync-product-docs/SKILL.md +++ b/.claude/skills/sync-product-docs/SKILL.md @@ -254,7 +254,7 @@ is exactly how drift survives a commit that "already updated the docs". ## What "aligned" looks like — example -For an entry `[audit_trail.locking.new]` (the `LockingConfig::new` +For an entry `[audit_trails.locking.new]` (the `LockingConfig::new` constructor): - **Move** (`/locking.move`): "Create a new locking diff --git a/.claude/skills/update-api-mapping/SKILL.md b/.claude/skills/update-api-mapping/SKILL.md index 44b4e5a3..4a110e1c 100644 --- a/.claude/skills/update-api-mapping/SKILL.md +++ b/.claude/skills/update-api-mapping/SKILL.md @@ -255,7 +255,7 @@ Expected behavior: 3. Find e.g. an added `public fun pause_trail` in `audit_trail.move`, an added `PauseTrail` struct + `PauseTrail::new` in `audit-trail-rs/src`, and `WasmPauseTrail` with the usual two methods in the WASM crate. -4. Propose a new `[audit_trail.main.pause_trail]` section with both arrays +4. Propose a new `[audit_trails.main.pause_trail]` section with both arrays prefilled. 5. Find e.g. that `delete_records_batch`'s removed Rust helper `TrailRecords::delete_batch_legacy` should be dropped from the existing diff --git a/MOVE-DOC-STYLEGUIDE.md b/MOVE-DOC-STYLEGUIDE.md index b69b0275..0305b83f 100644 --- a/MOVE-DOC-STYLEGUIDE.md +++ b/MOVE-DOC-STYLEGUIDE.md @@ -172,7 +172,7 @@ For `Option` returns, document both branches: abort list. The reader can follow the reference; we don't drift out of sync. - Inside the same module, omit the module prefix - (`` `add_record` `` rather than `` `audit_trail::main::add_record` ``). + (`` `add_record` `` rather than `` `audit_trails::main::add_record` ``). - Refer to permission variants by their bare enum name in backticks (`` `AddFoo` `` rather than `` `Permission::AddFoo` ``) — the context makes the type unambiguous and matches the permission constants @@ -199,7 +199,7 @@ For `Option` returns, document both branches: Field docs follow the same brevity rules as function summaries. - Error constants (`#[error] const E…`) carry the user-facing abort message; no separate doc comment is required when the message is self-explanatory. -- Module-level docs (the `///` block above `module audit_trail::…;`) must +- Module-level docs (the `///` block above `module audit_trails::…;`) must describe the module's purpose in one or two sentences. ## Don'ts diff --git a/audit-trail-move/Move.toml b/audit-trail-move/Move.toml index 78e54635..0596d836 100644 --- a/audit-trail-move/Move.toml +++ b/audit-trail-move/Move.toml @@ -6,4 +6,4 @@ edition = "2024.beta" TfComponents = { git = "https://github.com/iotaledger/product-core.git", subdir = "components_move", rev = "v0.8.19" } [addresses] -audit_trail = "0x0" +audit_trails = "0x0" diff --git a/audit-trail-move/README.md b/audit-trail-move/README.md index 66d404ad..844aad3e 100644 --- a/audit-trail-move/README.md +++ b/audit-trail-move/README.md @@ -35,15 +35,15 @@ The package depends on `TfComponents` for reusable capability, role-map, and tim ## Modules -- `audit_trail::main` +- `audit_trails::main` Core shared object, events, trail lifecycle, record mutation, metadata updates, roles, and capabilities. -- `audit_trail::record` +- `audit_trails::record` Record payloads, initial records, and correction metadata. -- `audit_trail::locking` +- `audit_trails::locking` Locking configuration and lock evaluation helpers. -- `audit_trail::permission` +- `audit_trails::permission` Permission constructors and admin permission presets. -- `audit_trail::record_tags` +- `audit_trails::record_tags` Tag registry and role tag helpers. ## Development And Testing diff --git a/audit-trail-move/api_mapping.toml b/audit-trail-move/api_mapping.toml index 6e348685..9a0bfdb3 100644 --- a/audit-trail-move/api_mapping.toml +++ b/audit-trail-move/api_mapping.toml @@ -30,10 +30,10 @@ # the `update-api-mapping` and `sync-product-docs` skills under `.claude/skills/`. # ============================================================================= -# Module: audit_trail::main (audit-trail-move/sources/audit_trail.move) +# Module: audit_trails::main (audit-trail-move/sources/audit_trail.move) # ============================================================================= -[audit_trail.main.ImmutableMetadata] +[audit_trails.main.ImmutableMetadata] rust = [ "ImmutableMetadata", "ImmutableMetadata::new", @@ -44,7 +44,7 @@ wasm = [ "WasmImmutableMetadata", ] -[audit_trail.main.AuditTrail] +[audit_trails.main.AuditTrail] rust = [ "OnChainAuditTrail", "AuditTrailHandle", @@ -77,7 +77,7 @@ wasm = [ "WasmAuditTrailHandle::tags", ] -[audit_trail.main.AuditTrailCreated] +[audit_trails.main.AuditTrailCreated] rust = [ "AuditTrailCreated", "TrailCreated", @@ -87,7 +87,7 @@ wasm = [ "WasmAuditTrailCreated", ] -[audit_trail.main.AuditTrailDeleted] +[audit_trails.main.AuditTrailDeleted] rust = [ "AuditTrailDeleted", ] @@ -95,7 +95,7 @@ wasm = [ "WasmAuditTrailDeleted", ] -[audit_trail.main.RecordAdded] +[audit_trails.main.RecordAdded] rust = [ "RecordAdded", ] @@ -103,7 +103,7 @@ wasm = [ "WasmRecordAdded", ] -[audit_trail.main.RecordDeleted] +[audit_trails.main.RecordDeleted] rust = [ "RecordDeleted", ] @@ -111,7 +111,7 @@ wasm = [ "WasmRecordDeleted", ] -[audit_trail.main.RevokedCapabilitiesCleanedUp] +[audit_trails.main.RevokedCapabilitiesCleanedUp] rust = [ "RevokedCapabilitiesCleanedUp", ] @@ -119,7 +119,7 @@ wasm = [ "WasmRevokedCapabilitiesCleanedUp", ] -[audit_trail.main.CapabilityIssuedReceipt] +[audit_trails.main.CapabilityIssuedReceipt] rust = [ "CapabilityIssued", ] @@ -127,7 +127,7 @@ wasm = [ "WasmCapabilityIssued", ] -[audit_trail.main.new_trail_metadata] +[audit_trails.main.new_trail_metadata] rust = [ "ImmutableMetadata::new", "ImmutableMetadata::to_ptb", @@ -139,7 +139,7 @@ wasm = [ "WasmAuditTrailBuilder::with_trail_metadata", ] -[audit_trail.main.create] +[audit_trails.main.create] rust = [ "AuditTrailBuilder", "AuditTrailBuilder::with_initial_record", @@ -176,7 +176,7 @@ wasm = [ "WasmAuditTrailClient::trail", ] -[audit_trail.main.initial_admin_role_name] +[audit_trails.main.initial_admin_role_name] rust = [ "RoleMap.initial_admin_role_name", ] @@ -184,7 +184,7 @@ wasm = [ "WasmRoleMap.initial_admin_role_name", ] -[audit_trail.main.migrate] +[audit_trails.main.migrate] rust = [ "Migrate", "Migrate::new", @@ -197,7 +197,7 @@ wasm = [ "WasmAuditTrailHandle::migrate", ] -[audit_trail.main.add_record] +[audit_trails.main.add_record] rust = [ "AddRecord", "AddRecord::new", @@ -210,7 +210,7 @@ wasm = [ "WasmTrailRecords::add", ] -[audit_trail.main.delete_record] +[audit_trails.main.delete_record] rust = [ "DeleteRecord", "DeleteRecord::new", @@ -223,7 +223,7 @@ wasm = [ "WasmTrailRecords::delete", ] -[audit_trail.main.delete_records_batch] +[audit_trails.main.delete_records_batch] rust = [ "DeleteRecordsBatch", "DeleteRecordsBatch::new", @@ -236,7 +236,7 @@ wasm = [ "WasmTrailRecords::delete_batch", ] -[audit_trail.main.delete_audit_trail] +[audit_trails.main.delete_audit_trail] rust = [ "DeleteAuditTrail", "DeleteAuditTrail::new", @@ -249,7 +249,7 @@ wasm = [ "WasmAuditTrailHandle::delete_audit_trail", ] -[audit_trail.main.is_record_locked] +[audit_trails.main.is_record_locked] rust = [ "TrailLocking::is_record_locked", ] @@ -257,7 +257,7 @@ wasm = [ "WasmTrailLocking::is_record_locked", ] -[audit_trail.main.update_locking_config] +[audit_trails.main.update_locking_config] rust = [ "UpdateLockingConfig", "UpdateLockingConfig::new", @@ -270,7 +270,7 @@ wasm = [ "WasmTrailLocking::update", ] -[audit_trail.main.update_delete_record_window] +[audit_trails.main.update_delete_record_window] rust = [ "UpdateDeleteRecordWindow", "UpdateDeleteRecordWindow::new", @@ -283,7 +283,7 @@ wasm = [ "WasmTrailLocking::update_delete_record_window", ] -[audit_trail.main.update_delete_trail_lock] +[audit_trails.main.update_delete_trail_lock] rust = [ "UpdateDeleteTrailLock", "UpdateDeleteTrailLock::new", @@ -296,7 +296,7 @@ wasm = [ "WasmTrailLocking::update_delete_trail_lock", ] -[audit_trail.main.update_write_lock] +[audit_trails.main.update_write_lock] rust = [ "UpdateWriteLock", "UpdateWriteLock::new", @@ -309,7 +309,7 @@ wasm = [ "WasmTrailLocking::update_write_lock", ] -[audit_trail.main.update_metadata] +[audit_trails.main.update_metadata] rust = [ "UpdateMetadata", "UpdateMetadata::new", @@ -322,7 +322,7 @@ wasm = [ "WasmAuditTrailHandle::update_metadata", ] -[audit_trail.main.add_record_tag] +[audit_trails.main.add_record_tag] rust = [ "AddRecordTag", "AddRecordTag::new", @@ -335,7 +335,7 @@ wasm = [ "WasmTrailTags::add", ] -[audit_trail.main.remove_record_tag] +[audit_trails.main.remove_record_tag] rust = [ "RemoveRecordTag", "RemoveRecordTag::new", @@ -348,7 +348,7 @@ wasm = [ "WasmTrailTags::remove", ] -[audit_trail.main.create_role] +[audit_trails.main.create_role] rust = [ "CreateRole", "CreateRole::new", @@ -363,7 +363,7 @@ wasm = [ "WasmTrailAccess::for_role", ] -[audit_trail.main.update_role_permissions] +[audit_trails.main.update_role_permissions] rust = [ "UpdateRole", "UpdateRole::new", @@ -376,7 +376,7 @@ wasm = [ "WasmRoleHandle::update_permissions", ] -[audit_trail.main.delete_role] +[audit_trails.main.delete_role] rust = [ "DeleteRole", "DeleteRole::new", @@ -389,7 +389,7 @@ wasm = [ "WasmRoleHandle::delete", ] -[audit_trail.main.new_capability] +[audit_trails.main.new_capability] rust = [ "IssueCapability", "IssueCapability::new", @@ -406,7 +406,7 @@ wasm = [ "WasmCapabilityIssued", ] -[audit_trail.main.revoke_capability] +[audit_trails.main.revoke_capability] rust = [ "RevokeCapability", "RevokeCapability::new", @@ -421,7 +421,7 @@ wasm = [ "WasmCapabilityRevoked", ] -[audit_trail.main.destroy_capability] +[audit_trails.main.destroy_capability] rust = [ "DestroyCapability", "DestroyCapability::new", @@ -436,7 +436,7 @@ wasm = [ "WasmCapabilityDestroyed", ] -[audit_trail.main.destroy_initial_admin_capability] +[audit_trails.main.destroy_initial_admin_capability] rust = [ "DestroyInitialAdminCapability", "DestroyInitialAdminCapability::new", @@ -449,7 +449,7 @@ wasm = [ "WasmTrailAccess::destroy_initial_admin_capability", ] -[audit_trail.main.revoke_initial_admin_capability] +[audit_trails.main.revoke_initial_admin_capability] rust = [ "RevokeInitialAdminCapability", "RevokeInitialAdminCapability::new", @@ -462,7 +462,7 @@ wasm = [ "WasmTrailAccess::revoke_initial_admin_capability", ] -[audit_trail.main.cleanup_revoked_capabilities] +[audit_trails.main.cleanup_revoked_capabilities] rust = [ "CleanupRevokedCapabilities", "CleanupRevokedCapabilities::new", @@ -475,7 +475,7 @@ wasm = [ "WasmTrailAccess::cleanup_revoked_capabilities", ] -[audit_trail.main.record_count] +[audit_trails.main.record_count] rust = [ "TrailRecords::record_count", ] @@ -483,7 +483,7 @@ wasm = [ "WasmTrailRecords::record_count", ] -[audit_trail.main.sequence_number] +[audit_trails.main.sequence_number] rust = [ "OnChainAuditTrail.sequence_number", ] @@ -491,7 +491,7 @@ wasm = [ "WasmOnChainAuditTrail::sequence_number", ] -[audit_trail.main.creator] +[audit_trails.main.creator] rust = [ "OnChainAuditTrail.creator", ] @@ -499,7 +499,7 @@ wasm = [ "WasmOnChainAuditTrail::creator", ] -[audit_trail.main.created_at] +[audit_trails.main.created_at] rust = [ "OnChainAuditTrail.created_at", ] @@ -507,7 +507,7 @@ wasm = [ "WasmOnChainAuditTrail::created_at", ] -[audit_trail.main.id] +[audit_trails.main.id] rust = [ "OnChainAuditTrail.id", ] @@ -515,7 +515,7 @@ wasm = [ "WasmOnChainAuditTrail::id", ] -[audit_trail.main.name] +[audit_trails.main.name] rust = [ "OnChainAuditTrail.immutable_metadata", "ImmutableMetadata.name", @@ -525,7 +525,7 @@ wasm = [ "WasmImmutableMetadata.name", ] -[audit_trail.main.description] +[audit_trails.main.description] rust = [ "OnChainAuditTrail.immutable_metadata", "ImmutableMetadata.description", @@ -535,7 +535,7 @@ wasm = [ "WasmImmutableMetadata.description", ] -[audit_trail.main.metadata] +[audit_trails.main.metadata] rust = [ "OnChainAuditTrail.updatable_metadata", ] @@ -543,7 +543,7 @@ wasm = [ "WasmOnChainAuditTrail::updatable_metadata", ] -[audit_trail.main.locking_config] +[audit_trails.main.locking_config] rust = [ "OnChainAuditTrail.locking_config", "TrailLocking", @@ -553,7 +553,7 @@ wasm = [ "WasmTrailLocking", ] -[audit_trail.main.tags] +[audit_trails.main.tags] rust = [ "OnChainAuditTrail.tags", "TagRegistry", @@ -564,7 +564,7 @@ wasm = [ "WasmRecordTagEntry", ] -[audit_trail.main.is_empty] +[audit_trails.main.is_empty] rust = [ "OnChainAuditTrail.records", "TrailRecords::record_count", @@ -573,7 +573,7 @@ wasm = [ "WasmTrailRecords::record_count", ] -[audit_trail.main.first_sequence] +[audit_trails.main.first_sequence] rust = [ "OnChainAuditTrail.records", ] @@ -581,7 +581,7 @@ wasm = [ "WasmLinkedTable.head", ] -[audit_trail.main.last_sequence] +[audit_trails.main.last_sequence] rust = [ "OnChainAuditTrail.records", ] @@ -589,7 +589,7 @@ wasm = [ "WasmLinkedTable.tail", ] -[audit_trail.main.get_record] +[audit_trails.main.get_record] rust = [ "TrailRecords::get", ] @@ -597,7 +597,7 @@ wasm = [ "WasmTrailRecords::get", ] -[audit_trail.main.has_record] +[audit_trails.main.has_record] rust = [ "TrailRecords::get", ] @@ -605,7 +605,7 @@ wasm = [ "WasmTrailRecords::get", ] -[audit_trail.main.records] +[audit_trails.main.records] rust = [ "OnChainAuditTrail.records", "TrailRecords", @@ -624,7 +624,7 @@ wasm = [ "WasmPaginatedRecord", ] -[audit_trail.main.access] +[audit_trails.main.access] rust = [ "OnChainAuditTrail.roles", "RoleMap", @@ -638,7 +638,7 @@ wasm = [ "WasmAuditTrailHandle::access", ] -[audit_trail.main.access_mut] +[audit_trails.main.access_mut] rust = [ "TrailAccess", ] @@ -647,10 +647,10 @@ wasm = [ ] # ============================================================================= -# Module: audit_trail::locking (audit-trail-move/sources/locking.move) +# Module: audit_trails::locking (audit-trail-move/sources/locking.move) # ============================================================================= -[audit_trail.locking.LockingWindow] +[audit_trails.locking.LockingWindow] rust = [ "LockingWindow", "LockingWindow::to_ptb", @@ -661,7 +661,7 @@ wasm = [ "WasmLockingWindowType", ] -[audit_trail.locking.LockingConfig] +[audit_trails.locking.LockingConfig] rust = [ "LockingConfig", "LockingConfig::to_ptb", @@ -673,7 +673,7 @@ wasm = [ "WasmLockingConfig::new", ] -[audit_trail.locking.window_none] +[audit_trails.locking.window_none] rust = [ "LockingWindow::None", ] @@ -681,7 +681,7 @@ wasm = [ "WasmLockingWindow::with_none", ] -[audit_trail.locking.window_time_based] +[audit_trails.locking.window_time_based] rust = [ "LockingWindow::TimeBased", ] @@ -689,7 +689,7 @@ wasm = [ "WasmLockingWindow::with_time_based", ] -[audit_trail.locking.window_count_based] +[audit_trails.locking.window_count_based] rust = [ "LockingWindow::CountBased", "LockingWindow::validate", @@ -698,7 +698,7 @@ wasm = [ "WasmLockingWindow::with_count_based", ] -[audit_trail.locking.new] +[audit_trails.locking.new] rust = [ "LockingConfig", "LockingConfig::to_ptb", @@ -709,19 +709,19 @@ wasm = [ "WasmLockingConfig::new", ] -[audit_trail.locking.is_delete_trail_locked] +[audit_trails.locking.is_delete_trail_locked] rust = [] wasm = [] -[audit_trail.locking.is_write_locked] +[audit_trails.locking.is_write_locked] rust = [] wasm = [] # ============================================================================= -# Module: audit_trail::permission (audit-trail-move/sources/permission.move) +# Module: audit_trails::permission (audit-trail-move/sources/permission.move) # ============================================================================= -[audit_trail.permission.Permission] +[audit_trails.permission.Permission] rust = [ "Permission", "Permission::function_name", @@ -732,7 +732,7 @@ wasm = [ "WasmPermission", ] -[audit_trail.permission.empty] +[audit_trails.permission.empty] rust = [ "PermissionSet", "PermissionSet::default", @@ -741,7 +741,7 @@ wasm = [ "WasmPermissionSet::new", ] -[audit_trail.permission.add] +[audit_trails.permission.add] rust = [ "PermissionSet.permissions", ] @@ -749,7 +749,7 @@ wasm = [ "WasmPermissionSet.permissions", ] -[audit_trail.permission.from_vec] +[audit_trails.permission.from_vec] rust = [ "PermissionSet", "PermissionSet::to_move_vec", @@ -759,7 +759,7 @@ wasm = [ "WasmPermissionSet::new", ] -[audit_trail.permission.has_permission] +[audit_trails.permission.has_permission] rust = [ "PermissionSet.permissions", ] @@ -767,7 +767,7 @@ wasm = [ "WasmPermissionSet.permissions", ] -[audit_trail.permission.admin_permissions] +[audit_trails.permission.admin_permissions] rust = [ "PermissionSet::admin_permissions", ] @@ -775,7 +775,7 @@ wasm = [ "WasmPermissionSet::admin_permissions", ] -[audit_trail.permission.record_admin_permissions] +[audit_trails.permission.record_admin_permissions] rust = [ "PermissionSet::record_admin_permissions", ] @@ -783,7 +783,7 @@ wasm = [ "WasmPermissionSet::record_admin_permissions", ] -[audit_trail.permission.locking_admin_permissions] +[audit_trails.permission.locking_admin_permissions] rust = [ "PermissionSet::locking_admin_permissions", ] @@ -791,7 +791,7 @@ wasm = [ "WasmPermissionSet::locking_admin_permissions", ] -[audit_trail.permission.role_admin_permissions] +[audit_trails.permission.role_admin_permissions] rust = [ "PermissionSet::role_admin_permissions", "RoleAdminPermissions", @@ -801,7 +801,7 @@ wasm = [ "WasmRoleAdminPermissions", ] -[audit_trail.permission.tag_admin_permissions] +[audit_trails.permission.tag_admin_permissions] rust = [ "PermissionSet::tag_admin_permissions", ] @@ -809,7 +809,7 @@ wasm = [ "WasmPermissionSet::tag_admin_permissions", ] -[audit_trail.permission.cap_admin_permissions] +[audit_trails.permission.cap_admin_permissions] rust = [ "PermissionSet::cap_admin_permissions", "CapabilityAdminPermissions", @@ -819,7 +819,7 @@ wasm = [ "WasmCapabilityAdminPermissions", ] -[audit_trail.permission.metadata_admin_permissions] +[audit_trails.permission.metadata_admin_permissions] rust = [ "PermissionSet::metadata_admin_permissions", ] @@ -827,7 +827,7 @@ wasm = [ "WasmPermissionSet::metadata_admin_permissions", ] -[audit_trail.permission.delete_audit_trail] +[audit_trails.permission.delete_audit_trail] rust = [ "Permission::DeleteAuditTrail", ] @@ -835,7 +835,7 @@ wasm = [ "WasmPermission::DeleteAuditTrail", ] -[audit_trail.permission.delete_all_records] +[audit_trails.permission.delete_all_records] rust = [ "Permission::DeleteAllRecords", ] @@ -843,7 +843,7 @@ wasm = [ "WasmPermission::DeleteAllRecords", ] -[audit_trail.permission.add_record] +[audit_trails.permission.add_record] rust = [ "Permission::AddRecord", ] @@ -851,7 +851,7 @@ wasm = [ "WasmPermission::AddRecord", ] -[audit_trail.permission.delete_record] +[audit_trails.permission.delete_record] rust = [ "Permission::DeleteRecord", ] @@ -859,7 +859,7 @@ wasm = [ "WasmPermission::DeleteRecord", ] -[audit_trail.permission.correct_record] +[audit_trails.permission.correct_record] rust = [ "Permission::CorrectRecord", ] @@ -867,7 +867,7 @@ wasm = [ "WasmPermission::CorrectRecord", ] -[audit_trail.permission.update_locking_config] +[audit_trails.permission.update_locking_config] rust = [ "Permission::UpdateLockingConfig", ] @@ -875,7 +875,7 @@ wasm = [ "WasmPermission::UpdateLockingConfig", ] -[audit_trail.permission.update_locking_config_for_delete_record] +[audit_trails.permission.update_locking_config_for_delete_record] rust = [ "Permission::UpdateLockingConfigForDeleteRecord", ] @@ -883,7 +883,7 @@ wasm = [ "WasmPermission::UpdateLockingConfigForDeleteRecord", ] -[audit_trail.permission.update_locking_config_for_delete_trail] +[audit_trails.permission.update_locking_config_for_delete_trail] rust = [ "Permission::UpdateLockingConfigForDeleteTrail", ] @@ -891,7 +891,7 @@ wasm = [ "WasmPermission::UpdateLockingConfigForDeleteTrail", ] -[audit_trail.permission.update_locking_config_for_write] +[audit_trails.permission.update_locking_config_for_write] rust = [ "Permission::UpdateLockingConfigForWrite", ] @@ -899,7 +899,7 @@ wasm = [ "WasmPermission::UpdateLockingConfigForWrite", ] -[audit_trail.permission.add_record_tags] +[audit_trails.permission.add_record_tags] rust = [ "Permission::AddRecordTags", ] @@ -907,7 +907,7 @@ wasm = [ "WasmPermission::AddRecordTags", ] -[audit_trail.permission.delete_record_tags] +[audit_trails.permission.delete_record_tags] rust = [ "Permission::DeleteRecordTags", ] @@ -915,7 +915,7 @@ wasm = [ "WasmPermission::DeleteRecordTags", ] -[audit_trail.permission.add_roles] +[audit_trails.permission.add_roles] rust = [ "Permission::AddRoles", ] @@ -923,7 +923,7 @@ wasm = [ "WasmPermission::AddRoles", ] -[audit_trail.permission.update_roles] +[audit_trails.permission.update_roles] rust = [ "Permission::UpdateRoles", ] @@ -931,7 +931,7 @@ wasm = [ "WasmPermission::UpdateRoles", ] -[audit_trail.permission.delete_roles] +[audit_trails.permission.delete_roles] rust = [ "Permission::DeleteRoles", ] @@ -939,7 +939,7 @@ wasm = [ "WasmPermission::DeleteRoles", ] -[audit_trail.permission.add_capabilities] +[audit_trails.permission.add_capabilities] rust = [ "Permission::AddCapabilities", ] @@ -947,7 +947,7 @@ wasm = [ "WasmPermission::AddCapabilities", ] -[audit_trail.permission.revoke_capabilities] +[audit_trails.permission.revoke_capabilities] rust = [ "Permission::RevokeCapabilities", ] @@ -955,7 +955,7 @@ wasm = [ "WasmPermission::RevokeCapabilities", ] -[audit_trail.permission.update_metadata] +[audit_trails.permission.update_metadata] rust = [ "Permission::UpdateMetadata", ] @@ -963,7 +963,7 @@ wasm = [ "WasmPermission::UpdateMetadata", ] -[audit_trail.permission.delete_metadata] +[audit_trails.permission.delete_metadata] rust = [ "Permission::DeleteMetadata", ] @@ -971,7 +971,7 @@ wasm = [ "WasmPermission::DeleteMetadata", ] -[audit_trail.permission.migrate_audit_trail] +[audit_trails.permission.migrate_audit_trail] rust = [ "Permission::Migrate", ] @@ -980,10 +980,10 @@ wasm = [ ] # ============================================================================= -# Module: audit_trail::record (audit-trail-move/sources/record.move) +# Module: audit_trails::record (audit-trail-move/sources/record.move) # ============================================================================= -[audit_trail.record.Data] +[audit_trails.record.Data] rust = [ "Data", "Data::tag", @@ -999,7 +999,7 @@ wasm = [ "WasmData::to_bytes", ] -[audit_trail.record.new_bytes] +[audit_trails.record.new_bytes] rust = [ "Data::bytes", "Data::Bytes", @@ -1008,7 +1008,7 @@ wasm = [ "WasmData::from_bytes", ] -[audit_trail.record.new_text] +[audit_trails.record.new_text] rust = [ "Data::text", "Data::Text", @@ -1017,7 +1017,7 @@ wasm = [ "WasmData::from_string", ] -[audit_trail.record.bytes] +[audit_trails.record.bytes] rust = [ "Data::as_bytes", "Data::Bytes", @@ -1026,7 +1026,7 @@ wasm = [ "WasmData::to_bytes", ] -[audit_trail.record.text] +[audit_trails.record.text] rust = [ "Data::as_text", "Data::Text", @@ -1035,7 +1035,7 @@ wasm = [ "WasmData::to_string", ] -[audit_trail.record.Record] +[audit_trails.record.Record] rust = [ "Record", ] @@ -1043,7 +1043,7 @@ wasm = [ "WasmRecord", ] -[audit_trail.record.InitialRecord] +[audit_trails.record.InitialRecord] rust = [ "InitialRecord", "InitialRecord::new", @@ -1057,7 +1057,7 @@ wasm = [ "WasmAuditTrailBuilder::with_initial_record_bytes", ] -[audit_trail.record.new_initial_record] +[audit_trails.record.new_initial_record] rust = [ "InitialRecord::new", "InitialRecord::into_ptb", @@ -1069,7 +1069,7 @@ wasm = [ "WasmAuditTrailBuilder::with_initial_record_bytes", ] -[audit_trail.record.data] +[audit_trails.record.data] rust = [ "Record.data", ] @@ -1077,7 +1077,7 @@ wasm = [ "WasmRecord.data", ] -[audit_trail.record.metadata] +[audit_trails.record.metadata] rust = [ "Record.metadata", ] @@ -1085,7 +1085,7 @@ wasm = [ "WasmRecord.metadata", ] -[audit_trail.record.tag] +[audit_trails.record.tag] rust = [ "Record.tag", ] @@ -1093,7 +1093,7 @@ wasm = [ "WasmRecord.tag", ] -[audit_trail.record.sequence_number] +[audit_trails.record.sequence_number] rust = [ "Record.sequence_number", ] @@ -1101,7 +1101,7 @@ wasm = [ "WasmRecord.sequence_number", ] -[audit_trail.record.added_by] +[audit_trails.record.added_by] rust = [ "Record.added_by", ] @@ -1109,7 +1109,7 @@ wasm = [ "WasmRecord.added_by", ] -[audit_trail.record.added_at] +[audit_trails.record.added_at] rust = [ "Record.added_at", ] @@ -1117,7 +1117,7 @@ wasm = [ "WasmRecord.added_at", ] -[audit_trail.record.correction] +[audit_trails.record.correction] rust = [ "Record.correction", ] @@ -1125,7 +1125,7 @@ wasm = [ "WasmRecord.correction", ] -[audit_trail.record.RecordCorrection] +[audit_trails.record.RecordCorrection] rust = [ "RecordCorrection", "RecordCorrection::with_replaces", @@ -1136,7 +1136,7 @@ wasm = [ "WasmRecordCorrection", ] -[audit_trail.record.empty] +[audit_trails.record.empty] rust = [ "RecordCorrection::default", ] @@ -1144,7 +1144,7 @@ wasm = [ "WasmRecordCorrection", ] -[audit_trail.record.with_replaces] +[audit_trails.record.with_replaces] rust = [ "RecordCorrection::with_replaces", ] @@ -1152,7 +1152,7 @@ wasm = [ "WasmRecordCorrection.replaces", ] -[audit_trail.record.replaces] +[audit_trails.record.replaces] rust = [ "RecordCorrection.replaces", ] @@ -1160,7 +1160,7 @@ wasm = [ "WasmRecordCorrection.replaces", ] -[audit_trail.record.is_replaced_by] +[audit_trails.record.is_replaced_by] rust = [ "RecordCorrection.is_replaced_by", ] @@ -1168,23 +1168,23 @@ wasm = [ "WasmRecordCorrection.is_replaced_by", ] -[audit_trail.record.is_correction] +[audit_trails.record.is_correction] rust = [ "RecordCorrection::is_correction", ] wasm = [] -[audit_trail.record.is_replaced] +[audit_trails.record.is_replaced] rust = [ "RecordCorrection::is_replaced", ] wasm = [] # ============================================================================= -# Module: audit_trail::record_tags (audit-trail-move/sources/record_tags.move) +# Module: audit_trails::record_tags (audit-trail-move/sources/record_tags.move) # ============================================================================= -[audit_trail.record_tags.RoleTags] +[audit_trails.record_tags.RoleTags] rust = [ "RoleTags", "RoleTags::new", @@ -1197,7 +1197,7 @@ wasm = [ "WasmRoleTags::new", ] -[audit_trail.record_tags.new_role_tags] +[audit_trails.record_tags.new_role_tags] rust = [ "RoleTags::new", "RoleTags::to_ptb", @@ -1206,7 +1206,7 @@ wasm = [ "WasmRoleTags::new", ] -[audit_trail.record_tags.tags] +[audit_trails.record_tags.tags] rust = [ "RoleTags.tags", ] @@ -1214,7 +1214,7 @@ wasm = [ "WasmRoleTags.tags", ] -[audit_trail.record_tags.TagRegistry] +[audit_trails.record_tags.TagRegistry] rust = [ "TagRegistry", "TagRegistry::len", @@ -1231,7 +1231,7 @@ wasm = [ "WasmOnChainAuditTrail::tags", ] -[audit_trail.record_tags.tag_map] +[audit_trails.record_tags.tag_map] rust = [ "TagRegistry.tag_map", ] diff --git a/audit-trail-move/scripts/publish_package.sh b/audit-trail-move/scripts/publish_package.sh index d29a0e3c..5996192f 100755 --- a/audit-trail-move/scripts/publish_package.sh +++ b/audit-trail-move/scripts/publish_package.sh @@ -33,7 +33,7 @@ audit_trail_package_id=$( if [[ -z "$audit_trail_package_id" || "$audit_trail_package_id" == "null" ]]; then echo "$response" >&2 - echo "failed to extract audit_trail package ID from publish response" >&2 + echo "failed to extract IotaAuditTrails package ID from publish response" >&2 exit 1 fi diff --git a/audit-trail-move/sources/audit_trail.move b/audit-trail-move/sources/audit_trail.move index fa7dea3d..f3cd4914 100644 --- a/audit-trail-move/sources/audit_trail.move +++ b/audit-trail-move/sources/audit_trail.move @@ -5,9 +5,9 @@ /// A trail is a tamper-proof, sequential chain of notarized records where each /// entry references its predecessor, ensuring verifiable continuity and /// integrity. -module audit_trail::main; +module audit_trails::main; -use audit_trail::{ +use audit_trails::{ locking::{ Self, LockingConfig, diff --git a/audit-trail-move/sources/locking.move b/audit-trail-move/sources/locking.move index 4147d639..171b979c 100644 --- a/audit-trail-move/sources/locking.move +++ b/audit-trail-move/sources/locking.move @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 /// Locking configuration for audit trail records -module audit_trail::locking; +module audit_trails::locking; use iota::clock::Clock; use tf_components::timelock::{Self, TimeLock}; diff --git a/audit-trail-move/sources/permission.move b/audit-trail-move/sources/permission.move index 60fa96a1..a0e753bd 100644 --- a/audit-trail-move/sources/permission.move +++ b/audit-trail-move/sources/permission.move @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 /// Permission system for role-based access control -module audit_trail::permission; +module audit_trails::permission; use iota::vec_set::{Self, VecSet}; diff --git a/audit-trail-move/sources/record.move b/audit-trail-move/sources/record.move index 837c24f5..c15c24d9 100644 --- a/audit-trail-move/sources/record.move +++ b/audit-trail-move/sources/record.move @@ -5,7 +5,7 @@ /// /// A Record represents a single entry in an audit trail, stored in a /// LinkedTable and addressed by trail_id + sequence_number. -module audit_trail::record; +module audit_trails::record; use iota::vec_set::{Self, VecSet}; use std::string::String; @@ -79,7 +79,7 @@ public struct InitialRecord has copy, drop, store { // ===== Constructors ===== -/// Creates an `InitialRecord` to be passed to `audit_trail::create`. +/// Creates an `InitialRecord` to be passed to `audit_trails::create`. /// /// Returns the constructed `InitialRecord`. public fun new_initial_record( diff --git a/audit-trail-move/sources/record_tags.move b/audit-trail-move/sources/record_tags.move index 4c4999e6..b59acdd1 100644 --- a/audit-trail-move/sources/record_tags.move +++ b/audit-trail-move/sources/record_tags.move @@ -2,9 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 /// Record tag types and helper predicates for Audit Trails. -module audit_trail::record_tags; +module audit_trails::record_tags; -use audit_trail::permission::Permission; +use audit_trails::permission::Permission; use iota::{vec_map::{Self, VecMap}, vec_set::{Self, VecSet}}; use std::string::String; use tf_components::{capability::Capability, role_map::{Self, RoleMap}}; diff --git a/audit-trail-move/tests/capability_tests.move b/audit-trail-move/tests/capability_tests.move index 8613e6d4..ced8d580 100644 --- a/audit-trail-move/tests/capability_tests.move +++ b/audit-trail-move/tests/capability_tests.move @@ -1,8 +1,8 @@ #[allow(lint(abort_without_constant))] #[test_only] -module audit_trail::capability_tests; +module audit_trails::capability_tests; -use audit_trail::{ +use audit_trails::{ locking, main::AuditTrail, permission, @@ -512,7 +512,7 @@ fun test_capability_lifecycle() { ts::end(scenario); } -#[test, expected_failure(abort_code = audit_trail::role_map::ECapabilityIssuedToMismatch)] +#[test, expected_failure(abort_code = audit_trails::role_map::ECapabilityIssuedToMismatch)] fun test_capability_issued_to_only() { let admin_user = @0xAD; let authorized_user = @0xB0B; @@ -594,7 +594,7 @@ fun test_capability_issued_to_only() { // ===== Error Case Tests ===== #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityHasBeenRevoked)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityHasBeenRevoked)] fun test_revoked_capability_cannot_be_used() { let admin_user = @0xAD; let user = @0xB0B; @@ -686,7 +686,7 @@ fun test_revoked_capability_cannot_be_used() { } #[test] -#[expected_failure(abort_code = audit_trail::role_map::ERoleDoesNotExist)] +#[expected_failure(abort_code = audit_trails::role_map::ERoleDoesNotExist)] fun test_new_capability_for_nonexistent_role() { let admin_user = @0xAD; @@ -726,7 +726,7 @@ fun test_new_capability_for_nonexistent_role() { } #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityPermissionDenied)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityPermissionDenied)] fun test_revoke_capability_permission_denied() { let admin_user = @0xAD; let user1 = @0xB0B; @@ -825,7 +825,7 @@ fun test_revoke_capability_permission_denied() { } #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityPermissionDenied)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityPermissionDenied)] fun test_new_capability_permission_denied() { let admin_user = @0xAD; let user = @0xB0B; @@ -912,7 +912,7 @@ fun test_new_capability_permission_denied() { /// - Capability can be used after valid_from timestamp /// - Capability is not restricted by address or end time /// - Capability cannot be used before valid_from timestamp -#[test, expected_failure(abort_code = audit_trail::role_map::ECapabilityTimeConstraintsNotMet)] +#[test, expected_failure(abort_code = audit_trails::role_map::ECapabilityTimeConstraintsNotMet)] fun test_capability_valid_from_only() { let admin_user = @0xAD; let user = @0xB0B; @@ -998,7 +998,7 @@ fun test_capability_valid_from_only() { /// - Capability can be used before valid_until timestamp /// - Capability is not restricted by address or start time /// - Capability cannot be used after valid_until timestamp -#[test, expected_failure(abort_code = audit_trail::role_map::ECapabilityTimeConstraintsNotMet)] +#[test, expected_failure(abort_code = audit_trails::role_map::ECapabilityTimeConstraintsNotMet)] fun test_capability_valid_until_only() { let admin_user = @0xAD; let user = @0xB0B; @@ -1125,7 +1125,7 @@ fun test_capability_time_window() { /// /// This test validates: /// - Capability cannot be used before valid_from -#[test, expected_failure(abort_code = audit_trail::role_map::ECapabilityTimeConstraintsNotMet)] +#[test, expected_failure(abort_code = audit_trails::role_map::ECapabilityTimeConstraintsNotMet)] fun test_capability_time_window_before_valid_from() { let admin_user = @0xAD; let user = @0xB0B; @@ -1170,7 +1170,7 @@ fun test_capability_time_window_before_valid_from() { /// /// This test validates: /// - Capability cannot be used after valid_until -#[test, expected_failure(abort_code = audit_trail::role_map::ECapabilityTimeConstraintsNotMet)] +#[test, expected_failure(abort_code = audit_trails::role_map::ECapabilityTimeConstraintsNotMet)] fun test_capability_time_window_after_valid_until() { let admin_user = @0xAD; let user = @0xB0B; diff --git a/audit-trail-move/tests/create_audit_trail_tests.move b/audit-trail-move/tests/create_audit_trail_tests.move index 77145163..1f557637 100644 --- a/audit-trail-move/tests/create_audit_trail_tests.move +++ b/audit-trail-move/tests/create_audit_trail_tests.move @@ -1,8 +1,8 @@ #[allow(lint(abort_without_constant))] #[test_only] -module audit_trail::create_audit_trail_tests; +module audit_trails::create_audit_trail_tests; -use audit_trail::{ +use audit_trails::{ locking, main::{Self, AuditTrail, initial_admin_role_name}, permission, @@ -236,7 +236,7 @@ fun test_create_with_tagged_initial_record_tracks_tag_usage() { ts::end(scenario); } -#[test, expected_failure(abort_code = audit_trail::main::ERecordTagInUse)] +#[test, expected_failure(abort_code = audit_trails::main::ERecordTagInUse)] fun test_create_with_tagged_initial_record_blocks_tag_removal() { let admin = @0xD; let mut scenario = ts::begin(admin); @@ -453,7 +453,7 @@ fun test_create_metadata_admin_role() { let (admin_cap, mut trail, clock) = fetch_capability_trail_and_clock(&mut scenario); // Create the MetadataAdmin role using the admin capability let metadata_admin_role_name = string::utf8(b"MetadataAdmin"); - let metadata_admin_perms = audit_trail::permission::metadata_admin_permissions(); + let metadata_admin_perms = audit_trails::permission::metadata_admin_permissions(); trail .access_mut() @@ -471,16 +471,16 @@ fun test_create_metadata_admin_role() { // Verify the role has the correct permissions assert!( - audit_trail::permission::has_permission( + audit_trails::permission::has_permission( role_perms, - &audit_trail::permission::update_metadata(), + &audit_trails::permission::update_metadata(), ), 2, ); assert!( - audit_trail::permission::has_permission( + audit_trails::permission::has_permission( role_perms, - &audit_trail::permission::delete_metadata(), + &audit_trails::permission::delete_metadata(), ), 3, ); diff --git a/audit-trail-move/tests/locking_tests.move b/audit-trail-move/tests/locking_tests.move index 80c67c6d..6146e78d 100644 --- a/audit-trail-move/tests/locking_tests.move +++ b/audit-trail-move/tests/locking_tests.move @@ -1,8 +1,8 @@ #[allow(lint(abort_without_constant))] #[test_only] -module audit_trail::locking_tests; +module audit_trails::locking_tests; -use audit_trail::{ +use audit_trails::{ locking, main::{Self, AuditTrail}, permission, @@ -348,7 +348,7 @@ fun test_update_locking_config() { } #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityPermissionDenied)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityPermissionDenied)] fun test_update_locking_config_permission_denied() { let admin = @0xAD; let mut scenario = ts::begin(admin); @@ -495,7 +495,7 @@ fun test_update_delete_record_window() { } #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityPermissionDenied)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityPermissionDenied)] fun test_update_delete_record_window_permission_denied() { let admin = @0xAD; let mut scenario = ts::begin(admin); @@ -1117,7 +1117,7 @@ fun test_delete_records_batch_skips_locked_records() { } #[test] -#[expected_failure(abort_code = audit_trail::main::ETrailNotEmpty)] +#[expected_failure(abort_code = audit_trails::main::ETrailNotEmpty)] fun test_delete_audit_trail_fails_while_not_empty() { let admin = @0xAD; let mut scenario = ts::begin(admin); diff --git a/audit-trail-move/tests/metadata_tests.move b/audit-trail-move/tests/metadata_tests.move index 102792ab..f885c815 100644 --- a/audit-trail-move/tests/metadata_tests.move +++ b/audit-trail-move/tests/metadata_tests.move @@ -1,8 +1,8 @@ #[allow(lint(abort_without_constant))] #[test_only] -module audit_trail::metadata_tests; +module audit_trails::metadata_tests; -use audit_trail::{ +use audit_trails::{ locking, permission, test_utils::{ @@ -141,7 +141,7 @@ fun test_update_metadata_success() { // ===== Error Case Tests ===== #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityPermissionDenied)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityPermissionDenied)] fun test_update_metadata_permission_denied() { let admin_user = @0xAD; let user = @0xB0B; @@ -213,7 +213,7 @@ fun test_update_metadata_permission_denied() { } #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityHasBeenRevoked)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityHasBeenRevoked)] fun test_update_metadata_revoked_capability() { let admin_user = @0xAD; let metadata_admin_user = @0xB0B; diff --git a/audit-trail-move/tests/permission_tests.move b/audit-trail-move/tests/permission_tests.move index f8316503..38c99135 100644 --- a/audit-trail-move/tests/permission_tests.move +++ b/audit-trail-move/tests/permission_tests.move @@ -1,8 +1,8 @@ #[allow(lint(abort_without_constant))] #[test_only] -module audit_trail::permission_tests; +module audit_trails::permission_tests; -use audit_trail::permission; +use audit_trails::permission; use iota::vec_set; #[test] diff --git a/audit-trail-move/tests/record_tests.move b/audit-trail-move/tests/record_tests.move index 529f7a36..cc218ce6 100644 --- a/audit-trail-move/tests/record_tests.move +++ b/audit-trail-move/tests/record_tests.move @@ -1,8 +1,8 @@ #[allow(lint(abort_without_constant))] #[test_only] -module audit_trail::record_tests; +module audit_trails::record_tests; -use audit_trail::{ +use audit_trails::{ locking, main::{Self, AuditTrail}, permission, @@ -320,7 +320,7 @@ fun test_delete_records_batch_with_matching_role_tags() { } #[test] -#[expected_failure(abort_code = audit_trail::main::ERecordTagNotAllowed)] +#[expected_failure(abort_code = audit_trails::main::ERecordTagNotAllowed)] fun test_add_tagged_record_requires_matching_role_tags() { let admin = @0xAD; let mut scenario = ts::begin(admin); @@ -389,7 +389,7 @@ fun test_add_tagged_record_requires_matching_role_tags() { } #[test] -#[expected_failure(abort_code = audit_trail::main::ERecordTagNotAllowed)] +#[expected_failure(abort_code = audit_trails::main::ERecordTagNotAllowed)] fun test_delete_tagged_record_requires_matching_role_tags() { let admin = @0xAD; let mut scenario = ts::begin(admin); @@ -612,7 +612,7 @@ fun test_delete_records_batch_skips_records_without_matching_role_tags() { } #[test] -#[expected_failure(abort_code = audit_trail::main::ERecordTagNotDefined)] +#[expected_failure(abort_code = audit_trails::main::ERecordTagNotDefined)] fun test_add_tagged_record_requires_trail_defined_tag() { let admin = @0xAD; let mut scenario = ts::begin(admin); @@ -679,7 +679,7 @@ fun test_add_tagged_record_requires_trail_defined_tag() { } #[test] -#[expected_failure(abort_code = audit_trail::main::ERecordTagInUse)] +#[expected_failure(abort_code = audit_trails::main::ERecordTagInUse)] fun test_remove_record_tag_rejects_in_use_tag() { let admin = @0xAD; let writer = @0xB0B; @@ -845,7 +845,7 @@ fun test_add_multiple_records() { } #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityPermissionDenied)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityPermissionDenied)] fun test_add_record_permission_denied() { let admin = @0xAD; let mut scenario = ts::begin(admin); @@ -993,7 +993,7 @@ fun test_delete_record_success() { } #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityPermissionDenied)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityPermissionDenied)] fun test_delete_record_permission_denied() { let admin = @0xAD; let mut scenario = ts::begin(admin); @@ -1339,7 +1339,7 @@ fun test_delete_record_after_time_lock_expires() { // ===== Delete Records Batch Tests ===== #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityPermissionDenied)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityPermissionDenied)] fun test_delete_records_batch_requires_delete_all_records_permission() { let admin = @0xAD; let mut scenario = ts::begin(admin); @@ -1432,7 +1432,7 @@ fun test_get_record() { let trail = ts::take_shared>(&scenario); let record = trail.get_record(0); - let data = audit_trail::record::data(record); + let data = audit_trails::record::data(record); assert!(record::bytes(data) == option::some(b"Test data"), 0); diff --git a/audit-trail-move/tests/role_tests.move b/audit-trail-move/tests/role_tests.move index 67984f82..4fc47095 100644 --- a/audit-trail-move/tests/role_tests.move +++ b/audit-trail-move/tests/role_tests.move @@ -1,8 +1,8 @@ #[allow(lint(abort_without_constant))] #[test_only] -module audit_trail::role_tests; +module audit_trails::role_tests; -use audit_trail::{ +use audit_trails::{ locking, main::{initial_admin_role_name, AuditTrail}, permission, @@ -220,7 +220,7 @@ fun test_role_based_permission_delegation() { } #[test] -#[expected_failure(abort_code = audit_trail::main::ERecordTagNotDefined)] +#[expected_failure(abort_code = audit_trails::main::ERecordTagNotDefined)] fun test_create_role_rejects_undefined_record_tags() { let admin_user = @0xAD; let mut scenario = ts::begin(admin_user); @@ -325,7 +325,7 @@ fun test_delete_role_success() { } #[test] -#[expected_failure(abort_code = audit_trail::main::ERecordTagInUse)] +#[expected_failure(abort_code = audit_trails::main::ERecordTagInUse)] fun test_remove_record_tag_rejects_role_only_usage() { let admin_user = @0xAD; let mut scenario = ts::begin(admin_user); @@ -375,7 +375,7 @@ fun test_remove_record_tag_rejects_role_only_usage() { // ===== Error Case Tests ===== #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityPermissionDenied)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityPermissionDenied)] fun test_create_role_permission_denied() { let admin_user = @0xAD; let user = @0xB0B; @@ -453,7 +453,7 @@ fun test_create_role_permission_denied() { } #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityPermissionDenied)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityPermissionDenied)] fun test_delete_role_permission_denied() { let admin_user = @0xAD; let user = @0xB0B; @@ -535,7 +535,7 @@ fun test_delete_role_permission_denied() { } #[test] -#[expected_failure(abort_code = audit_trail::role_map::ECapabilityPermissionDenied)] +#[expected_failure(abort_code = audit_trails::role_map::ECapabilityPermissionDenied)] fun test_update_role_permissions_permission_denied() { let admin_user = @0xAD; let user = @0xB0B; @@ -626,7 +626,7 @@ fun test_update_role_permissions_permission_denied() { } #[test] -#[expected_failure(abort_code = audit_trail::role_map::ERoleDoesNotExist)] +#[expected_failure(abort_code = audit_trails::role_map::ERoleDoesNotExist)] fun test_get_role_permissions_nonexistent() { let admin_user = @0xAD; @@ -726,7 +726,7 @@ fun test_update_role_permissions_success() { } #[test] -#[expected_failure(abort_code = audit_trail::main::ERecordTagNotDefined)] +#[expected_failure(abort_code = audit_trails::main::ERecordTagNotDefined)] fun test_update_role_permissions_rejects_undefined_record_tags() { let admin_user = @0xAD; let mut scenario = ts::begin(admin_user); @@ -775,7 +775,7 @@ fun test_update_role_permissions_rejects_undefined_record_tags() { } #[test] -#[expected_failure(abort_code = audit_trail::role_map::ERoleDoesNotExist)] +#[expected_failure(abort_code = audit_trails::role_map::ERoleDoesNotExist)] fun test_update_role_permissions_nonexistent() { let admin_user = @0xAD; diff --git a/audit-trail-move/tests/test_utils.move b/audit-trail-move/tests/test_utils.move index 9c2f4d72..c687ccf7 100644 --- a/audit-trail-move/tests/test_utils.move +++ b/audit-trail-move/tests/test_utils.move @@ -1,7 +1,7 @@ #[test_only] -module audit_trail::test_utils; +module audit_trails::test_utils; -use audit_trail::{locking, main::{Self, AuditTrail}, record::{Self, Data}}; +use audit_trails::{locking, main::{Self, AuditTrail}, record::{Self, Data}}; use iota::{clock::{Self, Clock}, test_scenario::{Self as ts, Scenario}}; use std::string; use tf_components::{capability::Capability, role_map::RoleMap}; diff --git a/audit-trail-rs/src/core/types/permission.rs b/audit-trail-rs/src/core/types/permission.rs index 72695b00..199cdd7a 100644 --- a/audit-trail-rs/src/core/types/permission.rs +++ b/audit-trail-rs/src/core/types/permission.rs @@ -128,7 +128,7 @@ impl PermissionSet { } /// Returns the recommended permission set for the `Admin` role. /// - /// Mirrors `audit_trail::permission::admin_permissions` in the Move + /// Mirrors `audit_trails::permission::admin_permissions` in the Move /// package. This is the same set the package seeds when a trail is /// created and the initial-admin capability is minted. pub fn admin_permissions() -> Self { diff --git a/audit-trail-rs/src/package.rs b/audit-trail-rs/src/package.rs index 38d7af94..19f05ece 100644 --- a/audit-trail-rs/src/package.rs +++ b/audit-trail-rs/src/package.rs @@ -81,7 +81,7 @@ pub(crate) async fn resolve_package_ids( .or_else(|| package_registry.package_id(network)) .ok_or_else(|| { Error::InvalidConfig(format!( - "no information for a published `audit_trail` package on network {network}; try to use `AuditTrailClientReadOnly::new_with_package_overrides`" + "no information for a published `IotaAuditTrails` package on network {network}; try to use `AuditTrailClientReadOnly::new_with_package_overrides`" )) })?; let resolved_network = match chain_id.as_str() { diff --git a/audit-trail-rs/tests/e2e/client.rs b/audit-trail-rs/tests/e2e/client.rs index e1a3e103..22ce8458 100644 --- a/audit-trail-rs/tests/e2e/client.rs +++ b/audit-trail-rs/tests/e2e/client.rs @@ -48,7 +48,7 @@ async fn load_cached_package_ids(chain_id: &str) -> anyhow::Result anyhow::Result anyhow::Result { let package_id = - ObjectID::from_str(value).context("failed to parse published audit_trail package ID")?; + ObjectID::from_str(value).context("failed to parse published IotaAuditTrails package ID")?; audit_trail_package_id = Some(package_id); } "IOTA_TF_COMPONENTS_PKG_ID" => { diff --git a/bindings/wasm/audit_trail_wasm/examples/README.md b/bindings/wasm/audit_trail_wasm/examples/README.md index 2c0e4660..c48bd92a 100644 --- a/bindings/wasm/audit_trail_wasm/examples/README.md +++ b/bindings/wasm/audit_trail_wasm/examples/README.md @@ -6,12 +6,12 @@ The examples in this folder demonstrate how to use the `@iota/audit-trails` pack Set the following environment variables before running the node examples: -| Name | Required | Description | -| --------------------------- | ------------------- | ----------------------------------------------------- | -| `IOTA_AUDIT_TRAIL_PKG_ID` | yes | Package ID of the deployed `audit_trail` Move package | -| `IOTA_TF_COMPONENTS_PKG_ID` | local/custom setups | Package ID of the deployed `TfComponents` package | -| `NETWORK_URL` | yes | RPC URL of the IOTA node | -| `NETWORK_NAME_FAUCET` | local/test networks | Faucet alias used by `@iota/iota-sdk` | +| Name | Required | Description | +|-----------------------------|---------------------|-----------------------------------------------------------| +| `IOTA_AUDIT_TRAIL_PKG_ID` | yes | Package ID of the deployed `IotaAuditTrails` Move package | +| `IOTA_TF_COMPONENTS_PKG_ID` | local/custom setups | Package ID of the deployed `TfComponents` package | +| `NETWORK_URL` | yes | RPC URL of the IOTA node | +| `NETWORK_NAME_FAUCET` | local/test networks | Faucet alias used by `@iota/iota-sdk` | ## Run From ee8ba22afab068b5f1d91a3dc007bb4ba5f04227 Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Tue, 2 Jun 2026 16:40:28 +0200 Subject: [PATCH 12/15] Fix some issues resulting from the Rust crate renaming to `audit_trails` --- CLAUDE.md | 2 +- audit-trail-rs/src/core/types/RoleMap-README.md | 10 +++++----- bindings/wasm/audit_trail_wasm/README.md | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 770d740c..1404bbd8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -204,7 +204,7 @@ let cap = client Use `CapabilityIssueOptions { issued_to, valid_from_ms, valid_until_ms }` to restrict who may use the capability or set a validity window. -**Key types** (from `audit_trail::core::types`): `Data`, `InitialRecord`, `ImmutableMetadata`, `LockingConfig`, `LockingWindow`, `TimeLock`, `Permission`, `PermissionSet`, `CapabilityIssueOptions`, `RoleTags`. +**Key types** (from `audit_trails::core::types`): `Data`, `InitialRecord`, `ImmutableMetadata`, `LockingConfig`, `LockingWindow`, `TimeLock`, `Permission`, `PermissionSet`, `CapabilityIssueOptions`, `RoleTags`. ### Notarization example patterns diff --git a/audit-trail-rs/src/core/types/RoleMap-README.md b/audit-trail-rs/src/core/types/RoleMap-README.md index 4fec6838..a51b0da3 100644 --- a/audit-trail-rs/src/core/types/RoleMap-README.md +++ b/audit-trail-rs/src/core/types/RoleMap-README.md @@ -122,7 +122,7 @@ Please note: Revoked capability objects still exist on-chain but will be rejecte ### Creating a trail and obtaining the Admin capability ```rust -use audit_trail::core::types::{Data, InitialRecord, ImmutableMetadata}; +use audit_trails::core::types::{Data, InitialRecord, ImmutableMetadata}; let created = client .create_trail() @@ -139,7 +139,7 @@ let created = client ### Defining a new role ```rust -use audit_trail::core::types::PermissionSet; +use audit_trails::core::types::PermissionSet; client .trail(created.trail_id) @@ -153,7 +153,7 @@ client ### Issuing a capability ```rust -use audit_trail::core::types::CapabilityIssueOptions; +use audit_trails::core::types::CapabilityIssueOptions; // Unrestricted — any holder may use this capability let cap = client @@ -206,7 +206,7 @@ client ### Updating a role's permissions ```rust -use audit_trail::core::types::{Permission, PermissionSet}; +use audit_trails::core::types::{Permission, PermissionSet}; use std::collections::HashSet; client @@ -286,7 +286,7 @@ let created = client .output; // 2. Create a role that may only write "finance" tagged records -use audit_trail::core::types::RoleTags; +use audit_trails::core::types::RoleTags; client .trail(created.trail_id) diff --git a/bindings/wasm/audit_trail_wasm/README.md b/bindings/wasm/audit_trail_wasm/README.md index 13d1c571..37c71bdf 100644 --- a/bindings/wasm/audit_trail_wasm/README.md +++ b/bindings/wasm/audit_trail_wasm/README.md @@ -1,6 +1,6 @@ # `audit_trail_wasm` -`audit_trail_wasm` exposes the `audit_trail` Rust crate to JavaScript and TypeScript consumers through `wasm-bindgen`. +`audit_trail_wasm` exposes the `audit_trails` Rust crate to JavaScript and TypeScript consumers through `wasm-bindgen`. It is designed for browser and other `wasm32` environments that need: From 9b2537d30481c5f2bdd74cb6a9adff020e1a1c97 Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Tue, 2 Jun 2026 16:42:34 +0200 Subject: [PATCH 13/15] Fix dprint issue --- bindings/wasm/audit_trail_wasm/examples/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/wasm/audit_trail_wasm/examples/README.md b/bindings/wasm/audit_trail_wasm/examples/README.md index c48bd92a..6d1b9f1a 100644 --- a/bindings/wasm/audit_trail_wasm/examples/README.md +++ b/bindings/wasm/audit_trail_wasm/examples/README.md @@ -7,7 +7,7 @@ The examples in this folder demonstrate how to use the `@iota/audit-trails` pack Set the following environment variables before running the node examples: | Name | Required | Description | -|-----------------------------|---------------------|-----------------------------------------------------------| +| --------------------------- | ------------------- | --------------------------------------------------------- | | `IOTA_AUDIT_TRAIL_PKG_ID` | yes | Package ID of the deployed `IotaAuditTrails` Move package | | `IOTA_TF_COMPONENTS_PKG_ID` | local/custom setups | Package ID of the deployed `TfComponents` package | | `NETWORK_URL` | yes | RPC URL of the IOTA node | From a12feefce948dfe83b8ac1a71f5135029a1f304a Mon Sep 17 00:00:00 2001 From: chrisgitiota Date: Tue, 2 Jun 2026 17:15:08 +0200 Subject: [PATCH 14/15] Use qualified type names for events and errors originating from TfComponents. --- audit-trail-move/sources/audit_trail.move | 69 ++++++++++++----------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/audit-trail-move/sources/audit_trail.move b/audit-trail-move/sources/audit_trail.move index 726e1a3b..8180d692 100644 --- a/audit-trail-move/sources/audit_trail.move +++ b/audit-trail-move/sources/audit_trail.move @@ -971,7 +971,7 @@ public fun remove_record_tag( /// * `ERecordTagNotDefined` when any tag listed in `role_tags` is not in the /// trail's tag registry. /// -/// Emits a `RoleCreated` event on success. +/// Emits a `tf_components::role_map::RoleCreated` event on success. public fun create_role( self: &mut AuditTrail, cap: &Capability, @@ -1018,14 +1018,15 @@ public fun create_role( /// * `EPackageVersionMismatch` when the trail is at a different package version. /// * any error documented by `RoleMap::assert_capability_valid` when `cap` fails /// authorization checks. -/// * `ERoleDoesNotExist` when `role` is not defined on the trail. -/// * `EInitialAdminPermissionsInconsistent` when updating the initial-admin role -/// with `new_permissions` that does not include every permission configured in -/// the trail's role- and capability-admin permission sets. +/// * `tf_components::role_map::ERoleDoesNotExist` when `role` is not defined on +/// the trail. +/// * `tf_components::role_map::EInitialAdminPermissionsInconsistent` when updating +/// the initial-admin role with `new_permissions` that does not include every +/// permission configured in the trail's role- and capability-admin permission sets. /// * `ERecordTagNotDefined` when any tag in the new `role_tags` is not in the /// trail's tag registry. /// -/// Emits a `RoleUpdated` event on success. +/// Emits a `tf_components::role_map::RoleUpdated` event on success. public fun update_role_permissions( self: &mut AuditTrail, cap: &Capability, @@ -1084,11 +1085,12 @@ public fun update_role_permissions( /// * `EPackageVersionMismatch` when the trail is at a different package version. /// * any error documented by `RoleMap::assert_capability_valid` when `cap` fails /// authorization checks. -/// * `ERoleDoesNotExist` when `role` is not defined on the trail. -/// * `EInitialAdminRoleCannotBeDeleted` when targeting the reserved initial-admin -/// role. +/// * `tf_components::role_map::ERoleDoesNotExist` when `role` is not defined on +/// the trail. +/// * `tf_components::role_map::EInitialAdminRoleCannotBeDeleted` when targeting the +/// reserved initial-admin role. /// -/// Emits a `RoleDeleted` event on success. +/// Emits a `tf_components::role_map::RoleDeleted` event on success. public fun delete_role( self: &mut AuditTrail, cap: &Capability, @@ -1125,13 +1127,14 @@ public fun delete_role( /// * `EPackageVersionMismatch` when the trail is at a different package version. /// * any error documented by `RoleMap::assert_capability_valid` when `cap` fails /// authorization checks. -/// * `ERoleDoesNotExist` when `role` is not defined on the trail. +/// * `tf_components::role_map::ERoleDoesNotExist` when `role` is not defined on +/// the trail. /// * `tf_components::capability::EValidityPeriodInconsistent` when `valid_from` /// and `valid_until` are not consistent. /// -/// Emits a `CapabilityIssued` event on success. +/// Emits a `tf_components::role_map::CapabilityIssued` event on success. /// -/// Returns the same receipt that is emitted as the `CapabilityIssued` event. +/// Returns the same receipt that is emitted as the `tf_components::role_map::CapabilityIssued` event. public fun new_capability( self: &mut AuditTrail, cap: &Capability, @@ -1195,12 +1198,12 @@ public fun new_capability( /// * `EPackageVersionMismatch` when the trail is at a different package version. /// * any error documented by `RoleMap::assert_capability_valid` when `cap` fails /// authorization checks. -/// * `ECapabilityToRevokeHasAlreadyBeenRevoked` when `cap_to_revoke` is already on -/// the denylist. -/// * `EInitialAdminCapabilityMustBeExplicitlyDestroyed` when `cap_to_revoke` -/// identifies an initial admin capability. +/// * `tf_components::role_map::ECapabilityToRevokeHasAlreadyBeenRevoked` when +/// `cap_to_revoke` is already on the denylist. +/// * `tf_components::role_map::EInitialAdminCapabilityMustBeExplicitlyDestroyed` +/// when `cap_to_revoke` identifies an initial admin capability. /// -/// Emits a `CapabilityRevoked` event on success. +/// Emits a `tf_components::role_map::CapabilityRevoked` event on success. public fun revoke_capability( self: &mut AuditTrail, cap: &Capability, @@ -1232,12 +1235,12 @@ public fun revoke_capability( /// * `EPackageVersionMismatch` when the trail is at a different package version. /// * any error documented by `RoleMap::assert_capability_valid` when `cap` fails /// authorization checks. -/// * `ECapabilityTargetKeyMismatch` when `cap_to_destroy` was not issued for this -/// trail. -/// * `EInitialAdminCapabilityMustBeExplicitlyDestroyed` when `cap_to_destroy` is -/// an initial admin capability. +/// * `tf_components::role_map::ECapabilityTargetKeyMismatch` when `cap_to_destroy` +/// was not issued for this trail. +/// * `tf_components::role_map::EInitialAdminCapabilityMustBeExplicitlyDestroyed` +/// when `cap_to_destroy` is an initial admin capability. /// -/// Emits a `CapabilityDestroyed` event on success. +/// Emits a `tf_components::role_map::CapabilityDestroyed` event on success. public fun destroy_capability( self: &mut AuditTrail, cap: &Capability, @@ -1269,12 +1272,12 @@ public fun destroy_capability( /// /// Aborts with: /// * `EPackageVersionMismatch` when the trail is at a different package version. -/// * `ECapabilityTargetKeyMismatch` when `cap_to_destroy` was not issued for this -/// trail. -/// * `ECapabilityIsNotInitialAdmin` when `cap_to_destroy` is not an initial admin -/// capability. +/// * `tf_components::role_map::ECapabilityTargetKeyMismatch` when `cap_to_destroy` +/// was not issued for this trail. +/// * `tf_components::role_map::ECapabilityIsNotInitialAdmin` when `cap_to_destroy` +/// is not an initial admin capability. /// -/// Emits a `CapabilityDestroyed` event on success. +/// Emits a `tf_components::role_map::CapabilityDestroyed` event on success. public fun destroy_initial_admin_capability( self: &mut AuditTrail, cap_to_destroy: Capability, @@ -1298,12 +1301,12 @@ public fun destroy_initial_admin_capability( /// * `EPackageVersionMismatch` when the trail is at a different package version. /// * any error documented by `RoleMap::assert_capability_valid` when `cap` fails /// authorization checks. -/// * `ECapabilityIsNotInitialAdmin` when `cap_to_revoke` does not identify an -/// initial admin capability. -/// * `ECapabilityToRevokeHasAlreadyBeenRevoked` when it is already on the -/// denylist. +/// * `tf_components::role_map::ECapabilityIsNotInitialAdmin` when `cap_to_revoke` +/// does not identify an initial admin capability. +/// * `tf_components::role_map::ECapabilityToRevokeHasAlreadyBeenRevoked` when it is +/// already on the denylist. /// -/// Emits a `CapabilityRevoked` event on success. +/// Emits a `tf_components::role_map::CapabilityRevoked` event on success. public fun revoke_initial_admin_capability( self: &mut AuditTrail, cap: &Capability, From 292fb92c54a0fb394b7f38ef6abc8c0b1c6ecd9a Mon Sep 17 00:00:00 2001 From: Christof Gerritsma Date: Tue, 2 Jun 2026 21:09:44 +0200 Subject: [PATCH 15/15] Update bindings/wasm/audit_trail_wasm/README.md Co-authored-by: Yasir --- bindings/wasm/audit_trail_wasm/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/wasm/audit_trail_wasm/README.md b/bindings/wasm/audit_trail_wasm/README.md index 37c71bdf..ec7acb02 100644 --- a/bindings/wasm/audit_trail_wasm/README.md +++ b/bindings/wasm/audit_trail_wasm/README.md @@ -53,7 +53,7 @@ The package intentionally separates transaction construction from submission so ## Minimal TypeScript shape ```ts -import { AuditTrailClientReadOnly } from "@iota/audit-trails-wasm"; +import { AuditTrailClientReadOnly } from "@iota/audit-trails"; const client = await AuditTrailClientReadOnly.create(iotaClient); const trail = client.trail(trailId);