Skip to content

Latest commit

 

History

History
executable file
·
72 lines (59 loc) · 3.76 KB

README.md

File metadata and controls

executable file
·
72 lines (59 loc) · 3.76 KB

AetherCode documentation

This documentation records both the delivered foundation and the evidence required before it may be promoted. Architecture and migration assets are not proof of a live HA deployment, safe Judge0 execution, or the required load profile. The current status is maintained in roadmap.md.

Start here

Operational documentation

Soft Delete Architecture

Platform-wide soft delete ensures data safety and compliance:

  • ADR-0013: Soft delete architecture decision record
  • Template: docs/templates/soft-delete-migration.sql for adding to services
  • Shared utilities: backend/libs/pkg/database/softdelete.go provides GORM scopes
  • Authorization: Only SuperAdmin can hard delete via security-definer function

All services implement soft delete for tenant-scoped entities.

Current implementation boundary

The repository contains paired service migrations, a local role/database bootstrap, a production HA chart that is render-gated on certificates and India-resident backup configuration, and implemented backend APIs for identity, tenant/user, question-bank, assessment, submission, SEB, notification, and analytics workflows. Gateway is a fixed-upstream edge with per-request identity verification and configurable fail-closed SEB enforcement. Authorization grant projections have durable, manifest-verified resync recovery and deny access while they are unavailable.

The repository does not claim a live HA deployment, a real KMS/object-store integration, an external notification provider, encrypted analytics export storage, a platform-side Judge admission adapter, or a safe Judge0 engine dispatcher. Submission does contain a receive-only completion bridge: it pulls leased wrapper results over mTLS, persists them idempotently with a dedicated database role, publishes judge.completed.v1, and ACKs only after commit. Those boundaries are external integration or release-gate work, not placeholders that may be bypassed locally. The candidate frontend is also intentionally untouched.

Judge wrapper persistence is isolated from the upstream engine: it uses a separate PostgreSQL HA control plane and RabbitMQ quorum cluster. Judge0's upstream PostgreSQL and Redis are engine-internal, opaque to the wrapper, and remain disabled until the compatibility gate is approved.