MoonBit-native capability boundary and acceptance trace validator
moon add SHX-ai-nb/capsuletrace-uploadSHX-ai-nb/capsuletrace-uploadfn main {
let report = validate_manifest(sample_manifest())
println(report.to_markdown())
}moon run cmd/mainproject: CapsuleTrace
purpose: Validate capability boundaries and acceptance evidence.
scope: Parse compact line manifests.
out-of-scope: Execute shell commands at runtime.
capability: parse-manifest | Parse records | text manifest | BoundarySpec | deterministic, offline
requirement: R1 | must | Parser accepts supported records. | parse-manifest
evidence: T1 | test | capsuletrace_wbtest.mbt | verified | R1 | Unit tests cover parser behavior.moon run cmd/auditlet raw = strict_ready_manifest()
let report = validate_manifest_with_policy(raw, strict_policy())
let matrix = build_trace_matrix(report.spec)
let delta = compare_manifests(raw, next_release_manifest)
println(report.to_policy_markdown(strict_policy()))
println(matrix.to_markdown())
println(delta.to_markdown())moon check
moon fmt --check
moon build
moon test
moon run cmd/main
moon run cmd/audit
moon publish --dry-runmoon check: passed
moon build: passed
moon test: 23 passed, 0 failed
moon run cmd/main: passed
moon run cmd/audit: passed
moon publish --dry-run: requires moon login with the publisher accountmoon login
moon publish --dry-run
moon publishhttps://mooncakes.io/docs/SHX-ai-nb/capsuletrace-upload
https://mooncakes.io/api/v0/manifest/SHX-ai-nb/capsuletrace-uploadpub(all) struct BoundarySpec {
project : String
purpose : String
scopes : Array[String]
out_of_scope : Array[String]
capabilities : Array[Capability]
requirements : Array[Requirement]
evidence : Array[Evidence]
issues : Array[TraceIssue]
} derive(Eq, Debug)fn BoundarySpec::evidence_for_requirement(self : BoundarySpec, requirement_id : StringView) -> Array[Evidence]fn BoundarySpec::requirements_for_capability(self : BoundarySpec, capability_id : StringView) -> Array[Requirement]pub(all) struct EntityChange {
category : String
id : String
kind : ChangeKind
impact : ChangeImpact
before : String
after : String
} derive(Eq, Debug)pub(all) struct Evidence {
id : String
kind : EvidenceKind
target : String
status : EvidenceStatus
requirements : Array[String]
note : String
} derive(Eq, Debug)pub(all) struct EvidenceSummary {
kind : EvidenceKind
total : Int
verified : Int
pending : Int
rejected : Int
} derive(Eq, Debug)pub(all) struct NormalizationResult {
spec : BoundarySpec
changes : Array[NormalizationChange]
source_issues : Array[TraceIssue]
} derive(Eq, Debug)pub(all) struct Requirement {
id : String
level : RequirementLevel
text : String
capabilities : Array[String]
} derive(Eq, Debug)pub(all) struct SpecDelta {
before_project : String
after_project : String
summary_changes : Array[SummaryChange]
capability_changes : Array[EntityChange]
requirement_changes : Array[EntityChange]
evidence_changes : Array[EntityChange]
} derive(Eq, Debug)pub(all) struct SummaryChange {
field : String
before : String
after : String
impact : ChangeImpact
} derive(Eq, Debug)pub(all) struct TraceIssue {
kind : TraceIssueKind
line : Int
record : String
message : String
} derive(Eq, Debug)fn TraceMatrix::rows_for_capability(self : TraceMatrix, capability_id : StringView) -> Array[TraceRow]pub(all) struct TraceReport {
score : Int
grade : String
ready : Bool
findings : Array[TraceFinding]
spec : BoundarySpec
} derive(Eq, Debug)pub(all) struct TraceRow {
requirement_id : String
level : RequirementLevel
text : String
capability_ids : Array[String]
evidence_ids : Array[String]
verified_evidence_ids : Array[String]
state : CoverageState
} derive(Eq, Debug)pub(all) struct ValidationPolicy {
name : String
minimum_capabilities : Int
minimum_requirements : Int
minimum_evidence : Int
require_out_of_scope : Bool
require_verified_test : Bool
require_verified_example : Bool
require_verified_ci : Bool
require_verified_doc : Bool
require_verified_release : Bool
reject_pending_evidence : Bool
require_should_evidence : Bool
require_unique_targets : Bool
require_lowercase_ids : Bool
require_capability_scope : Bool
require_capability_constraints : Bool
minimum_project_length : Int
minimum_purpose_length : Int
} derive(Eq, Debug)fn normalize_manifest_with_options(raw : StringView, options : NormalizationOptions) -> NormalizationResultfn strict_ready_manifest() -> StringMoonBit-native capability boundary and acceptance trace validator