Some checks failed
lakehouse/auditor 3 blocking issues: todo!() macro call in tests/real-world/scrum_master_pipeline.ts
Phase 43 PRD (docs/CONTROL_PLANE_PRD.md:161) was the one audit finding
truly unimplemented — no crate, no trait, no tests, no workspace entry.
Neither PHASES.md nor the source tree had any Phase 43 presence.
Genuine greenfield gap.
Lands the scaffold as a real crate, registered in workspace Cargo.toml:
crates/validator/
src/lib.rs — Validator trait, Artifact enum (5 variants:
FillProposal, EmailDraft, Playbook,
TerraformPlan, AnsiblePlaybook), Report,
Finding, Severity, ValidationError
src/staffing/mod.rs — staffing validators module root
src/staffing/fill.rs — FillValidator (schema-level: fills array
+ per-fill {candidate_id, name}). 4 tests.
Worker-existence + status + geo checks
are TODO v2 (need catalog query handle).
src/staffing/email.rs — EmailValidator (to/body schema + SMS ≤160
+ email subject ≤78). 4 tests. PII scan +
name-consistency TODO v2.
src/staffing/playbook.rs — PlaybookValidator (operation prefix,
endorsed_names non-empty + ≤ target×2,
fingerprint present per Phase 25). 5 tests.
src/devops.rs — TerraformValidator + AnsibleValidator
scaffolds. Return Unimplemented — keeps
dispatcher shape stable, surfaces a clear
"phase 43 not wired" signal instead of
silently passing or panicking.
Total: 15 tests, all green. Covers the happy paths, the common
failure modes (missing fields, overfull arrays, length violations),
and the dispatch-error path (wrong artifact type into wrong validator).
Still open from Phase 43 (v2 work, beyond scaffold):
- FillValidator catalog integration (worker-existence, status,
geo/role match) — needs catalog handle in constructor
- EmailValidator PII scan (shared::pii::strip_pii integration) +
name-consistency cross-check
- Execution loop wiring: generate → validate → observer correction
+ retry (bounded by max_iterations=3) — spans crates, follow-up
- Observer logging: validation results to data/_observer/ops.jsonl
and data/_kb/outcomes.jsonl
- Scenario fixture tests against tests/multi-agent/playbooks/*
Workspace warnings still at 0.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
45 lines
1.5 KiB
Rust
45 lines
1.5 KiB
Rust
//! DevOps validator scaffold — long-horizon.
|
|
//!
|
|
//! PRD: "scaffold only: stubbed Terraform/Ansible validators
|
|
//! (`terraform validate`, `ansible-lint`) for the long-horizon phase."
|
|
//! Shipped as Unimplemented stubs so the execution-loop dispatcher
|
|
//! has a consistent failure shape to surface ("phase 43 not wired")
|
|
//! instead of a missing-impl panic.
|
|
|
|
use crate::{Artifact, Report, Validator, ValidationError};
|
|
|
|
pub struct TerraformValidator;
|
|
|
|
impl Validator for TerraformValidator {
|
|
fn name(&self) -> &'static str { "devops.terraform" }
|
|
fn validate(&self, _artifact: &Artifact) -> Result<Report, ValidationError> {
|
|
Err(ValidationError::Unimplemented { artifact: "terraform_plan" })
|
|
}
|
|
}
|
|
|
|
pub struct AnsibleValidator;
|
|
|
|
impl Validator for AnsibleValidator {
|
|
fn name(&self) -> &'static str { "devops.ansible" }
|
|
fn validate(&self, _artifact: &Artifact) -> Result<Report, ValidationError> {
|
|
Err(ValidationError::Unimplemented { artifact: "ansible_playbook" })
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn terraform_scaffold_returns_unimplemented() {
|
|
let r = TerraformValidator.validate(&Artifact::TerraformPlan(serde_json::json!({})));
|
|
assert!(matches!(r, Err(ValidationError::Unimplemented { .. })));
|
|
}
|
|
|
|
#[test]
|
|
fn ansible_scaffold_returns_unimplemented() {
|
|
let r = AnsibleValidator.validate(&Artifact::AnsiblePlaybook(serde_json::json!({})));
|
|
assert!(matches!(r, Err(ValidationError::Unimplemented { .. })));
|
|
}
|
|
}
|