Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: Aureliolo/synthorg
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.5.2
Choose a base ref
...
head repository: Aureliolo/synthorg
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.5.3
Choose a head ref
  • 4 commits
  • 200 files changed
  • 2 contributors

Commits on Mar 31, 2026

  1. chore: add allow_inf_nan=False to all remaining ConfigDict declaratio…

    …ns (#943)
    
    ## Summary
    
    - Add `allow_inf_nan=False` to all 260 remaining `ConfigDict`
    declarations across 92 files in `src/synthorg/`
    - All 421 `ConfigDict` declarations in the codebase now consistently
    reject `NaN`/`Inf` in numeric fields at validation time
    - Defensive application to models without numeric fields guards against
    future float field additions
    
    ## Details
    
    PR #911 established the `allow_inf_nan=False` convention and applied it
    to `Task` and `AcceptanceCriterion`. This PR completes the rollout to
    all remaining models across: api/, budget/, communication/, config/,
    core/, engine/, hr/, memory/ (already done), observability/,
    persistence/, providers/, security/, settings/, templates/, and tools/.
    
    Four patterns were updated:
    - `ConfigDict(frozen=True)` (240 declarations)
    - `ConfigDict(frozen=True, extra="forbid")` (18 declarations)
    - `ConfigDict(frozen=True, arbitrary_types_allowed=True)` (1
    declaration)
    - `ConfigDict(frozen=True, populate_by_name=True)` (1 declaration)
    
    ## Test plan
    
    - [x] `uv run ruff check src/ tests/` -- all checks passed
    - [x] `uv run ruff format src/ tests/` -- all files already formatted
    - [x] `uv run mypy src/ tests/` -- no issues in 1,250 files
    - [x] `uv run python -m pytest tests/ -n auto` -- 11,259 passed, 9
    skipped
    - [x] Pre-commit and pre-push hooks passed
    
    Closes #913
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    ---------
    
    Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    Aureliolo and claude authored Mar 31, 2026
    Configuration menu
    Copy the full SHA
    cd7bbca View commit details
    Browse the repository at this point in the history
  2. chore: audit full web dashboard for hardcoded design token violations (

    …#944)
    
    ## Summary
    
    - Audit all 49 `.tsx`/`.ts` files in `web/src/` for hardcoded design
    token violations across all 5 theme axes (color, density, typography,
    animation, sidebar)
    - Add `tweenExitFast` motion preset to `lib/motion.ts` for exit
    animations (easeIn acceleration)
    - Replace hardcoded Framer Motion `transition: { duration: N }` in 6
    component files with presets from `@/lib/motion`
    - Replace hardcoded `px-4 py-2` with density-aware `p-card` on ~20
    alert/error/warning banners
    - Replace hardcoded `p-3`/`p-4` with `p-card` on ~10 card containers
    (`bg-card` + border)
    - Replace hardcoded `space-y-6` with `space-y-section-gap` on ~27
    page-level containers and skeletons
    - Add `check_hardcoded_framer_transitions` to
    `scripts/check_web_design_system.py` PostToolUse hook
    - Create `.claude/agents/design-token-audit.md` for ongoing theme token
    enforcement
    - Integrate `design-token-audit` agent into `/pre-pr-review` and
    `/aurelio-review-pr` skill rosters (triggers on any `web_src` change)
    - Add design token items 10-13 to frontend-reviewer prompt in both
    skills
    - Update `web/CLAUDE.md` Enforcement section with new Framer Motion
    check
    
    ## Test plan
    
    - [x] `npm --prefix web run type-check` -- clean
    - [x] `npm --prefix web run lint` -- zero warnings
    - [x] `npm --prefix web run test` -- 2278 tests pass
    - [x] `npm --prefix web run storybook:build` -- builds clean
    - [x] Pre-reviewed by 4 agents (docs-consistency, frontend-reviewer,
    design-token-audit, issue-resolution-verifier), 3 findings addressed
    - [ ] Manual: switch density (dense/balanced/medium/sparse) in
    ThemeToggle -- all sections, cards, banners breathe uniformly
    - [ ] Manual: switch animation preset -- page transitions and drawer
    open/close respond
    
    Closes #938
    
    Generated with [Claude Code](https://claude.com/claude-code)
    
    ---------
    
    Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    Aureliolo and claude authored Mar 31, 2026
    Configuration menu
    Copy the full SHA
    a1322cd View commit details
    Browse the repository at this point in the history
  3. feat: implement artifact and project persistence (#947)

    ## Summary
    
    - Add persistence layer for artifacts and projects: repository
    protocols, SQLite implementations, schema tables, and observability
    events
    - Implement pluggable `ArtifactStorageBackend` protocol with
    `FileSystemArtifactStorage` (stores content as files under
    `<data_dir>/artifacts/<id>`, 50 MB per artifact / 1 GB total limits)
    - Flesh out `ArtifactController` and `ProjectController` with full CRUD
    endpoints (list/get/create + content upload/download for artifacts)
    - Extend `Artifact` model with `content_type` and `size_bytes` fields
    for content storage metadata
    - Wire artifact storage into `AppState` and `create_app` (auto-wired
    from `SYNTHORG_DB_PATH` parent directory)
    - Add `CreateArtifactRequest` and `CreateProjectRequest` DTOs with
    validation
    - Update design docs: memory.md entities table, page-structure.md stub
    references, operations.md endpoint descriptions, CLAUDE.md package
    structure
    
    ## Review coverage
    
    Pre-reviewed by 6 agents (docs-consistency, conventions-enforcer,
    persistence-reviewer, issue-resolution-verifier, silent-failure-hunter,
    type-design-analyzer). 15 findings addressed in a dedicated fix commit:
    - Path traversal prevention in `FileSystemArtifactStorage` (validates
    artifact_id stays within bounds)
    - TOCTOU race prevention via `asyncio.Lock` on storage capacity checks
    - Two-phase write rollback (cleanup stored content if metadata save
    fails)
    - Invalid enum filter values return 400 (not 500)
    - UTC normalization for artifact timestamps
    - Deterministic ordering on list queries
    - Broader error handling in deserialization and file operations
    - Re-exported new error types from `persistence/__init__.py`
    
    ## Test plan
    
    - [ ] `uv run python -m pytest
    tests/unit/persistence/sqlite/test_artifact_repo.py -n auto` -- 14 tests
    (CRUD, filters, roundtrips)
    - [ ] `uv run python -m pytest
    tests/unit/persistence/sqlite/test_project_repo.py -n auto` -- 12 tests
    (CRUD, filters, JSON tuple roundtrips)
    - [ ] `uv run python -m pytest
    tests/unit/persistence/test_filesystem_artifact_storage.py -n auto` --
    18 tests (store/retrieve/delete, size limits, path traversal)
    - [ ] `uv run python -m pytest
    tests/unit/api/controllers/test_artifacts.py
    tests/unit/api/controllers/test_projects.py -n auto` -- 13 tests (API
    integration)
    - [ ] `uv run python -m pytest tests/unit/persistence/test_protocol.py
    -n auto` -- protocol compliance
    - [ ] `uv run python -m pytest tests/ -n auto` -- full suite passes
    (11,317 tests)
    - [ ] `uv run mypy src/ tests/` -- zero issues
    - [ ] `uv run ruff check src/ tests/` -- zero issues
    
    Closes #612
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    ---------
    
    Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    Aureliolo and claude authored Mar 31, 2026
    Configuration menu
    Copy the full SHA
    6dea87a View commit details
    Browse the repository at this point in the history
  4. chore(main): release 0.5.3 (#945)

    🤖 I have created a release *beep* *boop*
    ---
    
    
    ##
    [0.5.3](v0.5.2...v0.5.3)
    (2026-03-31)
    
    
    ### Features
    
    * implement artifact and project persistence
    ([#947](#947))
    ([6dea87a](6dea87a))
    
    
    ### Maintenance
    
    * add allow_inf_nan=False to all remaining ConfigDict declarations
    ([#943](#943))
    ([cd7bbca](cd7bbca))
    * audit full web dashboard for hardcoded design token violations
    ([#944](#944))
    ([a1322cd](a1322cd))
    
    ---
    This PR was generated with [Release
    Please](https://github.com/googleapis/release-please). See
    [documentation](https://github.com/googleapis/release-please#release-please).
    Aureliolo authored Mar 31, 2026
    Configuration menu
    Copy the full SHA
    7cd1d23 View commit details
    Browse the repository at this point in the history
Loading