Skip to content

Align NodeRoom notebook references and declutter the journey - #248

Merged
HomenShum merged 9 commits into
mainfrom
feat/nodekit-note-reference-receipts
Jul 30, 2026
Merged

Align NodeRoom notebook references and declutter the journey#248
HomenShum merged 9 commits into
mainfrom
feat/nodekit-note-reference-receipts

Conversation

@HomenShum

Copy link
Copy Markdown
Owner

Outcome

  • binds notebook notes and references to NodeKit V2 workspace/session/checkpoint receipts
  • keeps Capture as the sole dominant notebook action and moves proof/operator detail behind progressive disclosure
  • moves Usage out of the passive footer into the room control cluster
  • preserves the dark web binder/work-surface/chat model while keeping the terracotta mobile product single-column

Design evidence

  • read-only alignment against the canonical Claude Design NodeRoom workspace and terracotta mobile files
  • Mobbin journey pattern: content first, flat rows, one primary action, detail on demand
  • before/after screenshots and receipts in evidence/notebook-declutter/

Verification

  • npm run prod:gate
    • 384 Vitest files / 2,706 tests passed
    • 29 Playwright product-memory journeys passed
    • production build + provenance passed
    • security gate passed
  • npx playwright test e2e/credit-load.spec.ts --workers=1 --reporter=line: 7 passed
  • npx playwright test e2e/nodekit-note-reference-proof.spec.ts --workers=1 --reporter=line: 3 passed

Scope safety

Pre-existing visual-parity proof changes in the worktree were not included.

HomenShum and others added 8 commits July 29, 2026 23:58
Persist digest-closed note reference consumption only after artifact, edge, trust-policy, and Ed25519 service-attestation checks pass. Project the canonical result into quick capture and the passive inbox while disarming capture during review or conflict.

Runtime: Mobbin observation -> canonical NodeKit records -> verified execution edge -> Convex CAS persistence -> notebook/inbox projection -> browser proof.

Verification: 76 focused scenarios, 2,709-test production gate, typechecks, production build, responsive Playwright proof, and deterministic demo receipt.

Co-Authored-By: Claude <noreply@anthropic.com>
Create current-slice changelog lanes for the shared contract, Convex persistence, notebook capture, passive inbox, and proof workflow. The entries cross-link the behavior commit without inventing historical changes.

Co-Authored-By: Codex <noreply@openai.com>
Canonical Caseflow snapshots
        |
        v
V2 identity envelope + deterministic verification
        |
        v
Convex owner/CAS + Ed25519 authority gate
        |
        v
Incomplete inbox/workbench until external NodeProof

Keep valid records incomplete until an external proof barrier verifies
the edge chain. Reject envelope aliases that could become a second
semantic truth.

Co-Authored-By: Codex <noreply@anthropic.com>
Bind component, contract, and QA history to commit 05d9fe3 and retain explicit evidence references and unrun external proof status.

Co-Authored-By: Codex <noreply@anthropic.com>
Boot the canonical seeded room directly and wait on the owned workspace
surface so cold development transforms cannot detach landing controls.
Record the workflow against a fresh production preview and regenerate its
MP4, GIF, and contact sheet from the passing run.

Browser proof
     |
     v
Seeded memory room -> note-reference review -> exact capture
     |
     v
DOM receipt + MP4/GIF/contact sheet

Gemini remains an explicit unrun barrier because no key is configured.

Co-Authored-By: Codex <noreply@anthropic.com>
Bind the QA lane to the production-preview recording commit and retain
the explicit Gemini credential boundary.

Co-Authored-By: Codex <noreply@anthropic.com>
Use workload-specific Vitest budgets for the full 5,416-attempt planner and 321-candidate official projection scenarios. The assertions and production runtime behavior are unchanged; this prevents two-worker full-suite contention from creating false negatives.

Co-Authored-By: Codex <noreply@anthropic.com>
Add a dedicated QA history lane linking the measured timeout change to the exact green production-gate evidence.

Co-Authored-By: Codex <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
noderoom Ready Ready Preview Jul 30, 2026 10:58am

Request Review

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown

Scaffold Handoff — For Your Coding Agent

Your coding agent (Codex, Claude Code, etc.) should apply the accepted
scaffold proposals below. Do NOT touch any immutable files.

Immutability Check

Mode: advisory

✅ No immutable files were modified in this branch.

