Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
59ef450
Start rate enforcement branch
dominikletica Jun 16, 2026
349526b
Document rate enforcement policy catalogue
dominikletica Jun 17, 2026
3e3ff78
Add rate limit policy catalogue
dominikletica Jun 17, 2026
39695a5
Add rate limit mode setting
dominikletica Jun 17, 2026
8b11566
Add rate limit decision facade
dominikletica Jun 17, 2026
e1f6acc
Enforce rate limits on requests
dominikletica Jun 17, 2026
b6a53e2
Add rate limit reset hooks
dominikletica Jun 17, 2026
61a3762
Document rate enforcement implementation
dominikletica Jun 17, 2026
f5704d8
Harden rate limit scheduler policy
dominikletica Jun 17, 2026
c12869e
Scale suspicious probe profile windows
dominikletica Jun 17, 2026
706c822
Cover cron rate limit route rendering
dominikletica Jun 17, 2026
e8bafbc
Clarify scheduler rate limit policy
dominikletica Jun 17, 2026
222dbc6
Record custom error page follow-up
dominikletica Jun 17, 2026
6485929
Version bump -> 0.2.5
dominikletica Jun 17, 2026
e17395d
Translate rate limit profile labels
dominikletica Jun 17, 2026
2f91cee
Update importmap dependencies
dominikletica Jun 17, 2026
268a6bf
Fix rate enforcement review findings
dominikletica Jun 17, 2026
91cca74
Fix rate limiter auth-stage bypasses
dominikletica Jun 17, 2026
7468b1c
Harden rate limiter review edge cases
dominikletica Jun 17, 2026
ceef826
Fix rate limiter bypass review findings
dominikletica Jun 17, 2026
cb206a4
Tighten rate limiter review hardening
dominikletica Jun 17, 2026
840d511
Harden rate limit probe and profile edges
dominikletica Jun 17, 2026
47e8d9f
Document cache panic delivery direction
dominikletica Jun 17, 2026
e6c266b
Charge bearer CORS preflight attempts
dominikletica Jun 17, 2026
38e8c57
Charge read-only owner unsafe preflights
dominikletica Jun 17, 2026
126d19e
Close bearer preflight and scheduler gaps
dominikletica Jun 17, 2026
6aea1c2
Harden probe setup and auth-failure limits
dominikletica Jun 17, 2026
7f81f91
Codify review readiness rules
dominikletica Jun 17, 2026
7333fa7
Harden setup rate limits and error resolution
dominikletica Jun 17, 2026
d5f4261
Document rate limit and error renderer hardening
dominikletica Jun 17, 2026
15aa164
Harden credentialed preflight rate checks
dominikletica Jun 17, 2026
2452b47
Prevent partial rate limit bucket spends
dominikletica Jun 18, 2026
6db53a5
Document rate limit consume tradeoff
dominikletica Jun 18, 2026
3ece8ae
Centralize API effective method policy
dominikletica Jun 18, 2026
bd64934
Centralize path scope matching
dominikletica Jun 18, 2026
52b6019
Move rate limit bucket policy into descriptors
dominikletica Jun 18, 2026
4ba4bd6
Centralize localized request path resolution
dominikletica Jun 18, 2026
c294fef
Harden technical path rate scopes
dominikletica Jun 18, 2026
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
4 changes: 2 additions & 2 deletions .manifest
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
# APP_CHANNEL defines the target branch inside the specified repository.

##> aavion/studio manifest ###
APP_VERSION=0.2.4
APP_DATE=2026-06-14
APP_VERSION=0.2.5
APP_DATE=2026-06-17
APP_NAME=Studio
APP_AUTHOR=Dominik Letica
APP_DESCRIPTION=Symfony 8.1 based content-management system for structured project websites.
Expand Down
18 changes: 17 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,21 @@
- Translation changes must keep matching source catalogue files and keys synchronized across all locale directories under `translations/languages/`; runtime `translations/messages.*.yaml` files are generated from those sources.
- Refactors before the first public `1.0.0` release may remove obsolete code instead of keeping compatibility shims, but callers, tests, docs, and class map entries must be updated immediately.
- If a requested narrow change exposes unrelated drift, fix it only when it blocks the task; otherwise record the follow-up in `dev/WORKLOG.md`.
- When addressing review findings, trace adjacent and analogous code paths that share the same policy, transition, or boundary, and apply or explicitly rule out the same fix there to avoid one-path-only hardening.

### Review Finding Fixes
- Before applying a fix for a review finding, trace the affected boundary from source to sink and inspect adjacent, related, and analogous code paths that share the same classifier, subscriber, guard, resolver, route family, subject selection, response behavior, storage boundary, or policy decision.
- Prefer fixing the narrowest central boundary that covers all affected paths. Apply a path-local fix only when evidence shows the issue is truly path-specific.
- Keep review fixes simple, modular, and minimally invasive. Do not broaden them into unrelated refactors, compatibility shims, or speculative redesigns.
- While tracing the affected boundary, actively look for additional unreported edge cases, including bypasses, abuse paths, privacy leaks, performance regressions, setup/pre-auth behavior, disabled-feature fallbacks, response redaction, and cache/storage failure behavior.
- Fix small in-scope adjacent issues directly when they share the same boundary and risk profile. Record larger or behavior-changing follow-ups in `dev/WORKLOG.md` instead of hiding them inside the review fix.
- Add or update regression coverage for the reported finding and any adjacent paths changed by the fix. When an analogous path is inspected and intentionally not changed, make that reasoning clear in the worklog, final notes, or PR response where useful.

### PR Readiness Audits
- Before marking a branch, pull request, or feature slice ready for review, run the PR-readiness checklist as a real audit pass over the branch diff and the affected runtime surfaces. Do not treat checklist items as passive boxes to tick.
- The audit must explicitly review security/privacy considerations; public entry points; authentication, authorization, sessions, secrets, browser storage, and response redaction; package/module boundaries; access levels; route/API/live endpoint scopes; naming and collision risks; setup/init/CI behavior; cross-platform behavior; disabled-feature fallbacks; process and environment handling; default seed coverage for implemented config keys; translations and user-facing copy; project-rule, architecture, naming, documentation, and performance drift; and captured follow-up tasks.
- Use evidence from code inspection, focused tests, render checks, linting, documentation diffs, class map/worklog updates, and seed/default coverage as appropriate for the changed surface. If a checklist item is not applicable, record why instead of silently skipping it.
- Fix small readiness issues directly when they are in scope and low risk. Record larger, behavior-changing, or separate-domain issues in `dev/WORKLOG.md` with a clear next action.
- PR notes must summarize the readiness audit outcome, including verification commands, skipped checks or proof gaps, documentation/worklog/classmap status, translation status, security/privacy considerations, and remaining follow-ups.

## Build and Verification Commands
- `bin/init` initializes the repository, refreshes dependencies and assets, locks referenced Symfony UX icons locally when possible, and is the preferred recovery path for broken or incomplete `vendor/` packages because it removes an existing `vendor/` tree before Composer runs.
Expand Down Expand Up @@ -183,6 +197,8 @@

## Review Mode
- In code review, lead with findings ordered by severity and include file and line references.
- Review-fix implementation must follow the Review Finding Fixes rules under Change Expectations before applying code changes.
- PR-readiness sign-off must follow the PR Readiness Audits rules under Change Expectations instead of only copying checklist items.
- Verify worklog, documentation, tests, class map, translations, screenshots, security notes, and PR checklist items when they are relevant to the reviewed change.
- Check drift between code and feature drafts in `dev/draft/`; update it only when asked to make changes, otherwise report the drift.
- Review translation coverage with `bin/lint <changed translation paths...>` when user-facing copy changed.
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Studio

> **Version**: 0.2.4
> **Version**: 0.2.5
> **Status**: Active development
> **Updated**: 2026-06-14
> **Updated**: 2026-06-17
> **Owner**: Dominik Letica
> **Purpose:** A Symfony-based CMS foundation for structured, extensible project websites.

Expand Down
26 changes: 13 additions & 13 deletions composer.lock

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

20 changes: 20 additions & 0 deletions config/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,10 @@ services:
arguments:
$sessionFactory: '@session.factory'

App\Command\RenderRouteCommand:
arguments:
$environment: '%kernel.environment%'

App\Setup\SetupRedirectSubscriber:
arguments:
$projectDir: '%kernel.project_dir%'
Expand Down Expand Up @@ -260,6 +264,20 @@ services:
arguments:
$providers: !tagged_iterator { tag: system.acl_group_reference_provider }

App\Security\RateLimit\RateLimitLimiterFactory:
arguments:
$cachePool: '@cache.rate_limiter'
$lockFactory: '@lock.factory'

App\Security\RateLimit\RateLimitRequestSubscriber:
arguments:
$environment: '%kernel.environment%'
$projectDir: '%kernel.project_dir%'

App\Security\RateLimit\RateLimitAuthenticationSubscriber:
arguments:
$environment: '%kernel.environment%'

App\Localization\TranslationLanguageCatalog:
arguments:
$projectDir: '%kernel.project_dir%'
Expand Down Expand Up @@ -552,6 +570,8 @@ services:

App\View\Http\HttpErrorRenderer:
arguments:
$projectDir: '%kernel.project_dir%'
$environment: '%kernel.environment%'
$debug: '%kernel.debug%'

App\View\Http\HttpErrorSubscriber:
Expand Down
Loading