Add crispctl automation control plane - #73
Conversation
|
Historical verification note for test artifact The package-level and distribution checks listed here passed locally, but the claimed independent-process Unix-socket round-trip was later found not reproducible at this commit because the script hard-coded an obsolete SwiftPM output path. See the correction in the next review comment: #73 (comment) Real-device observations for the supplied Current PR-head and hosted-CI status are maintained in the PR description; this comment is retained only as historical evidence. |
|
Verification correction for the current PR head I reproduced the documented independent-process Unix-socket round-trip from that exact ref using a fresh scratch directory, and it currently fails before the fixture host starts.
But This means the claim that the independent CLI-process ↔ Unix-socket-host round-trip passed is not reproducible from the submitted commit. Please resolve the binary directory dynamically (for example via The IPC/CLI architecture and safety semantics look strong; this is a verification-chain blocker, not a request to redesign the feature. |
|
Supplemental real-device validation on PR head 1b7e2b5 (Crisp 1.5.0 test artifact): Validated successfully:
Non-blocking but actionable issue: Suggested docs/Skill clarification: distinguish (1) DDC control with verified hardware readback, (2) DDC write-only, and (3) software_gamma fallback. For the latter two, "read current value -> temporary change -> automatically restore" is not safe or guaranteed. I did not test |
|
Scope correction: the real-device observations in my previous comment were performed against the locally supplied Crisp 1.5.0 test artifact built from |
|
The verified CI workflow update is now pushed in The PR remains Draft; approving the run only lets the CI execute and does not mark it ready or merge it. |
|
CI running is approved |
Batch brightness: retain the strict default, add an explicit human overrideReal-device validation showed that However, Please keep the existing default and add a separate, deliberately named override mode (the exact flag/name is an implementation decision). It should:
This is a product-completeness gap, not a request to weaken the safe default. |
Draft status — P0 fresh-artifact validation complete; hosted CI and P1 physical-display validation remain open
Current head:
f012784· Status: Draft — do not merge or mark ready.What this PR adds
crispctl: a JSON-first CLI that talks only to the versioned, owner-only local Unix socket hosted by Crisp.app. Crisp.app remains the sole display-hardware owner.disconnect/reconnect.Safety contract
write_outcome_indeterminatewithretrySafe=false; callers must not retry automatically.Batch brightness — product gap to close
set-allmode is correctly strict: all displays must have a readable restore snapshot or the write is refused before any display changes. This is the right default for unsupervised automation.P1 scope control — do not expand before validation
f012784artifact has already regressed the P0 Extra Brightness-off fix successfully.Source-level verification at this head
crispctl↔ Unix-socket round trip: passedgit diff --check: passedEvidence and remaining gates
f012784is awaiting upstream approval: run 32924948784.f012784package: built-in brightness/EDR andbrightness get-allworked; Extra Brightnessoffnow returnedok: true/app_state_verifiedand immediately read back as disabled, so the old asynchronous false-failure report is fixed. DELL DDC writes and the Samsung software-gamma path were also verified on this machine.software_gamma; after restarting Crisp it recoveredDDC. This is a real-device diagnostic/initialization concern, not evidence that the display lacks DDC support.Summary
This PR exposes Crisp.app's existing display-control model to scripts and agents without creating a second hardware-control stack. It intentionally keeps safety and state ownership in the app, while
crispctlprovides deterministic JSON results, stable exit codes, and explicit capability/verification information