Changed Files

  • .env.example
  • CHANGELOG/README.md
  • CHANGELOG/TEMPLATE.md
  • CHANGELOG/components/NotebookDigestWorkbench.md
  • CHANGELOG/components/PassiveReferenceInbox.md
  • CHANGELOG/components/RoomShell.md
  • CHANGELOG/contracts/note-reference-consumption.md
  • CHANGELOG/qa/benchmark-timeout-budgets.md
  • CHANGELOG/qa/nodekit-note-reference-proof.md
  • CHANGELOG/server/convex-note-reference-persistence.md
  • convex/artifacts.ts
  • convex/lib/noteSurfaceReferenceAuthority.ts
  • docs/eval/OFFICIAL_BENCHMARK_READINESS.md
  • docs/eval/OFFICIAL_BENCHMARK_TASK_COVERAGE.md
  • docs/eval/OPENROUTER_CONVEX_BENCHMARK.md
  • docs/eval/agent-improvement-loop.md
  • docs/eval/agent-improvement-loop.svg
  • docs/eval/agent-improvement-loop/20260730T105747Z.json
  • docs/eval/agent-improvement-loop/latest.json
  • docs/eval/agent-workspace-sandbox-smoke.json
  • docs/eval/algorithm-artifact-smoke.json
  • docs/eval/bankertoolbench-official-contract.json
  • docs/eval/docker-sandbox-probe.json
  • docs/eval/eval-runs.jsonl
  • docs/eval/halo-convex-context-telemetry.json
  • docs/eval/halo-self-improvement-smoke.json
  • docs/eval/halo-variant-selection.json
  • docs/eval/official-benchmark-readiness.json
  • docs/eval/official-benchmark-task-coverage.json
  • docs/eval/openrouter-convex-benchmark.json
  • docs/eval/professional-catalog-proofs.json
  • docs/eval/professional-proof-ledger.json
  • docs/eval/spreadsheetbench-chart-visual-probe.json
  • docs/eval/traces/credit/20260730T105756368Z-f18dd12f_dirty.5a6981ab5a136b9d/cascade-healthy.json
  • docs/eval/traces/credit/20260730T105756368Z-f18dd12f_dirty.5a6981ab5a136b9d/delta-incomplete.json
  • docs/eval/traces/credit/20260730T105756368Z-f18dd12f_dirty.5a6981ab5a136b9d/mapping-correct.json
  • docs/eval/traces/credit/20260730T105756368Z-f18dd12f_dirty.5a6981ab5a136b9d/mapping-misbind.json
  • docs/eval/traces/credit/20260730T105756368Z-f18dd12f_dirty.5a6981ab5a136b9d/summit-stressed.json
  • docs/eval/traces/ladder/20260730T105755888Z-f18dd12f_dirty.6dcf35d21f267c4d/ladder_L1_read_scripted.json
  • docs/eval/traces/ladder/20260730T105755888Z-f18dd12f_dirty.6dcf35d21f267c4d/ladder_L2_edit_scripted.json
  • docs/eval/traces/ladder/20260730T105755888Z-f18dd12f_dirty.6dcf35d21f267c4d/ladder_L3_conflict_scripted.json
  • docs/eval/traces/ladder/20260730T105755888Z-f18dd12f_dirty.6dcf35d21f267c4d/ladder_L4_blocked_scripted.json
  • docs/eval/traces/ladder/20260730T105755888Z-f18dd12f_dirty.6dcf35d21f267c4d/ladder_L5_large_range_scripted.json
  • docs/eval/traces/ladder/20260730T105755888Z-f18dd12f_dirty.6dcf35d21f267c4d/ladder_L6_long_horizon_scripted.json
  • docs/eval/traces/ladder/20260730T105755888Z-f18dd12f_dirty.6dcf35d21f267c4d/ladder_L7_resume_scripted.json
  • docs/runbooks/NODEKIT_REFERENCE_TRUST_POLICY.md
  • e2e/credit-load.spec.ts
  • e2e/nodekit-note-reference-demo.spec.ts
  • e2e/nodekit-note-reference-proof.spec.ts
  • evidence/nodekit-note-mobbin-reference/observation.md
  • evidence/nodekit-note-quick-capture-integrity/after.txt
  • evidence/nodekit-note-quick-capture-integrity/before.txt
  • evidence/nodekit-note-quick-capture-integrity/diff.txt
  • evidence/nodekit-note-reference-authority-boundary/after.txt
  • evidence/nodekit-note-reference-authority-boundary/before.txt
  • evidence/nodekit-note-reference-authority-boundary/diff.txt
  • evidence/nodekit-note-reference-authority/after.txt
  • evidence/nodekit-note-reference-authority/before.txt
  • evidence/nodekit-note-reference-authority/diff.txt
  • evidence/nodekit-note-reference-demo/README.md
  • evidence/nodekit-note-reference-demo/contact-sheet.png
  • evidence/nodekit-note-reference-demo/nodekit-note-reference-demo.gif
  • evidence/nodekit-note-reference-demo/nodekit-note-reference-demo.mp4
  • evidence/nodekit-note-reference-demo/receipt.json
  • evidence/nodekit-note-reference-surface/after/desktop-1440x900/captured-reopened.png
  • evidence/nodekit-note-reference-surface/after/desktop-1440x900/empty-armed.png
  • evidence/nodekit-note-reference-surface/after/desktop-1440x900/full-reload-memory-reset.png
  • evidence/nodekit-note-reference-surface/after/desktop-1440x900/populated-armed.png
  • evidence/nodekit-note-reference-surface/after/desktop-1440x900/receipt.json
  • evidence/nodekit-note-reference-surface/after/desktop-1440x900/reference-review-disarmed.png
  • evidence/nodekit-note-reference-surface/after/phone-320x568/captured-reopened.png
  • evidence/nodekit-note-reference-surface/after/phone-320x568/empty-armed.png
  • evidence/nodekit-note-reference-surface/after/phone-320x568/full-reload-memory-reset.png
  • evidence/nodekit-note-reference-surface/after/phone-320x568/populated-armed.png
  • evidence/nodekit-note-reference-surface/after/phone-320x568/receipt.json
  • evidence/nodekit-note-reference-surface/after/phone-320x568/reference-review-disarmed.png
  • evidence/nodekit-note-reference-surface/after/phone-390x844/captured-reopened.png
  • evidence/nodekit-note-reference-surface/after/phone-390x844/empty-armed.png
  • evidence/nodekit-note-reference-surface/after/phone-390x844/full-reload-memory-reset.png
  • evidence/nodekit-note-reference-surface/after/phone-390x844/populated-armed.png
  • evidence/nodekit-note-reference-surface/after/phone-390x844/receipt.json
  • evidence/nodekit-note-reference-surface/after/phone-390x844/reference-review-disarmed.png
  • evidence/nodekit-note-reference-surface/before/desktop-1440x900/captured-reopened.png
  • evidence/nodekit-note-reference-surface/before/desktop-1440x900/empty-armed.png
  • evidence/nodekit-note-reference-surface/before/desktop-1440x900/full-reload-memory-reset.png
  • evidence/nodekit-note-reference-surface/before/desktop-1440x900/populated-armed.png
  • evidence/nodekit-note-reference-surface/before/desktop-1440x900/receipt.json
  • evidence/nodekit-note-reference-surface/before/desktop-1440x900/reference-review-disarmed.png
  • evidence/nodekit-note-reference-surface/before/phone-320x568/captured-reopened.png
  • evidence/nodekit-note-reference-surface/before/phone-320x568/empty-armed.png
  • evidence/nodekit-note-reference-surface/before/phone-320x568/full-reload-memory-reset.png
  • evidence/nodekit-note-reference-surface/before/phone-320x568/populated-armed.png
  • evidence/nodekit-note-reference-surface/before/phone-320x568/receipt.json
  • evidence/nodekit-note-reference-surface/before/phone-320x568/reference-review-disarmed.png
  • evidence/nodekit-note-reference-surface/before/phone-390x844/captured-reopened.png
  • evidence/nodekit-note-reference-surface/before/phone-390x844/empty-armed.png
  • evidence/nodekit-note-reference-surface/before/phone-390x844/full-reload-memory-reset.png
  • evidence/nodekit-note-reference-surface/before/phone-390x844/populated-armed.png
  • evidence/nodekit-note-reference-surface/before/phone-390x844/receipt.json
  • evidence/nodekit-note-reference-surface/before/phone-390x844/reference-review-disarmed.png
  • evidence/nodekit-note-reference-v2/README.md
  • evidence/nodekit-note-reference-v2/after.txt
  • evidence/nodekit-note-reference-v2/before.txt
  • evidence/nodekit-note-release-gates/architecture-budget.txt
  • evidence/nodekit-note-release-gates/build-after-contract-move.txt
  • evidence/nodekit-note-release-gates/build.txt
  • evidence/nodekit-note-release-gates/design-audit.txt
  • evidence/nodekit-note-release-gates/floor-rerun.txt
  • evidence/nodekit-note-release-gates/floor.txt
  • evidence/nodekit-note-release-gates/prod-gate.txt
  • evidence/nodekit-note-release-gates/requirement-audit.md
  • evidence/nodekit-note-release-gates/spreadsheetbench-timeout-rerun.txt
  • evidence/notebook-declutter/after-proof/desktop-1440x900/captured-reopened.png
  • evidence/notebook-declutter/after-proof/desktop-1440x900/empty-armed.png
  • evidence/notebook-declutter/after-proof/desktop-1440x900/full-reload-memory-reset.png
  • evidence/notebook-declutter/after-proof/desktop-1440x900/populated-armed.png
  • evidence/notebook-declutter/after-proof/desktop-1440x900/receipt.json
  • evidence/notebook-declutter/after-proof/desktop-1440x900/reference-review-disarmed.png
  • evidence/notebook-declutter/after-proof/phone-320x568/captured-reopened.png
  • evidence/notebook-declutter/after-proof/phone-320x568/empty-armed.png
  • evidence/notebook-declutter/after-proof/phone-320x568/full-reload-memory-reset.png
  • evidence/notebook-declutter/after-proof/phone-320x568/populated-armed.png
  • evidence/notebook-declutter/after-proof/phone-320x568/receipt.json
  • evidence/notebook-declutter/after-proof/phone-320x568/reference-review-disarmed.png
  • evidence/notebook-declutter/after-proof/phone-390x844/captured-reopened.png
  • evidence/notebook-declutter/after-proof/phone-390x844/empty-armed.png
  • evidence/notebook-declutter/after-proof/phone-390x844/full-reload-memory-reset.png
  • evidence/notebook-declutter/after-proof/phone-390x844/populated-armed.png
  • evidence/notebook-declutter/after-proof/phone-390x844/receipt.json
  • evidence/notebook-declutter/after-proof/phone-390x844/reference-review-disarmed.png
  • evidence/notebook-declutter/before-desktop-1440x900.png
  • evidence/notebook-declutter/claude-design-alignment.md
  • package-lock.json
  • package.json
  • playwright.nodekit-reference-demo.config.ts
  • playwright.nodekit-reference-proof.config.ts
  • src/app/styles.css
  • src/engine/noteSurfaceReference.ts
  • src/engine/types.ts
  • src/ui/RoomShell.tsx
  • src/ui/insights/NoteworthyInbox.tsx
  • src/ui/insights/PassiveAgentChip.tsx
  • src/ui/panels/Artifact.tsx
  • src/ui/workArtifacts/NotebookDigestWorkbench.tsx
  • src/ui/workArtifacts/WorkArtifactsPanel.tsx
  • src/ui/workArtifacts/index.ts
  • src/ui/workArtifacts/notebookStructure.ts
  • src/ui/workArtifacts/work-artifacts.css
  • tests/fixtures/noteSurfaceReferenceFixture.ts
  • tests/noteSurfaceCaptureUi.test.tsx
  • tests/noteSurfaceReference.test.ts
  • tests/noteSurfaceReferenceConvex.test.ts
  • tests/proofloopProdProxyLongRun.test.ts
  • tests/spreadsheetBenchOfficialV2Project.test.ts
  • tests/workArtifacts.test.ts
  • tests/workArtifactsNotebookReadModelUi.test.tsx

