Commit graph

30 commits

Author SHA1 Message Date
Shay
310aed9ff0
chore: Refactor CLI and Governance Anchors (#926)
* docs: consolidate governance anchors and clean up test registries

* refactor(cli): decompose cli into dedicated modules

* test: fix broken test baselines and formatting

* docs: add domain boundary READMEs for governance anchors

* test: update baseline for determination lane

* test: fix capability_pass expectation

* test: fix CORE_SHOWCASE_SKIP_BUDGET enforcement

* chore: cleanup CLI extraction and unreachable code
2026-07-03 12:34:56 -07:00
Shay
8b12423dec
fix: green test-fast suite, consolidate ADR graph under docs/adr, and complete governance cohesion anchors
- Green make test-fast suite: fixed exemplar corpus issues, proposal validation, atomic state checkpointing (scheme=2), turn-scoped state leakage in ChatRuntime.chat
- ADR corpus consolidation: migrated all ADRs to docs/adr/, appended ADR-0225 governance cross-reference anchors to foundational ADRs (0001, 0027-0029, 0055-0057)
- Pack definitional closure: fixed en_arithmetic_v1 glosses.jsonl JSON error, updated manifest checksum, marked en_core_syntax_v1 definitional_layer: false
2026-06-30 17:56:12 -07:00
Shay
b2ad7c3ce9 feat(demo): add deductive entailment authority demo (Demo E)
Local deterministic demo exposing the formal entailment substrate as its
own public authority: the proposer's verdict/confidence/proof are data
only; CORE recomputes propositional entailment through the pinned ROBDD
engine (generate.proof_chain.entail.evaluate_entailment_with_trace),
independently cross-checks with the deductive lane's code-disjoint
truth-table oracle (evals.deductive_logic.oracle.oracle_entailment), and
serves entailed/refuted/unknown only when both procedures agree —
refusing on inconsistent premises (no vacuous entailment), out-of-regime
input (by design, before grammar), a distinct-atom regime bound (honors
the brute-force oracle's small-atom contract), and engine/oracle
disagreement (test-only fault injection, defensive refusal).

Seven committed scenarios with byte-pinned expected artifacts; 38 tests
covering recursive schema closure, output-smuggling-before-evaluation,
proposer-garbage byte-invariance in both directions, oracle module
disjointness, trace-hash folding of trace + oracle verdict, runner
hardening, and INV-21/24/29 discipline of the demo files.
2026-06-12 00:28:46 -07:00
Shay
c6d0e2a920
Merge pull request #697 from AssetOverflow/feat/demo-authority-strength
fix(demo): harden #690 epistemic truth-state — sealed corpus + entailment-decided inference
2026-06-11 23:27:05 -07:00
Shay
4c64328884 fix(demo): harden epistemic truth-state authority — sealed corpus + entailment-decided inference
Two-pass hardening of the #690 demo so no epistemic state is proposer-mintable:

Pass 1 (sealed corpus, from the reconciliation pass):
- evidence items are references only (evidence_id + content_sha256) resolved
  against a committed content-addressed corpus (evidence_corpus.json)
- support derived from committed subject/predicate match; independence from
  distinct provenance_root values; proposer support/independence labels are
  rejected by the closed schema
- evidence-strength taxonomy (substrate-capability vs interface-contract) in
  PUBLIC-DEMO-ROADMAP / DEMO-PACKAGING-CHECKLIST; position-paper refinements

Pass 2 (entailment-decided inference, closes a live false-status hazard):
- the merged inferred leg required only that premise IDs resolve — a claim
  with no support citing one unrelated record as a premise was assigned
  'inferred' (empirically confirmed). inferred is now decided by
  generate.proof_chain.entail (sound+complete ROBDD) over resolved corpus
  premises, cross-checked against the independent truth-table oracle
  (evals.deductive_logic.oracle, no shared code); proof keys + oracle verdict
  in the trace; disagreement => defensive refusal; refutation => contradicted
- committed adversarial scenario unrelated-premise-still-undetermined proves
  the attack now lands on undetermined
- corpus seal (corpus_sha256) pinned into every evaluated trace; scope
  refusals no longer consult the corpus; corpus cache hands out copies;
  claim subject/predicate constrained to atom-compatible snake_case
- .gitignore: private packet dir, agent worktrees, tooling artifacts

Validation: 30 demo tests; 96 across all three demo suites; 7/7 scenarios
double-run byte-identical; 61 architectural invariants green.
2026-06-11 21:25:08 -07:00
Shay
8c40ee3f20 feat(demo): ADR-0218 PR D — proof-carrying coherence promotion demo
Local deterministic public evidence for the ratified PCCP capability:
proposer submits claim + proof candidate + status/confidence garbage; CORE
ignores proposer authority, fresh-reads curator-certified store state,
recomputes the proof under the pinned engine, and promotes/refuses only
through VaultStore.apply_certified_promotion. The trace proves the decision.

- demos/proof_carrying_promotion/{schema.json,authority.py,run_demo.py}:
  closed recursive schema (output fields unsuppliable at the root), the REAL
  decider (teaching.proof_promotion.certify_promotion) and the REAL owner —
  no demo-local promotion reimplementation. The local arena is rebuilt via
  VaultStore.from_dict over dict-literal metadata: demos/ is scanned by
  INV-21/INV-24/INV-29, and the demo adds no vault writer, no recall site,
  and no status-transition site (proven in tests with the invariants' own
  detectors).
- 8 fixtures + pinned expected artifacts: entailed-promotes,
  proposer-status-ignored, non-coherent-premise, uncertified-reading,
  tampered-certificate (fails byte replay), stale-premise-status (same
  honest certificate digest as the promoting run — live state is what
  differs), non-sequitur, invalid-state-smuggling (rejected before
  evaluation, authority_evaluated=false, null digest).
- Hardened runner per the #688/#690 pattern: default out/ dir, unsafe
  output roots refused, --write-expected explicit, double-run byte-identity
  enforced per fixture, scenario pass/fail summary.
- tests/test_proof_carrying_promotion_demo.py (26): expected-artifact
  conformance, tamper detection, proposer-garbage decision-invariance (incl.
  on the promotable setup), refused-cases-mutate-nothing, REFUTED-never-
  demotes, trace-hash folds certificate digest, forbidden-import/call scan
  (incl. uuid/random/time), INV-21/INV-29 allowlists pinned unchanged, no
  named-company/strategy terms.

No runtime turn integration; promotion remains SPECULATIVE->COHERENT only;
README carries the full honesty ledger.
2026-06-11 17:33:08 -07:00
Shay
5306c9f944 fix(demo): keep normative_clearance unassessable for all non-invalid outputs
This demo assigns epistemic truth-state only and runs no normative/
safety/ethics clearance pass, so it has no basis to positively clear
a claim. Drop the verified->cleared mapping: verified now reports
normative_clearance=unassessable like every other non-invalid output.

Updates authority.py, regenerates the affected expected trace hashes,
tightens the test (verified asserts unassessable) and adds an invariant
test that no non-invalid output is ever cleared, and corrects the README
honesty ledger.
2026-06-11 12:55:45 -07:00
Shay
a68b7060bd feat(demo): add epistemic truth-state authority demo
A model-style proposer submits a claim, evidence bundle, and optional
bounded-inference block; CORE alone assigns the typed epistemic state
drawn from the canonical core.epistemic_state taxonomy (no parallel
enum) and emits a deterministic, replayable evidence artifact.

The proposer cannot set assigned_state, status, trace_hash,
authority_path, evidence_ledger, or normative_clearance: the closed
recursive schema rejects any root-level injection before state
evaluation runs, and proposer-supplied proposed_state/trace_hash are
recorded as ignored and never read.

Adds closed schema, six fixtures, pinned expected artifacts, a
double-run byte-identical runner with hardened output-dir policy, and a
22-test suite. No network, subprocess, eval/exec, model API, or side
effects beyond demo output.
2026-06-11 12:46:17 -07:00
Shay
e7da989565 fix(demo): restore full tool authority runner 2026-06-11 11:42:32 -07:00
Shay
ba097b622b fix(demo): restore full tool authority runner 2026-06-11 11:36:59 -07:00
Shay
260ef33857 fix(demo): restore tool authority runner 2026-06-11 11:32:52 -07:00
Shay
ea96be1684 fix(demo): refuse clearing custom tool authority output dirs 2026-06-11 10:56:55 -07:00
Shay
77a8c79f94 fix(demo): harden tool-authority runner hygiene 2026-06-11 10:14:59 -07:00
Shay
ee658c55d9 Repin ask tool authority artifact 2026-06-11 09:31:02 -07:00
Shay
b216b74943 Repin authorized tool authority artifact 2026-06-11 09:23:22 -07:00
Shay
baf8e43c44 Neutralize invalid tool authority fixture 2026-06-11 09:22:40 -07:00
Shay
7b23295b22 Neutralize refused tool authority fixture 2026-06-11 09:22:24 -07:00
Shay
7ec789455d Neutralize ask tool authority fixture 2026-06-11 09:22:11 -07:00
Shay
239bf0f8bf Neutralize authorized tool authority fixture 2026-06-11 09:21:55 -07:00
Shay
6a2bf9a097 Neutralize tool authority demo schema 2026-06-11 09:21:21 -07:00
Shay
022154ff71 Neutralize tool authority demo package wording 2026-06-11 09:19:19 -07:00
Shay
26a5e9721f Neutralize tool authority demo public wording 2026-06-11 09:18:50 -07:00
Shay
5de774ea63 Harden tool authority demo output clearing 2026-06-11 09:17:55 -07:00
Shay
1f41935f5f fix(demo): refuse normalized note path traversal 2026-06-11 08:18:00 -07:00
Shay
a3d945ed93 chore(demo): drop generated tool-authority outputs 2026-06-11 08:07:50 -07:00
Shay
8fe63c4032 feat(demo): add Claude-to-CORE tool authority demo 2026-06-11 08:07:07 -07:00
Shay
57a0e38f0b feat(demo): add Claude-to-CORE hybrid verification demo
A narrow, auditable proof path for the hybrid-mode boundary: a
Claude/Fable-style System 1 proposer submits an MCP-shaped tool call
(core.semantic_derivation.verify); CORE re-derives via the ADR-0184
derivation lane, keeps sole acceptance authority, refuses or asks when
it cannot honestly answer, and emits a deterministic replay/provenance
trace for every decision.

Boundary properties (each pinned by a failing-if-removed test):
- the proposer has no commit path: additionalProperties:false schema,
  and the demo modules import nothing from generate.* (AST-scanned with
  a planted-bypass self-test) — the lane is consumed only through the
  ADR-0184 S4b audited trace facade;
- 'verified' requires pool commit AND clean commit-law/faithfulness
  audits AND a gold-audited envelope.json entry AND byte-match to the
  pinned derivation trace (measured: 118 of the off-serving pool's 231
  corpus commits disagree with lane gold, so a bare pool commit is
  never served — scenario s4 shows the refusal on a commit that even
  matches gold);
- the ask leg is the real Q1 stack (router -> limitation -> Q1-D
  producer -> carried handle -> gated serving), dark by default,
  tamper-fail-closed on the content hash;
- authority_path names only consulted authorities; responses are
  deterministic (double-run byte-identical) and pinned under expected/.

No serving/runtime change; no CLAIMS/metrics/telemetry/lane-pin
movement; no network or Anthropic API dependency (System 1 payloads are
clearly-labeled static fixtures).
2026-06-10 20:41:50 -07:00
Shay
f0c270fded harden amr demo replay fixture 2026-06-02 10:38:00 -07:00
Shay
f3680aa302 reconcile amr demo wording with claims ledger 2026-06-02 10:38:00 -07:00
Shay
99c94f71f0 add amr decision substrate demo 2026-06-02 10:38:00 -07:00