Consumer outcome
CalendarWeave #2 requires an authenticated, tenant-safe standalone calendar path. The core already has ExternalIdentity(issuer,subject) and CalendarAuthorizationPort::authorize(identity, exact action/resource) -> TenantId. CalendarWeave must not self-assert tenant authority or carry a Keyverse operator credential at runtime.
Existing source inspected
- main
7d9151cd2da260e118020c938c7358e2ee75d541: ADR-0008 RP validation, closed client onboarding/reconciliation.
- PR103
5ac33256229321e9fccbb14a460c7d6de984444a: services/account_unification/app/org_authorization.py and authorization_plane.py contain software/menu PDP decisions.
- Those decision responses have no verified issuer, authorized tenant, exact CalendarWeave action or collection/event binding. Caller-supplied AssignmentSnapshot structure is not independently verified membership.
/authorization/*:decide is operator-protected; the start-login/PAT runtime gate cannot be assumed to authorize these routes.
Required owner contract
Provide a versioned, least-privilege runtime resource decision interface owned by Keyverse (or document an already implemented exact equivalent with immutable source and execution evidence). The spelling of a new endpoint is a proposal, not a requirement to duplicate an existing owner route.
Acceptance:
- Independently validate the approved CalendarWeave user-token issuer/signature/algorithm/audience/subject/time profile and authenticate a CalendarWeave-scoped service caller separately.
- Resolve
(issuer,subject) through an authoritative current membership mapping, not an unverified caller tenant/org-path header or claim-only entitlement.
- Evaluate exact action (
create_collection, create_event, read_events, update_event) and opaque collection/event references against resource binding without reading CalendarWeave application tables.
- Return an explicitly authorized tenant only for completed allow, bound to request correlation, issuer+subject, software unit, action/resource, policy revision and bounded freshness. Completed deny differs from unavailable/indeterminate.
- Deny missing/mismatched identity, resource, membership, role/scope, stale policy and dependency failures; preserve scalar opaque subject semantics rather than silently truncating CalendarWeave inputs.
- Do not distribute operator credentials to consumers, infer runtime authorization from menu/software allows, or copy Keyverse's identity/policy store into CalendarWeave.
- Publish immutable source/DTO and real positive/negative execution evidence. Existing Draft candidate, client-registration success and fixture-only JWT verification are not released/deployed acceptance.
Consumer plan and limits
The first authenticated CalendarWeave transport can operate on pre-provisioned collections through event create/get/If-Match update. The existing local operator is usable intermediate evidence, not a substitute for this final objective. CalendarWeave will reject unknown/malformed/mismatched/expired decisions before parsing or storage. No absent endpoint is mocked into a production success path.
Related to ContextualWisdomLab/CalendarWeave#2 and Keyverse #103/#102/#155/#158. Existing consumer compatibility paths remain intact. This request does not authorize production provisioning, secret access, deployment or bypass of PR gates.
Consumer outcome
CalendarWeave #2 requires an authenticated, tenant-safe standalone calendar path. The core already has
ExternalIdentity(issuer,subject)andCalendarAuthorizationPort::authorize(identity, exact action/resource) -> TenantId. CalendarWeave must not self-assert tenant authority or carry a Keyverse operator credential at runtime.Existing source inspected
7d9151cd2da260e118020c938c7358e2ee75d541: ADR-0008 RP validation, closed client onboarding/reconciliation.5ac33256229321e9fccbb14a460c7d6de984444a:services/account_unification/app/org_authorization.pyandauthorization_plane.pycontain software/menu PDP decisions./authorization/*:decideis operator-protected; the start-login/PAT runtime gate cannot be assumed to authorize these routes.Required owner contract
Provide a versioned, least-privilege runtime resource decision interface owned by Keyverse (or document an already implemented exact equivalent with immutable source and execution evidence). The spelling of a new endpoint is a proposal, not a requirement to duplicate an existing owner route.
Acceptance:
(issuer,subject)through an authoritative current membership mapping, not an unverified caller tenant/org-path header or claim-only entitlement.create_collection,create_event,read_events,update_event) and opaque collection/event references against resource binding without reading CalendarWeave application tables.Consumer plan and limits
The first authenticated CalendarWeave transport can operate on pre-provisioned collections through event create/get/If-Match update. The existing local operator is usable intermediate evidence, not a substitute for this final objective. CalendarWeave will reject unknown/malformed/mismatched/expired decisions before parsing or storage. No absent endpoint is mocked into a production success path.
Related to ContextualWisdomLab/CalendarWeave#2 and Keyverse #103/#102/#155/#158. Existing consumer compatibility paths remain intact. This request does not authorize production provisioning, secret access, deployment or bypass of PR gates.