All 6 tables are read/written by runtime code (NotebookService and NotebookVersioning for notebook/cell/version/share/snapshot, ExecutionAuditor for execution). All are user content or logs, so none is seeded (no optional Welcome notebook either).
notebookVersionRetention=100: enforced by NotebookVersioning.prune on save; covered by NotebookServiceTest (retention keeps the newest 3).
Execution retention did not exist (DESIGN.md said auditRetentionDays, "the host prunes"; no code). Fixed: new auditRetentionDays config, default null (keep forever, so no behavior change on deploy). When set, old non-RUNNING audit rows are deleted at most once an hour as a run is audited.
Home already has empty states for no notebooks and no runs.
Changes
help/sql-workbench.yaml + SqlWorkbenchHelp (STAND-IN core#1198), applied after the app and tables are in the instance; never overrides host help.
## Audit
- All 6 tables are read/written by runtime code (NotebookService and NotebookVersioning for notebook/cell/version/share/snapshot, ExecutionAuditor for execution). All are user content or logs, so none is seeded (no optional Welcome notebook either).
- `notebookVersionRetention=100`: enforced by `NotebookVersioning.prune` on save; covered by `NotebookServiceTest` (retention keeps the newest 3).
- Execution retention did not exist (DESIGN.md said `auditRetentionDays`, "the host prunes"; no code). Fixed: new `auditRetentionDays` config, default null (keep forever, so no behavior change on deploy). When set, old non-RUNNING audit rows are deleted at most once an hour as a run is audited.
- Home already has empty states for no notebooks and no runs.
## Changes
- `help/sql-workbench.yaml` + `SqlWorkbenchHelp` (STAND-IN core#1198), applied after the app and tables are in the instance; never overrides host help.
- `auditRetentionDays` + `ExecutionAuditor.pruneIfDue` / `pruneOlderThan`.
- Docs: README, UPGRADE, CHANGELOG, DESIGN. `docs/ddl/postgres.sql` and the H2 schema untouched (PR #23).
## Tests
`SqlWorkbenchTablesGuardrailTest`, `SqlExecutionEngineTest.testAuditRetentionPrunesOldRows`, `testAuditRetentionValidation`. `CI=true ./mvnw verify` green (incl. Postgres integration).
## Not done
None.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Audit
notebookVersionRetention=100: enforced byNotebookVersioning.pruneon save; covered byNotebookServiceTest(retention keeps the newest 3).auditRetentionDays, "the host prunes"; no code). Fixed: newauditRetentionDaysconfig, default null (keep forever, so no behavior change on deploy). When set, old non-RUNNING audit rows are deleted at most once an hour as a run is audited.Changes
help/sql-workbench.yaml+SqlWorkbenchHelp(STAND-IN core#1198), applied after the app and tables are in the instance; never overrides host help.auditRetentionDays+ExecutionAuditor.pruneIfDue/pruneOlderThan.docs/ddl/postgres.sqland the H2 schema untouched (PR #23).Tests
SqlWorkbenchTablesGuardrailTest,SqlExecutionEngineTest.testAuditRetentionPrunesOldRows,testAuditRetentionValidation.CI=true ./mvnw verifygreen (incl. Postgres integration).Not done
None.
🤖 Generated with Claude Code