tribunal-kit 1.0.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/.shared/ui-ux-pro-max/README.md +3 -3
- package/.agent/ARCHITECTURE.md +205 -10
- package/.agent/GEMINI.md +37 -7
- package/.agent/agents/accessibility-reviewer.md +134 -0
- package/.agent/agents/ai-code-reviewer.md +129 -0
- package/.agent/agents/frontend-specialist.md +3 -0
- package/.agent/agents/game-developer.md +21 -21
- package/.agent/agents/logic-reviewer.md +12 -0
- package/.agent/agents/mobile-reviewer.md +79 -0
- package/.agent/agents/orchestrator.md +56 -26
- package/.agent/agents/performance-reviewer.md +36 -0
- package/.agent/agents/supervisor-agent.md +156 -0
- package/.agent/agents/swarm-worker-contracts.md +166 -0
- package/.agent/agents/swarm-worker-registry.md +92 -0
- package/.agent/rules/GEMINI.md +134 -5
- package/.agent/scripts/bundle_analyzer.py +259 -0
- package/.agent/scripts/dependency_analyzer.py +247 -0
- package/.agent/scripts/lint_runner.py +188 -0
- package/.agent/scripts/patch_skills_meta.py +177 -0
- package/.agent/scripts/patch_skills_output.py +285 -0
- package/.agent/scripts/schema_validator.py +279 -0
- package/.agent/scripts/security_scan.py +224 -0
- package/.agent/scripts/session_manager.py +144 -3
- package/.agent/scripts/skill_integrator.py +234 -0
- package/.agent/scripts/strengthen_skills.py +220 -0
- package/.agent/scripts/swarm_dispatcher.py +317 -0
- package/.agent/scripts/test_runner.py +192 -0
- package/.agent/scripts/test_swarm_dispatcher.py +163 -0
- package/.agent/skills/agent-organizer/SKILL.md +132 -0
- package/.agent/skills/agentic-patterns/SKILL.md +335 -0
- package/.agent/skills/api-patterns/SKILL.md +226 -50
- package/.agent/skills/app-builder/SKILL.md +215 -52
- package/.agent/skills/architecture/SKILL.md +176 -31
- package/.agent/skills/bash-linux/SKILL.md +150 -134
- package/.agent/skills/behavioral-modes/SKILL.md +152 -160
- package/.agent/skills/brainstorming/SKILL.md +148 -101
- package/.agent/skills/brainstorming/dynamic-questioning.md +10 -0
- package/.agent/skills/clean-code/SKILL.md +139 -134
- package/.agent/skills/code-review-checklist/SKILL.md +177 -80
- package/.agent/skills/config-validator/SKILL.md +165 -0
- package/.agent/skills/csharp-developer/SKILL.md +107 -0
- package/.agent/skills/database-design/SKILL.md +252 -29
- package/.agent/skills/deployment-procedures/SKILL.md +122 -175
- package/.agent/skills/devops-engineer/SKILL.md +134 -0
- package/.agent/skills/devops-incident-responder/SKILL.md +98 -0
- package/.agent/skills/documentation-templates/SKILL.md +175 -121
- package/.agent/skills/dotnet-core-expert/SKILL.md +103 -0
- package/.agent/skills/edge-computing/SKILL.md +213 -0
- package/.agent/skills/frontend-design/SKILL.md +76 -0
- package/.agent/skills/frontend-design/color-system.md +18 -0
- package/.agent/skills/frontend-design/typography-system.md +18 -0
- package/.agent/skills/game-development/SKILL.md +69 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +158 -99
- package/.agent/skills/i18n-localization/SKILL.md +158 -96
- package/.agent/skills/intelligent-routing/SKILL.md +89 -285
- package/.agent/skills/intelligent-routing/router-manifest.md +65 -0
- package/.agent/skills/lint-and-validate/SKILL.md +229 -27
- package/.agent/skills/llm-engineering/SKILL.md +258 -0
- package/.agent/skills/local-first/SKILL.md +203 -0
- package/.agent/skills/mcp-builder/SKILL.md +159 -111
- package/.agent/skills/mobile-design/SKILL.md +102 -282
- package/.agent/skills/nextjs-react-expert/SKILL.md +143 -227
- package/.agent/skills/nodejs-best-practices/SKILL.md +201 -254
- package/.agent/skills/observability/SKILL.md +285 -0
- package/.agent/skills/parallel-agents/SKILL.md +124 -118
- package/.agent/skills/performance-profiling/SKILL.md +143 -89
- package/.agent/skills/plan-writing/SKILL.md +133 -97
- package/.agent/skills/platform-engineer/SKILL.md +135 -0
- package/.agent/skills/powershell-windows/SKILL.md +167 -104
- package/.agent/skills/python-patterns/SKILL.md +149 -361
- package/.agent/skills/python-pro/SKILL.md +114 -0
- package/.agent/skills/react-specialist/SKILL.md +107 -0
- package/.agent/skills/realtime-patterns/SKILL.md +296 -0
- package/.agent/skills/red-team-tactics/SKILL.md +136 -134
- package/.agent/skills/rust-pro/SKILL.md +237 -173
- package/.agent/skills/seo-fundamentals/SKILL.md +134 -82
- package/.agent/skills/server-management/SKILL.md +155 -104
- package/.agent/skills/sql-pro/SKILL.md +104 -0
- package/.agent/skills/systematic-debugging/SKILL.md +156 -79
- package/.agent/skills/tailwind-patterns/SKILL.md +163 -205
- package/.agent/skills/tdd-workflow/SKILL.md +148 -88
- package/.agent/skills/test-result-analyzer/SKILL.md +299 -0
- package/.agent/skills/testing-patterns/SKILL.md +141 -114
- package/.agent/skills/trend-researcher/SKILL.md +228 -0
- package/.agent/skills/ui-ux-pro-max/SKILL.md +107 -0
- package/.agent/skills/ui-ux-researcher/SKILL.md +234 -0
- package/.agent/skills/vue-expert/SKILL.md +118 -0
- package/.agent/skills/vulnerability-scanner/SKILL.md +228 -188
- package/.agent/skills/web-design-guidelines/SKILL.md +148 -33
- package/.agent/skills/webapp-testing/SKILL.md +171 -122
- package/.agent/skills/whimsy-injector/SKILL.md +349 -0
- package/.agent/skills/workflow-optimizer/SKILL.md +219 -0
- package/.agent/workflows/api-tester.md +279 -0
- package/.agent/workflows/audit.md +168 -0
- package/.agent/workflows/brainstorm.md +65 -19
- package/.agent/workflows/changelog.md +144 -0
- package/.agent/workflows/create.md +67 -14
- package/.agent/workflows/debug.md +122 -30
- package/.agent/workflows/deploy.md +82 -31
- package/.agent/workflows/enhance.md +59 -27
- package/.agent/workflows/fix.md +143 -0
- package/.agent/workflows/generate.md +84 -20
- package/.agent/workflows/migrate.md +163 -0
- package/.agent/workflows/orchestrate.md +66 -17
- package/.agent/workflows/performance-benchmarker.md +305 -0
- package/.agent/workflows/plan.md +76 -33
- package/.agent/workflows/preview.md +73 -17
- package/.agent/workflows/refactor.md +153 -0
- package/.agent/workflows/review-ai.md +140 -0
- package/.agent/workflows/review.md +83 -16
- package/.agent/workflows/session.md +154 -0
- package/.agent/workflows/status.md +74 -18
- package/.agent/workflows/strengthen-skills.md +99 -0
- package/.agent/workflows/swarm.md +194 -0
- package/.agent/workflows/test.md +80 -31
- package/.agent/workflows/tribunal-backend.md +55 -13
- package/.agent/workflows/tribunal-database.md +62 -18
- package/.agent/workflows/tribunal-frontend.md +58 -12
- package/.agent/workflows/tribunal-full.md +70 -11
- package/.agent/workflows/tribunal-mobile.md +123 -0
- package/.agent/workflows/tribunal-performance.md +152 -0
- package/.agent/workflows/ui-ux-pro-max.md +100 -82
- package/README.md +117 -62
- package/bin/tribunal-kit.js +329 -75
- package/package.json +10 -6
|
@@ -1,176 +1,240 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rust-pro
|
|
3
|
-
description: Master Rust 1.75+ with modern async patterns, advanced type system
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
description: Master Rust 1.75+ with modern async patterns, advanced type system features, and production-ready systems programming. Expert in the latest Rust ecosystem including Tokio, axum, and cutting-edge crates. Use PROACTIVELY for Rust development, performance optimization, or systems programming.
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
last-updated: 2026-03-12
|
|
7
|
+
applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
|
|
7
8
|
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
##
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
9
|
+
|
|
10
|
+
# Rust Development — Production Principles
|
|
11
|
+
|
|
12
|
+
> Rust's compiler is not your enemy. It is the most thorough code reviewer you will ever have.
|
|
13
|
+
> Learn to read its errors as design feedback, not roadblocks.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Ownership in Practice
|
|
18
|
+
|
|
19
|
+
The borrow checker enforces rules that prevent entire categories of bugs:
|
|
20
|
+
|
|
21
|
+
```rust
|
|
22
|
+
// Rule 1: Each value has exactly one owner
|
|
23
|
+
let s1 = String::from("hello");
|
|
24
|
+
let s2 = s1; // s1 is moved — no longer valid
|
|
25
|
+
// println!("{}", s1); // ❌ compile error: value used after move
|
|
26
|
+
|
|
27
|
+
// Rule 2: Borrowing — multiple readers OR one writer
|
|
28
|
+
let s = String::from("hello");
|
|
29
|
+
let r1 = &s; // immutable borrow — fine
|
|
30
|
+
let r2 = &s; // second immutable borrow — fine
|
|
31
|
+
// let r3 = &mut s; // ❌ can't borrow mutably while immutably borrowed
|
|
32
|
+
println!("{} {}", r1, r2);
|
|
33
|
+
let r3 = &mut s.clone(); // ✅ clone to get a new owned value
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Error Handling
|
|
39
|
+
|
|
40
|
+
Rust has no exceptions. Errors are values. Design for them explicitly.
|
|
41
|
+
|
|
42
|
+
```rust
|
|
43
|
+
use std::io;
|
|
44
|
+
use thiserror::Error;
|
|
45
|
+
|
|
46
|
+
// Define domain errors with thiserror
|
|
47
|
+
#[derive(Error, Debug)]
|
|
48
|
+
pub enum AppError {
|
|
49
|
+
#[error("User {0} not found")]
|
|
50
|
+
UserNotFound(String),
|
|
51
|
+
|
|
52
|
+
#[error("Database error: {0}")]
|
|
53
|
+
Database(#[from] sqlx::Error),
|
|
54
|
+
|
|
55
|
+
#[error("IO error: {0}")]
|
|
56
|
+
Io(#[from] io::Error),
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Return Result in every function that can fail
|
|
60
|
+
async fn get_user(id: &str) -> Result<User, AppError> {
|
|
61
|
+
let user = db.find_user(id).await?; // the `?` operator propagates errors
|
|
62
|
+
user.ok_or_else(|| AppError::UserNotFound(id.to_string()))
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// In main or handlers: match on the error
|
|
66
|
+
match get_user("123").await {
|
|
67
|
+
Ok(user) => println!("Found: {}", user.name),
|
|
68
|
+
Err(AppError::UserNotFound(id)) => eprintln!("No user: {}", id),
|
|
69
|
+
Err(e) => eprintln!("Unexpected error: {}", e),
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Async with Tokio
|
|
76
|
+
|
|
77
|
+
```rust
|
|
78
|
+
use tokio;
|
|
79
|
+
|
|
80
|
+
#[tokio::main]
|
|
81
|
+
async fn main() {
|
|
82
|
+
// Concurrent tasks — run independently
|
|
83
|
+
let (result_a, result_b) = tokio::join!(
|
|
84
|
+
fetch_user(1),
|
|
85
|
+
fetch_products()
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
// Spawn a background task
|
|
89
|
+
let handle = tokio::spawn(async {
|
|
90
|
+
background_work().await
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// With timeout
|
|
94
|
+
use tokio::time::{timeout, Duration};
|
|
95
|
+
let result = timeout(Duration::from_secs(5), slow_operation()).await;
|
|
96
|
+
match result {
|
|
97
|
+
Ok(Ok(val)) => println!("Got: {}", val),
|
|
98
|
+
Ok(Err(e)) => eprintln!("Operation failed: {}", e),
|
|
99
|
+
Err(_) => eprintln!("Timed out"),
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## HTTP Server with axum
|
|
107
|
+
|
|
108
|
+
```rust
|
|
109
|
+
use axum::{Router, routing::get, routing::post, Json, extract::State};
|
|
110
|
+
use std::sync::Arc;
|
|
111
|
+
|
|
112
|
+
#[derive(Clone)]
|
|
113
|
+
struct AppState {
|
|
114
|
+
db: Arc<Database>,
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
#[tokio::main]
|
|
118
|
+
async fn main() {
|
|
119
|
+
let state = AppState { db: Arc::new(Database::connect().await.unwrap()) };
|
|
120
|
+
|
|
121
|
+
let app = Router::new()
|
|
122
|
+
.route("/users", get(list_users).post(create_user))
|
|
123
|
+
.route("/users/:id", get(get_user))
|
|
124
|
+
.with_state(state);
|
|
125
|
+
|
|
126
|
+
axum::serve(
|
|
127
|
+
tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(),
|
|
128
|
+
app,
|
|
129
|
+
).await.unwrap();
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
async fn get_user(
|
|
133
|
+
State(state): State<AppState>,
|
|
134
|
+
axum::extract::Path(id): axum::extract::Path<String>,
|
|
135
|
+
) -> Result<Json<User>, StatusCode> {
|
|
136
|
+
state.db.find_user(&id).await
|
|
137
|
+
.map(Json)
|
|
138
|
+
.map_err(|_| StatusCode::NOT_FOUND)
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Common Pitfalls
|
|
145
|
+
|
|
146
|
+
| Pitfall | What Happens | Fix |
|
|
147
|
+
|---|---|---|
|
|
148
|
+
| `.clone()` everywhere | Hides ownership problems, creates heap allocations | Use references `&T` where ownership isn't needed |
|
|
149
|
+
| `unwrap()` in production | Panics on None/Err — crashes the process | Use `?` or match and return proper errors |
|
|
150
|
+
| Blocking in async | `std::thread::sleep` blocks the Tokio runtime | Use `tokio::time::sleep().await` |
|
|
151
|
+
| `Arc<Mutex<T>>` contention | Mutex held across await points causes deadlocks | Hold locks for minimum duration, never across `.await` |
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Project Structure
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
src/
|
|
159
|
+
main.rs Entry point — thin, just wires up the server
|
|
160
|
+
lib.rs Re-exports for library usage
|
|
161
|
+
handlers/ HTTP request handlers (thin — parse, call service, return response)
|
|
162
|
+
services/ Business logic (no HTTP awareness)
|
|
163
|
+
repositories/ Database queries
|
|
164
|
+
models/ Data structures and validation
|
|
165
|
+
errors.rs Unified error type
|
|
166
|
+
config.rs Settings loaded from environment
|
|
167
|
+
|
|
168
|
+
Cargo.toml Dependencies
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Essential Crates
|
|
174
|
+
|
|
175
|
+
| Crate | Purpose |
|
|
176
|
+
|---|---|
|
|
177
|
+
| `tokio` | Async runtime |
|
|
178
|
+
| `axum` | Web framework |
|
|
179
|
+
| `sqlx` | Async SQL with compile-time query checking |
|
|
180
|
+
| `serde` + `serde_json` | Serialization |
|
|
181
|
+
| `thiserror` | Ergonomic error definitions |
|
|
182
|
+
| `anyhow` | Error handling in binaries/scripts (not libraries) |
|
|
183
|
+
| `tracing` | Structured async-aware logging |
|
|
184
|
+
| `config` | Hierarchical configuration from env/files |
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Output Format
|
|
189
|
+
|
|
190
|
+
When this skill produces or reviews code, structure your output as follows:
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
━━━ Rust Pro Report ━━━━━━━━━━━━━━━━━━━━━━━━
|
|
194
|
+
Skill: Rust Pro
|
|
195
|
+
Language: [detected language / framework]
|
|
196
|
+
Scope: [N files · N functions]
|
|
197
|
+
─────────────────────────────────────────────────
|
|
198
|
+
✅ Passed: [checks that passed, or "All clean"]
|
|
199
|
+
⚠️ Warnings: [non-blocking issues, or "None"]
|
|
200
|
+
❌ Blocked: [blocking issues requiring fix, or "None"]
|
|
201
|
+
─────────────────────────────────────────────────
|
|
202
|
+
VBC status: PENDING → VERIFIED
|
|
203
|
+
Evidence: [test output / lint pass / compile success]
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**VBC (Verification-Before-Completion) is mandatory.**
|
|
207
|
+
Do not mark status as VERIFIED until concrete terminal evidence is provided.
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 🏛️ Tribunal Integration (Anti-Hallucination)
|
|
213
|
+
|
|
214
|
+
**Slash command: `/tribunal-backend`**
|
|
215
|
+
**Active reviewers: `logic` · `security` · `memory` · `type-safety`**
|
|
216
|
+
|
|
217
|
+
### ❌ Forbidden AI Tropes in Rust
|
|
218
|
+
|
|
219
|
+
1. **`unwrap()`/`expect()` in production code** — hiding errors instead of propagating them with `?`.
|
|
220
|
+
2. **`.clone()` everywhere** — blindly copying data instead of reasoning about lifetimes and borrows.
|
|
221
|
+
3. **`Arc<Mutex<T>>` overuse** — wrapping everything in locks instead of passing ownership or using channels.
|
|
222
|
+
4. **Blocking the Tokio runtime** — using `std::thread::sleep` or sync I/O inside an `async` function.
|
|
223
|
+
5. **Over-complex trait bounds** — creating massive generic trait puzzles instead of concrete types when generics aren't needed.
|
|
224
|
+
|
|
225
|
+
### ✅ Pre-Flight Self-Audit
|
|
226
|
+
|
|
227
|
+
Review these questions before generating Rust code:
|
|
228
|
+
```
|
|
229
|
+
✅ Did I properly propagate errors using `Result` and the `?` operator?
|
|
230
|
+
✅ Is the Tokio runtime safe from being blocked by my code?
|
|
231
|
+
✅ Did I avoid unnecessary `.clone()` calls by borrowing (`&T`) appropriately?
|
|
232
|
+
✅ Are my error types properly implemented (e.g., using `thiserror`)?
|
|
233
|
+
✅ Did I keep the lock durations on Mutexes as short as possible and never across `.await` points?
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
237
|
+
|
|
238
|
+
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
239
|
+
- ❌ **Forbidden:** Concluding your work because the logic seems sound or assuming `cargo check` is enough for complex runtime logic.
|
|
240
|
+
- ✅ **Required:** You are explicitly forbidden from completing your Rust task without providing **concrete terminal evidence** that `cargo test` passes or the binary runs successfully (`cargo run`) without panics. The Borrow Checker passing is step one; runtime verification is mandatory before completion.
|