Stacked on #3 (snake_case table names); retarget to develop once #3 merges.
From the kof22 record-screens audit (KofTwentyTwo/Website-Backend docs/audits/2026-10-12-record-screens.md): every Assistant Admin table showed QQQ's generic "Identity / Other Fields" screens, with raw JSON, bare ids, unexplained micro-dollar costs, a free-text effort, and no way to see a conversation's messages or turns from the conversation.
AssistantRecordScreens (applied in buildTables before the host's table customizer, so hosts keep the last word):
Named sections per table; unplaced fields go to a Details section, so new columns always show.
JSON viewer on contextJson, partsJson, dataJson, inputJson, resultJson, redactionsJson.
Links for turnId, messageId, userMessageId, assistantMessageId, parentMessageId (new assistant_turn / assistant_message possible-value sources).
Costs labeled "(micro-dollars)" with help; thousands separators on counts.
Conversation: Messages, Turns, Tool Calls, Feedback child lists; Status read-only.
Policy: assistant_effort picker (low to max, from AssistantModelRouting.EFFORTS); help on every limit (soft warns, hard refuses, empty falls back to config) and on which row applies (the lowest id).
Test plan
AssistantRecordScreensTest: every field in exactly one named section, JSON viewers, links, micros, effort picker, child lists (idempotent), unplaced fields to Details
./mvnw verify green (68 + 7 tests, JaCoCo gate). RobustnessTest.testConcurrentUsage failed once (19 vs 20 concurrent usage increments) and passed 3 of 3 alone and on the rerun; it is a pre-existing race, unrelated.
## Summary
Stacked on #3 (snake_case table names); retarget to `develop` once #3 merges.
From the kof22 record-screens audit (KofTwentyTwo/Website-Backend `docs/audits/2026-10-12-record-screens.md`): every Assistant Admin table showed QQQ's generic "Identity / Other Fields" screens, with raw JSON, bare ids, unexplained micro-dollar costs, a free-text effort, and no way to see a conversation's messages or turns from the conversation.
`AssistantRecordScreens` (applied in `buildTables` before the host's table customizer, so hosts keep the last word):
- Named sections per table; unplaced fields go to a **Details** section, so new columns always show.
- JSON viewer on `contextJson`, `partsJson`, `dataJson`, `inputJson`, `resultJson`, `redactionsJson`.
- Links for `turnId`, `messageId`, `userMessageId`, `assistantMessageId`, `parentMessageId` (new `assistant_turn` / `assistant_message` possible-value sources).
- Costs labeled "(micro-dollars)" with help; thousands separators on counts.
- Conversation: Messages, Turns, Tool Calls, Feedback child lists; Status read-only.
- Policy: `assistant_effort` picker (low to max, from `AssistantModelRouting.EFFORTS`); help on every limit (soft warns, hard refuses, empty falls back to config) and on which row applies (the lowest id).
## Test plan
- [x] `AssistantRecordScreensTest`: every field in exactly one named section, JSON viewers, links, micros, effort picker, child lists (idempotent), unplaced fields to Details
- [x] `./mvnw verify` green (68 + 7 tests, JaCoCo gate). `RobustnessTest.testConcurrentUsage` failed once (19 vs 20 concurrent usage increments) and passed 3 of 3 alone and on the rerun; it is a pre-existing race, unrelated.
🤖 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.
Summary
Stacked on #3 (snake_case table names); retarget to
developonce #3 merges.From the kof22 record-screens audit (KofTwentyTwo/Website-Backend
docs/audits/2026-10-12-record-screens.md): every Assistant Admin table showed QQQ's generic "Identity / Other Fields" screens, with raw JSON, bare ids, unexplained micro-dollar costs, a free-text effort, and no way to see a conversation's messages or turns from the conversation.AssistantRecordScreens(applied inbuildTablesbefore the host's table customizer, so hosts keep the last word):contextJson,partsJson,dataJson,inputJson,resultJson,redactionsJson.turnId,messageId,userMessageId,assistantMessageId,parentMessageId(newassistant_turn/assistant_messagepossible-value sources).assistant_effortpicker (low to max, fromAssistantModelRouting.EFFORTS); help on every limit (soft warns, hard refuses, empty falls back to config) and on which row applies (the lowest id).Test plan
AssistantRecordScreensTest: every field in exactly one named section, JSON viewers, links, micros, effort picker, child lists (idempotent), unplaced fields to Details./mvnw verifygreen (68 + 7 tests, JaCoCo gate).RobustnessTest.testConcurrentUsagefailed once (19 vs 20 concurrent usage increments) and passed 3 of 3 alone and on the rerun; it is a pre-existing race, unrelated.🤖 Generated with Claude Code