KeiSeiKit-1.0/_primitives/_rust/kei-model-router/src/dna_class.rs
Parfii-bot 0be354a920 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00

136 lines
3.9 KiB
Rust

//! Task-class DNA extraction.
//!
//! Full DNA format: `<role>::<caps>::<sha8-scope>::<sha8-body>-<nonce8>`.
//! Examples:
//! code-implementer-rust::?::e3929e37::041b7526-674c5cf3
//! edit-local::NG-FW-FD-CP-CG-TG-ND-RF::5435F821::AC73A6A3-b3d36aa6
//!
//! Three abstraction levels for posterior aggregation:
//!
//! 1. `full_dna` — every spawn unique (random nonce). One observation per row.
//! 2. `task_class_dna` — strip `-<nonce8>`. Same prompt re-runs cluster.
//! 3. `agent_class_dna` — strip `::<body8>-<nonce8>`. Same agent at same scope,
//! different prompts cluster. Highest-level routable identity.
//!
//! Constructor Pattern: this cube is purely lexical. No I/O, no SQL.
/// Strip trailing `-<nonce8>` from full DNA. Mirrors the SQL VIRTUAL column
/// in `kei-ledger` schema v9.
pub fn task_class_dna(full: &str) -> Option<&str> {
if full.is_empty() {
return None;
}
let bytes = full.as_bytes();
if bytes.len() < 9 {
return Some(full);
}
if bytes[bytes.len() - 9] == b'-' {
Some(&full[..bytes.len() - 9])
} else {
Some(full)
}
}
/// Strip `::<body8>-<nonce8>` from full DNA. Yields role+caps+scope identity.
pub fn agent_class_dna(full: &str) -> Option<&str> {
let task_class = task_class_dna(full)?;
let last_sep = task_class.rfind("::")?;
Some(&task_class[..last_sep])
}
/// First `::` separated component — the substrate role slug.
pub fn role(dna: &str) -> Option<&str> {
dna.split("::").next()
}
/// Second `::` separated component — capability bundle codes.
pub fn caps(dna: &str) -> Option<&str> {
dna.split("::").nth(1)
}
/// Third `::` separated component — scope sha-8.
pub fn scope_sha(dna: &str) -> Option<&str> {
dna.split("::").nth(2)
}
/// Body sha-8 from a task-class DNA (after agent_class).
/// Returns None if input is not a task_class_dna (i.e. shorter than 4 fields).
pub fn body_sha(task_class: &str) -> Option<&str> {
task_class.split("::").nth(3)
}
#[cfg(test)]
mod tests {
use super::*;
const SAMPLE: &str = "code-implementer-rust::?::e3929e37::041b7526-674c5cf3";
#[test]
fn strips_nonce_for_task_class() {
assert_eq!(
task_class_dna(SAMPLE),
Some("code-implementer-rust::?::e3929e37::041b7526")
);
}
#[test]
fn strips_body_and_nonce_for_agent_class() {
assert_eq!(
agent_class_dna(SAMPLE),
Some("code-implementer-rust::?::e3929e37")
);
}
#[test]
fn extracts_role_with_internal_hyphens() {
assert_eq!(role(SAMPLE), Some("code-implementer-rust"));
}
#[test]
fn extracts_caps_placeholder() {
assert_eq!(caps(SAMPLE), Some("?"));
}
#[test]
fn extracts_scope_sha() {
assert_eq!(scope_sha(SAMPLE), Some("e3929e37"));
}
#[test]
fn extracts_body_sha_from_task_class() {
let tc = task_class_dna(SAMPLE).unwrap();
assert_eq!(body_sha(tc), Some("041b7526"));
}
#[test]
fn handles_real_caps_string() {
let dna = "edit-local::NG-FW-FD-CP-CG-TG-ND-RF::5435F821::AC73A6A3-b3d36aa6";
assert_eq!(role(dna), Some("edit-local"));
assert_eq!(caps(dna), Some("NG-FW-FD-CP-CG-TG-ND-RF"));
assert_eq!(scope_sha(dna), Some("5435F821"));
assert_eq!(
agent_class_dna(dna),
Some("edit-local::NG-FW-FD-CP-CG-TG-ND-RF::5435F821")
);
}
#[test]
fn empty_returns_none() {
assert_eq!(task_class_dna(""), None);
assert_eq!(agent_class_dna(""), None);
assert_eq!(role(""), Some(""));
}
#[test]
fn short_input_passes_through() {
// Less than 9 chars total: no nonce to strip.
assert_eq!(task_class_dna("abc"), Some("abc"));
}
#[test]
fn missing_dash_means_no_nonce_strip() {
// 9+ chars but no '-' at position len-9.
let no_nonce = "role::cap::scope12::body";
assert_eq!(task_class_dna(no_nonce), Some(no_nonce));
}
}