Skip to content

Phase 1: Runtime core - #4

Merged
manavgup merged 1 commit into
mainfrom
phase-1/runtime-core
Mar 30, 2026
Merged

Phase 1: Runtime core#4
manavgup merged 1 commit into
mainfrom
phase-1/runtime-core

Conversation

@manavgup

Copy link
Copy Markdown
Owner

Summary

Complete runtime core for FastStack v1:

  • Entity hierarchy — Entity, AuditedEntity, SoftDeleteEntity, FullAuditedEntity (UUID PKs, audit fields, soft-delete)
  • Repository Protocol — async, runtime_checkable + SqlAlchemyRepository with soft-delete awareness
  • CrudService — 6 async lifecycle hooks (before/after create, update, delete)
  • Exception hierarchy — 8 domain exceptions + RFC 7807 global handlers
  • Database session — async DatabaseConfig, engine, session factory, get_db dependency
  • Permissions — @require_permission, @require_role decorators (v1 stubs)

Test coverage

69 tests covering:

  • Entity base class hierarchy and diamond inheritance MRO
  • Repository Protocol conformance via structural typing
  • SqlAlchemyRepository async CRUD, soft-delete, hard-delete
  • CrudService lifecycle hooks (ordering, data transformation, deletion guards)
  • RFC 7807 error responses for all 8 exception types + unknown subclass fallback

How to test

make check                    # lint + typecheck + 69 tests pass
make test-verbose             # see all test names

Part of

Phase 1 in #1

🤖 Generated with Claude Code

Runtime core for FastStack v1:

- base/entity.py: Entity hierarchy (Entity, AuditedEntity, SoftDeleteEntity,
  FullAuditedEntity) with UUID PKs, audit fields, soft-delete support
- base/repository.py: Repository Protocol (async, runtime_checkable) +
  SqlAlchemyRepository implementation with soft-delete awareness
- base/service.py: CrudService with 6 async lifecycle hooks
  (before/after create, update, delete)
- base/permissions.py: @require_permission, @require_role decorators
- exceptions/domain.py: DomainError hierarchy (8 exception classes)
- exceptions/handlers.py: RFC 7807 global exception handlers
- database/session.py: Async DatabaseConfig, engine, session factory, get_db

69 tests covering:
- Entity base class hierarchy and MRO
- Repository Protocol conformance (structural typing)
- SqlAlchemyRepository CRUD, soft-delete, hard-delete
- CrudService lifecycle hooks (ordering, transformation, guarding)
- RFC 7807 error responses for all 8 exception types

Part of Phase 1 in #1

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@manavgup
manavgup merged commit 7d709ce into main Mar 30, 2026
5 of 6 checks passed
@manavgup
manavgup deleted the phase-1/runtime-core branch March 30, 2026 18:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant