docs: align commit validation doc set ahead of implementation - #33
docs: align commit validation doc set ahead of implementation#33owleyeview wants to merge 2 commits into
Conversation
evomimic
left a comment
There was a problem hiding this comment.
Review findings
I am requesting three changes before approval.
1. Preserve vertical, end-to-end delivery
The revised implementation plan makes Capabilities 1–4 integration/test-only and defers the public production Commit gate until a final activation milestone.
That conflicts with the vertical-slice direction for this work: each delivered capability should exercise the real Commit path end-to-end. Incremental activation remains safe because unsupported effective constraints and active bindings fail closed.
Please retain production Commit integration for the first delivered slice, then expand coverage capability by capability. The final milestone can verify complete coverage and remaining ingress convergence, but should not become the first point at which descriptor-aware validation reaches Commit.
2. Distinguish a MAP Space from a Holochain write authority
The relationship-persistence changes state that a Space-local bucket can be protected through a normal-order zome-call transaction and source-chain conflict retry.
That guarantee holds only where every write to the affected bucket is owned by one Holochain cell/source chain. A MAP Space is a stewardship and containment unit; it is not automatically one source-chain authority.
Please state the source-chain-authority condition explicitly, or phrase the immediate guarantee in terms of Commit-local authoritative buckets. Multi-cell aggregate authority should remain deferred behind RelationshipCoordinationRequired.
3. Make the persistence-extern inventory concrete and consistent with PR 623
PR 623 established that test-only functions must be absent from packaged production coordinator artifacts. The activation checklist should not create a broad *_for_test exemption category that could leave production exports unexamined.
Please inventory the actual remaining public production persistence externs and their call paths, including the asserted DeleteHolon gap. If an extern is intentionally temporary or exceptional, name it, scope it, and link its owning follow-up. Internal storage functions and test-only probe exports should remain outside the public production surface by construction.
Follow-up wording
The clarified Schema-containment direction is reflected correctly:
- A Schema and its
Componentsare stewarded within one Space. - The containment hierarchy is
Space → Schema → Module → Type. - Semantic references to descriptors outside that containment hierarchy do not imply co-location.
- Section 12.5 remains the correct policy for arbitrary cross-Space inverse realization.
The PR body says Schema Modules are deferred and deliberately absent. Deferring their implementation detail is fine, but the documentation should preserve the intended Space → Schema → Module → Type containment model rather than describe Modules as absent from the target architecture.
Responds to the three requested changes and the follow-up wording note. Vertical delivery. Every capability now integrates with production Commit rather than an explicit integration/test entry point, and the Final Activation Milestone verifies coverage and ingress convergence instead of being the first point at which validation reaches Commit. Safety comes from an incremental-attachment rollout model: a `Constraints` occurrence is added in the same capability that delivers its evaluator, mirroring the existing `ValidationBindings` policy. An attachment that has not landed is genuinely absent from the schema rather than present and excused, so the invariant that every effective attachment must resolve to a compatible handler or reject Commit is preserved exactly. The schema-evolution consequence is recorded as an explicit pre-production rollout assumption. The VAL0 follow-up gains the corpus detachment, defined by constraint type rather than by file, with restoration owned by Capabilities 3 and 4. Source-chain authority. A MAP Space is a stewardship unit, not by definition one Holochain write authority, so the relationship-persistence spec gains a Commit-local bucket term and states the single-source-chain precondition on its atomicity and conflict-retry guarantees. Same-Space/different-cell is resolved explicitly: it fails closed with `RelationshipCoordinationRequired` rather than falling through to cross-Space deferral. Corrects a stale assertion in dependency-gravity.md carrying the old guarantee. Persistence-extern inventory. Replaces the `*_for_test` exemption category with the actual production coordinator exports from happ/coordinator-surface.toml, each requiring its current call path to Commit or the point at which it bypasses Commit. PR 623 already places test probes outside the production surface by construction, so they are not excused within it. The DeleteHolon gap is named as the delete_holon_node legacy_ingress export; its owning capability has no tracking issue yet and one must be opened. Schema Modules. Records `Space -> Schema -> Module -> Type` as the intended containment hierarchy, with Modules deferred in implementation rather than absent from the target architecture. Verification: `git diff --check` clean; all relative links in changed files resolve. `make build-core` not run — mkdocs is not installed on this machine. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5hRzRmnFQ229omdTyjKzX
Summary
Pre-implementation alignment of the commit-validation documentation set. Each settled design
decision now has one authoritative home; other documents summarize briefly and link.
Documentation only — no canonical TDL, generated JSON, or
map-holonscode is modified. Requiredcorpus and runtime changes are recorded as scheduled follow-up work.
Closes #29
Authority split
schema-design-spec.mdlayered-desc-arch.mddescriptor-semantics-rules.mdvalidation-arch.mddependency-gravity.mdcommit-validation-design-spec.mdrelationship-persistence-design-spec.mdvalidation-schema-design-spec.mdcommit-validation-impl-plan.mddocument-role-manifest.mdrecords all nine.Normative changes
Schema locality and aggregate validation. A Schema and every descriptor in its
Componentscollection are stewarded in one Space; semantic references may cross Schema and Space boundaries
without implying containment or a guaranteed remote inverse. Staging a descriptor schedules
validation of its owning Schema over prospective persisted-plus-staged components, even when the
Schema holon was not staged. Schema Modules are deferred and deliberately absent.
Default completion moves to the Shared Objects layer.
core_shared_objectsattemptscompletion on create and independent clone once the governing descriptor resolves; an unavailable
descriptor is a non-fatal deferred outcome, not a construction failure. The loader pass is the
bootstrap backstop, every other producer must invoke the same operation, and Commit never supplies
defaults. Clone-time completion fills only omissions in the new staged clone.
validation-arch.mdgains a Construction completeness guarantee (§3.2) distinct from peer admissibility and Commit
validity.
Outcome model. Four distinct types:
CommitValidationViolation(one semantic finding),CommitValidationReport(assessment plus derived decision),HolonError(only for failures thatprevented reliable assessment), and
ValidationResult(reserved for future durable evidence).Findings are dependency-safe and identity-only, live in
core_types, and are stored onStagedHolonseparately from operational errors, replaced together with validation state aftereach pass.
StagedHolonWireinholons_boundarycarries them across the wire; no bound runtimereference crosses that boundary.
Commit as the public persistence gate. Internal node/entry persistence and SmartLink
operations consume prepared Commit plans rather than acting as parallel mutation APIs.
LocalHolonSpacebootstrap is the sole intended permanent exception. Commit responses gainRejected,RejectedHolons, the report projection, and a report-derived violation count, keepingrejection, explicit abandonment, and operational failure distinct.
Constraints and blocking policy.
Constraintsare intrinsic mandatory commitments evaluatedindependently of whether any
ValidationBindingsoccurrence exists; unsupported effectiveconstraints fail closed. All current rules and constraints are blocking at
Errorseverity, andDefaultSeverity,MinimumBlockingBehavior, and binding/profile policy metadata are removed fromthe target model until a real non-blocking use case exists.
Local consistency vs. cross-cell coordination.
relationship-persistence-design-spec.mdnowowns authoritative Space-local buckets, paired declared/inverse preparation and persistence in one
normal-order zome call, and source-chain conflict reload/revalidation/retry. DHT reads are not a
serializable cross-cell snapshot: a rule needing multi-cell aggregate authority fails closed with
RelationshipCoordinationRequiredrather than passing on an incomplete view. Cross-Space inverserealization stays deferred and does not make a complete local forward commitment provisional.
Kernel and inventory.
DS-SCHEMA-003is exclusively a kernel invariant enforced by exhaustiveunit tests — no
ValidationRule, binding, or registry dispatch. The rule inventory is reconciledagainst canonical TDL: 50 seeded instances, five marked for removal, 45 target.
DS-CARD-001isthe stable finding identity for cardinality;
EnumTokenNonRetroactivitystays unbound pending theDS-ENUM-003decision, with an indicated preference for an unconditional enum-variant lineagerule.
dependency-gravity.mdis rewritten (930 → 148 lines) as the dependency-placement principle,seven dependency classes, and a placement test — delegating layer inventory and rule semantics to
their owning specs, and replacing Nursery-as-a-layer with Commit.
Delivery sequence
commit-validation-impl-plan.mdis restructured as VAL-PRE → VAL0 (landed, with follow-up) →Capabilities 1–4 → Final Activation Milestone. Capability 1 produces a report and wire projection
but does not activate the production gate; that happens only at the milestone, once every
reachable constraint type and authored binding has a compatible handler and an extern/API
inventory (baselined against PR 623 and issue #622) shows convergence.
Recorded follow-up work
Not done here, tracked in the plan:
DefaultSeverity,MinimumBlockingBehavior, andValidationBlockingBehaviorfromschema-src/core/validation.tdl; remove the five supersededrule instances; regenerate
core/validation.jsonand update loader metrics fixtures.Rejectedand theRejectedHolonspair toschema-src/dance/schema.tdl(
CommitResponseis a holon typed in the dance extension, not Core) and regeneratedance/schema.json.Verification
git diff --checkclean; all relative links in changed files resolve.schema-src/core/validation.tdl: 50 table rows ↔50 TDL instances, exact match both directions, 5 removals → 45 target.
make build-corenot run — mkdocs is not installed on this machine. Please run before merge.