Commit Graph
77 Commits
Author SHA1 Message Date
Codex cffa60772e feat: complete catalog-driven preprocessing
Publish documentation / publish (push) Successful in 2m12s
2026-09-06 17:49:35 +02:00
Codex 7b1d69a65b feat: complete catalog sensitivity enhancements 2026-09-04 15:11:18 +02:00
Codex 8e778b9edb feat: sample sensitive columns progressively 2026-09-03 10:25:05 +02:00
Codex f114d0065a feat: classify sensitive columns locally 2026-09-03 02:11:13 +02:00
Codex 7b7927bfe5 feat: unify installation model catalog 2026-09-02 18:45:33 +02:00
Codex 4531746038 feat: refine metadata catalog workflows 2026-09-02 11:38:47 +02:00
Codex 076c9742c5 feat: consolidate database management work
Add catalog-owned logical relationships and runtime snapshots, extend the database-management UI and validation coverage, and document the updated operational workflow.

Keep active sensitive-generation status in a tooltip and indicator, and update the layout E2E to follow the history action in its new database-scoped location.
2026-09-01 14:46:55 +02:00
Codex f586152636 fix: close catalog review gaps
Publish documentation / publish (push) Successful in 38s
2026-08-31 16:28:42 +02:00
Codex 9c697dc062 feat: complete catalog fleet management workflow 2026-08-31 15:58:43 +02:00
Codex cb40c09d9a fix: scope and batch sensitive suggestions 2026-08-30 17:12:20 +02:00
Codex 0736983bc5 feat: protect sensitive catalog samples 2026-08-30 12:14:23 +02:00
Codex 376dd5a09d feat: add AI catalog description generation 2026-08-29 16:42:56 +02:00
Codex 58ee9cffe4 feat: add metadata catalog cleanup commands 2026-08-28 00:37:43 +02:00
Codex 79c4c925b5 feat: implement metadata catalog database management 2026-08-27 22:43:54 +02:00
marcopan 30ee9433dc fix(auth): harden unified diagnostic execution 2026-08-17 16:39:54 +02:00
marcopan 3ed00ff086 feat(auth): include authentication in workspace and tht diagnostics 2026-08-17 15:51:16 +02:00
marcopan 94c2cd3709 fix(auth): bind current local registry and CORS 2026-08-17 00:34:58 +02:00
marcopan f99bddcdf0 fix(auth): restore permission boundary safeguards 2026-08-16 18:03:36 +02:00
marcopan 2e0489ce22 feat(auth): centralize ThothII permission enforcement 2026-08-16 17:52:03 +02:00
marcopan 87cefd120c feat: configure workspace runtime secrets through API 2026-08-14 17:30:35 +02:00
marcopan 9db4463a83 refactor: remove workspace publishing and bundles 2026-08-14 16:28:01 +02:00
marcopan 25ec236f1f feat: activate workspaces from the root catalog and bootstrap-only publication 2026-08-11 14:49:46 +02:00
marcopan f102629cee refactor: remove workspace revision state 2026-08-10 20:54:40 +02:00
marcopan 512b0261b1 refactor: make workspace descriptors schema v3 only 2026-08-10 20:21:20 +02:00
marcopan 212c973e3b feat: preserve evidence in workspace artifacts 2026-08-09 20:03:28 +02:00
marcopan 2c4534d968 fix: close internal semantic review gaps 2026-08-08 23:27:58 +02:00
marcopan bd798b1c96 fix: render registry workspaces for harness 2026-08-05 16:03:45 +02:00
marcopan 55926c75f8 fix: harden pi management verification 2026-08-05 01:00:13 +02:00
marcopan d6b4a08a02 feat: expose safe pi management api 2026-08-05 00:31:44 +02:00
marcopan 5b3ce93e31 fix: acknowledge pi maintenance barrier 2026-08-04 19:32:05 +02:00
marcopan 0b9ad7f53f fix: harden pi maintenance lifecycle 2026-08-04 19:09:04 +02:00
marcopan e4fdbed864 fix: harden workspace activation and snapshot retention 2026-08-04 09:25:06 +02:00
marcopan 3b23cf3714 fix: retain snapshots for removed workspaces 2026-08-04 08:52:11 +02:00
marcopan 8b046f9fb2 test: verify portable workspace registry end to end 2026-08-04 08:42:33 +02:00
marcopan 802b564200 fix: harden workspace registry deployment 2026-08-04 07:42:35 +02:00
marcopan f71feecaea feat: deploy portable workspace registry 2026-08-04 07:26:45 +02:00
marcopan 6c09adc05e feat: pin sessions to workspace revisions 2026-08-04 05:18:08 +02:00
marcopan bc39730b58 feat: pin sessions to workspace revisions 2026-08-04 05:13:39 +02:00
marcopan 301db4bd85 feat: pin sessions to workspace revisions 2026-08-04 05:05:20 +02:00
marcopan 90894176b6 feat: pin sessions to workspace revisions 2026-08-04 04:52:06 +02:00
marcopan 2573d87a0e fix: recover workspace publication failures 2026-08-04 01:10:35 +02:00
marcopan f95a18ab0d feat: expose workspace registry API 2026-08-04 01:01:57 +02:00
marcopan 00761ae2ca fix: enforce one Pi runtime per user 2026-07-21 16:13:17 +02:00
marcopan a040c083cc fix: reap finalized runtimes before session start 2026-07-21 16:04:08 +02:00
marcopan 019f6b282e fix: release finalized Pi runtimes 2026-07-21 15:39:34 +02:00
marcopan 801f847ec4 fix: use Pi user auth and handle startup failures 2026-07-21 14:01:47 +02:00
marcopanandClaude Opus 4.6 3b52c8c08c feat: DWH connectivity probe at startup — modal alert within 5s if unreachable
Backend: GET /health/dwh (unauthenticated) calls tht db ping with a 5s
timeout. Frontend: checkDwhHealth() races a 5s timer against the fetch;
on failure a non-dismissable Dialog with Retry appears immediately.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-20 13:59:11 +02:00
marcopanandClaude Fable 5 c4951e2aa5 chore: hygiene pass — ruff clean, docs storage-model truth, replay /me, failSession log
Audit findings 6.1-6.4 + the audit's remediation plan itself
(docs/superpowers/plans/2026-07-20-full-audit-remediation-plan.md).

- ruff: 34 → 0 (unused imports/f-strings auto-fixed; E702 semicolon lines
  split in test files; one unused local dropped). Suite still 819 green.
- CLAUDE.md + PROJECT_STATE.md no longer claim "no database / settings in
  settings.json": the harness selects filesystem OR PostgreSQL session
  storage (repository.py, server mode), and settings flow through harness
  preferences with the JSON file as fallback only.
- tools/replay: stub /me (SPA boot was parsing the SPA's own HTML as JSON)
  and /runtime/prewarm.
- failSession best-effort persistence now logs its failure server-side
  instead of vanishing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 01:55:41 +02:00
marcopanandClaude Fable 5 f772ef9dca fix(backend): robustness pass — spawn leak, timeouts, workspace fail-loud, 409 order, respond guard
Audit findings 4.1-4.6.

- spawnFor: a rejected configure/start no longer leaks a registered runtime
  with a live Pi child (identity-checked teardown + rethrow); every later
  start used to hit "session runtime already active".
- ThtRunner.run: default 60s timeout on every tht child (SIGKILL backstop),
  120s for DWH-touching calls (sql preview/export, search pack); a dropped
  VPN mid-call no longer wedges the HTTP request forever.
- configArg: a NAMED workspace whose yaml is missing now throws instead of
  silently falling back to the default config (operations were silently
  targeting the wrong workspace).
- resume: the finalized/archived 409 is evaluated BEFORE the alreadyActive
  fast-path — the manifest is the truth even with a lingering runtime.
- ollamaEnsure: exit-0 with non-JSON stdout is a failed check, not ok:true.
- SessionBridge.respond: only the response matching the pending descriptor
  is forwarded to Pi; stale/duplicate submissions return 409 instead of
  being sent with the current gate's RPC id.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 01:37:20 +02:00
marcopanandClaude Fable 5 2958b32fd5 fix(backend): generation-aware SSE event ids — stale cursors can no longer eat events
Audit finding 3.1 (high, 3/3 reviewer consensus). Event ids restart at 1
when the backend restarts; a browser auto-reconnect carrying the old
numeric Last-Event-ID was honored whenever the new process had already
emitted that many events, silently suppressing fresh events (same ids,
different content). The previous guard only caught cursor > lastId.

Wire ids are now "<generation>:<seq>" (generation = per-hub instance
token; seq = the existing per-session monotonic counter). The hub parses
raw header/query candidates itself: other-generation and legacy bare-
number cursors are stale → replay from the beginning; same-generation
cursors keep the newest-valid-wins behavior. EventSource treats ids as
opaque, so no frontend change.

Finding 3.2 (eviction) resolved by NOT evicting: close keeps the seq
counter on purpose (sessions reopen; monotonicity is what makes old
cursors detectable) — documented at the call site; buffers are emptied by
clear() and ring-bounded at 200.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 01:32:47 +02:00