Needs Adversarial Review — Do NOT Apply Yet

These proposals passed the reject check but have not been approved by
an adversarial reviewer. A human or frozen LLM judge must approve them first.

  • scaf-001 (AGENTS.md): Add explicit instruction for step spreadsheetbench-runner-fixture: Step spreadsheetbench-runner-fixture failed — scaffold may need explicit instruction or evidence assertion.
  • scaf-002 (AGENTS.md): Add explicit instruction for step convex-boundaries: Step convex-boundaries failed — scaffold may need explicit instruction or evidence assertion.

Safety Boundary

Agent may improve the scaffold.
Agent may NOT weaken the proof gate.

Immutable files (never modify):

  • scripts/proofloop.mjs
  • scripts/agent-improvement-loop.ts
  • tests/harnessChangeEval.test.ts
  • .github/workflows/
  • src/eval/evalTrustPolicy.ts
  • src/eval/architectureBudget.ts
  • evals/evalStore.ts

Scaffold files (safe to modify):

  • AGENTS.md
  • CLAUDE.md
  • proofloop/scenarios/*.yaml
  • proofloop/rubrics/*.yaml
  • proofloop/subagents/*.md
  • proofloop/adapters/*.js
  • .proofloop/memory.jsonl
  • src/nodeagent/models/prompts/systemPrompt.ts

src: simplify the notebook work surface and Usage placement.

e2e: cover progressive disclosure and credit reachability.

CHANGELOG: record the component and QA behavior changes.

evidence: add Claude Design alignment notes and before/after proof.
@HomenShum
HomenShum force-pushed the feat/nodekit-note-reference-receipts branch from 9bce2a4 to 34d5a16 Compare July 30, 2026 10:56
@HomenShum
HomenShum merged commit 056c46a into main Jul 30, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant