Skip to content

docs: prove UI work on a disposable surface, not the user's session - #292

Merged
EdbertChan merged 1 commit into
stack/EdbertChan/reflect/ui-input-guard-hook-freshness-20260908/ui-input-guard-blocks-synthetic-input-user-s-live--670196cdfrom
stack/EdbertChan/reflect/ui-input-guard-hook-freshness-20260908/prove-ui-work-disposable-surface-user-s-session--fa0ea6ce
Sep 9, 2026
Merged

docs: prove UI work on a disposable surface, not the user's session#292
EdbertChan merged 1 commit into
stack/EdbertChan/reflect/ui-input-guard-hook-freshness-20260908/ui-input-guard-blocks-synthetic-input-user-s-live--670196cdfrom
stack/EdbertChan/reflect/ui-input-guard-hook-freshness-20260908/prove-ui-work-disposable-surface-user-s-session--fa0ea6ce

Conversation

@EdbertChan

@EdbertChan EdbertChan commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Summary

The rule behind the ui-input-guard hook in this stack, written where an agent reads it before acting.

Prove a UI or surface change somewhere disposable: a test channel, a throwaway profile, a second display, a VM, a headless run. Driving the user's real keyboard, mouse, or screen is a last resort that needs an explicit hands-off window first.

Stop at the first sign the session is theirs again, and leave no residue: undo stray messages or reactions, or say what was left behind.

Review Claim

cat-mode and the live-demo rules now say UI proof goes to a disposable surface, and that driving the user's own input needs a granted window plus cleanup.

Review Lane

docs

Review Unit

docs

Safety Invariant

Prose plus its contract tests: no code paths, no hook behavior. The rule names the marker file and hook directory the sibling commit adds, so the written rule and the mechanical gate cannot drift apart.

Slice Rationale

Rule text is separated from the hook that enforces it, so a wording change does not have to touch a detector and vice versa. The skill's own line cap forced a trim in the same commit: the new rule is one dense paragraph, and one bullet's incident narrative is cut to its rule.

Non-goals

Does not change any other section of cat-mode, and adds no dated provenance to either file.

Test Plan

Test Plan
  • python3 -m unittest discover -s tests -p "test_cat_mode.py" — 44 tests, OK (4 new: disposable surface, granted window, the marker path matching the hook's default, and cleanup)
  • python3 scripts/check_skill_test_coverage.py --base origin/main — ok
  • python3 scripts/check_no_dated_provenance.py --base origin/main — ok
  • python3 scripts/check_skill_file_refs.py --base origin/main — ok
  • python3 scripts/check_ecosystem_boundaries.py --base origin/main — ok

Revert Plan

Revert Plan
  • Safe to revert? Yes
  • Revert command: git revert <sha>
  • Post-revert steps: None
  • Data migration? No

🤖 Generated with Claude Code

https://claude.ai/code/session_01KU2pPKob4MJ1NqjsfTNyYJ

@EdbertChan

EdbertChan commented Sep 9, 2026

Copy link
Copy Markdown
Owner Author

This pull request is part of a Mergify stack:

# Pull Request Link
1 hook: hook-freshness warns when the checkout behind the hooks is stale #290
2 hook: ui-input-guard blocks synthetic input at the user's live session #291
3 docs: prove UI work on a disposable surface, not the user's session #292 👈
4 hook(wrong-check-reflect): catch a concession that the user found the miss #298
5 gate: an unchecked file is not a clean file #296

@cursor

cursor Bot commented Sep 9, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_bb147b7e-1ae4-43c8-9bc1-2617852cbde1)

@EdbertChan
EdbertChan force-pushed the stack/EdbertChan/reflect/ui-input-guard-hook-freshness-20260908/ui-input-guard-blocks-synthetic-input-user-s-live--670196cd branch from bad10af to 2d22904 Compare September 9, 2026 05:09
@EdbertChan
EdbertChan force-pushed the stack/EdbertChan/reflect/ui-input-guard-hook-freshness-20260908/prove-ui-work-disposable-surface-user-s-session--fa0ea6ce branch from 2a729e0 to 4be2b42 Compare September 9, 2026 05:09
@cursor

cursor Bot commented Sep 9, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_1114391c-bdbb-418b-aba6-cb3bad9879a6)

@EdbertChan

EdbertChan commented Sep 9, 2026

Copy link
Copy Markdown
Owner Author

Revision history

# Type Changes Reason Date
1 initial 2a729e0 2026-09-09 05:10 UTC
2 rebase 2a729e0 → 4be2b42 (rebase only) 2026-09-09 05:10 UTC
3 rebase 4be2b42 → 163c9d6 (rebase only) 2026-09-09 05:39 UTC
4 content 163c9d6 → b3bc3ea (raw) 2026-09-09 05:49 UTC
5 rebase b3bc3ea → 8a08e9d (rebase only) 2026-09-09 06:22 UTC

@EdbertChan
EdbertChan force-pushed the stack/EdbertChan/reflect/ui-input-guard-hook-freshness-20260908/ui-input-guard-blocks-synthetic-input-user-s-live--670196cd branch from 2d22904 to 445e5b0 Compare September 9, 2026 05:39
@EdbertChan
EdbertChan force-pushed the stack/EdbertChan/reflect/ui-input-guard-hook-freshness-20260908/prove-ui-work-disposable-surface-user-s-session--fa0ea6ce branch from 4be2b42 to 163c9d6 Compare September 9, 2026 05:39
@cursor

cursor Bot commented Sep 9, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_1b2f235e-a435-4ac6-8836-54a68b181b97)

@EdbertChan
EdbertChan force-pushed the stack/EdbertChan/reflect/ui-input-guard-hook-freshness-20260908/prove-ui-work-disposable-surface-user-s-session--fa0ea6ce branch from 163c9d6 to b3bc3ea Compare September 9, 2026 05:49
@cursor

cursor Bot commented Sep 9, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_19250fda-9650-47ce-bbfc-57efdab4d95d)

cat-mode gains a UI-testing rule under Verify and the live-demo rules gain the
matching bullet: disposable surface first, an explicit hands-off window and
marker before driving real input, stop when the session goes back to the user,
and leave no residue. Contract tests pin the pieces an agent acts on,
including that the marker path matches the guard hook's default.

The skill's own line cap forced a trim in the same commit, so one bullet's
incident narrative is cut back to its rule.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KU2pPKob4MJ1NqjsfTNyYJ
Change-Id: Ifa0ea6ce9e6f809dfe162be89ff630d8ec90d363
@EdbertChan
EdbertChan force-pushed the stack/EdbertChan/reflect/ui-input-guard-hook-freshness-20260908/prove-ui-work-disposable-surface-user-s-session--fa0ea6ce branch from b3bc3ea to 8a08e9d Compare September 9, 2026 06:22
@EdbertChan
EdbertChan force-pushed the stack/EdbertChan/reflect/ui-input-guard-hook-freshness-20260908/ui-input-guard-blocks-synthetic-input-user-s-live--670196cd branch from 445e5b0 to 3eea768 Compare September 9, 2026 06:22
@cursor

cursor Bot commented Sep 9, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_d1d9f2c7-2498-42a7-b7f1-1e7c79f731ec)

@EdbertChan
EdbertChan merged commit 99b805a into stack/EdbertChan/reflect/ui-input-guard-hook-freshness-20260908/ui-input-guard-blocks-synthetic-input-user-s-live--670196cd Sep 9, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant