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.3
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.4
Choose a head ref
  • 7 commits
  • 138 files changed
  • 3 contributors

Commits on Mar 31, 2026

  1. feat: embed MkDocs build output in React web dashboard at /docs (#948)

    ## Summary
    
    - Add nginx location block to serve MkDocs static HTML at `/docs/` with
    docs-scoped CSP (permits `blob:` for Material search workers)
    - Add docs-builder stage to web Dockerfile (Python 3.14.3-slim + uv
    0.10.9 + Zensical), with pre-compression matching the React builder
    pattern
    - Customize MkDocs Material theme to match dashboard dark design system
    via `docs/overrides/extra.css`
    - Add "Docs" nav item in sidebar (BookOpen icon, between Providers and
    Settings) and command palette entry
    - Add `external` prop to `SidebarNavItem` for plain `<a href>` rendering
    (bypasses React Router)
    - Update design spec, CLAUDE.md, and web/CLAUDE.md to reflect the new
    docs embedding architecture
    
    ## Test plan
    
    - [ ] `npm --prefix web run lint` -- zero warnings
    - [ ] `npm --prefix web run type-check` -- zero errors
    - [ ] `npm --prefix web run test` -- 2282 tests pass (4 new for
    `external` prop)
    - [ ] `docker compose -f docker/compose.yml build web` -- docs-builder
    stage completes
    - [ ] `curl http://localhost:3000/docs/` -- returns MkDocs HTML with
    dark theme
    - [ ] `curl http://localhost:3000/docs/nonexistent` -- returns 404 (not
    React SPA)
    - [ ] Sidebar shows "Docs" item; clicking performs full page navigation
    to `/docs/`
    - [ ] Cmd+K palette shows "Documentation" command
    
    ## Review coverage
    
    Pre-reviewed by 6 agents (docs-consistency, frontend-reviewer,
    design-token-audit, infra-reviewer, security-reviewer,
    issue-resolution-verifier). 11 findings addressed, 0 skipped.
    
    Closes #295
    
    🤖 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
    f229fc2 View commit details
    Browse the repository at this point in the history
  2. docs: write user guides and tutorials (#949)

    ## Summary
    
    - Add 9 comprehensive user-facing guides under `docs/guides/` (2,817
    lines total) covering the full user journey from quickstart to
    production deployment
    - Add guides landing page with MkDocs Material grid cards
    - Update `mkdocs.yml` nav with new Guides section (10 entries)
    - Add cross-references from `docs/index.md`, `docs/user_guide.md`, and
    `docs/getting_started.md`
    
    ### Guides written
    
    | Guide | Description |
    |-------|-------------|
    | Quickstart Tutorial | 5-minute first synthetic org with Mermaid
    diagrams |
    | Company Configuration | Complete YAML config reference for all
    RootConfig fields |
    | Agent Roles & Hierarchy | Seniority, personality presets, departments,
    reporting lines |
    | Budget & Cost Control | Alerts, auto-downgrade, cost tracking,
    scenario walkthrough |
    | Security & Trust Policies | 4 trust strategies (tabbed), autonomy
    levels, custom policies |
    | Tool Integration (MCP) | stdio/HTTP transports, tool filtering,
    caching |
    | Deployment (Docker) | CIS hardening, env vars, image verification,
    troubleshooting |
    | Memory Configuration | Retrieval pipeline tuning, org memory,
    dual-mode archival |
    | Contributing | Workflow, commits, testing, PR process, CLA |
    
    ## Test plan
    
    - [x] `uv run zensical build` exits 0 (pre-existing mkdocstrings errors
    unrelated to guides)
    - [x] `mkdocs.yml` nav validates correctly (10 guide entries in Guides
    section)
    - [x] All 10 guide files exist under `docs/guides/`
    - [x] Pre-commit hooks pass (trailing-whitespace, end-of-file,
    check-yaml, no-em-dashes, gitleaks)
    - [ ] Visual check: `uv run zensical serve` -- verify Guides tab
    renders, grid cards link correctly, Mermaid diagrams display, tabbed
    content works
    
    Closes #293
    
    🤖 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
    1367225 View commit details
    Browse the repository at this point in the history
  3. feat: support per-agent memory retention overrides (#209) (#951)

    ## Summary
    
    - Add `AgentRetentionRule` model and `MemoryConfig.retention_overrides`
    field for per-agent, per-category retention overrides
    - Extend `RetentionEnforcer` with `_resolve_categories()` implementing a
    5-level resolution chain: agent per-category > company per-category >
    agent global default > company global default > keep forever
    - Pass through agent override params in
    `MemoryConsolidationService.cleanup_retention()` and `run_maintenance()`
    - Add `RETENTION_AGENT_OVERRIDE_APPLIED` structured log event
    - Update design spec and `RetentionConfig` docstring to document
    override mechanism
    
    ## Test plan
    
    - [ ] 30 new unit tests across 3 test files covering:
      - `AgentRetentionRule` model validation (frozen, ge=1, invalid values)
    - `MemoryConfig.retention_overrides` (defaults, duplicates, NONE type
    guard, coexistence with `retention_days`)
    - `_resolve_categories` resolution chain (all 5 priority levels
    individually + combined)
    - `cleanup_expired` with agent overrides (cutoff correctness, category
    expansion, log event)
      - Service pass-through (cleanup_retention, run_maintenance forwarding)
      - `AgentRetentionRule`/`RetentionRule` field parity test
    - [ ] Full test suite: 11358 passed, ruff clean, mypy clean
    - [ ] Pre-reviewed by 6 agents, 8 findings addressed (including critical
    resolution priority bug fix)
    
    Closes #209
    
    🤖 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
    020c610 View commit details
    Browse the repository at this point in the history
  4. feat: personality preset discovery API and user-defined preset CRUD (#…

    …952)
    
    ## Summary
    
    - Add REST endpoints for personality preset discovery and CRUD under
    `/api/v1/personalities/`
    - Discovery (Issue #755): `GET /presets` (paginated list), `GET
    /presets/{name}` (full detail), `GET /schema` (PersonalityConfig JSON
    schema) -- all with `source: "builtin" | "custom"` tagging
    - CRUD (Issue #756): `POST /presets` (create with name collision
    prevention), `PUT /presets/{name}` (update), `DELETE /presets/{name}`
    (builtins protected) -- persisted via SQLite
    - Full layered architecture: `PersonalityPresetRepository` protocol +
    SQLite implementation, `PersonalityPresetService` merging builtin +
    custom sources, DTOs, controller with guards
    
    ## Test plan
    
    - [ ] 63 unit tests pass: repository CRUD + QueryError propagation,
    service layer (list/get/create/update/delete + error paths),
    property-based round-trip + idempotency, controller (all 6 endpoints +
    auth + validation)
    - [ ] `uv run ruff check src/ tests/` -- clean
    - [ ] `uv run mypy src/ tests/` -- clean (1269 files, no issues)
    - [ ] Full unit suite: 11,212 passed (pre-push hook verified)
    - [ ] Pre-reviewed by 4 agents (code-reviewer, persistence-reviewer,
    test-analyzer, conventions-checker), 14 findings addressed
    
    Closes #755
    Closes #756
    
    🤖 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
    497848a View commit details
    Browse the repository at this point in the history
  5. feat: support multi-provider model resolution with budget-based selec…

    …tion (#953)
    
    ## Summary
    
    - Change `ModelResolver` index from `dict[str, ResolvedModel]` to
    `dict[str, tuple[ResolvedModel, ...]]` so multiple providers can
    register the same model ID/alias without collision errors
    - Add `ModelCandidateSelector` protocol with `QuotaAwareSelector`
    (default, prefers providers with available quota then cheapest) and
    `CheapestSelector` implementations
    - Add `QuotaTracker.peek_quota_available()` synchronous method for
    lockless quota state snapshots used by the selector
    - Wire selector through `ModelRouter` and
    `ProviderManagementService._build_router()`
    - Harden error handling: empty-candidate guards, selector exception
    wrapping in `resolve()`/`resolve_safe()`, constructor validation,
    deterministic tie-breaking
    
    ## Test plan
    
    - [ ] `uv run python -m pytest tests/unit/providers/routing/ -n auto -v`
    -- all routing tests pass (selector, multi-provider resolver,
    quota-aware integration, strategies, router)
    - [ ] `uv run python -m pytest tests/unit/budget/test_quota_tracker.py
    -n auto -v` -- peek_quota_available tests pass (fresh, exhausted,
    multi-window, rotation, multiple providers)
    - [ ] `uv run python -m pytest tests/unit/budget/ -n auto` -- all budget
    tests pass (enforcer, optimizer use updated resolver index type)
    - [ ] `uv run ruff check src/ tests/` -- lint clean
    - [ ] `uv run mypy src/ tests/` -- type-check clean
    - [ ] Verify: two providers with same model ID no longer raises
    `ModelResolutionError`
    - [ ] Verify: `resolve()` returns cheapest provider by default (no quota
    data)
    - [ ] Verify: with quota snapshot, `resolve()` prefers provider with
    available quota
    
    ## Review coverage
    
    Pre-reviewed by 7 agents (code-reviewer, type-design-analyzer,
    silent-failure-hunter, test-analyzer, conventions-enforcer,
    issue-verifier, docs-consistency). 10 findings addressed in second
    commit.
    
    Closes #887
    
    ---------
    
    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
    146b782 View commit details
    Browse the repository at this point in the history

Commits on Apr 1, 2026

  1. feat: artifact and project management UI in web dashboard (#954)

    ## Summary
    
    - Add full browse/view/manage UI for artifacts and projects in the web
    dashboard
    - Backend: 2 new WS channels (artifacts, projects), 5 event types,
    best-effort publish on create/delete/upload mutations
    - Frontend: typed API endpoints, Zustand stores with polling + WebSocket
    bindings, 4 data hooks, route constants, sidebar navigation
    - 3 new shared UI components: MetadataGrid (detail page metadata),
    ProjectStatusBadge (semantic status colors), ContentTypeBadge (MIME type
    badge) -- all with Storybook stories
    - Artifacts: list page with search/type/agent/task filters, detail page
    with metadata grid, inline content preview (text via CodeMirror, images
    via blob URL), download, and delete with confirmation
    - Projects: list page with search/status filter and create button,
    create drawer (6 fields including TagInput for team), detail page with
    header, team section (Avatar grid with lead badge), and linked task list
    - Tests: 2 store tests, 4 page tests, 2 MSW handler files, test
    factories
    - Documentation: updated page-structure.md, brand-and-ux.md,
    web/CLAUDE.md with new pages, components, routes, WS channels
    
    ## Test plan
    
    - [x] `uv run ruff check src/ tests/` -- all passed
    - [x] `uv run mypy src/ tests/` -- all passed
    - [x] `npm --prefix web run type-check` -- all passed
    - [x] `npm --prefix web run lint` -- zero warnings
    - [x] `npm --prefix web run test` -- 194 files, 2326 tests passed
    - [x] `npm --prefix web run build` -- production build succeeds
    - [ ] Visual verification at http://localhost:3000: list pages load with
    skeletons, filters work, detail views render, create form submits,
    download triggers, delete confirms
    
    Pre-reviewed by 8 agents (code-reviewer, frontend-reviewer,
    api-contract-drift, silent-failure-hunter, issue-resolution-verifier,
    design-token-audit, test-quality-reviewer, docs-consistency), 17
    findings addressed.
    
    Closes #946
    
    🤖 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 Apr 1, 2026
    Configuration menu
    Copy the full SHA
    00a0430 View commit details
    Browse the repository at this point in the history
  2. chore(main): release 0.5.4 (#950)

    🤖 I have created a release *beep* *boop*
    ---
    
    
    ##
    [0.5.4](v0.5.3...v0.5.4)
    (2026-04-01)
    
    
    ### Features
    
    * artifact and project management UI in web dashboard
    ([#954](#954))
    ([00a0430](00a0430))
    * embed MkDocs build output in React web dashboard at /docs
    ([#948](#948))
    ([f229fc2](f229fc2))
    * personality preset discovery API and user-defined preset CRUD
    ([#952](#952))
    ([497848a](497848a))
    * support multi-provider model resolution with budget-based selection
    ([#953](#953))
    ([146b782](146b782))
    * support per-agent memory retention overrides
    ([#209](#209))
    ([#951](#951))
    ([020c610](020c610))
    
    
    ### Documentation
    
    * write user guides and tutorials
    ([#949](#949))
    ([1367225](1367225))
    
    ---
    This PR was generated with [Release
    Please](https://github.com/googleapis/release-please). See
    [documentation](https://github.com/googleapis/release-please#release-please).
    
    ---------
    
    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    Aureliolo and github-actions[bot] authored Apr 1, 2026
    Configuration menu
    Copy the full SHA
    a755ec3 View commit details
    Browse the repository at this point in the history
Loading