KeiSeiKit-1.0/_assembler/tests/mode_blocks.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

78 lines
2.4 KiB
Rust

//! Mode-picker integration test.
//!
//! The `skills/new-agent` wizard Phase 3.6 appends `mode-*` block names to
//! the `blocks` array. This test locks the contract that such a manifest
//! validates cleanly AND the expected mode files ship in `_blocks/` (either
//! in the fixture set or alongside the real kit).
//!
//! We use the real `_blocks/` so the test protects the kit's mode surface —
//! if anyone renames or deletes a mode block, the wizard's Phase 3.6
//! selection would silently break at runtime otherwise.
use std::path::PathBuf;
fn kit_root() -> PathBuf {
// `CARGO_MANIFEST_DIR` points at `_assembler/`; kit root is one up.
PathBuf::from(env!("CARGO_MANIFEST_DIR"))
.parent()
.unwrap()
.to_path_buf()
}
#[test]
fn all_five_mode_blocks_ship_in_kit() {
let blocks = kit_root().join("_blocks");
for mode in [
"mode-skeptic",
"mode-devils-advocate",
"mode-minimalist",
"mode-maximalist",
"mode-first-principles",
] {
let p = blocks.join(format!("{mode}.md"));
assert!(
p.exists(),
"mode block '{mode}' is missing from _blocks/ — Phase 3.6 of skills/new-agent would break"
);
}
}
#[test]
fn mode_matrix_doc_ships_in_kit() {
let p = kit_root().join("_blocks/mode-matrix.md");
assert!(
p.exists(),
"mode-matrix.md is missing from _blocks/ — SKILL.md Phase 3.6 references it"
);
let text = std::fs::read_to_string(&p).unwrap();
// The matrix must enumerate each mode by block basename.
for mode in [
"skeptic",
"devils-advocate",
"minimalist",
"maximalist",
"first-principles",
] {
assert!(
text.contains(mode),
"mode-matrix.md is missing row for '{mode}'"
);
}
}
#[test]
fn skill_md_phase_3_6_wiring_exists() {
// The wizard adds mode-* blocks only if Phase 3.6 is present.
let p = kit_root().join("skills/new-agent/SKILL.md");
assert!(p.exists(), "skills/new-agent/SKILL.md is missing");
let text = std::fs::read_to_string(&p).unwrap();
assert!(
text.contains("Phase 3.6"),
"SKILL.md is missing the Phase 3.6 mode picker"
);
assert!(
text.contains("mode-skeptic")
|| text.contains("skeptic — doubt-first"),
"SKILL.md Phase 3.6 does not reference the skeptic mode"
);
}