Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ license = "MIT"
repository = "https://github.com/Dastari/graphql-orm"

[workspace.dependencies]
agql-auth = { git = "https://github.com/Dastari/agql-auth.git", rev = "e841ffd382082ad7419be259fe957f949b956ff7", version = "0.15.0" }
agql-auth = { git = "https://github.com/Dastari/agql-auth.git", rev = "3bc38cd94794f1e868a9cc3a5551047b95a32105", version = "0.16.0" }
arc-swap = "1.7"
async-graphql = { version = "7", features = ["dataloader", "uuid"] }
async-graphql-parser = "7"
Expand Down
4 changes: 2 additions & 2 deletions MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -1183,6 +1183,6 @@ access path.

- No JWT, OIDC, cookie, wildcard, or application-specific scope logic was added to `graphql-orm`.
- PostgreSQL RLS helper functions still use exact scope matching.
- The current `auth-agql` feature targets `agql-auth` 0.15.0 at revision
`e841ffd382082ad7419be259fe957f949b956ff7`; earlier release sections above
- The current `auth-agql` feature targets `agql-auth` 0.16.0 at revision
`3bc38cd94794f1e868a9cc3a5551047b95a32105`; earlier release sections above
retain their historical pins.
20 changes: 20 additions & 0 deletions crates/graphql-orm-ai/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,26 @@ checkpoint facts. For the current workspace baseline and active gates, use the
[implementation status](docs/implementation-status.md) and the central
[AI production-readiness plan](../../docs/plans/active/ai-production-readiness/README.md).

## [0.88.3] - 2026-08-22

Persistent schema module: **0.63.0** (unchanged from 0.88.2).

### Changed

- The workspace now resolves the exact external `agql-auth` 0.16.0 revision
`3bc38cd94794f1e868a9cc3a5551047b95a32105`. Hosts already using that
revision retain one `AuthPrincipal` and `ResolvedPrincipal` type universe
across their application and `graphql-orm-ai`.

### Security

- `agql-auth` 0.16's consumer-configured exact-only matcher requirements do
not grant AI resolver, tool, egress, retention, or provider authority.
Matcher policy remains owned by the host resource server.

There is no schema, data, protected-payload, GraphQL SDL, backup or restore
migration in this release.

## [0.88.2] - 2026-08-22

Persistent schema module: **0.63.0** (unchanged from 0.88.1).
Expand Down
2 changes: 1 addition & 1 deletion crates/graphql-orm-ai/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "graphql-orm-ai"
version = "0.88.2"
version = "0.88.3"
edition = "2024"
authors = ["Toby Martin <toby@dastari.net>"]
description = "Project-agnostic AI agent runtime for graphql-orm applications"
Expand Down
14 changes: 14 additions & 0 deletions crates/graphql-orm-ai/MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,20 @@ they describe. For the current workspace baseline and active delivery gates,
use [implementation status](docs/implementation-status.md) and the central
[AI production-readiness plan](../../docs/plans/active/ai-production-readiness/README.md).

## 0.88.2 to 0.88.3: agql-auth 0.16 type-universe alignment

Adopt `graphql-orm-ai` 0.88.3 from one reviewed full monorepo revision and
align every direct host dependency on `agql-auth` to version 0.16.0 at exact
revision `3bc38cd94794f1e868a9cc3a5551047b95a32105`. Mixing that revision with
the earlier 0.15 workspace pin creates distinct principal types and must not
be worked around with path overrides or duplicated conversion layers.

The AI schema module remains **0.63.0**. There is no database, data, table,
column, index, constraint, backfill, GraphQL SDL, protected-payload, backup or
restore migration. Version 0.16 adds host-configured exact-only matcher
requirements; `graphql-orm-ai` does not choose or relax those resource-server
rules and requires no AI provider or coordinator API change.

## 0.88.1 to 0.88.2: retained capability-session admission

Adopt `graphql-orm-ai` 0.88.2 from one reviewed full monorepo revision. The AI
Expand Down
4 changes: 2 additions & 2 deletions crates/graphql-orm-ai/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: "graphql-orm-ai"
kind: reference
status: active
owner: graphql-orm-ai-maintainers
last_reviewed: 2026-08-16
last_reviewed: 2026-08-22
review_by: 2027-02-01
supersedes: []
---
Expand All @@ -28,7 +28,7 @@ for AI, ORM, storage, backup, and tool-profile packages:

```toml
[dependencies]
graphql-orm-ai = { git = "https://github.com/Dastari/graphql-orm.git", rev = "<reviewed-full-40-character-commit-sha>", version = "0.88.1", default-features = false, features = ["sqlite"] }
graphql-orm-ai = { git = "https://github.com/Dastari/graphql-orm.git", rev = "<reviewed-full-40-character-commit-sha>", version = "0.88.3", default-features = false, features = ["sqlite"] }
```

Exactly one persistence backend is required: `sqlite` (default), `postgres`,
Expand Down
4 changes: 2 additions & 2 deletions crates/graphql-orm-ai/docs/implementation-status.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ supersedes: []

# Implementation Status

`graphql-orm-ai` is at crate version `0.87.0` with AI schema module
`graphql-orm-ai` is at crate version `0.88.3` with AI schema module
`0.63.0`. It uses workspace `graphql-orm` `0.23.0`, backend-neutral
`graphql-orm-ai-tool-profiles` `0.9.0`, and external `agql-auth`
`0.15.0` at `e841ffd382082ad7419be259fe957f949b956ff7`.
`0.16.0` at `3bc38cd94794f1e868a9cc3a5551047b95a32105`.

Completed stateless local-provider turns can carry a proof-bearing contained
native-item refusal after authoritative usage settlement. Those runs close as
Expand Down
6 changes: 3 additions & 3 deletions crates/graphql-orm-backup/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@ This crate is a reusable backup and restore companion for applications that use
## Current Agent Handoff

- Current crate version is `0.7.1`.
- The optional ORM adapter resolves `graphql-orm` 0.22.1 from the workspace.
- The optional ORM adapter resolves `graphql-orm` 0.23.0 from the workspace.
Internal packages use workspace path dependencies and the root `Cargo.lock`.
Keep downstream applications on one reviewed monorepo revision so ORM,
backup, and storage share the same canonical source/type universe.
- `graphql-orm` owns its optional `agql-auth` integration and pins
`agql-auth` 0.15.0 at
`e841ffd382082ad7419be259fe957f949b956ff7`. This crate must not enable or
`agql-auth` 0.16.0 at
`3bc38cd94794f1e868a9cc3a5551047b95a32105`. This crate must not enable or
depend directly on application authorization.
- Applying and dry-run restore compare the manifest backend/schema hash with
the target before target checks or writes. Preserve that fail-closed
Expand Down
8 changes: 4 additions & 4 deletions crates/graphql-orm-router/MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ supersedes: []
## 0.1.3 to 0.1.4

Replace the reviewed full-revision pin and rebuild the router. When a host
also depends directly on `agql-auth`, align it to version 0.15.0 at exact
revision `e841ffd382082ad7419be259fe957f949b956ff7` so Cargo resolves one auth
also depends directly on `agql-auth`, align it to version 0.16.0 at exact
revision `3bc38cd94794f1e868a9cc3a5551047b95a32105` so Cargo resolves one auth
type universe.

The `auth-agql` feature remains a validator and scope-matcher adapter only. It
Expand Down Expand Up @@ -91,8 +91,8 @@ New access tokens should use the OAuth space-delimited `scope` claim. The
legacy `scopes` array is accepted only with `acceptLegacyScopes: true`; a token
containing conflicting forms is rejected. The optional `auth-agql` feature is
a validation/matching adapter only and introduces no issuer responsibilities.
It resolves `agql-auth` 0.15.0 at exact revision
`e841ffd382082ad7419be259fe957f949b956ff7`; hosts with a direct dependency
It resolves `agql-auth` 0.16.0 at exact revision
`3bc38cd94794f1e868a9cc3a5551047b95a32105`; hosts with a direct dependency
must use the same source and revision. Configure legacy acceptance directly
with `agql_auth::AccessTokenValidatorBuilder::legacy_scope_claims` before
wrapping the validator in `AgqlAuthenticationProvider::new`.
Expand Down
6 changes: 3 additions & 3 deletions crates/graphql-orm-storage/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ This crate is a reusable storage companion for applications that use `graphql-or
## Current Agent Handoff

- Current crate version is `0.6.1`.
- The workspace resolves `graphql-orm` 0.22.1 and `graphql-orm-backup` 0.7.1
- The workspace resolves `graphql-orm` 0.23.0 and `graphql-orm-backup` 0.7.1
through workspace path dependencies and one root `Cargo.lock`. Keep
downstream companion packages on one reviewed monorepo revision.
- `graphql-orm` owns the optional `agql-auth` integration, pinned at
`agql-auth` 0.15.0 revision
`e841ffd382082ad7419be259fe957f949b956ff7`; this crate does not depend on
`agql-auth` 0.16.0 revision
`3bc38cd94794f1e868a9cc3a5551047b95a32105`; this crate does not depend on
application authorization.
- The storage provider boundary is now the streaming `BlobStore` trait.
- `ObjectStorage` extends `BlobStore`; custom providers must implement `BlobStore` first.
Expand Down
6 changes: 3 additions & 3 deletions crates/graphql-orm/tests/backend_coexistence_fixture.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,13 @@ fn assert_direct_host_dependency_resolves_one_exact_agql_auth_universe() {
.filter(|package| package["name"] == "agql-auth")
.collect::<Vec<_>>();
assert_eq!(agql_auth.len(), 1, "resolved metadata:\n{metadata}");
assert_eq!(agql_auth[0]["version"], "0.15.0");
assert_eq!(agql_auth[0]["version"], "0.16.0");
let source = agql_auth[0]["source"]
.as_str()
.expect("agql-auth source must be present");
assert!(
source.contains("rev=e841ffd382082ad7419be259fe957f949b956ff7")
&& source.ends_with("#e841ffd382082ad7419be259fe957f949b956ff7"),
source.contains("rev=3bc38cd94794f1e868a9cc3a5551047b95a32105")
&& source.ends_with("#3bc38cd94794f1e868a9cc3a5551047b95a32105"),
"unexpected agql-auth source: {source}",
);
}
10 changes: 5 additions & 5 deletions crates/graphql-orm/tests/fixtures/backend-coexistence/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2024"

[dependencies]
agql-auth = { git = "https://github.com/Dastari/agql-auth.git", rev = "e841ffd382082ad7419be259fe957f949b956ff7", version = "0.15.0" }
agql-auth = { git = "https://github.com/Dastari/agql-auth.git", rev = "3bc38cd94794f1e868a9cc3a5551047b95a32105", version = "0.16.0" }
async-graphql = { version = "7", features = ["dataloader", "uuid"] }
graphql-orm = { path = "../../../../", default-features = false, features = [
"sqlite",
Expand Down
2 changes: 1 addition & 1 deletion docs/plans/active/ai-production-readiness/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ retention, or restore proofs remain closed.
- `graphql-orm-backup` 0.7 snapshot, repository, verification, and restore
orchestration.
- `graphql-orm-storage` 0.6 streaming provider boundary.
- Exact external `agql-auth` 0.15 revision declared by the workspace.
- Exact external `agql-auth` 0.16 revision declared by the workspace.
- Test-owned SQLite and disposable PostgreSQL infrastructure.

## Acceptance gates
Expand Down
17 changes: 11 additions & 6 deletions docs/reference/graphql-orm/agql-auth-bridge.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ graphql-orm = { git = "https://github.com/Dastari/graphql-orm.git", rev = "<revi
# Host applications may depend on agql-auth directly as well. The optional
# graphql-orm auth-agql feature pins the exact upstream release:
# git = "https://github.com/Dastari/agql-auth.git"
# rev = "e841ffd382082ad7419be259fe957f949b956ff7"
# version = "0.15.0"
agql-auth = { git = "https://github.com/Dastari/agql-auth.git", rev = "e841ffd382082ad7419be259fe957f949b956ff7", version = "0.15.0" }
# rev = "3bc38cd94794f1e868a9cc3a5551047b95a32105"
# version = "0.16.0"
agql-auth = { git = "https://github.com/Dastari/agql-auth.git", rev = "3bc38cd94794f1e868a9cc3a5551047b95a32105", version = "0.16.0" }
```

Both projects are intentionally Git-only. Cargo's crates.io packaging flow cannot package
Expand Down Expand Up @@ -94,7 +94,7 @@ missing, or inconsistent assurance is omitted rather than repaired.

## Migrating from 0.7

Update any direct `agql-auth` dependency to the exact 0.15 revision above. `AuthSubject` and
Update any direct `agql-auth` dependency to the exact 0.16 revision above. `AuthSubject` and
`DbAuthContext` gained organization, correlation, and assurance fields; applications constructing
either with struct literals must add the fields or use their builders/`Default` update syntax.
The bridge preserves valid 0.8+ session assurance, active scope, correlation,
Expand All @@ -103,7 +103,7 @@ of retaining only the older role/scope/tenant subset.

## Migrating from an Earlier Bridge Release

Update any direct `agql-auth` dependency to the exact 0.15.0 revision above at
Update any direct `agql-auth` dependency to the exact 0.16.0 revision above at
the same time as `graphql-orm`. This prevents Cargo from resolving separate
package/type universes. Version 0.22.0 keeps the identity, role, scope, tenant,
organization, actor, correlation, token-reference, and policy-version mappings,
Expand All @@ -112,7 +112,7 @@ copied, and malformed or token/session-inconsistent assurance is omitted. If a
host consumed arbitrary `AuthSubject.claims.additional` values, move that data
through an explicit application-owned request type instead of the ORM bridge.

Direct users of `agql-auth` must also review its migration through 0.15. Version
Direct users of `agql-auth` must also review its migration through 0.16. Version
0.11 replaces split durable rate-limit writes with the versioned atomic
`AuthRateLimitStore` contract. `graphql-orm` does not implement that store and
does not add a split or synthetic ORM-backed implementation. Version 0.12 adds
Expand All @@ -128,6 +128,11 @@ hosts use agql-auth's `VerifiedActiveUserSessionResolver` and exact delegation
binding directly. The resulting user-shaped principal continues through the
ordinary bridge and resolver authorization without synthesizing a new session.

Version 0.16 adds consumer-supplied exact-only fixed requirements and patterns
to the hierarchical matcher. The ORM bridge continues projecting scopes
without choosing matcher policy; hosts opt into those semantics where they
construct their resource-server matcher.

Version 0.13 adds the policy ID, evaluation state/times, safe session status,
denial categories, and policy-set contract consumed by the operation assurance
evaluator. It does not change ordinary refresh eligibility.
Expand Down
4 changes: 2 additions & 2 deletions docs/reference/graphql-orm/backends.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ or managed RLS. See [Microsoft SQL Server](mssql.md).

Optional non-backend features:

- `auth-agql` - optional one-way bridge from upstream `agql-auth` 0.15
(`git` rev `e841ffd382082ad7419be259fe957f949b956ff7`) into `AuthSubject` /
- `auth-agql` - optional one-way bridge from upstream `agql-auth` 0.16
(`git` rev `3bc38cd94794f1e868a9cc3a5551047b95a32105`) into `AuthSubject` /
`DbAuthContext` and declared assurance evaluation.

The `mssql` feature activates optional `tiberius`, `tokio-util`, and Tokio TCP support. Projects that
Expand Down
4 changes: 2 additions & 2 deletions docs/reference/workspace-packages.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ changes.
| Package | Version | Path | Default features | Direct internal dependencies |
| --- | --- | --- | --- | --- |
| `graphql-orm` | `0.23.0` | `crates/graphql-orm` | `sqlite` | `graphql-orm-macros`, `graphql-orm-operation-catalog`, `graphql-orm-router-protocol` (dev-only) |
| `graphql-orm-ai` | `0.88.2` | `crates/graphql-orm-ai` | `sqlite` | `graphql-orm`, `graphql-orm-ai-tool-profiles`, `graphql-orm-storage` |
| `graphql-orm-ai` | `0.88.3` | `crates/graphql-orm-ai` | `sqlite` | `graphql-orm`, `graphql-orm-ai-tool-profiles`, `graphql-orm-storage` |
| `graphql-orm-ai-tool-profiles` | `0.9.0` | `crates/graphql-orm-ai-tool-profiles` | none | `graphql-orm-operation-catalog`, `graphql-orm-router-protocol` (dev-only) |
| `graphql-orm-backup` | `0.7.1` | `crates/graphql-orm-backup` | `local` | `graphql-orm` (optional), `graphql-orm-storage` |
| `graphql-orm-macros` | `0.23.0` | `crates/graphql-orm-macros` | `sqlite` | none |
Expand All @@ -30,7 +30,7 @@ changes.

External exact-revision dependency:

- `agql-auth` requirement `^0.15.0`, source `git+https://github.com/Dastari/agql-auth.git?rev=e841ffd382082ad7419be259fe957f949b956ff7`, consumed by `graphql-orm`, `graphql-orm-ai`, `graphql-orm-router`.
- `agql-auth` requirement `^0.16.0`, source `git+https://github.com/Dastari/agql-auth.git?rev=3bc38cd94794f1e868a9cc3a5551047b95a32105`, consumed by `graphql-orm`, `graphql-orm-ai`, `graphql-orm-router`.

<!-- END GENERATED WORKSPACE PACKAGES -->

Expand Down
Loading