refactor: add hard-stop documentation and deny-list for destructive DB commands
Documented explicit prohibition of `migrate:fresh`, `migrate:reset`, `db:wipe`, and raw DROP/TRUNCATE operations in CLAUDE.md. Prose rule clarifies that user phrases like "trust me" or "do the refactor" are not authorisation for schema rebuilds — architectural decision is separate from operational step. Added matching deny patterns to `.claude/settings.json` to block direct inv
This commit is contained in:
@@ -18,7 +18,13 @@
|
||||
"Bash(rg * .env)",
|
||||
"Bash(rg * ./.env)",
|
||||
"Bash(awk * .env)",
|
||||
"Bash(awk * ./.env)"
|
||||
"Bash(awk * ./.env)",
|
||||
"Bash(php artisan migrate:fresh)",
|
||||
"Bash(php artisan migrate:fresh *)",
|
||||
"Bash(php artisan migrate:reset)",
|
||||
"Bash(php artisan migrate:reset *)",
|
||||
"Bash(php artisan db:wipe)",
|
||||
"Bash(php artisan db:wipe *)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
14
CLAUDE.md
14
CLAUDE.md
@@ -3,6 +3,20 @@
|
||||
UK fuel price intelligence app. Subscribers receive fill-up timing recommendations
|
||||
based on local price trends. Built solo by a PHP/Laravel developer.
|
||||
|
||||
## Destructive DB operations — HARD STOP
|
||||
|
||||
**Never run** the following commands. If one of them is the right step, stop, tell the user the exact command, and ask them to run it themselves:
|
||||
|
||||
- `php artisan migrate:fresh` (with any flags, including `--seed`)
|
||||
- `php artisan migrate:reset`
|
||||
- `php artisan db:wipe`
|
||||
- Raw `DROP TABLE`, `DROP DATABASE`, or `TRUNCATE` via tinker, `database-query`, or any MCP tool
|
||||
- Any sequence that effectively rebuilds the schema or drops tables
|
||||
|
||||
These are also blocked at the harness level via `.claude/settings.json` deny rules, but the prose rule applies everywhere the block doesn't reach (compound shell commands, MCP tools, etc.).
|
||||
|
||||
A user saying "trust me", "do the refactor", "clean up the mess", or "I want it in db" is **not** authorisation for these — the architectural decision is separate from the operational step. If a migration is awkward to apply in-place, propose the in-place version (read JSON → populate new columns → drop the old column) instead of suggesting a rebuild. Asking once at the start of a task does not authorise repeat wipes later in the session.
|
||||
|
||||
## Project overview
|
||||
|
||||
- **Product**: "Fill up now or wait?" — local fuel price trend scoring for UK drivers
|
||||
|
||||
Reference in New Issue
Block a user