Skip to content

Stabilize-canon sweep: MVP Phase 0 status, ADR Suite v2.0, spec-gate, ObjectGraph spike, intake digestion - #36

Merged
kalisam merged 131 commits into
mainfrom
working/2026-05-25-stabilize-canon
Jun 16, 2026
Merged

Stabilize-canon sweep: MVP Phase 0 status, ADR Suite v2.0, spec-gate, ObjectGraph spike, intake digestion#36
kalisam merged 131 commits into
mainfrom
working/2026-05-25-stabilize-canon

Conversation

@kalisam

@kalisam kalisam commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

What this lands (122 commits, 2026-05-25 → 2026-06-12)

Public-facing correction (NLnet-visible): README now states MVP Phase 0 substrate viability is complete (DNA→WASM, Tryorama green, ontology integrity tests passing) — the prior 'Phase 0 is next' was stale.

Canon stabilization (2026-05-25 sweep): ADR-Suite v2.0 (consolidated, hand-verified), CFIS v0.3, ADR-12 Consent Gate stub, provenance-packet spine v1.4, Meta-Coordination Kernel v4.0, operator surfaces (OPERATOR_PRIMER, RUNTIME_SURFACES), heartbeat runtime-budget spec + tests.

2026-06-12 alignment landing:

  • Root-intake digestion: 17 files + MCP schema snapshot relocated with hashed move ledgers; digestion maps with classification verdicts and NEVER-list flags
  • Spec-gate (D7) adopted with both wirings: fail-closed spec_gate.py --check + post-write hook advisory; 79-entry registry; intake/continuation surfaces deliberately ungated
  • ObjectGraph spike (N6): typed node-level projection over skill-corpus (112 nodes/182 edges, progressive disclosure, synthesis-regression + provenance guards, 6/6 tests)
  • Review-queue consolidation (review_queue.py --triage), manual-poll default flipped to the provider-diverse roster, orient skill v0.2.0 + probe (4/4 tests)
  • 25 staged syntheses committed to the local source chain (human-gated)
  • NLnet: US-individual eligibility verified; next-call deadline 2026-08-01

