| Filename | Latest commit message | Latest commit date |
|---|---|---|
Soul's third RS-L pass ruled the leaf's five promises hold but found four closing items (soul-e20-notes.md, 2026-09-22): 1. Every OrgRepo Eq/Hash/Ord/PartialOrd assertion compared values that should already be equal, so eq -> true, hash -> (), cmp -> Equal, partial_cmp -> None and partial_cmp -> self.0.partial_cmp(&other.0) all survived as mutants. Add the unequal direction (assert_ne! on two different repos, differing hashes, a non-Equal ordering) and std's partial_cmp(a,b) == Some(cmp(a,b)) contract for both an equal and an unequal pair. 2. The published OrgRepo schema description carried ~1,100 characters of Rust-macro justification into nine contracts. Split the doc comment: the grammar, the 140-byte bound and the case-insensitive identity stay in the published /// doc comment; the bounded_text! delegation reasoning moves to a plain // source comment, so it stops reaching schemars. 3. lib.rs said "eleven bidi control code points" above twelve fixtures (ALM, LRM, RLM, LRE, RLE, PDF, LRO, RLO, LRI, RLI, FSI, PDI). Say twelve. 4. campaign.repos admitted both spellings of one repository. Add PipelineRefusal::DuplicateRepo and a campaign-only validation hook (value_types!'s new optional `=> extra` clause) that refuses two entries sharing an OrgRepo identity; distinct repos still validate. This commit is the source half; the nine published schemas are regenerated in the next commit to match fix 2. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> |
||
| .. | ||
| src | ||
| Cargo.toml | ||