Governed Personal Capability State Acceptance v1¶
Status: PR11.7 normative governance contract
PR11.7 introduces the first explicit governance act over immutable person-scoped capability states.
PR11.5 derives a state from a governed complete evaluation portfolio. PR11.6 preserves state identity and exact state content across append-only state-history snapshots. Neither layer says that a persisted state is accepted for later governance use.
PR11.7 closes exactly that gap.
PR11.5 GOVERNED DERIVATION
↓
PR11.6 IMMUTABLE PERSISTED STATE HISTORY
↓
PR11.7 EXPLICIT GOVERNED STATE ACCEPTANCE
PR11.7 does not select a current state, prefer one accepted state over another, supersede old states, or authorize progression.
Primary invariant¶
PERSISTED STATE
!= ACCEPTED STATE
EXPLICIT GOVERNANCE ACCEPTANCE
+
VALID PR11.6 PERSISTENCE BASIS
=
ACCEPTED STATE GOVERNANCE FACT
Acceptance always applies to one exact immutable PersonalCapabilityState record.
It does not accept an abstract person, capability concept, standing, or loose proposition.
Constitutional meaning¶
A PR11.7 acceptance means only:
under the named acceptance policy, the named accepter explicitly accepts this exact persisted state record as a governed state record suitable for later governance layers to consider.
It does not mean:
accepted state = canonical truth about a person
accepted state = capability itself
accepted state = mastery
accepted state = identity
accepted state = authority
accepted state = permission
accepted state = license
The acceptance record remains an assessment/governance fact with explicit provenance.
Acceptance does not select¶
The central negative boundary is:
ACCEPTED
!= CURRENT
ACCEPTED
!= PREFERRED
ACCEPTED
!= SUPERSEDED / NOT SUPERSEDED
ACCEPTED
!= PROGRESSION AUTHORITY
PR11.7 may produce acceptances for multiple states that coexist in one history.
is valid and says nothing about which one should be used as the current state.
That selection belongs to PR11.8.
Positive-only v1 semantics¶
PR11.7 intentionally models only explicit positive acceptance facts.
There is no acceptance verdict enum with ACCEPT, REJECT, ABSTAIN, or REVOKE.
This avoids silently introducing unresolved policy questions such as:
Does REJECT cancel an earlier ACCEPT?
Does a newer decision win?
Does one mechanism outrank another?
Does one policy revision supersede another?
How is revocation represented?
Those are separate governance-history questions and are outside PR11.7 v1.
No acceptance identity registry¶
PR11.7 does not introduce a caller-chosen StateAcceptanceId.
The acceptance object is a complete immutable value record. Introducing an opaque acceptance id would immediately require another cross-snapshot identity-to-content registry analogous to PR11.6.
Exact duplicate acceptance values are therefore the same acceptance fact at the v1 value layer. Different policy, accepter, time, rationale, state id, or persistence basis yields a different acceptance value.
Public value model¶
PR11.7 adds:
StateAcceptanceMechanismKind
StateAcceptancePolicyRef
StateAccepterRef
PersonalCapabilityStateAcceptanceRequest
PersonalCapabilityStateAcceptance
StateAcceptanceMechanismKind¶
This is intentionally distinct from StateDeriverKind.
The enum order does not encode priority or authority hierarchy.
StateAcceptancePolicyRef¶
Canonical syntax:
Policy identity is explicit and versioned.
StateAccepterRef¶
The accepter carries:
The ref is an opaque canonical identifier. It is provenance, not an authenticated principal or permission token.
Authentication/authorization of real actors remains an external runtime concern.
Acceptance request¶
The request is:
PersonalCapabilityStateAcceptanceRequest
state_id
acceptance_policy_ref
accepter_ref
accepted_at
rationale
The request intentionally does not contain a caller-supplied subject_ref.
The subject is derived from the freshly validated persisted state history, preventing a request from relabeling a state as belonging to another subject.
The request contains no:
current_state_id
preferred_state_id
supersedes_state_id
progression_state_id
score
weight
confidence
Acceptance record¶
The immutable output record is:
PersonalCapabilityStateAcceptance
subject_ref
state_id
accepted_state_sha256
persistence_predecessor_sha256
persistence_successor_sha256
acceptance_policy_ref
accepter_ref
accepted_at
rationale
The record separates two kinds of binding.
Persistence-basis audit binding¶
These identify the exact PR11.6 transition that was freshly validated when the acceptance was issued.
Durable state-content binding¶
This binds acceptance to one exact state independently of unrelated later appends to the state history.
Why whole-snapshot hash is not enough¶
Suppose:
Later a valid PR11.6 append occurs:
The whole snapshot hash changes:
but A has not changed.
Acceptance of A must therefore remain bound to A rather than becoming stale merely because B was appended.
Per-state content fingerprint¶
PR11.7 exposes:
personal_capability_state_content_sha256_v1(
*,
snapshot: PersonalCapabilityStateSet,
state_id: PersonalCapabilityStateId,
) -> str
The function first applies the hardened PR11.6 exact state-graph boundary to the supplied snapshot and requires the state id to exist.
It then isolates the exact state into a one-state subject-scoped PersonalCapabilityStateSet,
strictly round-trips that state through PR3 serialization/parsing, and hashes canonical JSON with
the domain:
Conceptually:
The state id is part of the serialized state and is therefore material to the digest.
The digest intentionally has the property:
provided PR11.6 guarantees that A remains exact.
Strict semantic round-trip before acceptance¶
PR11.6 hardens exact type identity before persistence equality/hash authority. PR11.7 adds one more acceptance-specific defense: the state being accepted must survive strict PR3 JSON serialization and parsing exactly.
This detects post-construction tampering that still uses exact built-in/core classes but injects invalid values such as:
revision = 0
non-canonical dimension key
naive datetime
empty required rationale
other values rejected by PR3 constructors
The strict round-trip is local to the accepted state. It does not introduce epistemic, semantic catalog, derivation-engine, progression, or Player Window authority.
Issuing acceptance¶
The authority-bearing operation is:
accept_persisted_personal_capability_state_v1(
*,
predecessor: PersonalCapabilityStateSet,
successor: PersonalCapabilityStateSet,
request: PersonalCapabilityStateAcceptanceRequest,
) -> PersonalCapabilityStateAcceptance
Algorithm:
- Require an exact canonical acceptance request graph.
- Re-run
validate_personal_capability_state_set_successor_v1(...)on the supplied predecessor and successor. - Do not accept a caller-supplied PR11.6 receipt as proof.
- Require the requested state id to exist in the validated successor.
- Strictly round-trip the accepted state through PR3 serialization/parsing.
- Require
accepted_at >= state.derived_at. - Compute the durable per-state content fingerprint.
- Bind the acceptance to the freshly returned PR11.6 predecessor/successor hashes.
- Derive
subject_reffrom the persisted successor rather than from caller input. - Return the immutable acceptance record.
PR11.6 receipt non-authority is preserved¶
The API intentionally does not accept:
as input.
PR11.6 explicitly defines its receipt as a structural value rather than validator-origin provenance. PR11.7 therefore re-runs the PR11.6 validator on exact snapshots.
Retained states may be accepted¶
Acceptance is not restricted to newly appended state ids.
Given:
PR11.7 may explicitly accept either A or B.
This supports delayed review.
A no-op PR11.6 transition is also a valid persistence basis:
so an already persisted state can be explicitly accepted later.
not only a state in added_state_ids.
Acceptance does not propagate¶
If A is accepted and a recomputation B is appended under a fresh id:
then:
B requires its own explicit acceptance act.
This remains true even if A and B share concept, frame, policy, standing, or most of their basis.
Temporal semantics¶
The only v1 acceptance-time ordering rule is:
A state cannot be accepted before it exists as a derived record.
PR11.7 does not require:
Historical reconstruction remains valid:
Likewise:
Current/preferred selection remains PR11.8.
UNKNOWN and non-positive states may be accepted¶
Acceptance is not a positive-capability verdict.
A state containing:
may be accepted when governance concludes that UNKNOWN is the honest supported assessment at
that boundary.
Likewise a state may contain:
and still be explicitly accepted.
not:
PR11.7 therefore performs no filter equivalent to:
PR11.5 is a real basis, not a universal prerequisite¶
The Real Pilot accepts states produced through the full PR11.5 complete-portfolio handoff.
Production PR11.7 does not permanently require that every accepted state be produced by PR11.5.
The existing state model supports human, rule, model, hybrid, and external derivation mechanisms. A future acceptance policy may require particular derivation provenance, but that policy-specific rule is not a universal PR11.7 type invariant.
Multiple acceptances¶
The same exact state may receive multiple acceptance facts under different:
PR11.7 does not aggregate them into a score, vote, confidence, or priority.
Similarly, A and B may both be accepted.
That is an input condition for later selection governance, not a conflict that PR11.7 resolves.
Revalidation APIs¶
PR11.7 provides two distinct checks.
Exact issuance-basis replay¶
This re-runs the exact PR11.6 transition, recomputes the state-content digest, and requires every stored binding in the acceptance to match.
Durable binding in a later snapshot¶
This verifies that the accepted state still exists with the exact accepted content in a later append-only state snapshot.
It intentionally does not replay the original whole-snapshot issuance basis.
This distinction allows acceptance A to remain usable after unrelated B/C appends while retaining original predecessor/successor hashes for audit.
Acceptance record provenance boundary¶
PersonalCapabilityStateAcceptance is a typed governance record, not a cryptographic signature.
The accepter ref identifies declared provenance. PR11.7 does not authenticate the human/model/rule process represented by that ref.
A runtime requiring cryptographic or account-level authorization must enforce that separately.
This is consistent with other typed provenance records in Capability Lab.
No current-state semantics¶
The acceptance record contains no:
No acceptance algorithm sorts candidates by:
to infer currentness.
No supersession semantics¶
Acceptance A does not make earlier or later states obsolete.
Acceptance B does not supersede A unless a future explicit governance layer says so.
PR11.8 may select a current state under explicit rules without rewriting PR11.7 history.
No progression or presentation authority¶
PR11.7 does not call progression or Player Window APIs and exposes no progression/presentation selection field.
PR11.9 remains the planned accepted/current-state to progression authority handoff.
Real Pilot 01 integration¶
PR11.7 extends the real chain:
real PR10.1 reviewed dependence
↓
real PR11.2 ClaimEvaluation
↓
PR11.3 immutable epistemic succession
↓
PR11.4 complete evaluation portfolio
↓
PR11.5 governed deterministic state derivation
↓
PR11.6 immutable state persistence
↓
PR11.7 explicit state acceptance
The Pilot proves five behaviors.
Initial acceptance¶
A real PR11.5-derived state enters an empty state history through PR11.6 and is then explicitly accepted by PR11.7.
Correction does not auto-propagate acceptance¶
A correction appends a new ClaimEvaluation, rebuilds the complete portfolio, derives state B,
and appends B while retaining A.
Acceptance A remains bound to exact A content after the append.
B is not accepted merely because it was appended.
Explicit B acceptance¶
B receives its own acceptance only through a new explicit PR11.7 call.
Delayed acceptance of retained A¶
A may receive an acceptance during a later valid {A}->{A,B} persistence transition.
Multiple accepted states still have no current state¶
After both A and B are accepted:
accepted candidates = {A, B}
current = undefined by PR11.7
preferred = undefined by PR11.7
supersession = undefined by PR11.7
progression = unauthorized by PR11.7 alone
This is the intended handoff to PR11.8.
Adversarial requirements¶
PR11.7 tests must include at least:
state absent from successor
invalid PR11.6 successor
same-id mutation inherited from PR11.6
request behavioral subclass
state-id subclass
policy subclass
accepter subclass
mechanism-kind substitution
str/int subclasses in nested policy/accepter values
datetime subclass
non-UTC post-construction request timestamp
non-canonical rationale post-construction
acceptance record subclass
subject-ref subclass
digest str subclass
invalid exact-int state revision after object.__setattr__
invalid exact-str dimension key after object.__setattr__
naive exact-datetime state time after object.__setattr__
empty exact-str required state rationale after object.__setattr__
acceptance A surviving unrelated B append
acceptance not propagating A -> B
UNKNOWN acceptance
INSUFFICIENT acceptance
unresolved-conflict acceptance
no current/preferred/progression fields
Production dependency boundary¶
New production authority is localized to:
Its dependencies are limited to:
standard library:
dataclasses
datetime
enum
hashlib
re
unicodedata
capability_lab.epistemics:
CapabilitySubjectRef
state.core:
PersonalCapabilityState
PersonalCapabilityStateId
PersonalCapabilityStateSet
StateError
state.snapshot_transition:
PersonalCapabilityStateSetSuccessionReceipt
personal_capability_state_set_sha256_v1
validate_personal_capability_state_set_successor_v1
It imports no:
The production layer does not call epistemic record-set validation, semantic catalog validation, frame catalog validation, or PR11.5 derivation engines.
Six-file release scope¶
PR11.7 v1 is intended to modify exactly:
docs/state_acceptance_v1.md
src/capability_lab/state/__init__.py
src/capability_lab/state/acceptance.py
tests/state/test_state_acceptance_v1.py
tests/state/test_state_acceptance_adversarial_v1.py
tests/pilots/test_civilization_bootstrap_pilot_01_state_acceptance_integration_v1.py
It intentionally does not modify:
state/core.py
state/serialization.py
state/snapshot_transition.py
derivation/*
epistemics/*
history/*
progression/*
proposals/*
player_window/*
Pilot production
Final v1 boundary¶
PR11.7 ACCEPTANCE
=
EXPLICIT GOVERNANCE ACT
+
FRESH PR11.6 SUCCESSION VALIDATION
+
STRICT ACCEPTED-STATE SEMANTIC ROUND-TRIP
+
EXACT PERSISTED STATE CONTENT BINDING
+
EXPLICIT POLICY / ACCEPTER / TIME / RATIONALE
and:
PR11.7 ACCEPTANCE
!= TRUTH
!= MASTERY
!= CURRENT
!= PREFERRED
!= SUPERSESSION
!= REJECTION / REVOCATION
!= PROGRESSION AUTHORITY
!= LICENSE
!= PERMISSION
The next layer, PR11.8, may therefore operate on a clean candidate universe:
without allowing persistence order or derivation output alone to become current-state authority.