feat: complete Epic 0 — foundation migration & infrastructure setup

Stories 0.2-0.5: rename folders→declarations (backend+frontend), configure
Redis for cache/queue/sessions, add foundation database migrations
(permissions, archived_at), replace DeclarationStatus enum with architecture
lifecycle values, create DeclarationObserver for status transition validation
and auto-archive, fix controller status transitions to respect observer rules.

93 tests pass (240 assertions).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 18:25:32 +00:00
parent d380df4074
commit fd43a6f429
105 changed files with 3899 additions and 1558 deletions

View File

@@ -47,4 +47,4 @@ test('correct password must be provided to update password', function () {
$response
->assertSessionHasErrors('current_password')
->assertRedirect(route('user-password.edit'));
});
});

View File

@@ -64,7 +64,7 @@ test('user can delete their account', function () {
->assertRedirect(route('home'));
$this->assertGuest();
expect($user->fresh())->toBeNull();
expect($user->fresh()->deleted_at)->not->toBeNull();
});
test('correct password must be provided to delete account', function () {
@@ -82,4 +82,4 @@ test('correct password must be provided to delete account', function () {
->assertRedirect(route('profile.edit'));
expect($user->fresh())->not->toBeNull();
});
});

View File

@@ -76,4 +76,4 @@ test('two factor settings page returns forbidden response when two factor is dis
->withSession(['auth.password_confirmed_at' => time()])
->get(route('two-factor.show'))
->assertForbidden();
});
});