Merge of remote main (CodeQL workflow, #33) is included — fast-forward-clean.

🤖 Generated with Claude Code

kalisam and others added 30 commits March 21, 2026 18:55
Update dependencies: lodash-es, bytes, and lodash versions
Map Hughes' Attach/Enter/Replicate/Defend/Transmit cycle onto
FLOSSI0ULLK's actual cross-system propagation behavior. Truth status:
Specified — pattern identified, not yet implemented. Includes safety
constraints (no self-modification until substrate validated, memetic
autoimmunity risk, non-modifiable ULLK constraint).

HARVEST Protocol: Formalize existing periodic consolidation practice
as the minimal self-observation loop (OBSERVE→EVALUATE→PROPOSE→
VALIDATE→COMMIT). Manual-first, automatable later via OpenClaw.

Retroactive HARVEST Cycle 0 logged covering all work to date.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Transmission test: new AI systems productive in minutes via kernel + ADRs.
Composition test: 118+ conversations across 5 systems composed.
Persistence test: CLAUDE.md, ADRs, Serena, Claude memory all persist.
Coherence test: human collaborator confirmed across sessions.

This has been true since late 2025 but kept getting lost across sessions.
Updated implementation phases to reflect actual completion state.
Fixed stale /mnt/project/ paths to current repo structure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ADR-0 (both copies): Add blank lines after Phase heading lines (MD022).

ADR-5: Add Problem Statement, Implementation Strategy, Validation
Criteria, and Related Documents sections to match project ADR schema.
Remove duplicate Evidence Gate section (now covered by Validation
Criteria). Split References into Related Documents + External References.

harvest-protocol.spec.md: Verified — all headings already had correct
spacing. Finding was invalid, no changes needed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduce a .serena directory with Serena configuration and project memories to onboard the assistant and document the codebase. Adds project.yml (project settings, language-server config, tool lists and defaults), several memory files (project_overview, codebase_structure, style_and_conventions, suggested_commands, task_completion_checklist) for developer guidance, and a .serena/.gitignore to ignore cache and project.local.yml.
New specs:
- phase0-substrate-bridge.spec.md: Formal SDD feature spec for the
  narrowest end-to-end validation test (publish, provenance, verify,
  query, fork-visible, no privilege). 6 testable criteria, 2-agent
  Tryorama implementation.

New research:
- Orchestration landscape v2.0.0 (summary + full report + Perplexity
  source). Supersedes v1.0.0 with empirical data: Silo-Bench k=50
  scalability wall, MAS-ProVe process verification failure, token
  economics collapse, IPFS availability decline.
- Cross-AI synthesis working doc moved from root to docs/research/.

Updated:
- MVP_PLAN.md: Added Architectural Constraints section with hard data
  (k<=5 agents, output verification > process, non-token economics,
  IPFS multi-pinning). Updated evidence sources and date. Immediate
  next action now points to substrate bridge spec.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements docs/specs/phase0-substrate-bridge.spec.md as a 2-agent
Tryorama test suite:

1. PUBLISH — assert_triple returns ActionHash
2. PROVENANCE — get_triple_record returns author pubkey + timestamp
3. VERIFY — Agent B retrieves Agent A's entry, confirms content + provenance
4. QUERY — Agent B discovers entry via query_triples without knowing hash
5. FORK-VISIBLE — Conflicting triples from two agents both persist
6. NO PRIVILEGE — Both agents use identical calls, can read each other

Also adds get_triple_record extern to coordinator (thin wrapper around
get() that exposes the full Record with signed_action for provenance
verification from the test side).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Code changes (ternary confidence):
- Rust integrity: confidence validation [0,1] -> [-1,1] for KnowledgeTriple
  and KnowledgeEdge. Negative = away from truth, 0 = neutral, + = toward truth.
- JSON schemas: knowledge-triple.schema.json and knowledge-edge.schema.json
  updated to minimum: -1.0.
- Tests: 2 new cases (negative confidence valid, below -1.0 rejected).
- TERNARY_COMPATIBILITY.md: maps what can/cannot use signed gradients.
  Flagged: impact (magnitude), budget (quantity), embeddings (external models),
  Holochain Timestamp (external SDK type).
- Already ternary: connotation [-1,0,+1], cosine_similarity [-1,1].

FLOSSI U Founding Kit v1.6 (containing scope):
- FLOSSI U is the vision/curriculum layer; FLOSS repo is the nested
  implementation substrate. Separate ADR namespaces (U: 001-019, repo: 0-N).
- 19 curriculum ADRs, seed packet, art effects, reference docs.
- ADR-019 cross-references docs/specs/TERNARY_COMPATIBILITY.md for
  external interface constraints that prevent ternary adoption.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Comparative analysis of Meta Harness, omo (oh-my-openagent), OMX/OMC,
and FLOSSI0ULLK MetaCoordinator. Proposes 5 integration seams (consensus-
gate hook, git worktree, LiteLLM optimization, KAIROS memory, OMX gateway
events), 18 patterns to ADOPT, 12 patterns to CONTRIBUTE, with
implementation priority table (Seam 1 first).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ADR-6 formalizes the four-system integration strategy across Meta Harness,
omo, OMX, and FLOSSI0ULLK. Seam 1 (consensus-gate hook) is implemented
first because it establishes the MCP channel that Seams 2-5 depend on.

Adds:
- docs/adr/ADR-6-four-system-integration.md (Proposed)
- docs/specs/consensus-gate.spec.md — Claim/Vote/Decision contract
- docs/specs/consensus-gate.schema.json — JSON Schema
- packages/orchestrator/claim_schema.py — dataclasses + invariants
- packages/orchestrator/consensus_gate.py — tally/decide/override + ADR writer
- packages/orchestrator/test_consensus_gate.py — 16 tests, all 6 spec vectors pass

Ternary consensus: {-1, 0, +1} votes => {APPROVED, DEFERRED, REJECTED,
OVERRIDDEN}. Single -1 vetoes. Substrate blast radius requires unanimous
+1 with no override path. Human override only on DEFERRED decisions for
non-substrate blast radii.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- resonance_mechanism_v2.md: Technical foundation v2.0 formalizing
  Holochain validation lifecycle as resonance (5-property irreducible
  kernel, formal definitions, irreducibility proof)
- flossi0ullk-landscape-recursive-analysis_3-24-26_perplexity_computer_used.md:
  Four-layer recursive landscape research report with epistemic tier
  taxonomy ([TESTED]/[VENDOR-CLAIMED]/[COMMUNITY-REPORTED]/[RESEARCH-ONLY]/
  [SPECULATIVE]) and red-team-of-red-team verification

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
substrate_bridge.test.ts (Critical + 2 Majors):
- Wrap fileURLToPath with path.dirname() so hAppPath resolves correctly (#28)
- Add @msgpack/msgpack import + decode record.entry to verify Alice's
  subject/predicate/object/confidence in Criterion 3 instead of only
  asserting entry exists (#30)
- Add Criterion 3b negative test: get_triple_record returns null for
  XOR-mutated non-existent hash, then sanity-checks real hash still
  resolves (#29)

ADR-0 (recognition protocol, both copies):
- Align participant count: "~7 AI systems" -> "6 AI systems" (#5)
- Add Evidence pointers (kernel, ADR index, HARVEST_LOG, etc.) to
  each PASSED Validation Criterion (#6)
- Reclassify harvest-protocol.spec as spec, not ADR-5 itself (#7)
- MD022 blank lines after Positive/Negative/Neutral headings (#1/#2)

ADR-5 (cognitive-virology-pattern):
- Terminal punctuation on Problem Statement bullets (#8)
- HARVEST_LOG.md added to Related Documents (#9)

.serena/memories:
- codebase_structure.md: 5 externs -> 9 with full names, add Infinity
  Bridge connector path (#10)
- project_overview.md: align extern count + current state to 2026-04,
  PR #25 (#11)
- task_completion_checklist.md: expand ADR item with required sections (#14)
- style_and_conventions.md, suggested_commands.md: MD022 blank lines
  around headings + gh CLI now available (#12/#13)

.serena/project.yml:
- Add markdown + yaml to languages (#15)
- Populate initial_prompt with SDD/ADR review checklist (#16)

docs/research:
- "4MB" -> "4 MB" unit spacing (#18)
- Add Query criterion (query_triples without hash) to Phase 0 Gate
  summary so it matches the 6-criterion spec (#19)
- KERI/hREA integration status: Aspirational -> Specified (bridge
  zomes + entry types exist in identity_integrity/hrea_*) (#21)
- cross-ai-orchestration-synthesis: add metadata header marking it
  as working notes (#22)
- Perplexity-Source-Agent-Orchestration: fix 132 mojibake chars
  (em dash, en dash, superscript 2, not-equal) (#24)
- Add truth-status labels to Key New Patterns (AMRO-S, CodeCRDT,
  AgentNet++, DecentLLMs): External Specified / FLOSSI0ULLK Unverified (#17)

docs/specs/phase0-substrate-bridge.spec.md:
- Add typescript language specifier to pseudocode fenced blocks (#25)
- Resolve provenance design: adopt option (b) - extend TripleResult
  with author + created_at fields mapped from KnowledgeTriple (#26)
- Add provenance-retrieval prerequisite to Definition of Done so the
  6-test DoD isn't circular (#27)

Deferred: #20 (comparison-table citation sources) and #23 (extract
gap matrix as separate artifact) - substantial restructuring work
that doesn't block this PR.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CodeRabbit pre-check reported 45% coverage (threshold: 80%). Added
docstrings to 36 previously-undocumented nodes across the 4 Python
files modified in this PR:

- packages/orchestrator/claim_schema.py (+8): enums (ProposalType,
  BlastRadius, TruthStatus, Outcome), EvidenceRef, and to_dict methods
  on Claim/Vote/Decision.
- packages/orchestrator/consensus_gate.py (+1): inner _write closure
  in default_adr_writer.
- packages/orchestrator/test_consensus_gate.py (+5): mock_voter inner
  _v, sample_claim, spy_voter + its inner _v, _run_all CLI runner.
- FLOSSI_U_Founding_Kit_v1.6/conversation_memory.py (+22): full
  ConversationMemory surface (__init__, transmit variants, triple
  extract/validate, recall, save/load, import/export/compose, adr
  history, encode/search helpers) and HolochainClient (init, call_zome),
  plus Understanding.to_dict/hash.

All docstrings reference spec sections where applicable. Interrogate
now reports 100% coverage across these 4 files. Consensus gate tests
(16/16) still pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fixes all Critical, Major, Minor, and Trivial items on PR-touched files
from CodeRabbit's review of bd70859 (PR #25).

## Critical (3 fixes + 8 new tests)

- claim_schema.py: Replace uuid4 with RFC 9562 UUIDv7 generator
  (stdlib uuid.uuid7 when available, §5.7 fallback otherwise) and
  harden Claim.validate() to enforce UUIDv7 version, ProposalType
  and BlastRadius enum membership, and ISO 8601 submitted_at
- consensus_gate.py: Add per-claim voter deduplication to decide()
  (E_VOTE_DUPLICATE) plus TODO for identity_integrity zome integration
- consensus_gate.py: Guard override() against prior_decision.claim_id
  mismatch (E_OVERRIDE_CLAIM_MISMATCH) and duplicate human_voter
  (E_OVERRIDE_DUPLICATE) to prevent cross-claim vote attachment
- test_consensus_gate.py: Add 8 tests covering the new guards
  (now 24/24 passing)

## Major (5 fixes)

- consensus-gate.schema.json: Add minItems:1 on Decision.votes and
  UUIDv7 regex pattern on Claim.id + Decision.claim_id
- consensus-gate.spec.md: Rewrite INV-006, §4.1 TALLY, INV-010,
  §4.2 Override Path, and §6.3 test vectors to align with
  blast-radius-derived quorum and superseding-transition override
  semantics (no more 3-vote floor, no more duplicate-decision paradox)
- ADR-6: Update validation criterion schema ref to
  docs/specs/consensus-gate.schema.json (was claim-schema.json)
- ADR-0 (both mirrors): Replace non-reproducible
  ~/.claude/.../MEMORY.md evidence path with repo-tracked artifacts
- style_and_conventions.md: Require both SHA-256 and BLAKE3 digests
  per FLOSS provenance requirements

## Minor / Trivial markdownlint + text on PR-touched files

- harvest-protocol.spec.md: Add text language to line 17 fence
- ADR-6: Add text language to stack diagram fence; remove stale
  "(to be created)" marker from consensus-gate.spec.md reference
- INDEX.md: Fix FLOSSIOULLK -> FLOSSI0ULLK and stale date
- project_overview.md: Fix FLOSSIOULLK -> FLOSSI0ULLK
- project.yml: Set line_ending: "lf" for cross-platform consistency
- resonance_mechanism_v2.md: Add text language to compatibility fence
- 4-4-26-...-Analysis.md: Add text language to 3 fences
- landscape-recursive-analysis.md: Add text language to architecture fence
- ADR-5-cognitive-virology-pattern.md: "Self Belief" -> "Self-Belief"

## Deferred to follow-up PR (user selection: Tier 1 only)

- 17 Major completions on historical ADR-001..019 files in
  FLOSSI_U_Founding_Kit_v1.6/ (predate this PR)
- Tryorama negative-range integration test for assert_triple
- Encoding cleanup on Perplexity-Source research doc
- Gap matrix extraction from cross-ai-orchestration-synthesis

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ships the FLOSSIØULLK local agent node as a file-based precursor to the
Holochain substrate: CellDirectory source chain writer, Orchestrator with
analog [-0.999, +0.999] vote model and per-blast-radius tally thresholds,
and a stdio MCP server exposing six passive-router tools (submit_claim,
cast_vote, run_consensus_round, get_decision, list_pending, get_chain_
context). LiteLLM voter adapters drive a default roster of Cerebras +
Groq models; the PostToolUse hook fires the loop end-to-end on every
substantive packages/ edit. ADR-MCP-ORCHESTRATOR amended Proposed →
Accepted with five divergences documented, including the analog vote
model that replaced the ternary placeholder. ADR-017 (Self-Transcendence
Operator) expanded to forward-couple with get_chain_context, LICENSE
normalized to SPDX AGPL-3.0-or-later with Carrier Equivalence addendum
scoped in LEGAL_DEFINITIONS.md, and .gitignore hardened against secret
leakage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- metacoordinator-mcp/DESIGN.md: 9-section design doc with AIngram/Agorai integration paths
- CLAUDE.md: archived stale v2.0 (2025-11-16) to archive/, rewrote as short current orientation
- Research notes: AIngram deep-dive (60-migration AGPL-3.0 production system), paper harvest
- ADR-MCP-ORCHESTRATOR.md: already existed from prior commit

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Step 3 of the Integration Action Plan previously recommended running
Agorai as a standalone bridge service "to avoid AGPL propagation" —
which contradicts ADR-7's explicit embrace of the AGPL cascade.

Reframe the same recommendation as a *pragmatic* starting point for
wiring validation rather than a license requirement. Note that Paths B
(Python porting) and C (Rust zome ports) are now unblocked by ADR-7.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9737ddf9a3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/metacoordinator_mcp/hashline.py Outdated
Comment thread ARF/dnas/rose_forest/zomes/consent_integrity/src/lib.rs Outdated
…claims; drop unused test var

- tools.submit_claim: only call _validate_provenance_evidence (which imports the
  provenance extras blake3/jcs/nacl) when evidence is actually supplied. Lean
  gateway installs without those deps no longer raise ModuleNotFoundError on
  ordinary Local/CodeChange claims; governed System/Substrate claims with no
  evidence are still rejected (has_packet/has_consent stay False). Proven via a
  simulated missing-deps run; 52/52 gateway tests pass.
- substrate_bridge.test.ts: drop the unused 'hash' binding in the Criterion 4
  query test (it discovers by query, not by hash) — clears the CodeQL warning.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…cile chained MultiEdit verification

- consent_integrity.validate: ConsentPayload/ConsentDecision are append-only
  governance records. Previously CreateEntry and UpdateEntry shared one arm, so
  a well-formed update silently superseded a recorded consent on the DHT without
  a new decision. Now UpdateEntry (StoreEntry + RegisterUpdate) and RegisterDelete
  are explicitly Invalid for this zome's entries. cargo check -p consent_integrity
  --target wasm32-unknown-unknown passes.
- hashline._verify_multiedit: chained sub-edits (foo->bar then bar->baz) no longer
  false-MISMATCH the first sub-edit — when an intermediate new snippet is consumed
  as a later sub-edit's old snippet, that's expected sequential behavior, not a
  failed write. A genuinely missing sub-edit still MISMATCHes. +2 tests (54/54).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5875be0f07

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/reasoning_ensemble/mcp_server.py Outdated
Comment thread packages/activity_log/__init__.py Outdated
Comment thread packages/activity_log/provenance.py Outdated
Comment thread packages/reasoning_ensemble/synthesizer.py Outdated
…nance, chain-head lock, tier threshold

Four valid codex findings:
- mcp_server.deliberate (P1): synthesize() returns an EnsembleSynthesis dataclass,
  not a dict. Replaced .get(...) calls with attribute access (tier/fraction live
  under .tier_classification; field is staging_path, voter_count = len(voter_responses)).
  Ensemble mode was returning the generic error for every call.
- activity_log.__init__ (P2): stop eagerly importing provenance (blake3/jcs/nacl).
  Lazy-load it via PEP 562 __getattr__ using importlib.import_module (a plain
   there infinite-loops via the import machinery's hasattr re-entry
  when deps are missing). Lean routing/activity-only consumers import cleanly;
  verified under simulated-missing deps.
- provenance.create_packet (P2): hold .sequence.lock across reserve -> sign ->
  write -> commit-head so concurrent writers can't reserve against a stale head
  and fork the per-agent chain. Verified: 16 concurrent writes -> linear chain
  (seqs 0..15, one genesis, unique parents, no fork).
- synthesizer.classify_tier (P2): an even split with a genuine plurality (4 voters
  2/1/1, fraction exactly 0.5) is now Tier-2; compares cluster counts vs ceil(N/2)
  with a unique-largest guard so a 2/2 tie stays Tier-4. Verified across 6 splits.

139/139 package tests pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2255ed133b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/activity_log/provenance.py Outdated
Comment thread scripts/hook_post_write.py Outdated
Comment thread packages/reasoning_ensemble/synthesizer.py

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: eed286e953

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/metacoordinator_mcp/tools.py Outdated
Comment thread packages/metacoordinator_mcp/hashline.py
Comment thread ARF/tests/tryorama/substrate_bridge.test.ts

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 36abde82b7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .claude/settings.json
Comment thread packages/activity_log/provenance.py
…hline guard, tryorama paths, pre-write hook

Seven valid codex findings (all P2):
- provenance.validate_packet: enforce same-agent + directly-preceding-sequence
  continuity on the prior link (E_PROVENANCE_PRIOR_AGENT_MISMATCH /
  E_PROVENANCE_SEQUENCE_DISCONTINUOUS); a signed packet can no longer point at
  another agent or skip/fork its sequence.
- provenance root requirement is across the evidence DAG: a packet that
  delegates its root to a valid child packet is now accepted; only a DAG with no
  non-packet root anywhere is rejected.
- tools.submit_claim: gate provenance validation on presence of a
  provenance_packet ref (not any evidence) so Local claims with only test/spec/
  commit refs do not import the provenance extras on lean installs.
- hook_post_write: defer the provenance import into the best-effort packet block
  so lean installs still submit the Local claim with empty evidence.
- hashline multiedit reconciliation: only treat an earlier MISMATCH as a
  consumed intermediate when its old snippet is absent AND a later verified
  sub-edit consumed it; a partial edit with the old snippet still present stays
  MISMATCH.
- tryorama: point 5 tests at ../../workdir/rose_forest.happ (the real pack
  location, matching consent_gate.test.ts) instead of ../../../workdir.
- .claude/settings.json: register the PreToolUse hook_pre_write so the exact
  post-image / stale-write verification actually runs.

Verified at runtime + 4 new regression tests; 144/144 package tests pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…imilarity-bias loop)

The synthesizer only put the tier in the global Action.outputs, but the Router
reads .agent-surface/reasoning/activity.jsonl for a top-level tier_classification
== tier4 plus prompt_embedding (its own row seeds that field None). So a real
Tier-4 divergence never biased adjacent-prompt routing. The synthesizer now also
appends a top-level reasoning-activity row with the tier, and for Tier-4 the
prompt embedding (best-effort). Verified round-trip: synthesizer row -> router
check_tier4_similarity_bias fires on a similar adjacent prompt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 52f4264c3b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ARF/dnas/rose_forest/zomes/consent_integrity/src/lib.rs
Comment thread docs/specs/consent-payload.schema.json Outdated
Comment thread packages/activity_log/provenance.py
Comment thread scripts/tests/test_consent_gate_wiring.py Outdated
Comment thread packages/reasoning_ensemble/router.py Outdated
…ch-local DAG cycle, router timeouts, wiring test

Five valid codex findings (all P2):
- consent_integrity enums: add serde rename_all = snake_case to PatternType,
  ConsentScope, RefusalMode, Outcome so the zome wire format matches the schema
  (adr/read_only/bounded_accept/...). BlastRadius stays PascalCase (the schema
  uses Local/Module/System/Substrate). Updated consent_gate.test.ts payloads to
  snake_case to match. cargo check -p consent_integrity -p consent passes.
- consent-payload.schema.json: ConsentDecision now requires payload_action_hash
  (the ActionHash the coordinator actually binds on) and treats payload_id as an
  optional cross-reference, matching create_consent_decision.
- provenance.validate_packet: use a branch-local copy of the traversal path set
  so shared evidence (same child cited twice, or a child that is both the prior
  and an evidence ref) is no longer mis-flagged E_PROVENANCE_CYCLE_DETECTED;
  genuine on-path cycles still rejected. Runtime-verified.
- router: include TimeoutError in the embedding and invocation fallbacks so a
  stalled Ollama degrades gracefully instead of raising (socket.timeout aliases
  TimeoutError, which is not a URLError).
- test_consent_gate_wiring: read zome["path"] (or bundled) since the checked-in
  dna.yaml uses path:, not bundled: — the test no longer KeyErrors with PyYAML.

148/148 package tests pass. Tryorama not runnable locally (no conductor); enum
payloads aligned mechanically to the schema source of truth.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 40f6b1738a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/activity_log/provenance.py
Comment thread docs/specs/consent-payload.schema.json
Comment thread packages/reasoning_ensemble/router.py Outdated
…a/router edge cases

- provenance.validate_packet (P1 security): validate each a[] entry against the
  v1.4 payload contract (claim_type, truth_status, source_systems, created_at,
  risks, benefits, next_action). Previously only emptiness of a was checked, so a
  governed System/Substrate claim could pass the hard block with a packet whose
  entry omitted required fields while still carrying consent_ref + a non-packet
  evidence root. + regression test; 145/145 package tests pass.
- consent-payload.schema.json: parent_consent_id is an ActionHash string, not a
  UUID — matching the coordinator input and Option<ActionHash> entry type, so a
  schema-valid hierarchical payload no longer fails the Holochain call.
- router: coerce confidence in the guarded path (default 0.5 on non-float like
  "high"/null, clamp to [0,1]) so one malformed field from Ollama yields the
  documented single_strong fallback instead of raising.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 877589d568

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

.into()
))
})?;
ensure_scope_subset(&input.scope_granted, &payload.consent_scope)?;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Enforce outcome-specific consent scopes

When a payload requests bind, this subset-only check lets a decision submit outcome=TouristObserve with scope_granted=[Bind] because the grant is still within the requested scope. The consent spec describes tourist_observe as read-only while bind remains blocked, and the planned action-time gate keys off outcome != rejected plus matching scope_granted, so this inconsistent on-chain decision can become a bind authorization despite a tourist-observe refusal; validate the scope semantics per outcome before creating the decision.

Useful? React with 👍 / 👎.

Comment on lines +234 to +235
pub fn get_triple_record(hash: ActionHash) -> ExternResult<Option<Record>> {
get(hash, GetOptions::default())

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Filter get_triple_record to triple entries

When a caller passes the ActionHash of any non-KnowledgeTriple entry, such as a RoseNode from add_knowledge, this returns that raw Record because it delegates directly to get() without checking the entry type. The substrate bridge API is documented as a triple provenance verifier, so consumers that decode the returned entry as a triple can fail or treat unrelated records as verified triples; return None or a guest error unless the fetched entry deserializes as KnowledgeTriple.

Useful? React with 👍 / 👎.

Comment on lines +396 to +397
_ENTRY_REQUIRED_STR_FIELDS = ("claim_type", "truth_status", "created_at", "next_action")
_ENTRY_REQUIRED_LIST_FIELDS = ("source_systems", "risks", "benefits")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Require all provenance payload fields

Fresh evidence after the attempted payload-entry fix: this required-field list still omits v1.4-required fields such as human_collision_node, artifact_refs, and evidence_refs item validation from docs/specs/provenance-packet.schema.json. A signed governed packet can include consent_ref and one non-packet evidence root while omitting human_collision_node and artifact_refs entirely, and validate_packet().ok still succeeds, so GatewayTools can accept malformed provenance at the System/Substrate hard block; include every schema-required field and validate artifact/evidence ref shape here.

Useful? React with 👍 / 👎.

@kalisam
kalisam merged commit e614908 into main Jun 16, 2026
10 of 11 checks passed
kalisam added a commit that referenced this pull request Jul 5, 2026
Closes PR #36 review thread 3407820580. The committed .mcp.json hard-coded
machine-specific absolute paths (C:/~shit/.mcp/lenses/..., interpreter paths)
that break on any other checkout. Per the maintainer decision (option 1), the
file is now gitignored and untracked; the working copy stays in place locally so
the JanuScope-wrapped MCP setup is unaffected — it is simply no longer shipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kalisam added a commit that referenced this pull request Jul 5, 2026
…round-10 follow-ups)

Authorization hole (codex 3416999771): a ConsentDecision could declare a refusal
outcome yet grant a write/bind scope, since only a subset check ran.
- consent_integrity.validate_consent_decision: outcome=TouristObserve may grant
  ONLY ReadOnly (E_TOURIST_SCOPE_EXCEEDED) — enforced in the integrity zome where
  it cannot be bypassed. (Rejected=>empty was already enforced.)
- consent_coordinator.create_consent_decision: outcome=BoundedAccept must NARROW
  the requested scope (E_BOUNDED_NOT_NARROWED) — cross-entry check where the
  payload scope is resolved. + Tryorama case asserting tourist_observe+[bind] is
  rejected.

Sibling P2s same review round:
- coordinator.get_triple_record (3416999773): return None unless the fetched
  Record deserializes as KnowledgeTriple, so this triple provenance verifier no
  longer returns unrelated entries (e.g. a RoseNode).
- provenance._payload_entry_errors (3416999778): complete the v1.4 entry contract
  — require human_collision_node + artifact_refs + evidence_refs and validate
  artifact/evidence ref shape (path+64hex sha256; evidence type-enum + ref) per
  provenance-packet.schema.json. + regression test.

cargo check -p consent_integrity -p consent -p rose_forest passes; 146/146
package tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants