Tracks framework **[v1.46.0 — Gienah: Fluent Query Caching](https://github.com/glueful/framework/releases/tag/v1.46.0)**.
- Bumps `glueful/framework` constraint to `^1.46.0`.
- **No skeleton-side code changes** — no migration, no env var.
## Framework changes included
- **`QueryBuilder::cache(?int $ttl = null, array $tags = [])` actually caches now.** Wired through to `QueryCacheService` with
automatic per-table tags plus caller-supplied invalidation tags. Previously a silent no-op.
- **PHPStan level-8 hardening (initiative kickoff)** — internal typing fixes in the query-binding path; full level-8 gap catalogued
in the framework's `docs/LEVEL8_TYPING_DEBT.md`. CI gate stays at level 6.
## Upgrade Notes
- **No action required.** `composer update` is sufficient.
- **`->cache()` now caches.** If app code calls it expecting nothing to happen, it'll now cache. Cache key is `query+params` — make
sure cached queries don't return user-scoped rows without a discriminator in the SQL.
```bash
composer update glueful/framework
Full changelog: https://github.com/glueful/api-skeleton/compare/v1.28.0...v1.29.0