Skip to content

feat(core): migrationAttestation as structural precondition on ConstraintEnvelope#178

Open
pshkv wants to merge 4 commits intomainfrom
feat/constraint-envelope-migration-attestation
Open

feat(core): migrationAttestation as structural precondition on ConstraintEnvelope#178
pshkv wants to merge 4 commits intomainfrom
feat/constraint-envelope-migration-attestation

Conversation

@pshkv
Copy link
Copy Markdown
Contributor

@pshkv pshkv commented Apr 21, 2026

Summary

Follow-through on the commitment made in aeoess/agent-governance-vocabulary#8 — adds migrationAttestation as a structural precondition on ConstraintEnvelope. When present, the envelope only validates if continuityVerified === true with all four shape fields populated. This makes entity_continuity a scope-grant gate rather than an advisory signal.

Why this shape

  • Matches the SBR-002 (Soulbound Robots) reference schema for embodied-AI migrations (body swaps, wallet rotations, runtime handoffs).
  • Validation is applied regardless of envelope version — the field is forward-compatible and its presence always demands the full shape.
  • Fits the existing validateConstraintEnvelope surface without introducing a new "activation gate" concept — invalid envelope = no scope grant, which is functionally equivalent.

Changes

  • packages/core/src/types/protocol.ts — new ConstraintEnvelopeMigrationAttestation interface; optional migrationAttestation field added to ConstraintEnvelope
  • packages/core/src/constraint-language.ts — 5 validation rules on the migration-attestation block
  • packages/core/__tests__/constraint-language.test.ts — 8 new test cases

Test plan

  • Typecheck: pnpm --filter @sint/core run typecheck — passes
  • Tests: pnpm --filter @sint/core test — 61 passed (previously 53)
  • Downstream: bridge-a2a uses ConstraintEnvelope — additive-only change, no breaking surface. Running downstream tests recommended before merge.

Follow-ups (not in this PR)

  1. Crosswalk updateaeoess/agent-governance-vocabulary/crosswalk/sint.yaml adds entity_continuity (no_mapping + composition note pointing at this field) and consent_provenance (close_match + gap note). Separate PR against that repo.
  2. Spec version bumpdocs/specs/sint-protocol-v1.0.md should document the new field in a v1.1 section (coordinated with the v1.0 → v1.1 promotion from #168 canonical-signing clarifications).
  3. Descriptor-extension PR in vocab repo — per aeoess's sequencing: seven new descriptor enum values land before any new signal-type merge.

Refs

  • aeoess/agent-governance-vocabulary#8 — drove this
  • SBR-002 schema — reference shape

pshkv added 4 commits April 18, 2026 10:47
…ess thresholds, assumption ledger, and simulator validation (39 tests)
… T0/T1 autonomy and local buffer replay (50 tests)
…apability delegation, handoff receipts, and quorum rules (37 tests)
…raintEnvelope

Adds ConstraintEnvelopeMigrationAttestation interface (SBR-002-compatible
shape) and an optional migrationAttestation field on ConstraintEnvelope.
When the field is present, validateConstraintEnvelope requires
continuityVerified === true and all four shape fields (schema,
attestationUri, agentWallet, issuedAt) to be non-empty strings. Otherwise
the envelope is invalid and scope is not granted.

This makes entity_continuity a structural precondition for actuator scope
rather than an advisory signal — envelope validation is the activation
gate. Aligns with the aeoess/agent-governance-vocabulary canonical two-
implementation sequencing: PDR + continuity-analyzer provide the two
independent implementations; SBR-002 remains the embodied-AI-specific
reference schema underneath.

Validation applies regardless of envelope version (legacy or CL-1.0) —
the field is forward-compatible and its presence always demands the full
shape with continuityVerified === true.

Tests: 8 new cases covering valid shape, each invalid-shape branch,
legacy-envelope compatibility, and optional-field behavior. All 61 core
tests pass.

Refs: aeoess/agent-governance-vocabulary#8
aeoess added a commit to aeoess/agent-governance-vocabulary that referenced this pull request Apr 23, 2026
…tural match (shipped in sint-protocol PR #178) (#45)

Illya shipped migrationAttestation as a structural precondition on ConstraintEnvelope at sint-ai/sint-protocol#178: when present, the envelope validates only if continuityVerified === true with all four shape fields populated. This makes entity_continuity a scope-grant gate at the execution boundary, not an advisory signal.

Changes:
- Moved entity_continuity from proposed_signal_type_alignment to signal_types
- Match: structural (PR #178 implements the vocabulary.yaml entity_continuity contract at a composition point APS can rely on)
- Field: constraintEnvelope.migrationAttestation with sint_definition citing SBR-002 alignment, 5 validation rules, 8 test cases
- Notes cite the mutation_boundary descriptor from pending vocab PR #43, reinforcing the cross-spec convergence on the execution-boundary framing
- consent_provenance stays in proposed_signal_type_alignment, upgraded to partial with composition note pointing at policy_bundle.consent_chain + APS delegation chain
- Updated last_reviewed to 2026-04-23 and added refresh note

Validator: 0 errors on sint.yaml (only pre-existing _test-invalid.yaml errors remain).
@aeoess
Copy link
Copy Markdown
Collaborator

aeoess commented Apr 23, 2026

Illya, shipped the crosswalk follow-up you flagged in the Follow-ups section of this PR.

aeoess/agent-governance-vocabulary#45 merged, promoting entity_continuity from proposed_signal_type_alignment to signal_types with match: structural, citing this PR as the reference implementation. The composition framing is explicit: when a SINT ConstraintEnvelope is attached to a delegation, the migration-attestation check becomes a precondition on every action the envelope governs. That gives APS issuers a clean primitive to compose against.

consent_provenance stays in proposed_signal_type_alignment for now. It's not yet canonical in vocabulary.yaml, so upgrading it there would be premature. Left the v1.1 path via #168 as a note.

Not touched in this PR but worth flagging: descriptor-extension work from the seven new descriptors you referenced in the #178 Follow-ups is still open. Some of those overlap with what nutstrut proposed in vocab PR #43 (measurement_point) for which I requested a restructure today. If any of your seven are the same dimension named differently, it would help to land them together rather than in parallel PRs that later need reconciliation. Happy to coordinate sequencing when you're ready to push that work.

Reference: aeoess/agent-governance-vocabulary#45

nutstrut pushed a commit to nutstrut/agent-governance-vocabulary that referenced this pull request May 4, 2026
…tural match (shipped in sint-protocol PR #178) (aeoess#45)

Illya shipped migrationAttestation as a structural precondition on ConstraintEnvelope at sint-ai/sint-protocol#178: when present, the envelope validates only if continuityVerified === true with all four shape fields populated. This makes entity_continuity a scope-grant gate at the execution boundary, not an advisory signal.

Changes:
- Moved entity_continuity from proposed_signal_type_alignment to signal_types
- Match: structural (PR #178 implements the vocabulary.yaml entity_continuity contract at a composition point APS can rely on)
- Field: constraintEnvelope.migrationAttestation with sint_definition citing SBR-002 alignment, 5 validation rules, 8 test cases
- Notes cite the mutation_boundary descriptor from pending vocab PR aeoess#43, reinforcing the cross-spec convergence on the execution-boundary framing
- consent_provenance stays in proposed_signal_type_alignment, upgraded to partial with composition note pointing at policy_bundle.consent_chain + APS delegation chain
- Updated last_reviewed to 2026-04-23 and added refresh note

Validator: 0 errors on sint.yaml (only pre-existing _test-invalid.yaml errors remain).
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