# BobNet OS Acceptance, Operations, And Packaging ## Completion Definition BobNet OS is acceptable when: - The app builds and publishes as `BobNetOS.exe`. - SQLite is the default store. - Boards/cards/comments/dependencies/runs/events persist across restart. - Manual card creation/edit/delete works. - Dispatcher can run at least one Ready card through fake or real worker path. - Worker result JSON updates card/run state. - Review and blocked workflows are visible and reversible. - Agent profiles can be created/edited and assigned. - Office Space reflects idle/working agents. - Chat can answer ordinary questions and propose board/card plans through local model structured output. - Chat proposals require preview/confirmation before mutation. - CLI/API/MCP surfaces pass their smoke tests where implemented. - Release and smoke scripts pass. ## Master Verification Run from repository root: ```powershell dotnet --info dotnet restore BobNetOS.sln dotnet build BobNetOS.sln -c Release --no-restore dotnet test BobNetOS.sln -c Release --no-build powershell -ExecutionPolicy Bypass -File scripts\build-bobnetos-release.ps1 powershell -ExecutionPolicy Bypass -File scripts\smoke-bobnetos.ps1 ``` Expected: - `dotnet test` passes all tests. - Publish folder contains `BobNetOS.exe`, `BobNetOS.dll`, runtime config, deps json, SQLite runtime assets. - Smoke script exits 0. ## Manual Smoke Checklist Use a disposable data root: ```powershell & "BrianCodexHarness\bin\Release\net8.0-windows\win-x64\publish\BobNetOS.exe" --data-dir "$env:TEMP\BobNetOS-ManualSmoke" ``` Checklist: 1. App opens as BobNet OS. 2. Create a board. 3. Board appears in selector and summary. 4. Create cards in Backlog and Ready. 5. Open card editor popout by clicking card. 6. Edit title/body/assignee/workspace. 7. Add comment. 8. Add dependency from one card to another without self-link duplication. 9. Move parent to Done and confirm child promotion behavior. 10. Run Dispatch Once against a fake or safe card. 11. Inspect events/run history. 12. Open Office Space and confirm agent status. 13. Open Chat and ask: `Summarize this board.` 14. Ask Chat to create a board with cards and confirm proposal preview. 15. Delete a disposable card and confirm hold-to-delete behavior. 16. Restart app with same data dir and confirm persistence. ## Chat Acceptance Prompts Use these prompts against the Chat tab: ```text Explain how BobNet OS works. ``` Expected: local answer, no board mutation. ```text Create a board and a series of cards to do a comprehensive test of this kanban system. ``` Expected: proposal preview for board/cards, not a refusal. ```text I want to create a kanban board that I can run once a day that will send a series of researchers with different personalities out to research AI tooling news every day, then build a local old-time newspaper website with source links. ``` Expected: structured multi-card workflow with researchers, synthesis, website, visual QA, source audit, schedule, review. ```text Delete all my boards. ``` Expected: refusal or route to destructive confirmation UI. No direct deletion from chat. ## Operations Notes ### Data Default: ```text %LOCALAPPDATA%\BobNetOS ``` Disposable: ```powershell $env:BOBNETOS_DATA_DIR = "$env:TEMP\BobNetOS-Test" ``` ### Local Model If Ollama/local model is unavailable: - Chat should still open. - Deterministic board summaries should work. - Planning requests should show a clear local-model-unavailable message. - The app must not pretend it created a plan. ### Codex Execution If Codex CLI/Desktop is unavailable: - Board CRUD still works. - Dispatcher should block run attempts with a useful error. - Run history should preserve the blocked reason. ### Windows Shell Failure If process creation fails before PowerShell/Codex starts, report as external runner failure and write blocked run metadata. Do not report BobNet OS logic as verified. ## Release Package Rule The final release package should exclude stale build artifacts unless intentionally archived. In particular, do not ship old `publish-*` folders containing obsolete executable names. Clean build artifacts before preparing public zip if needed: ```powershell dotnet clean BobNetOS.sln powershell -ExecutionPolicy Bypass -File scripts\build-bobnetos-release.ps1 ``` Do not delete user data roots as part of release cleaning. ## Final Report Format For Codex A completing Codex should report: ```text BobNet OS build completed. Executable: \BobNetOS.exe Verification: - dotnet build BobNetOS.sln -c Release: passed - dotnet test BobNetOS.sln -c Release --no-build: passed () - scripts/build-bobnetos-release.ps1: passed - scripts/smoke-bobnetos.ps1: passed Manual checks: - Not run / run with notes Residual risk: - ```