diff --git a/.claude/commands/release-integration-test.md b/.claude/commands/release-integration-test.md
index 39c33d97..e46e060a 100644
--- a/.claude/commands/release-integration-test.md
+++ b/.claude/commands/release-integration-test.md
@@ -3,7 +3,7 @@ description: Pre-release integration test — publish the library locally and ru
argument-hint: "[demo-repo-path] [version] (both optional)"
---
-Execute the release integration test defined in `RELEASE-TESTING.md` (in this framework repo).
+Execute the release integration test defined in `docs/RELEASE-TESTING.md` (in this framework repo).
Read that runbook first and follow it exactly — it is the source of truth for the steps,
commands, and the local docker-compose gotcha.
diff --git a/.gitignore b/.gitignore
index 7f6e3652..f7128328 100644
--- a/.gitignore
+++ b/.gitignore
@@ -148,3 +148,7 @@ application-local.yml
# Superpowers generated artifacts
docs/superpowers/
+
+# Local dev artifacts
+logs/
+.idea/
diff --git a/.hintrc b/.hintrc
deleted file mode 100644
index aa8de6b4..00000000
--- a/.hintrc
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "extends": [
- "development"
- ]
-}
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 13566b81..00000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/.name b/.idea/.name
deleted file mode 100644
index b2193601..00000000
--- a/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-user
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
deleted file mode 100644
index 28821700..00000000
--- a/.idea/compiler.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
deleted file mode 100644
index d80b5350..00000000
--- a/.idea/dataSources.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- h2.unified
- true
- org.h2.Driver
- jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
-
-
-
-
-
- $ProjectFileDir$
-
-
-
\ No newline at end of file
diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml
deleted file mode 100644
index 8d2fd498..00000000
--- a/.idea/dbnavigator.xml
+++ /dev/null
@@ -1,529 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
deleted file mode 100644
index ce1c62c7..00000000
--- a/.idea/gradle.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
deleted file mode 100644
index fdc392fe..00000000
--- a/.idea/jarRepositories.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index ecc79d54..00000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index a12d40bb..00000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules/user.main.iml b/.idea/modules/user.main.iml
deleted file mode 100644
index afc1871c..00000000
--- a/.idea/modules/user.main.iml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
deleted file mode 100644
index 2b63946d..00000000
--- a/.idea/uiDesigner.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 35eb1ddf..00000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/CLAUDE.md b/CLAUDE.md
index 5f7a7ec7..1317016f 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -115,7 +115,7 @@ com.digitalsanctuary.spring.user
- `HtmxAwareAuthenticationEntryPoint` - Returns 401 JSON for HTMX requests instead of 302 redirect on session expiry
**Extension Points:**
-- `BaseUserProfile` - Extend for custom user data (see PROFILE.md)
+- `BaseUserProfile` - Extend for custom user data (see docs/PROFILE.md)
- `UserProfileService` - Interface for profile management
- `BaseSessionProfile` - Session-scoped profile access
- `UserPreDeleteEvent` - Listen for user deletion to clean up related data
@@ -195,9 +195,9 @@ Integration tests use `TestApplication` (in `test.app` package) as their Spring
## Related Documentation
-- `TESTING.md` - Comprehensive testing guide with patterns and troubleshooting
-- `PROFILE.md` - User profile extension framework
-- `REGISTRATION-GUARD.md` - Registration Guard SPI for pre-registration hooks
+- `docs/TESTING.md` - Comprehensive testing guide with patterns and troubleshooting
+- `docs/PROFILE.md` - User profile extension framework
+- `docs/REGISTRATION-GUARD.md` - Registration Guard SPI for pre-registration hooks
- `CONFIG.md` - Configuration reference
- `MIGRATION.md` - Version migration guide
- `CONTRIBUTING.md` - Contributor guidelines (fork/branch/PR workflow)
diff --git a/README.md b/README.md
index ae5e7994..4ce5a201 100644
--- a/README.md
+++ b/README.md
@@ -469,7 +469,7 @@ user:
### Next Steps
- Read the [Configuration Guide](CONFIG.md) for advanced settings
-- See [Extension Examples](PROFILE.md) for custom user profiles
+- See [Extension Examples](docs/PROFILE.md) for custom user profiles
- Check out the [Demo Application](https://github.com/devondragon/SpringUserFrameworkDemoApp) for a complete example
## Configuration
@@ -945,7 +945,7 @@ public class CustomUserProfileService implements UserProfileService