1- // SPDX-License-Identifier: PMPL-1.0
1+ // SPDX-License-Identifier: PMPL-1.0-or-later
22//! Bot identification and metadata
33
44use serde:: { Deserialize , Serialize } ;
@@ -26,6 +26,8 @@ pub enum BotId {
2626 Hypatia ,
2727 /// WCAG accessibility compliance validator
2828 Accessibilitybot ,
29+ /// Cryptographic hygiene and post-quantum readiness specialist
30+ Cipherbot ,
2931 /// Custom/external bot
3032 Custom ( u32 ) ,
3133}
@@ -42,6 +44,7 @@ impl fmt::Display for BotId {
4244 BotId :: RobotRepoAutomaton => write ! ( f, "robot-repo-automaton" ) ,
4345 BotId :: Hypatia => write ! ( f, "hypatia" ) ,
4446 BotId :: Accessibilitybot => write ! ( f, "accessibilitybot" ) ,
47+ BotId :: Cipherbot => write ! ( f, "cipherbot" ) ,
4548 BotId :: Custom ( id) => write ! ( f, "custom-{}" , id) ,
4649 }
4750 }
@@ -53,6 +56,7 @@ impl BotId {
5356 match self {
5457 BotId :: Rhodibot | BotId :: Echidnabot | BotId :: Sustainabot => Tier :: Verifier ,
5558 BotId :: Glambot | BotId :: Seambot | BotId :: Finishbot | BotId :: Accessibilitybot => Tier :: Finisher ,
59+ BotId :: Cipherbot => Tier :: Specialist ,
5660 BotId :: RobotRepoAutomaton => Tier :: Executor ,
5761 BotId :: Hypatia => Tier :: Engine ,
5862 BotId :: Custom ( _) => Tier :: Custom ,
@@ -71,6 +75,7 @@ impl BotId {
7175 BotId :: RobotRepoAutomaton ,
7276 BotId :: Hypatia ,
7377 BotId :: Accessibilitybot ,
78+ BotId :: Cipherbot ,
7479 ]
7580 }
7681
@@ -86,6 +91,7 @@ impl BotId {
8691 "robot-repo-automaton" | "robotrepoautomaton" => Some ( BotId :: RobotRepoAutomaton ) ,
8792 "hypatia" | "cicd-hyper-a" | "cicdhypera" => Some ( BotId :: Hypatia ) ,
8893 "accessibilitybot" | "accessibility-bot" => Some ( BotId :: Accessibilitybot ) ,
94+ "cipherbot" | "cipher-bot" => Some ( BotId :: Cipherbot ) ,
8995 _ => None ,
9096 }
9197 }
@@ -99,6 +105,8 @@ pub enum Tier {
99105 Verifier ,
100106 /// Second tier - consumes findings, produces results (glambot, seambot, finishbot)
101107 Finisher ,
108+ /// Specialist - domain-specific deep analysis (cipherbot)
109+ Specialist ,
102110 /// Third tier - executes actions based on findings (robot-repo-automaton)
103111 Executor ,
104112 /// Central intelligence layer - coordinates all bots (hypatia)
@@ -111,11 +119,12 @@ impl Tier {
111119 /// Get execution order (lower = earlier)
112120 pub fn execution_order ( & self ) -> u8 {
113121 match self {
114- Tier :: Engine => 0 , // Engine coordinates, runs first
122+ Tier :: Engine => 0 , // Engine coordinates, runs first
115123 Tier :: Verifier => 1 ,
116124 Tier :: Finisher => 2 ,
117- Tier :: Executor => 3 , // Executor runs after verification
118- Tier :: Custom => 4 ,
125+ Tier :: Specialist => 3 , // Specialist runs after verifiers/finishers
126+ Tier :: Executor => 4 , // Executor runs after all analysis
127+ Tier :: Custom => 5 ,
119128 }
120129 }
121130
@@ -224,13 +233,17 @@ impl BotInfo {
224233 BotId :: Finishbot => Self {
225234 id,
226235 name : "Finishing Bot" . to_string ( ) ,
227- description : "Release readiness - placeholders, licenses, claims " . to_string ( ) ,
236+ description : "Tier 2 Finisher - completeness analysis and release readiness " . to_string ( ) ,
228237 version : "0.1.0" . to_string ( ) ,
229238 categories : vec ! [
230- "license" . to_string( ) ,
231- "placeholder" . to_string( ) ,
232- "claims" . to_string( ) ,
233- "release" . to_string( ) ,
239+ "completeness/license" . to_string( ) ,
240+ "completeness/placeholder" . to_string( ) ,
241+ "completeness/claims" . to_string( ) ,
242+ "completeness/release" . to_string( ) ,
243+ "completeness/scm" . to_string( ) ,
244+ "completeness/testing" . to_string( ) ,
245+ "completeness/tooling" . to_string( ) ,
246+ "completeness/v1-readiness" . to_string( ) ,
234247 ] ,
235248 can_fix : true ,
236249 depends_on : vec ! [ BotId :: Rhodibot , BotId :: Glambot ] ,
@@ -276,6 +289,22 @@ impl BotInfo {
276289 can_fix : true ,
277290 depends_on : vec ! [ BotId :: Rhodibot , BotId :: Glambot ] ,
278291 } ,
292+ BotId :: Cipherbot => Self {
293+ id,
294+ name : "Cipherbot" . to_string ( ) ,
295+ description : "Cryptographic hygiene and post-quantum readiness specialist" . to_string ( ) ,
296+ version : "0.1.0" . to_string ( ) ,
297+ categories : vec ! [
298+ "crypto/hashing" . to_string( ) ,
299+ "crypto/symmetric" . to_string( ) ,
300+ "crypto/key-exchange" . to_string( ) ,
301+ "crypto/signatures" . to_string( ) ,
302+ "crypto/password" . to_string( ) ,
303+ "crypto/pq-readiness" . to_string( ) ,
304+ ] ,
305+ can_fix : true ,
306+ depends_on : vec ! [ BotId :: Rhodibot , BotId :: Echidnabot ] ,
307+ } ,
279308 BotId :: Custom ( _) => Self {
280309 id,
281310 name : "Custom Bot" . to_string ( ) ,
0 commit comments