Upstream Updates - Mon Sep 23 00:14:11 UTC 2024
github-actions opened this issue · 0 comments
github-actions commented
SIMD
Opened
Closed
Agave Wiki
16be93126e24ecfa3c24e278c99a746931fef6de^..70edbc2cf2c6cb17c7e5d8daf6c098387a59b531
diff --git a/Feature-Gate-Activation-Guidelines.md b/Feature-Gate-Activation-Guidelines.md
new file mode 100644
index 0000000..3087a09
--- /dev/null
+++ b/Feature-Gate-Activation-Guidelines.md
@@ -0,0 +1,19 @@
+# Feature Gate Activation Guidelines
+
+Feature gate activations are prioritized and scheduled in the [Feature Gate Tracker](https://github.com/orgs/anza-xyz/projects/9). Access to the Tracker is restricted because activations are often affected by security concerns which can't be discussed openly. In order to be as transparent as possible we:
+1. Publish the [Feature Gate Tracker Schedule](Feature-Gate-Tracker-Schedule)
+1. Post in `#<cluster>-feature-gates` on Discord
+1. Publish these guidelines for how feature gates are scheduled
+
+The scheduling of feature gate activations is be based on the following principles:
+
+- Feature gates are ordered by priority.
+- Feature gates must be activated in the same order on each network.
+- Feature gates must be activated on testnet, then devnet, then finally mainnet-beta.
+- Some feature gates will need to be soaked before being activated on the next network, soaking will delay all lower-priority feature gates, exceptions will occur.
+- Feature gates should be activated one at a time per network, exceptions will occur.
+- Feature gate are generally not activated at epoch boundaries that occur on a weekend.
+
+There are exceptions to these guidelines.
+
+If you believe you should have access to the [Feature Gate Tracker](https://github.com/orgs/anza-xyz/projects/9) please contact the Anza devops team in [Solana Discord #devops](https://discord.com/channels/428295358100013066/560503042458517505). If you have concerns about a specific feature gate please contact its owner or another core contributor.
No newline at end of file
diff --git a/Feature-Gate-Activation-Process.md b/Feature-Gate-Activation-Process.md
index fef31e2..44f1f6b 100644
--- a/Feature-Gate-Activation-Process.md
+++ b/Feature-Gate-Activation-Process.md
@@ -14,7 +14,7 @@ Run `solana feature status -u[tdm]` to see if feature gate activation is allowed
### 2. Ensure the feature gate is scheduled to be activated
-Refer to the [Feature Gate Activation Schedule] to make sure this feature gate is next to be activated. If not, do not proceed without further coordination in `#<cluster>-feature-gates` on the [Solana Discord].
+Refer to the [Feature Gate Tracker Schedule] to make sure this feature gate is next to be activated. If not, do not proceed without further coordination in `#<cluster>-feature-gates` on the [Solana Discord].
### 3. Message intent-to-activate in `#<cluster>-feature-gates`
@@ -60,15 +60,15 @@ Suggested timing: 12 hours before epoch boundary
Perform the feature gate activation. Plan to be available and around at the next epoch boundary to ensure the activation goes smoothly.
-Message in `#<cluster>-feature-gates` and the appropriate `#<cluster>-announcements` that the feature gate has been activated
+Message in `#<cluster>-feature-gates` that the feature gate has been activated. If you expect significant forking post another reminder in the appropriate `#<cluster>-announcements` channel.
### 6. Post-activation tasks
-1. Update the [Feature Gate Activation Schedule]
-2. Update the feature Gate's PR for the activation epoch
-3. In case it was the last activation of the feature, open a PR to remove its feature gating logic on master. But leave its key and description in [feature_set.rs](https://github.com/anza-xyz/agave/blob/master/sdk/src/feature_set.rs).
+1. Update Status and Epoch fields in the the [Feature Gate Tracker]
+3. In case it was the last activation of the feature gate, open a PR to remove its feature gating logic on master. But leave its key and description in [sdk/feature-set/src/lib.rs](https://github.com/anza-xyz/agave/blob/master/sdk/feature-set/src/lib.rs)
-[Feature Gate Activation Schedule]: https://github.com/anza-xyz/agave/wiki/Feature-Gate-Activation-Schedule
+[Feature Gate Tracker Schedule]: https://github.com/anza-xyz/agave/wiki/Feature-Gate-Tracker-Schedule
+[Feature Gate Tracker]: https://github.com/orgs/anza-xyz/projects/9
[Solana Discord]: https://discordapp.com/invite/pquxPsq
[`#mb-announcements`]: https://discord.com/channels/428295358100013066/669406841830244375
[`#testnet-announcements`]: https://discord.com/channels/428295358100013066/594138785558691840
diff --git a/Feature-Gate-Activation-Schedule.md b/Feature-Gate-Activation-Schedule.md
index 7e73cb3..7537a40 100644
--- a/Feature-Gate-Activation-Schedule.md
+++ b/Feature-Gate-Activation-Schedule.md
@@ -1,104 +1,6 @@
# Feature Gate Activation Schedule
-The scheduling of feature gate activations is be based on the following principles:
-
-- Relative priority
-- The same order on each network
-
-Those two principles will not always agree, exceptions will occur.
-
-Feature gate activation so far has been ad-hoc, to help organize and communicate the upcoming feature gate activations the following table will indicate which features will be activated next and on which networks.
-
-- Feature gates are ordered by priority, highest at the top, priority might change and circumvent activation.
-- When a feature gate is activated on a network, the epoch will be added to the table by the person who activated the feature gate.
-- The feature gate in the first row is implicitly next to be activated on mainnet beta
-- Once a feature gate is activated on mainnet beta the person who activated the feature gate must remove it from the table.
-- Feature gate owners are responsible for inserting their feature gates into this list following the above principles, exceptions will occur, get consensus from others before re-ordering priority.
-- Some feature gates will need to be soaked before being activated on the next network, soaking will delay all lower-priority feature gates, exceptions will occur.
-- Feature gates should be activated one at a time per network, exceptions will occur.
-
-
-To determine which feature gate will be activated next:
-
-- Feature gates must be activated on testnet, then devnet, then finally mainnet beta
-- For each network, the next feature gate that has not been enabled will be enabled next
-
-
-### Example
-Given the following schedule:
-
-* nWBqjr3gpETbiaVj3CBJ3HFC5TMdnJDGt21hnvSTvVZ will be activated on testnet next
-* DpJREPyuMZ5nDfU6H3WTqSqUFSXAfw8u7xqmWtEwJDcP will be activated on devnet next
-* 7GUcYgq4tVtaqNCKT3dho9r4665Qp5TxCZ27Qgjx3829 will be activated on mainnet beta next
-
-| Key | Version | Testnet | Devnet | Description | Comms Required |
-|-----|---------|---------|--------|-------------| -------------- |
-| 7GUcYgq4tVtaqNCKT3dho9r4665Qp5TxCZ27Qgjx3829 | v1.10.24 | 331 | 332 | Executables incur CPI data costs | |
-| DpJREPyuMZ5nDfU6H3WTqSqUFSXAfw8u7xqmWtEwJDcP | v1.10.25 | 333 | | quick bail on panic | |
-| 7g9EUwj4j7CS21Yx1wvgWLjSZeh5aPq8x9kpoPwXM8n8 | v1.10.3 | 334 | | limit secp256k1 recovery id | |
-| nWBqjr3gpETbiaVj3CBJ3HFC5TMdnJDGt21hnvSTvVZ | v1.10.1 | | | check physical overlapping regions | |
-
-## Version Floor
-The version floor is the current minimum supported software version for a cluster. As new feature gates are activated, the version floor is raised to match the software release that the feature gate shipped in. For minor version updates on mainnet-beta the version floor will be raised (and activations will begin) two full epochs after 95% of stake adopts the new minor version.
-
-|| Testnet | Devnet | Mainnet Beta |
-| :-----: | :------: | :------: | :----------: |
-| Current floor | v2.0.4 | v2.0.0 | v1.18.22 |
-| Next expected floor * | -- | -- | -- |
-
-* These dates are tentative. Please keep an eye out for comms as the dates near
-
-## Current Schedule
-### Pending Mainnet Beta activation
-| Key | Version | Testnet | Devnet | Description | Owner | Comms Required |
-|-----|---------|---------|--------|-------------|-------| -------------- |
-| 7uZBkJXJ1HkuP6R3MJfZs7mLwymBcDbKdqbF51ZWLier | v1.18.2 | 674 | 734 | [Enable chained Merkle shreds #34916](https://github.com/solana-labs/solana/pull/34916) | @behzadnouri |
-| tvcF6b1TRz353zKuhBjinZkKzjmihXmBAHJdjNYw1sQ | v1.18.8 | 675 | 735 | [Timely vote credits](https://github.com/solana-labs/solana/issues/32857) | @AshwinSekar | Passed governance vote |
-| decoMktMcnmiq6t3u7g5BfgcQu91nKZr6RvMYf9z1Jb | v1.18.0 | 676 | 737 | [Allow commission decreases at any time](https://github.com/solana-labs/solana/issues/33994) | @joncinque | |
-
-### Pending Devnet Activation
-| Key | Version | Testnet | Devnet | Description | Owner | Comms Required |
-|-----|---------|---------|--------|-------------|-------| -------------- |
-| 9bn2vTJUsUcnpiZWbu2woSKtTGW3ErZC9ERv88SDqQjK | v2.0.0 | 679 | | [Partitioned epoch rewards](https://github.com/anza-xyz/agave/issues/426) | @CriesofCarrots | |
-| ed9tNscbWLYBooxWA7FE2B5KHWs8A6sxfY8EzezEcoo | v2.0.4 | 681 | | [Use verify_strict for signature verification in ed25519 precompile](https://github.com/anza-xyz/feature-gate-tracker/issues/42) | @samkim-crypto |
-
-### Pending Testnet Activation
-| Key | Version | Testnet | Devnet | Description | Owner | Comms Required |
-|-----|---------|---------|--------|-------------|-------| -------------- |
-| EenyoWx9UMXYKpR8mW5Jmfmy2fRjzUtM7NduYMY8bx33 | v2.0.0 | | | [Enable account data direct mapping](https://github.com/solana-labs/solana/issues/29708) | @alessandrod | |
-| Pause until after Breakpoint | | | | | | |
-| FuS3FPfJDKSNot99ECLXtp3rueq36hMNStJkPJwWodLh | v2.0.0 | | | [error on invalid curve/op id](https://github.com/anza-xyz/agave/issues/1132) | @samkim-crypto | |
-| BtVN7YjDzNE6Dk7kTT7YTDgMNUZTNgiSJgsdzAeTg2jF | v2.0.0 | | | [Removing unwanted rounding in fee calculation #34982](https://github.com/solana-labs/solana/issues/34982) | @tao-stones | |
-| 3opE3EzAKnUftUDURkzMgwpNgimBAypW1mNDYH4x4Zg7 | v2.0.0 | | | [Reward full priority fee to validators](https://github.com/solana-labs/solana/issues/34731) | @tao-stones | Passed community vote |
-| CGB2jM8pwZkeeiXQ66kBMyBR6Np61mggL7XUsmLjVcrw | v1.18.0 | | | [skip rent rewrites](https://github.com/solana-labs/solana/issues/26599) | @jeffwashington | |
-| 2ry7ygxiYURULZCrypHhveanvP5tzZ4toRwVp89oCNSj | v2.0.0 | | | [Validator applies cost tracker to blocks during replay](https://github.com/solana-labs/solana/issues/29595) | @tao-stones | |
-| zkhiy5oLowR7HY4zogXjCjeMXyruLqBwSWH21qcFtnv | v2.0.0 | | | [Enable ZK ElGamal Proof program](https://github.com/anza-xyz/agave/issues/1966) | @samkim-crypto | |
-| 7bTK6Jis8Xpfrs8ZoUfiMDPazTcdPcTWheZFJTA5Z6X4 | v2.0.0 | | | [SIMD0148: MoveStake and MoveLamports](https://github.com/anza-xyz/agave/issues/1610) | @2501babe | |
-| ffecLRhhakKSGhMuc6Fz2Lnfq4uT9q3iu9ZsNaPLxPc | v2.0.0 | | | [Vote only on full fec sets](https://github.com/anza-xyz/agave/issues/1598) | @Ashwin-Sekar | |
-| tSynMCspg4xFiCj1v3TDb4c7crMR5tSBhLz4sF7rrNA | v2.0.0 | | | [Enable TowerSync ixs](https://github.com/anza-xyz/agave/issues/2902) | @Ashwin-Sekar | |
-
-### Features are BLOCKED
-DO NOT ACTIVATE!
-| Key | Version | Testnet | Devnet | Description | Owner | Comms Required |
-|-----|---------|---------|--------|-------------|-------| -------------- |
-| EaQpmC6GtRssaZ3PCUM5YksGqUdMLeZ46BQXYtHYakDS | v1.16.0 | | | [include transaction loaded accounts data size in base fee calculation](https://github.com/solana-labs/solana/issues/30657) | @taozhu-chicago - requires community gov vote | Yes |
-| HTW2pSyErTj4BV6KBM9NZ9VBUJVxt7sacNWcf76wtzb3 | v1.17.5 | 277 | 368 | [blake3 syscall](https://github.com/solana-labs/solana/issues/27099) | @jackcmay blocked on user demand | |
-| 9LZdXeKGeBV6hRLdxS1rHbHoEUsKqesCC2ZAPTPKJAbK | v1.17.0 | 430 | 386 | [Increase transaction account lock limit](https://github.com/solana-labs/solana/issues/27241) | @jstarry - Blocked for mainnet activation pending benchmarking | |
-| GDH5TVdbTPUpRnXaRyQqiKUa7uZAbZ28Q2N9bhbKoMLm | v1.17.0 | 419 | | [loosen cpi restrictions](https://github.com/solana-labs/solana/issues/26641) | @jstarry -- blocked by direct mapping and perf/cost modelling | |
-| 8GdovDzVwWU5edz2G697bbB7GZjrUc6aQZLWyNNAtHdg | v1.17.1 | | | [Programify feature gate program](https://github.com/solana-labs/solana/issues/33547) | @buffalojoec | |
-| 2URMmUo78tana2quSMcWBvc6tBMZP83zM9gUMjA6tJiv | v1.18.0 | | | [Switch program deployment to SBPFv2](https://github.com/solana-labs/solana/issues/32314) | @Lichtso | |
-| 2KKG3C6RBnxQo9jVVrbzsoSh41TDXLK7gBc9gduyxSzW | v1.17.5 | | | [add Redelegate instruction to stake program](https://github.com/solana-labs/solana/issues/26765) | @HaoranYi | |
-| EBq48m8irRKuE7ZnMTLvLg2UuGSqhe8s8oMqnmja1fJw | v1.17.5 | | | [enable big modular exponentiation](https://github.com/solana-labs/solana/issues/29882) | @samkim-crypto | |
-| zk1snxsc6Fh3wsGNbbHAJNHiJoYgF29mMnTSusGx5EJ | v1.17.12 | | | [enable zk token proof program](https://github.com/solana-labs/solana/issues/32613) | @samkimcrypto | |
-
-### Features are HELD
-DO NOT ACTIVATE!
-| Key | Version | Testnet | Devnet | Description | Owner | Comms Required |
-|-----|---------|---------|--------|-------------|-------| -------------- |
-| Gz1aLrbeQ4Q6PTSafCZcGWZXz91yVRi7ASFzFEr1U4sa | v1.14.12 | | | [experiments different turbine fanouts for propagating shreds](https://github.com/solana-labs/solana/pull/29393) | @behzadnouri | |
-| CJzY83ggJHqPGDq8VisV3U91jDJLuEaALZooBrXtnnLU | v1.18.0 | | | [Disable rent fees collection](https://github.com/solana-labs/solana/issues/33946) | @Haoran Yi| |
-| wLckV1a64ngtcKPRGU4S4grVTestXjmNjxBjaKZrAcn | v1.18.0 | | | [cost model uses number of requested write locks](https://github.com/solana-labs/solana/issues/34819) | @apfitzge (held by @willhickey) | |
-| CLCoTADvV64PSrnR6QXty6Fwrt9Xc6EdxSJE4wLRePjq | v2.0.0 | | | [SIMD0127: sol_get_sysvar](https://github.com/anza-xyz/agave/issues/615) | @2501babe (held by @willhickey) | |
-| 5TuppMutoyzhUSfuYdhgzD47F92GL1g89KpCZQKqedxP | v1.18.13 | | | [sol_remaining_compute_units syscall](https://github.com/solana-labs/solana/issues/33325) | @mvines (held by @willhickey) | |
-| chaie9S2zVfuxJKNRGkyTDokLwWxx6kD2ZLsqQHaDD8 | v1.18.12 | | | [Generate duplicate proofs for chained merkle root conflicts](https://github.com/anza-xyz/agave/issues/1010) | @AshwinSekar | hold until new shred format is turned on |
-
+This schedule is deprecated. Please see one of the following pages:
+* [Feature Gate Tracker](https://github.com/orgs/anza-xyz/projects/9) for adding new feature gates to the schedule, or discussing feature gate activations
+* [Feature Gate Activation Guidelines](Feature-Gate-Activation-Guidelines)
+* [Feature Gate Tracker Schedule](Feature-Gate-Tracker-Schedule) for a read-only schedule of upcoming feature gate activations.
diff --git a/Feature-Gate-Setup-Process.md b/Feature-Gate-Setup-Process.md
index ae7a8e3..411e343 100644
--- a/Feature-Gate-Setup-Process.md
+++ b/Feature-Gate-Setup-Process.md
@@ -8,8 +8,7 @@ Feature gates are useful for ensuring the entire cluster is in sync when enablin
Feature gates work by creating a keypair so that features can be identified by a pubkey (and activated via private key). The set of active/inactive features are stored in the Bank, and the set of active features gets updated on epoch boundaries (which is the exact same time with respect to slots across the cluster). Conditional logic can then be used in the code which queries whether a feature has been activated.
# How do I Add a Feature Gate?
-Note: These instructions provide mechanics on January '23. It is possible specific commands will have changed since then.
-1. Follow the steps described at the top of [feature_set.rs](https://github.com/solana-labs/solana/blob/master/sdk/src/feature_set.rs) to generate keypair, create public module, and add desired feature switch logic
-1. Create a new Feature Gate issue on GitHub. For example, [#24352](https://github.com/solana-labs/solana/issues/24352)
-1. Update the [Feature Gate Activation Schedule](Feature-Gate-Activation-Schedule) page
+Note: These instructions provide mechanics on September 2024. It is possible specific commands will have changed since then.
+1. Follow the steps described at the top of [sdk/feature-set/src/lib.rs](https://github.com/anza-xyz/agave/blob/master/sdk/feature-set/src/lib.rs) to generate keypair, create public module, and add desired feature switch logic
+1. Create a new issue in the [Feature Gate Tracker repo](https://github.com/anza-xyz/feature-gate-tracker/issues). If you don't have access please contact the Anza devops team in [Solana Discord #devops](https://discord.com/channels/428295358100013066/560503042458517505)
1. After code has been pushed in, refer to [Feature Activation Process](Feature-Gate-Activation-Process) for next steps
No newline at end of file
diff --git a/Feature-Gate-Tracker-Schedule.md b/Feature-Gate-Tracker-Schedule.md
new file mode 100644
index 0000000..2ada083
--- /dev/null
+++ b/Feature-Gate-Tracker-Schedule.md
@@ -0,0 +1,46 @@
+This schedule is generated automatically from the [Feature Gate Tracker](https://github.com/orgs/anza-xyz/projects/9/). Do not edit this page directly.
+
+For access to the Feature Gate Tracker please contact the Anza devops team in [Solana Discord #devops](https://discord.com/channels/428295358100013066/560503042458517505).
+
+## Version Floor
+The version floor is the current minimum supported software version for a cluster. As new feature gates are activated, the version floor is raised to match the software release that the feature gate shipped in. For minor version updates on mainnet-beta the version floor will be raised (and activations will begin) two full epochs after 95% of stake adopts the new minor version.
+
+|| Testnet | Devnet | Mainnet Beta |
+| :-----: | :------: | :------: | :----------: |
+| Current floor | v2.0.4 | v2.0.0 | v1.18.22 |
+| Next expected floor * | -- | -- | -- |
+
+* These dates are tentative. Please keep an eye out for comms as the dates near
+
+
+## Current Schedule
+### Pending Mainnet Beta activation
+| Key | Version | Testnet | Devnet | Description | Owner |
+|-----|---------|---------|--------|-------------|-------|
+| 7uZBkJXJ1HkuP6R3MJfZs7mLwymBcDbKdqbF51ZWLier | v1.18.2 | 674 | 734 | Enable chained Merkle shreds | behzadnouri |
+| tvcF6b1TRz353zKuhBjinZkKzjmihXmBAHJdjNYw1sQ | v1.18.8 | 675 | 735 | Timely vote credits | AshwinSekar |
+| decoMktMcnmiq6t3u7g5BfgcQu91nKZr6RvMYf9z1Jb | v1.18.0 | 676 | 737 | Allow commission decreases at any time | joncinque |
+
+### Pending Devnet Activation
+| Key | Version | Testnet | Devnet | Description | Owner |
+|-----|---------|---------|--------|-------------|-------|
+| 9bn2vTJUsUcnpiZWbu2woSKtTGW3ErZC9ERv88SDqQjK | v2.0.0 | 679 | | Partitioned epoch rewards | CriesofCarrots |
+| ed9tNscbWLYBooxWA7FE2B5KHWs8A6sxfY8EzezEcoo | v2.0.4 | 681 | | Use verify_strict for signature verification in ed25519 precompile | samkim-crypto |
+| EenyoWx9UMXYKpR8mW5Jmfmy2fRjzUtM7NduYMY8bx33 | v2.0.0 | 682 | | Enable account data direct mapping | alessandrod |
+
+
+### Pending Testnet Activation
+| Key | Version | Testnet | Devnet | Description | Owner |
+|-----|---------|---------|--------|-------------|-------|
+| | | | | Pause activations for Breakpoint | willhickey |
+| PERzQrt5gBD1XEe2c9XdFWqwgHY3mr7cYWbm5V772V8 | v2.0.9 | | | Partitioned Epoch Rewards with snapshot fix | CriesofCarrots |
+| FuS3FPfJDKSNot99ECLXtp3rueq36hMNStJkPJwWodLh | v2.0.0 | | | error invalid curve/op id | samkim-crypto |
+| BtVN7YjDzNE6Dk7kTT7YTDgMNUZTNgiSJgsdzAeTg2jF | v2.0.0 | | | Removing unwanted rounding in fee calculation | tao-stones |
+| 3opE3EzAKnUftUDURkzMgwpNgimBAypW1mNDYH4x4Zg7 | v2.0.0 | | | Reward full priority fee to validators | tao-stones |
+| CGB2jM8pwZkeeiXQ66kBMyBR6Np61mggL7XUsmLjVcrw | v1.18.0 | | | skip rent rewrites | jeffwashington |
+| 2ry7ygxiYURULZCrypHhveanvP5tzZ4toRwVp89oCNSj | v2.0.0 | | | Validator applies cost tracker to blocks during replay | tao-stones |
+| zkhiy5oLowR7HY4zogXjCjeMXyruLqBwSWH21qcFtnv | v2.0.0 | | | Enable ZK ElGamal Proof program | samkim-crypto |
+| 7bTK6Jis8Xpfrs8ZoUfiMDPazTcdPcTWheZFJTA5Z6X4 | v2.0.0 | | | SIMD0148: MoveStake and MoveLamports | 2501babe |
+| ffecLRhhakKSGhMuc6Fz2Lnfq4uT9q3iu9ZsNaPLxPc | v2.0.0 | | | Vote only on full fec sets | AshwinSekar |
+| 8U4skmMVnF6k2kMvrWbQuRUT3qQSiTYpSjqmhmgfthZu | v2.0.0 | | | Add new unwritable reserved accounts | jstarry |
+| tSynMCspg4xFiCj1v3TDb4c7crMR5tSBhLz4sF7rrNA | v2.0.0 | | | tSynMCspg4xFiCj1v3TDb4c7crMR5tSBhLz4sF7rrNA | AshwinSekar |
diff --git a/_Sidebar.md b/_Sidebar.md
index 890f363..0c2b36e 100644
--- a/_Sidebar.md
+++ b/_Sidebar.md
@@ -2,7 +2,8 @@
* [Learning Blockchain, Crypto, and Solana](Learning-Blockchain,-Crypto,-and-Solana)
* [Learning Rust](Learning-Rust)
* **Feature Gates**
- * [Feature Gate Activation Schedule](Feature-Gate-Activation-Schedule)
+ * [Feature Gate Activation Guidelines](Feature-Gate-Activation-Guidelines)
+ * [Feature Gate Tracker Schedule](Feature-Gate-Tracker-Schedule)
* [Feature Gate Setup Process](Feature-Gate-Setup-Process)
* [Feature Gate Activation Process](Feature-Gate-Activation-Process)
* **Technical**