Skip to content

Define the protocol-neutral responsibility contract above standing rules #126

Description

@George-RD

Why

OpenSpine's product promise is that Lyra can grow into useful responsibility as the owner delegates work. The current implementation path is too close to the first Gmail proof:

  • a StandingRuleManifest identifies one ActionId plus budgets and expiry, but has no reviewed connector, account, target, counterparty, or task-shape scope;
  • the proposal renderer is beginning to call that primitive a "responsibility" even though a standing rule is only an authority-composition input at one effect boundary;
  • owner review is represented directly as Telegram copy/buttons rather than as a channel-neutral decision object;
  • action explanations and delegatability are inferred in ad hoc code instead of being declared with the action.

This is a decomposition gap under the change-sequence rule: it needs a settled architecture/OpenSpec slice before more Gmail-specific behavior is added.

Product distinction to preserve

A standing rule is a kernel authority primitive: a reviewed shortcut at an effect boundary.

A responsibility is the owner-facing unit of delegation. It must explain the job, the workflow already in use, the exact scope in which effects may happen, the limits, exceptions, receipts, and controls. The first proof may compose an existing workflow with one scoped standing rule, but the architecture must not equate the two.

Contracts to define

1. Action descriptor

Add a catalog-owned descriptor for every action that may participate in reusable delegation. At minimum it must declare:

  • canonical action ID and effect semantics;
  • owner-facing verb, object, and target nouns;
  • whether reusable delegation is supported;
  • required reviewed scope dimensions;
  • executor/effect-adapter identity;
  • connector/egress/output classifications already owned by the catalog;
  • whether dark-window defaults are permitted for this effect class.

An action without a complete descriptor is ineligible for a reusable-authority proposal. There is no guessed fallback such as reducing memory.read:owner_preferences_limited to "read."

2. Kernel-resolved action context

Define a typed ResolvedActionContext (name may change in design) produced by the kernel, never by the shell. It must be able to carry the relevant subset of:

  • connector implementation and stable connector-instance identity;
  • account role/account identity;
  • canonical target references;
  • bound counterparty identity and relationship tier where applicable;
  • kernel-bound parameters;
  • target and payload digests;
  • egress/disclosure/output class;
  • workflow/task-shape identity.

This is the reusable form of AD-036 and AD-120: the model sends an intent; the kernel determines the WHO/WHERE and the effect identity.

3. Reviewed action scope

Define a serializable, versioned ReviewedActionScope derived only from the resolved context. It must be possible to compare a live request against the reviewed scope deterministically without connector-specific branches in the standing-rule engine.

Communication effects must not be delegatable with action-only scope.

4. Delegation evidence

Define evidence that distinguishes:

  • repeated approvals;
  • an explicit owner request to create a rule;
  • a correction or workflow proposal;
  • a manually supplied artifact.

Repeated-approval evidence must bind the complete context class and an evidence-set digest/count, not one arbitrary source event. Owner-facing copy may say "Lyra noticed a pattern" only when that evidence exists.

5. Channel-neutral owner review

Define an OwnerReviewRequest (name may change) containing:

  • proposal kind and provenance summary;
  • plain-language responsibility description;
  • exact reviewed scope;
  • automatic effects and remaining approval/deny boundaries;
  • budgets, expiry, drift/default behavior;
  • digest/version binding;
  • available decisions and lifecycle controls.

Telegram, terminal, web, and future owner channels render this object; they do not define its security semantics.

Required adversarial decisions

  • Whether the first proof can represent a responsibility as a view over existing workflow + standing-rule artifacts, or whether an atomic ResponsibilityManifest/bundle is required now.
  • Whether dark-window Allow remains legal for external communication effects; AD-012 is still marked leaning, so the default must be fail-closed until explicitly settled.
  • Which context dimensions define the minimum safe equivalence class for email drafts and for a generic communication action.
  • How descriptor/schema/policy drift moves an active responsibility to needs_review.
  • How a connector is removed or an account is reconfigured without leaving a zombie responsibility.

Invariants

  • The task grant remains the only live authority object.
  • Preferences and persona learning remain separate from authority.
  • The shell cannot supply or widen trusted scope fields.
  • A connector implementation cannot opt itself into delegation without catalog review.
  • Missing descriptor, resolver, executor, or scope information fails closed before owner approval.
  • No protocol name is embedded in the generic standing-rule matcher or owner-decision state machine.

Deliverables

  • A new settled AD/D decision where needed.
  • An OpenSpec change modifying the standing-rules/action/runtime contracts before behavioral implementation.
  • Schema and pure-function contract tests for descriptor completeness, resolved-context construction, scope comparison, evidence classes, and owner-review serialization.
  • An amended change sequence with explicit dependencies for the execution, scoped matching, owner-control, and first-proof slices.

Done when

  • The repository has one documented meaning of responsibility, standing rule, resolved context, reviewed scope, and delegation evidence.
  • A synthetic non-Gmail communication action can be described and scope-compared without changing the generic contracts.
  • An action with missing delegation metadata cannot reach proposal review.
  • Existing Gmail behavior remains unchanged; this issue defines the contract rather than prematurely shipping the autonomous path.

Relationship

Parent: #123.

Blocks the executable delegation, scoped matching, channel-neutral review, and first end-to-end proof slices.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions