chore: remove one-off database scripts and a stale review note

packages/db carried four hand-run scripts outside the package build that
query or seed a developer database with a hard-coded connection string,
one of them for a specific account. docs/VOICE-FIRST-REVIEW.md was a
one-time verification note for a workflow that no longer exists and
named private machines and local paths. Nothing references them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MRtGG9ARfqqhma3t85Ro2u
This commit is contained in:
Claude 2026-10-03 13:09:57 +00:00 committed by Cursor Agent
parent 13fc64e5ef
commit 76bd395624
No known key found for this signature in database
5 changed files with 0 additions and 214 deletions

View File

@ -1,52 +0,0 @@
# Voice First / Executive Board — Review Report
**Audience:** Ingo Wagner
**Branch:** `antigravity-handoff/project-timeline` @ `8d0b8e3` (PRs #33–#40 merged + follow-up fixes)
**Date:** 2026-09-19 (Europe/Vienna)
**Verifier host:** evOo Linux box (Tailscale `grokbot-box`). Ingo’s Mac was **not** SSH-reachable from this host (no key / Tailscale SSH off).
## Definition of done checklist
| # | Criterion | Result | Evidence |
|---|-----------|--------|----------|
| 1 | Dev stack healthy: API `:3100/health` + web `:5173` | **BLOCKED (Mac)** | Mac mini / MacBook Air online on Tailscale; ports 3100/5173 not exposed; SSH `Permission denied (publickey)`. Could not restart `pnpm dev` on `/Users/ingowagner/evOo`. |
| 2 | Executive Board: user VOICE FIRST turn → UX Designer replies with concept thoughts + ≥1 question; no raw `handoff_to_bot` JSON; no bounce to Boss | **PASS (unit / code)** · **UNVERIFIED (live)** | PRs #39–#40 + `bot-reply-sanitize`, `prose-handoff-recovery`, `group-handoff` workshop instructions. 56 focused tests green. Live group chat not exercised (no Mac API). |
| 3 | Transcript: no tool JSON blobs / no `assistant:` role leaks | **PASS (unit)** · **UNVERIFIED (live)** | `sanitizeBotReplyText` strips prose tool JSON + role prefix; `speechFromBlocks` skips tool-activity + unspeakable blobs (regression fixed after merge). |
| 4 | Voice Mode (CallView) UX Designer: invite before mic when owning work; after outgoing handoff mic stays closed + transfer line | **PASS (code + unit)** · **UNVERIFIED (live)** | CallView rebuilt: `speakUserTurnInvitation` / `handleSpeechIdle` / `shouldSpeakOpeningInvitation`; `parkAfterHandoff` + `voiceHandoffTransferLine`; mount no longer auto-opens mic. |
## What was done on this pass
1. Merged open PR heads **#33–#40** into `antigravity-handoff/project-timeline` and **pushed** to origin.
2. Fixed merge regression in `packages/core/src/speech-text.ts`: `speechFromBlocks` again drops tool-activity chips and unspeakable tool JSON (test was failing after `-X theirs` merge).
3. Fixed merge regression in `apps/web/src/pages/CallView.tsx`: invitation-before-mic restored; outgoing handoff keeps mic closed and speaks transfer line.
4. Focused vitest: **56 passed** (`call-view-voice`, `voice-handoff`, `speech-text`, `bot-reply-sanitize`, `prose-handoff-recovery`).
## Remaining gaps (for Ingo’s Mac)
1. **SSH / Tailscale SSH** from agent hosts to `macbook-air-von-ingo` / `mac-mini-von-ingo` so localhost verify can run without manual UI.
2. On Mac repo path `/Users/ingowagner/evOo`:
```bash
git fetch origin && git checkout antigravity-handoff/project-timeline && git pull
pnpm install && pnpm dev # ensure :3100 + :5173
```
3. Live Executive Board check (RPC/DB preferred):
- Find Executive Board `chat_groups` id.
- Post a fresh user turn about **VOICE FIRST AI Talks**.
- Confirm UX Designer message: concept prose + question; no `handoff_to_bot` JSON; Boss not re-tasked with the same work.
4. Open Voice Mode on UX Designer: hear invite before mic; after a specialist handoff, mic stays closed with transfer caption.
## Sample expected UX Designer reply shape (sanitized)
> I’ve been thinking about VOICE FIRST AI Talks as a short, spoken workshop: one specialist owns the lane, invites you before the mic opens, and never dumps the same task back upstairs. For the first talk, I’d keep it to three beats — hook, one demo, one ask.
> **Which audience should we design for first — founders, designers, or internal execs?**
## Group id tested
*None live — Mac localhost unreachable.* After Mac verify, record `chat_groups.id` here.
## Branch / PR notes
- Timeline branch now contains merges of `cursor/voice-mic-energy-2d2c` … `cursor/handoff-prose-sanitize-d1d4` plus commits:
- `fix(core): drop tool-activity and unspeakable blobs from speechFromBlocks`
- `fix(web): restore invite-before-mic and keep handoff mic closed`
- Draft PRs #33–#40 can be closed or marked superseded once this branch is the review source of truth.

View File

@ -1,28 +0,0 @@
import { createDb } from "./src/client";
process.env.DATABASE_URL = "postgres://rakazo:rakazodev@127.0.0.1:5433/rakazo";
const { prisma: db } = createDb(process.env.DATABASE_URL, { applicationName: "check-users" });
const allUsers = await db.user.findMany({
select: { id: true, email: true, name: true, createdAt: true, emailVerified: true },
orderBy: { createdAt: "desc" },
});
console.log("All users:", JSON.stringify(allUsers, null, 2));
// Check spaces
const allSpaces = await db.space.findMany({
select: { id: true, name: true, ownerId: true, createdAt: true },
orderBy: { createdAt: "desc" },
});
console.log("\nAll spaces:", JSON.stringify(allSpaces, null, 2));
// Check space members
const allMembers = await db.spaceMember.findMany({
select: { id: true, spaceId: true, userId: true, role: true },
});
console.log("\nAll members:", JSON.stringify(allMembers, null, 2));
await db.$disconnect();

View File

@ -1,13 +0,0 @@
import { createDb, createPool } from "./src/client.js";
const pool = createPool(process.env.DATABASE_URL, { applicationName: "query-users" });
const db = createDb(pool);
const users = await db.user.findMany({
orderBy: { createdAt: "desc" },
take: 10,
select: { email: true, name: true, createdAt: true },
});
console.log(JSON.stringify(users, null, 2));
await db.$disconnect();

View File

@ -1,13 +0,0 @@
import { createDb } from "./src/client";
// Override to port 5433 (Docker published port)
process.env.DATABASE_URL = "postgres://rakazo:rakazodev@127.0.0.1:5433/rakazo";
const { prisma: db } = createDb(process.env.DATABASE_URL, { applicationName: "query-users" });
const users = await db.user.findMany({
orderBy: { createdAt: "desc" },
take: 10,
select: { email: true, name: true, createdAt: true },
});
console.log(JSON.stringify(users, null, 2));

View File

@ -1,108 +0,0 @@
import { randomUUID } from "node:crypto";
import { createDb } from "./src/client";
process.env.DATABASE_URL = "postgres://rakazo:rakazodev@127.0.0.1:5433/rakazo";
const { prisma: db } = createDb(process.env.DATABASE_URL, { applicationName: "setup-user" });
const user = await db.user.findUnique({
where: { email: "ingo.wagner1303@gmail.com" },
select: { id: true, name: true },
});
if (!user) {
console.log("User nicht gefunden!");
await db.$disconnect();
process.exit(1);
}
console.log("User:", user);
// Step 1: Get or create Organization
let org = await db.organization.findUnique({ where: { slug: "ingo-workspace" } });
if (!org) {
org = await db.organization.create({
data: {
id: randomUUID(),
name: "Ingo's Workspace",
slug: "ingo-workspace",
createdAt: new Date(),
},
select: { id: true, name: true, slug: true },
});
console.log("Organization created:", org);
} else {
console.log("Organization exists:", org);
}
// Step 2: Get or create Organization Member
let member = await db.member.findUnique({
where: {
organizationId_userId: { organizationId: org.id, userId: user.id },
},
});
if (!member) {
member = await db.member.create({
data: {
id: randomUUID(),
userId: user.id,
organizationId: org.id,
role: "owner",
createdAt: new Date(),
},
});
console.log("Organization member created");
} else {
console.log("Organization member exists");
}
// Step 3: Get or create default Space
let space = await db.space.findFirst({
where: { organizationId: org.id, isDefault: true },
});
if (!space) {
space = await db.space.create({
data: {
id: randomUUID(),
name: "Mein Space",
isDefault: true,
createdByUserId: user.id,
organizationId: org.id,
},
select: { id: true, name: true },
});
console.log("Space created:", space);
} else {
console.log("Space exists:", space);
}
// Step 4: Get or create space member
const existingMember = await db.spaceMember.findUnique({
where: {
spaceId_userId: { spaceId: space.id, userId: user.id },
},
});
if (!existingMember) {
await db.spaceMember.create({
data: {
id: randomUUID(),
spaceId: space.id,
organizationId: org.id,
userId: user.id,
role: "owner",
createdAt: new Date(),
},
});
console.log("Space member created");
} else {
console.log("Space member exists");
}
// Verify
const finalSpaces = await db.space.findMany({
where: { organization: { members: { some: { userId: user.id } } } },
select: { id: true, name: true, isDefault: true },
});
console.log("\nUser spaces:", JSON.stringify(finalSpaces, null, 2));
await db.$disconnect();
console.log("\nDone!");