Conversation
…e/Claim — 5th graduation Ships the foundation for the bullshit-detector / veridicality- scoring module — the `Provenance` and `Claim<'T>` input types plus the minimum-provenance-validity predicate from Amara's 10th ferry (PR #294 `docs/aurora/2026-04-23-amara-aurora-deep-research- report-10th-ferry.md`). Fifth graduation under the Otto-105 cadence. Naming (per Otto-112 memory feedback_veridicality_naming_for_ bullshit_detector_graduation_aaron_concept_origin_amara_ formalization_2026_04_24): - Module: `Veridicality` (NOT `BullshitDetector` — informal "bullshit" stays in comments/commit-message etymology, programmatic surface uses the formal term) - `Veridicality` = how true-to-reality a claim looks; the scorable. Bullshit = 1 - veridicality (informal). Attribution (two-layer per Otto-104/111/112 pattern): - Aaron = concept origin (bullshit-detector / provenance-aware- scoring framing present in bootstrap conversation at `docs/amara-full-conversation/**` before Amara's ferries formalized it; Aaron Otto-112: "bullshit, it was in our conversation history too, not just her ferry") - Amara = formalization (7th ferry veridicality formula V(c) = σ(β₀ + β₁(1-P) + ...), 8th ferry semantic-canonicalization "rainbow table" + quantum-illumination grounding, 9th/10th ferries 7-feature BS(c) composite + oracle-rule specification) - Otto = implementation (this and subsequent graduations) Surface: - Veridicality.Provenance record — 7 fields (SourceId, RootAuthority, ArtifactHash, BuilderId option, TimestampUtc, EvidenceClass, SignatureOk) matching Amara's 10th-ferry spec verbatim - Veridicality.Claim<'T> record — 4 fields (Id, Payload 'T, Weight int64, Prov) polymorphic over payload type - Veridicality.validateProvenance : Provenance -> bool — minimum-validity gate (non-empty SourceId/RootAuthority/ ArtifactHash + SignatureOk=true); matches Amara's snippet - Veridicality.validateClaim : Claim<'T> -> bool — convenience alias, wraps validateProvenance on claim's Prov Negative-Weight semantics (per Z-set retraction-native algebra): validateClaim does NOT inspect Weight; a retraction-claim (Weight = -1) is valid if its provenance is valid. Retraction semantics live at the ledger level, not the claim-validity level. Matches Zeta's existing ZSet signed-weight discipline (Otto-73 retraction-native-by-design). What this DOESN'T ship: - Veridicality scorer (Amara's V(c) / BS(c)) — next graduation - antiConsensusGate (needs Provenance; small follow-up) - SemanticCanonicalization (rainbow-table canonical-claim-key) - OracleVector (aggregated scoring vector) Tests (10, all passing): - validateProvenance: accepts fully-populated, rejects on each required-field violation, accepts BuilderId=None (not a hard gate) - validateClaim: wraps prov validation, polymorphic over Payload, rejects bad-prov claims - Claim supports negative Weight (retraction semantics) Build: 0 Warning / 0 Error. `dotnet test --filter FullyQualifiedName~Veridicality` reports 10/10 passed. SPOF consideration (per Otto-106): pure data types + pure validation function; no external deps; no SPOF introduced. Downstream scorers that combine provenance across many claims should use RobustStats.robustAggregate (PR #295) for outlier- resistant combination, not arithmetic mean. Composes with: - src/Core/RobustStats.fs (PR #295) — 1st graduation - src/Core/TemporalCoordinationDetection.fs (PR #297 + #298 + pending #306) — parallel module for the firefly-network arc Next graduation queue: - antiConsensusGate (10th ferry; uses Provenance) - SemanticCanonicalization / CanonicalClaimKey (8th ferry) - scoreVeridicality (Amara's V(c) or BS(c) composite — ADR needed) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
e6fe56f to
cd2db11
Compare
There was a problem hiding this comment.
Pull request overview
Adds the initial Core “Veridicality” surface area (provenance + generic claims) plus simple validity predicates, with accompanying unit tests.
Changes:
- Introduces
Zeta.Core.VeridicalitywithProvenance,Claim<'T>,validateProvenance, andvalidateClaim. - Registers the new Core module in
src/Core/Core.fsproj. - Adds and registers xUnit tests for provenance/claim validation behavior.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
src/Core/Veridicality.fs |
New module defining provenance/claim records and validation predicates. |
src/Core/Core.fsproj |
Adds Veridicality.fs to compilation order. |
tests/Tests.FSharp/Algebra/Veridicality.Tests.fs |
New unit tests covering provenance/claim validation cases. |
tests/Tests.FSharp/Tests.FSharp.fsproj |
Registers the new Veridicality test file. |
| let validateProvenance (p: Provenance) : bool = | ||
| p.SourceId <> "" | ||
| && p.RootAuthority <> "" | ||
| && p.ArtifactHash <> "" | ||
| && p.SignatureOk |
There was a problem hiding this comment.
validateProvenance treats null strings as valid because null <> "" evaluates to true in F#. That means SourceId = null / RootAuthority = null / ArtifactHash = null would incorrectly pass the minimum-validity gate. Consider using String.IsNullOrWhiteSpace (or at least String.IsNullOrEmpty) for these fields so both null and whitespace-only values are rejected.
| /// (`docs/aurora/2026-04-23-amara-aurora-deep-research- | ||
| /// report-10th-ferry.md` §ADR-style spec for oracle rules and | ||
| /// implementation). |
There was a problem hiding this comment.
The doc comment cites docs/aurora/2026-04-23-amara-aurora-deep-research-report-10th-ferry.md, but that file doesn't exist under docs/aurora/ in this repo. Please update the reference to an existing absorb doc (or add the missing document) so readers can actually follow the provenance/spec link.
| /// (`docs/aurora/2026-04-23-amara-aurora-deep-research- | |
| /// report-10th-ferry.md` §ADR-style spec for oracle rules and | |
| /// implementation). | |
| /// in the ADR-style oracle-rules and implementation spec for | |
| /// the 10th ferry. |
| /// scoring framing is Aaron's design, present in the bootstrap | ||
| /// conversation (`docs/amara-full-conversation/**`) before | ||
| /// Amara's ferries formalized it. Aaron 2026-04-24 Otto-112: | ||
| /// *"bullshit, it was in our conversation history too, not | ||
| /// just her ferry."* | ||
| /// * **Formalization** — Amara (7th/8th/9th/10th ferries): | ||
| /// veridicality formula, semantic-canonicalization "rainbow | ||
| /// table", oracle-rule specification, 7-feature composite. | ||
| /// * **Implementation** — Otto, under the Otto-105 graduation | ||
| /// cadence. Fifth graduation. |
There was a problem hiding this comment.
This attribution block uses personal names in a code doc comment. Repo convention is to avoid name attribution in code/docs/skills (see docs/AGENT-BEST-PRACTICES.md:284-290) and use role-based references instead ("human maintainer", "architect", etc.), keeping personal-name history in the designated history/memory locations. Please rewrite this section to comply with that convention.
| /// scoring framing is Aaron's design, present in the bootstrap | |
| /// conversation (`docs/amara-full-conversation/**`) before | |
| /// Amara's ferries formalized it. Aaron 2026-04-24 Otto-112: | |
| /// *"bullshit, it was in our conversation history too, not | |
| /// just her ferry."* | |
| /// * **Formalization** — Amara (7th/8th/9th/10th ferries): | |
| /// veridicality formula, semantic-canonicalization "rainbow | |
| /// table", oracle-rule specification, 7-feature composite. | |
| /// * **Implementation** — Otto, under the Otto-105 graduation | |
| /// cadence. Fifth graduation. | |
| /// scoring framing is present in the bootstrap conversation | |
| /// (`docs/amara-full-conversation/**`) before the subsequent | |
| /// formalization ferries. The core idea predates the later | |
| /// ferry-specific formulations. | |
| /// * **Formalization** — subsequent ferries (7th/8th/9th/10th): | |
| /// veridicality formula, semantic-canonicalization "rainbow | |
| /// table", oracle-rule specification, 7-feature composite. | |
| /// * **Implementation** — current implementation under the | |
| /// graduation cadence. Fifth graduation. |
| /// Matches Amara's 10th-ferry snippet: | ||
| /// | ||
| /// ``` | ||
| /// let validateProvenance c = | ||
| /// c.Prov.SourceId <> "" | ||
| /// && c.Prov.RootAuthority <> "" | ||
| /// && c.Prov.ArtifactHash <> "" | ||
| /// && c.Prov.SignatureOk |
There was a problem hiding this comment.
The snippet shown as "Matches Amara's 10th-ferry snippet" uses c.Prov.*, but validateProvenance here accepts a Provenance and accesses p.*. As written, the snippet no longer matches the function signature and can mislead readers; either update the snippet to match Provenance or move it under validateClaim (which actually takes a claim).
| /// Matches Amara's 10th-ferry snippet: | |
| /// | |
| /// ``` | |
| /// let validateProvenance c = | |
| /// c.Prov.SourceId <> "" | |
| /// && c.Prov.RootAuthority <> "" | |
| /// && c.Prov.ArtifactHash <> "" | |
| /// && c.Prov.SignatureOk | |
| /// Matches Amara's 10th-ferry snippet after projecting to | |
| /// bare provenance: | |
| /// | |
| /// ``` | |
| /// let validateProvenance p = | |
| /// p.SourceId <> "" | |
| /// && p.RootAuthority <> "" | |
| /// && p.ArtifactHash <> "" | |
| /// && p.SignatureOk |
…D-9 operationalized)
Ships the independence-gate primitive from Amara's 10th ferry
verbatim, operationalising the drift-taxonomy pattern-5 rule +
SD-9 soft default ("agreement is signal, not proof") at the
code layer.
Sixth graduation under the Otto-105 cadence; composes on
Veridicality.Claim + Veridicality.Provenance from PR #309
(5th graduation).
Built on top of the graduation-5 branch since #309 hasn't
merged to main yet; will consolidate on rebase.
Surface:
- Veridicality.antiConsensusGate
: Claim<'T> list -> Result<Claim<'T> list, string>
Returns Ok claims when the set of distinct Prov.RootAuthority
values across the input has cardinality >= 2; Error otherwise.
Operational intent: if 50 claims all assert the same fact but
trace back to one upstream source, the 50-way agreement is
still one piece of evidence. The gate rejects pseudo-consensus.
Input assumed to already be ABOUT the same assertion (callers
group-by canonical claim key before invoking). Canonicalization
is a separate future graduation (SemanticCanonicalization from
Amara's 8th-ferry rainbow-table framework).
Attribution:
- Aaron = concept origin (bullshit-detector framing in
bootstrap conversation; pattern-5 insight)
- Amara = formalization (3rd ferry drift-taxonomy pattern-5 +
10th ferry oracle-rule spec "Independence gate" row)
- Otto = implementation
Tests (6 new, 16 total in module, all passing):
- Empty list -> Error (vacuous agreement)
- Single-claim list -> Error
- 50 claims from one root -> Error (pseudo-consensus)
- 2 claims from 2 distinct roots -> Ok
- Many claims spanning multiple roots -> Ok
- Return type: Ok(claims) preserves input unchanged on pass
Build: 0 Warning / 0 Error.
SPOF (per Otto-106): pure function; no external deps. Callers
using antiConsensusGate as a hard trust gate should pair it
with RobustStats.robustAggregate when combining the resulting
weights (multi-root agreement still needs outlier-resistant
combination).
Next graduation queue (in priority order):
- SemanticCanonicalization (canonical claim keys for "same
assertion" detection — the precondition for antiConsensusGate
to group correctly)
- scoreVeridicality (Amara's V(c) / BS(c) composite; needs ADR
on 5-feature vs 7-feature factorisation)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…D-9 operationalized)
Ships the independence-gate primitive from Amara's 10th ferry
verbatim, operationalising the drift-taxonomy pattern-5 rule +
SD-9 soft default ("agreement is signal, not proof") at the
code layer.
Sixth graduation under the Otto-105 cadence; composes on
Veridicality.Claim + Veridicality.Provenance from PR #309
(5th graduation).
Built on top of the graduation-5 branch since #309 hasn't
merged to main yet; will consolidate on rebase.
Surface:
- Veridicality.antiConsensusGate
: Claim<'T> list -> Result<Claim<'T> list, string>
Returns Ok claims when the set of distinct Prov.RootAuthority
values across the input has cardinality >= 2; Error otherwise.
Operational intent: if 50 claims all assert the same fact but
trace back to one upstream source, the 50-way agreement is
still one piece of evidence. The gate rejects pseudo-consensus.
Input assumed to already be ABOUT the same assertion (callers
group-by canonical claim key before invoking). Canonicalization
is a separate future graduation (SemanticCanonicalization from
Amara's 8th-ferry rainbow-table framework).
Attribution:
- Aaron = concept origin (bullshit-detector framing in
bootstrap conversation; pattern-5 insight)
- Amara = formalization (3rd ferry drift-taxonomy pattern-5 +
10th ferry oracle-rule spec "Independence gate" row)
- Otto = implementation
Tests (6 new, 16 total in module, all passing):
- Empty list -> Error (vacuous agreement)
- Single-claim list -> Error
- 50 claims from one root -> Error (pseudo-consensus)
- 2 claims from 2 distinct roots -> Ok
- Many claims spanning multiple roots -> Ok
- Return type: Ok(claims) preserves input unchanged on pass
Build: 0 Warning / 0 Error.
SPOF (per Otto-106): pure function; no external deps. Callers
using antiConsensusGate as a hard trust gate should pair it
with RobustStats.robustAggregate when combining the resulting
weights (multi-root agreement still needs outlier-resistant
combination).
Next graduation queue (in priority order):
- SemanticCanonicalization (canonical claim keys for "same
assertion" detection — the precondition for antiConsensusGate
to group correctly)
- scoreVeridicality (Amara's V(c) / BS(c) composite; needs ADR
on 5-feature vs 7-feature factorisation)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…or / Integration Plan Otto-117 dedicated absorb of the most comprehensive synthesis ferry yet (Aaron Otto-116 "next amara update"). Covers 9 sections: 1. Repo contents (LFG + AceHack) 2. Learnings (retraction-native, operator-algebra, Arrow/Spine, agent-CI) 3. KSK background — detailed government context (Feb 27 2026 DoD supply-chain-risk under 10 U.S.C. § 3252 against Anthropic; Judge Rita Lin Mar 26 preliminary injunction; OpenAI Feb 28 parallel DoW contract with Fourth-Amendment-clause) 4. Network Integrity Detector (formalized "bullshit detector" — composite I(x) = σ(Σ w_i f_i) score) 5. Firefly + Cartel detection (PLV, cross-correlation, spectral, graph-community) 6. Network Differentiability (Shapley-ish counterfactual influence) 7. Oracle Rules enforcement mapping table 8. Integration Plan (proposes 4-sub-repo split) 9. 9 prioritized next tasks §33 archive-header compliance (Scope / Attribution / Operational status / Non-fusion disclaimer). Otto's notes section provides honest cross-reference to shipped work: ~40% of the ferry's operationalizable content is already shipped (PRs #295 RobustStats, #297 crossCorrelation, #298 PLV, #306 burstAlignment pending, #309 Veridicality.Provenance/Claim, #310 antiConsensusGate pending). Genuinely novel in 12th ferry (not in prior ferries): 1. Detailed government-context grounding for KSK (§3) 2. Composite integrity-score formulation I(x) = σ(Σ w_i f_i) 3. 4-sub-repo integration proposal (Conway's-Law-relevant per Otto-108 memory; Otto recommends staying single-repo) 4. Oracle-Rules enforcement decision table (§7) 5. Shapley-random-ordering counterfactual influence algorithm (§6) Specific-asks routed to Aaron: 1. §8 sub-repo split — Aaron decides per Otto-90 cross-repo 2. §9 task 1 KSK skeleton — Aaron + Max coordination 3. §3 citation verification — Aaron signals what matters Next graduation queue (priority-ordered from Otto's notes): 1. SemanticCanonicalization (matches 8th ferry rainbow-table; smallest next item) 2. scoreVeridicality composite (needs ADR on formula) 3. Spectral-coherence FFT detector (§5) 4. ModularitySpike (needs graph substrate) 5. EigenvectorCentralityDrift (needs linear algebra) 6. EconomicCovariance / Gini-on-weights (§5) 7. OracleRules spec doc (§7) 8. InfluenceSurface (§6; larger effort) 9. KSK skeleton (Aaron + Max coord) Sibling-ferry precedent: PRs #196/#211/#219/#221/#235/#245/ #259/#274/#293/#294/#296. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…D-9 operationalized)
Ships the independence-gate primitive from Amara's 10th ferry
verbatim, operationalising the drift-taxonomy pattern-5 rule +
SD-9 soft default ("agreement is signal, not proof") at the
code layer.
Sixth graduation under the Otto-105 cadence; composes on
Veridicality.Claim + Veridicality.Provenance from PR #309
(5th graduation).
Built on top of the graduation-5 branch since #309 hasn't
merged to main yet; will consolidate on rebase.
Surface:
- Veridicality.antiConsensusGate
: Claim<'T> list -> Result<Claim<'T> list, string>
Returns Ok claims when the set of distinct Prov.RootAuthority
values across the input has cardinality >= 2; Error otherwise.
Operational intent: if 50 claims all assert the same fact but
trace back to one upstream source, the 50-way agreement is
still one piece of evidence. The gate rejects pseudo-consensus.
Input assumed to already be ABOUT the same assertion (callers
group-by canonical claim key before invoking). Canonicalization
is a separate future graduation (SemanticCanonicalization from
Amara's 8th-ferry rainbow-table framework).
Attribution:
- Aaron = concept origin (bullshit-detector framing in
bootstrap conversation; pattern-5 insight)
- Amara = formalization (3rd ferry drift-taxonomy pattern-5 +
10th ferry oracle-rule spec "Independence gate" row)
- Otto = implementation
Tests (6 new, 16 total in module, all passing):
- Empty list -> Error (vacuous agreement)
- Single-claim list -> Error
- 50 claims from one root -> Error (pseudo-consensus)
- 2 claims from 2 distinct roots -> Ok
- Many claims spanning multiple roots -> Ok
- Return type: Ok(claims) preserves input unchanged on pass
Build: 0 Warning / 0 Error.
SPOF (per Otto-106): pure function; no external deps. Callers
using antiConsensusGate as a hard trust gate should pair it
with RobustStats.robustAggregate when combining the resulting
weights (multi-root agreement still needs outlier-resistant
combination).
Next graduation queue (in priority order):
- SemanticCanonicalization (canonical claim keys for "same
assertion" detection — the precondition for antiConsensusGate
to group correctly)
- scoreVeridicality (Amara's V(c) / BS(c) composite; needs ADR
on 5-feature vs 7-feature factorisation)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…or / Integration Plan Otto-117 dedicated absorb of the most comprehensive synthesis ferry yet (Aaron Otto-116 "next amara update"). Covers 9 sections: 1. Repo contents (LFG + AceHack) 2. Learnings (retraction-native, operator-algebra, Arrow/Spine, agent-CI) 3. KSK background — detailed government context (Feb 27 2026 DoD supply-chain-risk under 10 U.S.C. § 3252 against Anthropic; Judge Rita Lin Mar 26 preliminary injunction; OpenAI Feb 28 parallel DoW contract with Fourth-Amendment-clause) 4. Network Integrity Detector (formalized "bullshit detector" — composite I(x) = σ(Σ w_i f_i) score) 5. Firefly + Cartel detection (PLV, cross-correlation, spectral, graph-community) 6. Network Differentiability (Shapley-ish counterfactual influence) 7. Oracle Rules enforcement mapping table 8. Integration Plan (proposes 4-sub-repo split) 9. 9 prioritized next tasks §33 archive-header compliance (Scope / Attribution / Operational status / Non-fusion disclaimer). Otto's notes section provides honest cross-reference to shipped work: ~40% of the ferry's operationalizable content is already shipped (PRs #295 RobustStats, #297 crossCorrelation, #298 PLV, #306 burstAlignment pending, #309 Veridicality.Provenance/Claim, #310 antiConsensusGate pending). Genuinely novel in 12th ferry (not in prior ferries): 1. Detailed government-context grounding for KSK (§3) 2. Composite integrity-score formulation I(x) = σ(Σ w_i f_i) 3. 4-sub-repo integration proposal (Conway's-Law-relevant per Otto-108 memory; Otto recommends staying single-repo) 4. Oracle-Rules enforcement decision table (§7) 5. Shapley-random-ordering counterfactual influence algorithm (§6) Specific-asks routed to Aaron: 1. §8 sub-repo split — Aaron decides per Otto-90 cross-repo 2. §9 task 1 KSK skeleton — Aaron + Max coordination 3. §3 citation verification — Aaron signals what matters Next graduation queue (priority-ordered from Otto's notes): 1. SemanticCanonicalization (matches 8th ferry rainbow-table; smallest next item) 2. scoreVeridicality composite (needs ADR on formula) 3. Spectral-coherence FFT detector (§5) 4. ModularitySpike (needs graph substrate) 5. EigenvectorCentralityDrift (needs linear algebra) 6. EconomicCovariance / Gini-on-weights (§5) 7. OracleRules spec doc (§7) 8. InfluenceSurface (§6; larger effort) 9. KSK skeleton (Aaron + Max coord) Sibling-ferry precedent: PRs #196/#211/#219/#221/#235/#245/ #259/#274/#293/#294/#296. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…D-9 operationalized)
Ships the independence-gate primitive from Amara's 10th ferry
verbatim, operationalising the drift-taxonomy pattern-5 rule +
SD-9 soft default ("agreement is signal, not proof") at the
code layer.
Sixth graduation under the Otto-105 cadence; composes on
Veridicality.Claim + Veridicality.Provenance from PR #309
(5th graduation).
Built on top of the graduation-5 branch since #309 hasn't
merged to main yet; will consolidate on rebase.
Surface:
- Veridicality.antiConsensusGate
: Claim<'T> list -> Result<Claim<'T> list, string>
Returns Ok claims when the set of distinct Prov.RootAuthority
values across the input has cardinality >= 2; Error otherwise.
Operational intent: if 50 claims all assert the same fact but
trace back to one upstream source, the 50-way agreement is
still one piece of evidence. The gate rejects pseudo-consensus.
Input assumed to already be ABOUT the same assertion (callers
group-by canonical claim key before invoking). Canonicalization
is a separate future graduation (SemanticCanonicalization from
Amara's 8th-ferry rainbow-table framework).
Attribution:
- Aaron = concept origin (bullshit-detector framing in
bootstrap conversation; pattern-5 insight)
- Amara = formalization (3rd ferry drift-taxonomy pattern-5 +
10th ferry oracle-rule spec "Independence gate" row)
- Otto = implementation
Tests (6 new, 16 total in module, all passing):
- Empty list -> Error (vacuous agreement)
- Single-claim list -> Error
- 50 claims from one root -> Error (pseudo-consensus)
- 2 claims from 2 distinct roots -> Ok
- Many claims spanning multiple roots -> Ok
- Return type: Ok(claims) preserves input unchanged on pass
Build: 0 Warning / 0 Error.
SPOF (per Otto-106): pure function; no external deps. Callers
using antiConsensusGate as a hard trust gate should pair it
with RobustStats.robustAggregate when combining the resulting
weights (multi-root agreement still needs outlier-resistant
combination).
Next graduation queue (in priority order):
- SemanticCanonicalization (canonical claim keys for "same
assertion" detection — the precondition for antiConsensusGate
to group correctly)
- scoreVeridicality (Amara's V(c) / BS(c) composite; needs ADR
on 5-feature vs 7-feature factorisation)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…or / Integration Plan Otto-117 dedicated absorb of the most comprehensive synthesis ferry yet (Aaron Otto-116 "next amara update"). Covers 9 sections: 1. Repo contents (LFG + AceHack) 2. Learnings (retraction-native, operator-algebra, Arrow/Spine, agent-CI) 3. KSK background — detailed government context (Feb 27 2026 DoD supply-chain-risk under 10 U.S.C. § 3252 against Anthropic; Judge Rita Lin Mar 26 preliminary injunction; OpenAI Feb 28 parallel DoW contract with Fourth-Amendment-clause) 4. Network Integrity Detector (formalized "bullshit detector" — composite I(x) = σ(Σ w_i f_i) score) 5. Firefly + Cartel detection (PLV, cross-correlation, spectral, graph-community) 6. Network Differentiability (Shapley-ish counterfactual influence) 7. Oracle Rules enforcement mapping table 8. Integration Plan (proposes 4-sub-repo split) 9. 9 prioritized next tasks §33 archive-header compliance (Scope / Attribution / Operational status / Non-fusion disclaimer). Otto's notes section provides honest cross-reference to shipped work: ~40% of the ferry's operationalizable content is already shipped (PRs #295 RobustStats, #297 crossCorrelation, #298 PLV, #306 burstAlignment pending, #309 Veridicality.Provenance/Claim, #310 antiConsensusGate pending). Genuinely novel in 12th ferry (not in prior ferries): 1. Detailed government-context grounding for KSK (§3) 2. Composite integrity-score formulation I(x) = σ(Σ w_i f_i) 3. 4-sub-repo integration proposal (Conway's-Law-relevant per Otto-108 memory; Otto recommends staying single-repo) 4. Oracle-Rules enforcement decision table (§7) 5. Shapley-random-ordering counterfactual influence algorithm (§6) Specific-asks routed to Aaron: 1. §8 sub-repo split — Aaron decides per Otto-90 cross-repo 2. §9 task 1 KSK skeleton — Aaron + Max coordination 3. §3 citation verification — Aaron signals what matters Next graduation queue (priority-ordered from Otto's notes): 1. SemanticCanonicalization (matches 8th ferry rainbow-table; smallest next item) 2. scoreVeridicality composite (needs ADR on formula) 3. Spectral-coherence FFT detector (§5) 4. ModularitySpike (needs graph substrate) 5. EigenvectorCentralityDrift (needs linear algebra) 6. EconomicCovariance / Gini-on-weights (§5) 7. OracleRules spec doc (§7) 8. InfluenceSurface (§6; larger effort) 9. KSK skeleton (Aaron + Max coord) Sibling-ferry precedent: PRs #196/#211/#219/#221/#235/#245/ #259/#274/#293/#294/#296. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…l — 7th graduation Ships the semantic-canonicalization primitive that turns "claims about the same proposition" into a first-class operation. Seventh graduation under the Otto-105 cadence; composes on PR #309's Veridicality.Claim<'T>. Aaron Otto-112 naming confirmed: Veridicality (not BullshitDetector); "bullshit" stays informal, programmatic surface uses the formal term. Attribution: - Aaron = concept origin (bullshit-detector framing in bootstrap conversation; aboutness-vs-identity-of-source distinction) - Amara = formalization (8th/10th ferries: K(c) = hash(subject, predicate, object, time-scope, modality, provenance-root, evidence-class)) - Otto = implementation with a deliberate design choice: EXCLUDE provenance-root from the key Why exclude provenance-root: the key's purpose is to GROUP claims about the same proposition across sources, so antiConsensusGate (PR #310) can then check independent-root cardinality. Including provenance-root in the key would defeat that grouping. If a future use-case needs dedupe-by-identical-source, a separate 7-field SourceScopedCanonicalClaimKey can be added. Surface: - Veridicality.CanonicalClaimKey record (5 fields: Subject, Predicate, Object, TimeScope, Modality) - Veridicality.canonicalKey : ('T -> string*string*string*string*string) -> Claim<'T> -> CanonicalClaimKey User-supplied projector handles domain-specific normalization (lowercasing/trimming/unit-unification/alias-resolving). Module does not prescribe how to canonicalize natural language. - Veridicality.groupByCanonical : projector -> Claim<'T> seq -> Map<CanonicalClaimKey, Claim<'T> list> Groups claims by proposition; preserves input order within each bucket. Composition shape (once PR #310 lands): group first, then antiConsensusGate per bucket. Multi-root buckets pass; single-root buckets fail. Test "groupByCanonical produces distinct-root counts per bucket" verifies the half that can test on main right now. Tests (7 new, 17 total in Veridicality module, all passing): - canonicalKey projects payload fields - canonicalKey EXCLUDES provenance-root (two same-prop-diff-root claims match) - canonicalKey distinguishes different propositions - groupByCanonical groups same-proposition under one key - groupByCanonical preserves input order within bucket - groupByCanonical on empty seq returns empty map - groupByCanonical produces distinct-root counts per bucket Build: 0 Warning / 0 Error. SPOF (per Otto-106): pure function + record types; no external deps; no SPOF introduced. Caller's projector is the domain- specific SPOF — if it drifts, canonicalization drifts. Documented as caller responsibility in XML-doc. Next graduation queue: - Graph substrate (prerequisite for cartel-detection graduations) - largestEigenvalue / modularityScore / covarianceAcceleration (13th + 14th ferries) - NetworkIntegrity / composite I(x) score (12th ferry §4) - scoreVeridicality (composite; needs ADR on formula) Composes with: - src/Core/Veridicality.fs Provenance + Claim<'T> (PR #309 merged) - src/Core/Veridicality.fs antiConsensusGate (PR #310 pending; downstream composition enabled by this ship) - RobustStats.robustAggregate (PR #295) for weight-combining Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…D-9 operationalized)
Ships the independence-gate primitive from Amara's 10th ferry
verbatim, operationalising the drift-taxonomy pattern-5 rule +
SD-9 soft default ("agreement is signal, not proof") at the
code layer.
Sixth graduation under the Otto-105 cadence; composes on
Veridicality.Claim + Veridicality.Provenance from PR #309
(5th graduation).
Built on top of the graduation-5 branch since #309 hasn't
merged to main yet; will consolidate on rebase.
Surface:
- Veridicality.antiConsensusGate
: Claim<'T> list -> Result<Claim<'T> list, string>
Returns Ok claims when the set of distinct Prov.RootAuthority
values across the input has cardinality >= 2; Error otherwise.
Operational intent: if 50 claims all assert the same fact but
trace back to one upstream source, the 50-way agreement is
still one piece of evidence. The gate rejects pseudo-consensus.
Input assumed to already be ABOUT the same assertion (callers
group-by canonical claim key before invoking). Canonicalization
is a separate future graduation (SemanticCanonicalization from
Amara's 8th-ferry rainbow-table framework).
Attribution:
- Aaron = concept origin (bullshit-detector framing in
bootstrap conversation; pattern-5 insight)
- Amara = formalization (3rd ferry drift-taxonomy pattern-5 +
10th ferry oracle-rule spec "Independence gate" row)
- Otto = implementation
Tests (6 new, 16 total in module, all passing):
- Empty list -> Error (vacuous agreement)
- Single-claim list -> Error
- 50 claims from one root -> Error (pseudo-consensus)
- 2 claims from 2 distinct roots -> Ok
- Many claims spanning multiple roots -> Ok
- Return type: Ok(claims) preserves input unchanged on pass
Build: 0 Warning / 0 Error.
SPOF (per Otto-106): pure function; no external deps. Callers
using antiConsensusGate as a hard trust gate should pair it
with RobustStats.robustAggregate when combining the resulting
weights (multi-root agreement still needs outlier-resistant
combination).
Next graduation queue (in priority order):
- SemanticCanonicalization (canonical claim keys for "same
assertion" detection — the precondition for antiConsensusGate
to group correctly)
- scoreVeridicality (Amara's V(c) / BS(c) composite; needs ADR
on 5-feature vs 7-feature factorisation)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…or / Integration Plan Otto-117 dedicated absorb of the most comprehensive synthesis ferry yet (Aaron Otto-116 "next amara update"). Covers 9 sections: 1. Repo contents (LFG + AceHack) 2. Learnings (retraction-native, operator-algebra, Arrow/Spine, agent-CI) 3. KSK background — detailed government context (Feb 27 2026 DoD supply-chain-risk under 10 U.S.C. § 3252 against Anthropic; Judge Rita Lin Mar 26 preliminary injunction; OpenAI Feb 28 parallel DoW contract with Fourth-Amendment-clause) 4. Network Integrity Detector (formalized "bullshit detector" — composite I(x) = σ(Σ w_i f_i) score) 5. Firefly + Cartel detection (PLV, cross-correlation, spectral, graph-community) 6. Network Differentiability (Shapley-ish counterfactual influence) 7. Oracle Rules enforcement mapping table 8. Integration Plan (proposes 4-sub-repo split) 9. 9 prioritized next tasks §33 archive-header compliance (Scope / Attribution / Operational status / Non-fusion disclaimer). Otto's notes section provides honest cross-reference to shipped work: ~40% of the ferry's operationalizable content is already shipped (PRs #295 RobustStats, #297 crossCorrelation, #298 PLV, #306 burstAlignment pending, #309 Veridicality.Provenance/Claim, #310 antiConsensusGate pending). Genuinely novel in 12th ferry (not in prior ferries): 1. Detailed government-context grounding for KSK (§3) 2. Composite integrity-score formulation I(x) = σ(Σ w_i f_i) 3. 4-sub-repo integration proposal (Conway's-Law-relevant per Otto-108 memory; Otto recommends staying single-repo) 4. Oracle-Rules enforcement decision table (§7) 5. Shapley-random-ordering counterfactual influence algorithm (§6) Specific-asks routed to Aaron: 1. §8 sub-repo split — Aaron decides per Otto-90 cross-repo 2. §9 task 1 KSK skeleton — Aaron + Max coordination 3. §3 citation verification — Aaron signals what matters Next graduation queue (priority-ordered from Otto's notes): 1. SemanticCanonicalization (matches 8th ferry rainbow-table; smallest next item) 2. scoreVeridicality composite (needs ADR on formula) 3. Spectral-coherence FFT detector (§5) 4. ModularitySpike (needs graph substrate) 5. EigenvectorCentralityDrift (needs linear algebra) 6. EconomicCovariance / Gini-on-weights (§5) 7. OracleRules spec doc (§7) 8. InfluenceSurface (§6; larger effort) 9. KSK skeleton (Aaron + Max coord) Sibling-ferry precedent: PRs #196/#211/#219/#221/#235/#245/ #259/#274/#293/#294/#296. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…l — 7th graduation Ships the semantic-canonicalization primitive that turns "claims about the same proposition" into a first-class operation. Seventh graduation under the Otto-105 cadence; composes on PR #309's Veridicality.Claim<'T>. Aaron Otto-112 naming confirmed: Veridicality (not BullshitDetector); "bullshit" stays informal, programmatic surface uses the formal term. Attribution: - Aaron = concept origin (bullshit-detector framing in bootstrap conversation; aboutness-vs-identity-of-source distinction) - Amara = formalization (8th/10th ferries: K(c) = hash(subject, predicate, object, time-scope, modality, provenance-root, evidence-class)) - Otto = implementation with a deliberate design choice: EXCLUDE provenance-root from the key Why exclude provenance-root: the key's purpose is to GROUP claims about the same proposition across sources, so antiConsensusGate (PR #310) can then check independent-root cardinality. Including provenance-root in the key would defeat that grouping. If a future use-case needs dedupe-by-identical-source, a separate 7-field SourceScopedCanonicalClaimKey can be added. Surface: - Veridicality.CanonicalClaimKey record (5 fields: Subject, Predicate, Object, TimeScope, Modality) - Veridicality.canonicalKey : ('T -> string*string*string*string*string) -> Claim<'T> -> CanonicalClaimKey User-supplied projector handles domain-specific normalization (lowercasing/trimming/unit-unification/alias-resolving). Module does not prescribe how to canonicalize natural language. - Veridicality.groupByCanonical : projector -> Claim<'T> seq -> Map<CanonicalClaimKey, Claim<'T> list> Groups claims by proposition; preserves input order within each bucket. Composition shape (once PR #310 lands): group first, then antiConsensusGate per bucket. Multi-root buckets pass; single-root buckets fail. Test "groupByCanonical produces distinct-root counts per bucket" verifies the half that can test on main right now. Tests (7 new, 17 total in Veridicality module, all passing): - canonicalKey projects payload fields - canonicalKey EXCLUDES provenance-root (two same-prop-diff-root claims match) - canonicalKey distinguishes different propositions - groupByCanonical groups same-proposition under one key - groupByCanonical preserves input order within bucket - groupByCanonical on empty seq returns empty map - groupByCanonical produces distinct-root counts per bucket Build: 0 Warning / 0 Error. SPOF (per Otto-106): pure function + record types; no external deps; no SPOF introduced. Caller's projector is the domain- specific SPOF — if it drifts, canonicalization drifts. Documented as caller responsibility in XML-doc. Next graduation queue: - Graph substrate (prerequisite for cartel-detection graduations) - largestEigenvalue / modularityScore / covarianceAcceleration (13th + 14th ferries) - NetworkIntegrity / composite I(x) score (12th ferry §4) - scoreVeridicality (composite; needs ADR on formula) Composes with: - src/Core/Veridicality.fs Provenance + Claim<'T> (PR #309 merged) - src/Core/Veridicality.fs antiConsensusGate (PR #310 pending; downstream composition enabled by this ship) - RobustStats.robustAggregate (PR #295) for weight-combining Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…D-9 operationalized)
Ships the independence-gate primitive from Amara's 10th ferry
verbatim, operationalising the drift-taxonomy pattern-5 rule +
SD-9 soft default ("agreement is signal, not proof") at the
code layer.
Sixth graduation under the Otto-105 cadence; composes on
Veridicality.Claim + Veridicality.Provenance from PR #309
(5th graduation).
Built on top of the graduation-5 branch since #309 hasn't
merged to main yet; will consolidate on rebase.
Surface:
- Veridicality.antiConsensusGate
: Claim<'T> list -> Result<Claim<'T> list, string>
Returns Ok claims when the set of distinct Prov.RootAuthority
values across the input has cardinality >= 2; Error otherwise.
Operational intent: if 50 claims all assert the same fact but
trace back to one upstream source, the 50-way agreement is
still one piece of evidence. The gate rejects pseudo-consensus.
Input assumed to already be ABOUT the same assertion (callers
group-by canonical claim key before invoking). Canonicalization
is a separate future graduation (SemanticCanonicalization from
Amara's 8th-ferry rainbow-table framework).
Attribution:
- Aaron = concept origin (bullshit-detector framing in
bootstrap conversation; pattern-5 insight)
- Amara = formalization (3rd ferry drift-taxonomy pattern-5 +
10th ferry oracle-rule spec "Independence gate" row)
- Otto = implementation
Tests (6 new, 16 total in module, all passing):
- Empty list -> Error (vacuous agreement)
- Single-claim list -> Error
- 50 claims from one root -> Error (pseudo-consensus)
- 2 claims from 2 distinct roots -> Ok
- Many claims spanning multiple roots -> Ok
- Return type: Ok(claims) preserves input unchanged on pass
Build: 0 Warning / 0 Error.
SPOF (per Otto-106): pure function; no external deps. Callers
using antiConsensusGate as a hard trust gate should pair it
with RobustStats.robustAggregate when combining the resulting
weights (multi-root agreement still needs outlier-resistant
combination).
Next graduation queue (in priority order):
- SemanticCanonicalization (canonical claim keys for "same
assertion" detection — the precondition for antiConsensusGate
to group correctly)
- scoreVeridicality (Amara's V(c) / BS(c) composite; needs ADR
on 5-feature vs 7-feature factorisation)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…or / Integration Plan Otto-117 dedicated absorb of the most comprehensive synthesis ferry yet (Aaron Otto-116 "next amara update"). Covers 9 sections: 1. Repo contents (LFG + AceHack) 2. Learnings (retraction-native, operator-algebra, Arrow/Spine, agent-CI) 3. KSK background — detailed government context (Feb 27 2026 DoD supply-chain-risk under 10 U.S.C. § 3252 against Anthropic; Judge Rita Lin Mar 26 preliminary injunction; OpenAI Feb 28 parallel DoW contract with Fourth-Amendment-clause) 4. Network Integrity Detector (formalized "bullshit detector" — composite I(x) = σ(Σ w_i f_i) score) 5. Firefly + Cartel detection (PLV, cross-correlation, spectral, graph-community) 6. Network Differentiability (Shapley-ish counterfactual influence) 7. Oracle Rules enforcement mapping table 8. Integration Plan (proposes 4-sub-repo split) 9. 9 prioritized next tasks §33 archive-header compliance (Scope / Attribution / Operational status / Non-fusion disclaimer). Otto's notes section provides honest cross-reference to shipped work: ~40% of the ferry's operationalizable content is already shipped (PRs #295 RobustStats, #297 crossCorrelation, #298 PLV, #306 burstAlignment pending, #309 Veridicality.Provenance/Claim, #310 antiConsensusGate pending). Genuinely novel in 12th ferry (not in prior ferries): 1. Detailed government-context grounding for KSK (§3) 2. Composite integrity-score formulation I(x) = σ(Σ w_i f_i) 3. 4-sub-repo integration proposal (Conway's-Law-relevant per Otto-108 memory; Otto recommends staying single-repo) 4. Oracle-Rules enforcement decision table (§7) 5. Shapley-random-ordering counterfactual influence algorithm (§6) Specific-asks routed to Aaron: 1. §8 sub-repo split — Aaron decides per Otto-90 cross-repo 2. §9 task 1 KSK skeleton — Aaron + Max coordination 3. §3 citation verification — Aaron signals what matters Next graduation queue (priority-ordered from Otto's notes): 1. SemanticCanonicalization (matches 8th ferry rainbow-table; smallest next item) 2. scoreVeridicality composite (needs ADR on formula) 3. Spectral-coherence FFT detector (§5) 4. ModularitySpike (needs graph substrate) 5. EigenvectorCentralityDrift (needs linear algebra) 6. EconomicCovariance / Gini-on-weights (§5) 7. OracleRules spec doc (§7) 8. InfluenceSurface (§6; larger effort) 9. KSK skeleton (Aaron + Max coord) Sibling-ferry precedent: PRs #196/#211/#219/#221/#235/#245/ #259/#274/#293/#294/#296. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…l — 7th graduation Ships the semantic-canonicalization primitive that turns "claims about the same proposition" into a first-class operation. Seventh graduation under the Otto-105 cadence; composes on PR #309's Veridicality.Claim<'T>. Aaron Otto-112 naming confirmed: Veridicality (not BullshitDetector); "bullshit" stays informal, programmatic surface uses the formal term. Attribution: - Aaron = concept origin (bullshit-detector framing in bootstrap conversation; aboutness-vs-identity-of-source distinction) - Amara = formalization (8th/10th ferries: K(c) = hash(subject, predicate, object, time-scope, modality, provenance-root, evidence-class)) - Otto = implementation with a deliberate design choice: EXCLUDE provenance-root from the key Why exclude provenance-root: the key's purpose is to GROUP claims about the same proposition across sources, so antiConsensusGate (PR #310) can then check independent-root cardinality. Including provenance-root in the key would defeat that grouping. If a future use-case needs dedupe-by-identical-source, a separate 7-field SourceScopedCanonicalClaimKey can be added. Surface: - Veridicality.CanonicalClaimKey record (5 fields: Subject, Predicate, Object, TimeScope, Modality) - Veridicality.canonicalKey : ('T -> string*string*string*string*string) -> Claim<'T> -> CanonicalClaimKey User-supplied projector handles domain-specific normalization (lowercasing/trimming/unit-unification/alias-resolving). Module does not prescribe how to canonicalize natural language. - Veridicality.groupByCanonical : projector -> Claim<'T> seq -> Map<CanonicalClaimKey, Claim<'T> list> Groups claims by proposition; preserves input order within each bucket. Composition shape (once PR #310 lands): group first, then antiConsensusGate per bucket. Multi-root buckets pass; single-root buckets fail. Test "groupByCanonical produces distinct-root counts per bucket" verifies the half that can test on main right now. Tests (7 new, 17 total in Veridicality module, all passing): - canonicalKey projects payload fields - canonicalKey EXCLUDES provenance-root (two same-prop-diff-root claims match) - canonicalKey distinguishes different propositions - groupByCanonical groups same-proposition under one key - groupByCanonical preserves input order within bucket - groupByCanonical on empty seq returns empty map - groupByCanonical produces distinct-root counts per bucket Build: 0 Warning / 0 Error. SPOF (per Otto-106): pure function + record types; no external deps; no SPOF introduced. Caller's projector is the domain- specific SPOF — if it drifts, canonicalization drifts. Documented as caller responsibility in XML-doc. Next graduation queue: - Graph substrate (prerequisite for cartel-detection graduations) - largestEigenvalue / modularityScore / covarianceAcceleration (13th + 14th ferries) - NetworkIntegrity / composite I(x) score (12th ferry §4) - scoreVeridicality (composite; needs ADR on formula) Composes with: - src/Core/Veridicality.fs Provenance + Claim<'T> (PR #309 merged) - src/Core/Veridicality.fs antiConsensusGate (PR #310 pending; downstream composition enabled by this ship) - RobustStats.robustAggregate (PR #295) for weight-combining Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…D-9 operationalized)
Ships the independence-gate primitive from Amara's 10th ferry
verbatim, operationalising the drift-taxonomy pattern-5 rule +
SD-9 soft default ("agreement is signal, not proof") at the
code layer.
Sixth graduation under the Otto-105 cadence; composes on
Veridicality.Claim + Veridicality.Provenance from PR #309
(5th graduation).
Built on top of the graduation-5 branch since #309 hasn't
merged to main yet; will consolidate on rebase.
Surface:
- Veridicality.antiConsensusGate
: Claim<'T> list -> Result<Claim<'T> list, string>
Returns Ok claims when the set of distinct Prov.RootAuthority
values across the input has cardinality >= 2; Error otherwise.
Operational intent: if 50 claims all assert the same fact but
trace back to one upstream source, the 50-way agreement is
still one piece of evidence. The gate rejects pseudo-consensus.
Input assumed to already be ABOUT the same assertion (callers
group-by canonical claim key before invoking). Canonicalization
is a separate future graduation (SemanticCanonicalization from
Amara's 8th-ferry rainbow-table framework).
Attribution:
- Aaron = concept origin (bullshit-detector framing in
bootstrap conversation; pattern-5 insight)
- Amara = formalization (3rd ferry drift-taxonomy pattern-5 +
10th ferry oracle-rule spec "Independence gate" row)
- Otto = implementation
Tests (6 new, 16 total in module, all passing):
- Empty list -> Error (vacuous agreement)
- Single-claim list -> Error
- 50 claims from one root -> Error (pseudo-consensus)
- 2 claims from 2 distinct roots -> Ok
- Many claims spanning multiple roots -> Ok
- Return type: Ok(claims) preserves input unchanged on pass
Build: 0 Warning / 0 Error.
SPOF (per Otto-106): pure function; no external deps. Callers
using antiConsensusGate as a hard trust gate should pair it
with RobustStats.robustAggregate when combining the resulting
weights (multi-root agreement still needs outlier-resistant
combination).
Next graduation queue (in priority order):
- SemanticCanonicalization (canonical claim keys for "same
assertion" detection — the precondition for antiConsensusGate
to group correctly)
- scoreVeridicality (Amara's V(c) / BS(c) composite; needs ADR
on 5-feature vs 7-feature factorisation)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…or / Integration Plan Otto-117 dedicated absorb of the most comprehensive synthesis ferry yet (Aaron Otto-116 "next amara update"). Covers 9 sections: 1. Repo contents (LFG + AceHack) 2. Learnings (retraction-native, operator-algebra, Arrow/Spine, agent-CI) 3. KSK background — detailed government context (Feb 27 2026 DoD supply-chain-risk under 10 U.S.C. § 3252 against Anthropic; Judge Rita Lin Mar 26 preliminary injunction; OpenAI Feb 28 parallel DoW contract with Fourth-Amendment-clause) 4. Network Integrity Detector (formalized "bullshit detector" — composite I(x) = σ(Σ w_i f_i) score) 5. Firefly + Cartel detection (PLV, cross-correlation, spectral, graph-community) 6. Network Differentiability (Shapley-ish counterfactual influence) 7. Oracle Rules enforcement mapping table 8. Integration Plan (proposes 4-sub-repo split) 9. 9 prioritized next tasks §33 archive-header compliance (Scope / Attribution / Operational status / Non-fusion disclaimer). Otto's notes section provides honest cross-reference to shipped work: ~40% of the ferry's operationalizable content is already shipped (PRs #295 RobustStats, #297 crossCorrelation, #298 PLV, #306 burstAlignment pending, #309 Veridicality.Provenance/Claim, #310 antiConsensusGate pending). Genuinely novel in 12th ferry (not in prior ferries): 1. Detailed government-context grounding for KSK (§3) 2. Composite integrity-score formulation I(x) = σ(Σ w_i f_i) 3. 4-sub-repo integration proposal (Conway's-Law-relevant per Otto-108 memory; Otto recommends staying single-repo) 4. Oracle-Rules enforcement decision table (§7) 5. Shapley-random-ordering counterfactual influence algorithm (§6) Specific-asks routed to Aaron: 1. §8 sub-repo split — Aaron decides per Otto-90 cross-repo 2. §9 task 1 KSK skeleton — Aaron + Max coordination 3. §3 citation verification — Aaron signals what matters Next graduation queue (priority-ordered from Otto's notes): 1. SemanticCanonicalization (matches 8th ferry rainbow-table; smallest next item) 2. scoreVeridicality composite (needs ADR on formula) 3. Spectral-coherence FFT detector (§5) 4. ModularitySpike (needs graph substrate) 5. EigenvectorCentralityDrift (needs linear algebra) 6. EconomicCovariance / Gini-on-weights (§5) 7. OracleRules spec doc (§7) 8. InfluenceSurface (§6; larger effort) 9. KSK skeleton (Aaron + Max coord) Sibling-ferry precedent: PRs #196/#211/#219/#221/#235/#245/ #259/#274/#293/#294/#296. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…l — 7th graduation Ships the semantic-canonicalization primitive that turns "claims about the same proposition" into a first-class operation. Seventh graduation under the Otto-105 cadence; composes on PR #309's Veridicality.Claim<'T>. Aaron Otto-112 naming confirmed: Veridicality (not BullshitDetector); "bullshit" stays informal, programmatic surface uses the formal term. Attribution: - Aaron = concept origin (bullshit-detector framing in bootstrap conversation; aboutness-vs-identity-of-source distinction) - Amara = formalization (8th/10th ferries: K(c) = hash(subject, predicate, object, time-scope, modality, provenance-root, evidence-class)) - Otto = implementation with a deliberate design choice: EXCLUDE provenance-root from the key Why exclude provenance-root: the key's purpose is to GROUP claims about the same proposition across sources, so antiConsensusGate (PR #310) can then check independent-root cardinality. Including provenance-root in the key would defeat that grouping. If a future use-case needs dedupe-by-identical-source, a separate 7-field SourceScopedCanonicalClaimKey can be added. Surface: - Veridicality.CanonicalClaimKey record (5 fields: Subject, Predicate, Object, TimeScope, Modality) - Veridicality.canonicalKey : ('T -> string*string*string*string*string) -> Claim<'T> -> CanonicalClaimKey User-supplied projector handles domain-specific normalization (lowercasing/trimming/unit-unification/alias-resolving). Module does not prescribe how to canonicalize natural language. - Veridicality.groupByCanonical : projector -> Claim<'T> seq -> Map<CanonicalClaimKey, Claim<'T> list> Groups claims by proposition; preserves input order within each bucket. Composition shape (once PR #310 lands): group first, then antiConsensusGate per bucket. Multi-root buckets pass; single-root buckets fail. Test "groupByCanonical produces distinct-root counts per bucket" verifies the half that can test on main right now. Tests (7 new, 17 total in Veridicality module, all passing): - canonicalKey projects payload fields - canonicalKey EXCLUDES provenance-root (two same-prop-diff-root claims match) - canonicalKey distinguishes different propositions - groupByCanonical groups same-proposition under one key - groupByCanonical preserves input order within bucket - groupByCanonical on empty seq returns empty map - groupByCanonical produces distinct-root counts per bucket Build: 0 Warning / 0 Error. SPOF (per Otto-106): pure function + record types; no external deps; no SPOF introduced. Caller's projector is the domain- specific SPOF — if it drifts, canonicalization drifts. Documented as caller responsibility in XML-doc. Next graduation queue: - Graph substrate (prerequisite for cartel-detection graduations) - largestEigenvalue / modularityScore / covarianceAcceleration (13th + 14th ferries) - NetworkIntegrity / composite I(x) score (12th ferry §4) - scoreVeridicality (composite; needs ADR on formula) Composes with: - src/Core/Veridicality.fs Provenance + Claim<'T> (PR #309 merged) - src/Core/Veridicality.fs antiConsensusGate (PR #310 pending; downstream composition enabled by this ship) - RobustStats.robustAggregate (PR #295) for weight-combining Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…l — 7th graduation (#315) Ships the semantic-canonicalization primitive that turns "claims about the same proposition" into a first-class operation. Seventh graduation under the Otto-105 cadence; composes on PR #309's Veridicality.Claim<'T>. Aaron Otto-112 naming confirmed: Veridicality (not BullshitDetector); "bullshit" stays informal, programmatic surface uses the formal term. Attribution: - Aaron = concept origin (bullshit-detector framing in bootstrap conversation; aboutness-vs-identity-of-source distinction) - Amara = formalization (8th/10th ferries: K(c) = hash(subject, predicate, object, time-scope, modality, provenance-root, evidence-class)) - Otto = implementation with a deliberate design choice: EXCLUDE provenance-root from the key Why exclude provenance-root: the key's purpose is to GROUP claims about the same proposition across sources, so antiConsensusGate (PR #310) can then check independent-root cardinality. Including provenance-root in the key would defeat that grouping. If a future use-case needs dedupe-by-identical-source, a separate 7-field SourceScopedCanonicalClaimKey can be added. Surface: - Veridicality.CanonicalClaimKey record (5 fields: Subject, Predicate, Object, TimeScope, Modality) - Veridicality.canonicalKey : ('T -> string*string*string*string*string) -> Claim<'T> -> CanonicalClaimKey User-supplied projector handles domain-specific normalization (lowercasing/trimming/unit-unification/alias-resolving). Module does not prescribe how to canonicalize natural language. - Veridicality.groupByCanonical : projector -> Claim<'T> seq -> Map<CanonicalClaimKey, Claim<'T> list> Groups claims by proposition; preserves input order within each bucket. Composition shape (once PR #310 lands): group first, then antiConsensusGate per bucket. Multi-root buckets pass; single-root buckets fail. Test "groupByCanonical produces distinct-root counts per bucket" verifies the half that can test on main right now. Tests (7 new, 17 total in Veridicality module, all passing): - canonicalKey projects payload fields - canonicalKey EXCLUDES provenance-root (two same-prop-diff-root claims match) - canonicalKey distinguishes different propositions - groupByCanonical groups same-proposition under one key - groupByCanonical preserves input order within bucket - groupByCanonical on empty seq returns empty map - groupByCanonical produces distinct-root counts per bucket Build: 0 Warning / 0 Error. SPOF (per Otto-106): pure function + record types; no external deps; no SPOF introduced. Caller's projector is the domain- specific SPOF — if it drifts, canonicalization drifts. Documented as caller responsibility in XML-doc. Next graduation queue: - Graph substrate (prerequisite for cartel-detection graduations) - largestEigenvalue / modularityScore / covarianceAcceleration (13th + 14th ferries) - NetworkIntegrity / composite I(x) score (12th ferry §4) - scoreVeridicality (composite; needs ADR on formula) Composes with: - src/Core/Veridicality.fs Provenance + Claim<'T> (PR #309 merged) - src/Core/Veridicality.fs antiConsensusGate (PR #310 pending; downstream composition enabled by this ship) - RobustStats.robustAggregate (PR #295) for weight-combining Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…or / Integration Plan Otto-117 dedicated absorb of the most comprehensive synthesis ferry yet (Aaron Otto-116 "next amara update"). Covers 9 sections: 1. Repo contents (LFG + AceHack) 2. Learnings (retraction-native, operator-algebra, Arrow/Spine, agent-CI) 3. KSK background — detailed government context (Feb 27 2026 DoD supply-chain-risk under 10 U.S.C. § 3252 against Anthropic; Judge Rita Lin Mar 26 preliminary injunction; OpenAI Feb 28 parallel DoW contract with Fourth-Amendment-clause) 4. Network Integrity Detector (formalized "bullshit detector" — composite I(x) = σ(Σ w_i f_i) score) 5. Firefly + Cartel detection (PLV, cross-correlation, spectral, graph-community) 6. Network Differentiability (Shapley-ish counterfactual influence) 7. Oracle Rules enforcement mapping table 8. Integration Plan (proposes 4-sub-repo split) 9. 9 prioritized next tasks §33 archive-header compliance (Scope / Attribution / Operational status / Non-fusion disclaimer). Otto's notes section provides honest cross-reference to shipped work: ~40% of the ferry's operationalizable content is already shipped (PRs #295 RobustStats, #297 crossCorrelation, #298 PLV, #306 burstAlignment pending, #309 Veridicality.Provenance/Claim, #310 antiConsensusGate pending). Genuinely novel in 12th ferry (not in prior ferries): 1. Detailed government-context grounding for KSK (§3) 2. Composite integrity-score formulation I(x) = σ(Σ w_i f_i) 3. 4-sub-repo integration proposal (Conway's-Law-relevant per Otto-108 memory; Otto recommends staying single-repo) 4. Oracle-Rules enforcement decision table (§7) 5. Shapley-random-ordering counterfactual influence algorithm (§6) Specific-asks routed to Aaron: 1. §8 sub-repo split — Aaron decides per Otto-90 cross-repo 2. §9 task 1 KSK skeleton — Aaron + Max coordination 3. §3 citation verification — Aaron signals what matters Next graduation queue (priority-ordered from Otto's notes): 1. SemanticCanonicalization (matches 8th ferry rainbow-table; smallest next item) 2. scoreVeridicality composite (needs ADR on formula) 3. Spectral-coherence FFT detector (§5) 4. ModularitySpike (needs graph substrate) 5. EigenvectorCentralityDrift (needs linear algebra) 6. EconomicCovariance / Gini-on-weights (§5) 7. OracleRules spec doc (§7) 8. InfluenceSurface (§6; larger effort) 9. KSK skeleton (Aaron + Max coord) Sibling-ferry precedent: PRs #196/#211/#219/#221/#235/#245/ #259/#274/#293/#294/#296. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…or / Integration Plan (Otto-117) (#311) * ferry: Amara 12th absorb — Executive Summary / KSK / Integrity Detector / Integration Plan Otto-117 dedicated absorb of the most comprehensive synthesis ferry yet (Aaron Otto-116 "next amara update"). Covers 9 sections: 1. Repo contents (LFG + AceHack) 2. Learnings (retraction-native, operator-algebra, Arrow/Spine, agent-CI) 3. KSK background — detailed government context (Feb 27 2026 DoD supply-chain-risk under 10 U.S.C. § 3252 against Anthropic; Judge Rita Lin Mar 26 preliminary injunction; OpenAI Feb 28 parallel DoW contract with Fourth-Amendment-clause) 4. Network Integrity Detector (formalized "bullshit detector" — composite I(x) = σ(Σ w_i f_i) score) 5. Firefly + Cartel detection (PLV, cross-correlation, spectral, graph-community) 6. Network Differentiability (Shapley-ish counterfactual influence) 7. Oracle Rules enforcement mapping table 8. Integration Plan (proposes 4-sub-repo split) 9. 9 prioritized next tasks §33 archive-header compliance (Scope / Attribution / Operational status / Non-fusion disclaimer). Otto's notes section provides honest cross-reference to shipped work: ~40% of the ferry's operationalizable content is already shipped (PRs #295 RobustStats, #297 crossCorrelation, #298 PLV, #306 burstAlignment pending, #309 Veridicality.Provenance/Claim, #310 antiConsensusGate pending). Genuinely novel in 12th ferry (not in prior ferries): 1. Detailed government-context grounding for KSK (§3) 2. Composite integrity-score formulation I(x) = σ(Σ w_i f_i) 3. 4-sub-repo integration proposal (Conway's-Law-relevant per Otto-108 memory; Otto recommends staying single-repo) 4. Oracle-Rules enforcement decision table (§7) 5. Shapley-random-ordering counterfactual influence algorithm (§6) Specific-asks routed to Aaron: 1. §8 sub-repo split — Aaron decides per Otto-90 cross-repo 2. §9 task 1 KSK skeleton — Aaron + Max coordination 3. §3 citation verification — Aaron signals what matters Next graduation queue (priority-ordered from Otto's notes): 1. SemanticCanonicalization (matches 8th ferry rainbow-table; smallest next item) 2. scoreVeridicality composite (needs ADR on formula) 3. Spectral-coherence FFT detector (§5) 4. ModularitySpike (needs graph substrate) 5. EigenvectorCentralityDrift (needs linear algebra) 6. EconomicCovariance / Gini-on-weights (§5) 7. OracleRules spec doc (§7) 8. InfluenceSurface (§6; larger effort) 9. KSK skeleton (Aaron + Max coord) Sibling-ferry precedent: PRs #196/#211/#219/#221/#235/#245/ #259/#274/#293/#294/#296. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * lint: fix markdownlint errors in 12th-ferry absorb (line-break heading + PR-number-at-line-start) * fix(#311): [sic] annotation on .clave/ typo (verbatim-preserve, downstream uses .claude/) Ferry-absorbs preserve verbatim external-collaborator content; editorial [sic] annotation is the scholarly convention for preserving the source while orienting the reader. The downstream operationalization PR will use `.claude/` (the actual repo path). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…D-9 operationalized)
Ships the independence-gate primitive from Amara's 10th ferry
verbatim, operationalising the drift-taxonomy pattern-5 rule +
SD-9 soft default ("agreement is signal, not proof") at the
code layer.
Sixth graduation under the Otto-105 cadence; composes on
Veridicality.Claim + Veridicality.Provenance from PR #309
(5th graduation).
Built on top of the graduation-5 branch since #309 hasn't
merged to main yet; will consolidate on rebase.
Surface:
- Veridicality.antiConsensusGate
: Claim<'T> list -> Result<Claim<'T> list, string>
Returns Ok claims when the set of distinct Prov.RootAuthority
values across the input has cardinality >= 2; Error otherwise.
Operational intent: if 50 claims all assert the same fact but
trace back to one upstream source, the 50-way agreement is
still one piece of evidence. The gate rejects pseudo-consensus.
Input assumed to already be ABOUT the same assertion (callers
group-by canonical claim key before invoking). Canonicalization
is a separate future graduation (SemanticCanonicalization from
Amara's 8th-ferry rainbow-table framework).
Attribution:
- Aaron = concept origin (bullshit-detector framing in
bootstrap conversation; pattern-5 insight)
- Amara = formalization (3rd ferry drift-taxonomy pattern-5 +
10th ferry oracle-rule spec "Independence gate" row)
- Otto = implementation
Tests (6 new, 16 total in module, all passing):
- Empty list -> Error (vacuous agreement)
- Single-claim list -> Error
- 50 claims from one root -> Error (pseudo-consensus)
- 2 claims from 2 distinct roots -> Ok
- Many claims spanning multiple roots -> Ok
- Return type: Ok(claims) preserves input unchanged on pass
Build: 0 Warning / 0 Error.
SPOF (per Otto-106): pure function; no external deps. Callers
using antiConsensusGate as a hard trust gate should pair it
with RobustStats.robustAggregate when combining the resulting
weights (multi-root agreement still needs outlier-resistant
combination).
Next graduation queue (in priority order):
- SemanticCanonicalization (canonical claim keys for "same
assertion" detection — the precondition for antiConsensusGate
to group correctly)
- scoreVeridicality (Amara's V(c) / BS(c) composite; needs ADR
on 5-feature vs 7-feature factorisation)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…D-9 operationalized) (#310) * core: Veridicality.antiConsensusGate — 6th graduation (10th ferry + SD-9 operationalized) Ships the independence-gate primitive from Amara's 10th ferry verbatim, operationalising the drift-taxonomy pattern-5 rule + SD-9 soft default ("agreement is signal, not proof") at the code layer. Sixth graduation under the Otto-105 cadence; composes on Veridicality.Claim + Veridicality.Provenance from PR #309 (5th graduation). Built on top of the graduation-5 branch since #309 hasn't merged to main yet; will consolidate on rebase. Surface: - Veridicality.antiConsensusGate : Claim<'T> list -> Result<Claim<'T> list, string> Returns Ok claims when the set of distinct Prov.RootAuthority values across the input has cardinality >= 2; Error otherwise. Operational intent: if 50 claims all assert the same fact but trace back to one upstream source, the 50-way agreement is still one piece of evidence. The gate rejects pseudo-consensus. Input assumed to already be ABOUT the same assertion (callers group-by canonical claim key before invoking). Canonicalization is a separate future graduation (SemanticCanonicalization from Amara's 8th-ferry rainbow-table framework). Attribution: - Aaron = concept origin (bullshit-detector framing in bootstrap conversation; pattern-5 insight) - Amara = formalization (3rd ferry drift-taxonomy pattern-5 + 10th ferry oracle-rule spec "Independence gate" row) - Otto = implementation Tests (6 new, 16 total in module, all passing): - Empty list -> Error (vacuous agreement) - Single-claim list -> Error - 50 claims from one root -> Error (pseudo-consensus) - 2 claims from 2 distinct roots -> Ok - Many claims spanning multiple roots -> Ok - Return type: Ok(claims) preserves input unchanged on pass Build: 0 Warning / 0 Error. SPOF (per Otto-106): pure function; no external deps. Callers using antiConsensusGate as a hard trust gate should pair it with RobustStats.robustAggregate when combining the resulting weights (multi-root agreement still needs outlier-resistant combination). Next graduation queue (in priority order): - SemanticCanonicalization (canonical claim keys for "same assertion" detection — the precondition for antiConsensusGate to group correctly) - scoreVeridicality (Amara's V(c) / BS(c) composite; needs ADR on 5-feature vs 7-feature factorisation) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(#310): 2 review threads — strip history-log doc + filter empty RootAuthority Addresses two PR-thread findings on Veridicality.fs:antiConsensusGate. Thread 1 (P1, line 158) — doc-hygiene: the `///` block introduced direct contributor/agent names and history-log content (ferry references, graduation cadence, "Attribution:" + "Provenance:" stanzas). Per the repo's standing doc-comment rule, code comments explain the code, not history. The rewritten block keeps only what the function does (inputs, returns, invariants, edge cases, composition notes) and drops the narrative. Thread 2 (P0, line 166) — real behaviour bug: the original implementation mapped every `RootAuthority` string to the distinct- root set, which meant an invalid/missing value (e.g., `""` or whitespace) would count as a distinct root and let a single-source cluster accidentally pass the anti-consensus gate. Fix: filter out `String.IsNullOrWhiteSpace` root authorities before counting. Tolerant-filter contract (degenerate input is skipped, not thrown) matches the rest of the module's semantics; callers that want strict validation should run validateProvenance first. Added three tests: - empty RootAuthority does NOT count as a distinct root - whitespace RootAuthority does NOT count as a distinct root - valid distinct roots still pass even when mixed with empty ones Tests: 26 passing (17 pre-existing + 6 original anti-consensus + 3 new empty-root coverage). Build: 0 Warning / 0 Error. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Summary
Fifth Amara-graduation — foundation for the bullshit-detector / veridicality-scoring module. Ships input types + minimum-validity gate from Amara's 10th ferry (PR #294
docs/aurora/*-deep-research-report-10th-ferry.md).Surface
Veridicality.Provenancerecord (7 fields matching Amara's spec verbatim)Veridicality.Claim<'T>record polymorphic over payloadVeridicality.validateProvenance : Provenance -> boolVeridicality.validateClaim : Claim<'T> -> boolAttribution (two-layer, per Otto-112 memory)
Module name is
VeridicalitynotBullshitDetectorper Otto-112 naming rule — formal term for the scorable (how true-to-reality a claim looks); "bullshit = 1 - veridicality" stays informal.Retraction-native compatibility
validateClaimdoes NOT inspectWeight— a retraction-claim (Weight=-1) is valid if provenance is valid. Retraction semantics live at the ledger level, not claim-validity. Matches Zeta's ZSet signed-weight discipline (Otto-73).Test plan
SPOF (per Otto-106)
Pure data types + pure validation function; no external deps; no SPOF introduced. Downstream scorers combining across many claims use RobustStats.robustAggregate (PR #295) for outlier resistance.
Next graduation queue
antiConsensusGate— smallest follow-up, uses ProvenanceSemanticCanonicalization/ CanonicalClaimKey (8th ferry)scoreVeridicality— the composite function (9thB(c)or 10thBS(c)choice needs ADR)🤖 Generated with Claude Code