COPYLASSO · G55 OPERATOR GUIDE

Fresh-install qualification,
without the back-and-forth.

One continuous run through the public baseline, exact 0.3.0 candidate, full feature matrix, and authenticated update transition.

Start qualification
Disposable account only. Run cleanup commands inside copylasso-g55, never your normal account. Keep your normal account signed in so both local servers stay alive.
Estimated time: 45–75 minutes. The macOS 14 VirtualBuddy run is intentionally skipped. If something fails, record it rather than repeatedly repairing or resetting it.
01

Prepare from your normal account

Stage the current app, prepare the old-source fixture, and start both private loopback servers.

Stage your current installation

STAGE="$HOME/Library/Developer/CopyLasso/G55/main-app-staging"
mkdir -p "$STAGE"
mv /Applications/CopyLasso.app "$STAGE/CopyLasso-0.2.2.app"

Stage the updater-test fixture

ditto   "$HOME/Library/Developer/CopyLasso/G55/c99bec65be187c02b920b6519152ba935ec44253/update-fixture/derived-fixed-20260816/Build/Products/Debug/CopyLasso.app"   "/Users/Shared/CopyLasso-G55-Updater-Fixture.app"

Terminal tab 1 · candidate DMG server

python3 -m http.server 58455   --bind 127.0.0.1   --directory "$HOME/Library/Developer/CopyLasso/G55/c99bec65be187c02b920b6519152ba935ec44253/host-smoke-serve"

Terminal tab 2 · updater server

python3 -m http.server 58457   --bind 127.0.0.1   --directory "$HOME/Library/Developer/CopyLasso/G55/c99bec65be187c02b920b6519152ba935ec44253/update-fixture/serve-v1"

Create the account

  1. System Settings → Users & Groups → Add User.
  2. Choose Standard.
  3. Full name: CopyLasso G55 Qualification.
  4. Account name: copylasso-g55.
  5. Choose any temporary password. Do not connect an Apple Account.
  6. Fast-user-switch into the account. Do not log out of the normal account.
02

Confirm a genuinely clean account

All four machine-state checks must be absent before installation.

test ! -e /Applications/CopyLasso.app   && echo APP_ABSENT || echo APP_PRESENT

defaults read io.github.bennetthilberg.copylasso >/dev/null 2>&1   && echo PREFS_PRESENT || echo PREFS_ABSENT

test ! -e "$HOME/Library/Containers/io.github.bennetthilberg.copylasso"   && echo CONTAINER_ABSENT || echo CONTAINER_PRESENT

security find-generic-password   -s io.github.bennetthilberg.copylasso.capture-history   -a archive-key-v1 >/dev/null 2>&1   && echo HISTORY_KEY_PRESENT || echo HISTORY_KEY_ABSENT
Expected output
APP_ABSENT
PREFS_ABSENT
CONTAINER_ABSENT
HISTORY_KEY_ABSENT
If anything is present, stop. Note the exact result instead of deleting it blindly.
03

Qualify public 0.2.2

Prove the clean account and public install path before testing the candidate.

Download in a Safari Private Window

https://github.com/bennetthilberg/copylasso/releases/download/v0.2.2/CopyLasso-0.2.2.dmg
https://github.com/bennetthilberg/copylasso/releases/download/v0.2.2/CopyLasso-0.2.2.dmg.sha256

Verify quarantine, checksum, and Gatekeeper

cd "$HOME/Downloads"

xattr -p com.apple.quarantine CopyLasso-0.2.2.dmg   && echo QUARANTINE_PRESENT

shasum -a 256 -c CopyLasso-0.2.2.dmg.sha256

spctl -a -vv -t open   --context context:primary-signature   CopyLasso-0.2.2.dmg
  1. Open the DMG.
  2. Confirm it contains only CopyLasso and the Applications shortcut.
  3. Drag CopyLasso into Applications.

Inspect the installed app

APP=/Applications/CopyLasso.app

/usr/libexec/PlistBuddy   -c 'Print :CFBundleIdentifier' "$APP/Contents/Info.plist"

/usr/libexec/PlistBuddy   -c 'Print :CFBundleShortVersionString' "$APP/Contents/Info.plist"

/usr/libexec/PlistBuddy   -c 'Print :CFBundleVersion' "$APP/Contents/Info.plist"

lipo -archs "$APP/Contents/MacOS/CopyLasso"

Expect io.github.bennetthilberg.copylasso, 0.2.2, build 5, and both arm64 and x86_64.

Functional baseline

04

Remove the public baseline

Return the disposable account to a precise empty state.

defaults delete io.github.bennetthilberg.copylasso 2>/dev/null || true

rm -rf "$HOME/Library/Containers/io.github.bennetthilberg.copylasso"

security delete-generic-password   -s io.github.bennetthilberg.copylasso.capture-history   -a archive-key-v1 2>/dev/null || true

tccutil reset ScreenCapture io.github.bennetthilberg.copylasso
05

Install the exact 0.3.0 candidate

Download through Safari so the private candidate receives genuine quarantine metadata.

Download in a new Safari Private Window

http://127.0.0.1:58455/CopyLasso-0.3.0.dmg
http://127.0.0.1:58455/CopyLasso-0.3.0.dmg.sha256

Verify the immutable candidate

cd "$HOME/Downloads"

xattr -p com.apple.quarantine CopyLasso-0.3.0.dmg   && echo QUARANTINE_PRESENT

shasum -a 256 CopyLasso-0.3.0.dmg
shasum -a 256 -c CopyLasso-0.3.0.dmg.sha256

spctl -a -vv -t open   --context context:primary-signature   CopyLasso-0.3.0.dmg
Required SHA-25696f07eff7719f6c5b4b819af846d9ac825e13d4959d6f45d14d19fffa943bb96
  1. Mount the DMG.
  2. Confirm the two-item layout.
  3. Drag CopyLasso into Applications.
APP=/Applications/CopyLasso.app

/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' "$APP/Contents/Info.plist"
/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' "$APP/Contents/Info.plist"
/usr/libexec/PlistBuddy -c 'Print :CFBundleVersion' "$APP/Contents/Info.plist"

lipo -archs "$APP/Contents/MacOS/CopyLasso"
codesign --verify --deep --strict --verbose=2 "$APP"
spctl -a -vv -t exec "$APP"

Expect production bundle ID, 0.3.0, build 6, both architectures, valid signature, and Gatekeeper acceptance.

06

Run the candidate feature matrix

Check each item once. Record anomalies even if a retry succeeds.

Onboarding and permission recovery

Recognition

Settings, feedback, and accessibility

Private capture history

security find-generic-password   -s io.github.bennetthilberg.copylasso.capture-history   -a archive-key-v1 >/dev/null 2>&1   && echo HISTORY_KEY_PRESENT || echo HISTORY_KEY_ABSENT

Before opting in, expect HISTORY_KEY_ABSENT.

Lifecycle and display behavior

07

Exercise the 0.2.2 → 0.3.0 update

Use the nonshipping old-source fixture; the update payload remains the untouched candidate.

  1. In Finder, open /Users/Shared.
  2. Copy CopyLasso-G55-Updater-Fixture.app into Applications.
  3. Rename it to CopyLasso.app if needed.
  4. Launch it and confirm About shows 0.2.2 (5).

Create recognizable retained state

Do not enable History yet. Public 0.2.2 did not have it.

Install through the updater

Verify the transition

08

Restore your normal account

Leave the disposable account available until the evidence has been recorded.

rm -rf /Applications/CopyLasso.app

mv   "$HOME/Library/Developer/CopyLasso/G55/main-app-staging/CopyLasso-0.2.2.app"   /Applications/CopyLasso.app

open /Applications/CopyLasso.app
Keep the disposable account for now. Delete it only after the G55 evidence has been accepted.
FINAL HANDOFF

Send one report when you finish.

Fill in PASS or FAIL, add anything unusual, and send the whole block back in the original Codex task.

G55 fresh-install qualification

Clean account preflight: PASS / FAIL
Public 0.2.2 checksum and Gatekeeper: PASS / FAIL
Public 0.2.2 onboarding and permission recovery: PASS / FAIL
Public 0.2.2 OCR and QR capture: PASS / FAIL

Candidate DMG SHA256 matched: YES / NO
Candidate signature, Gatekeeper, version 0.3.0 (6), Universal 2: PASS / FAIL
Candidate onboarding and permission recovery: PASS / FAIL
English OCR: PASS / FAIL
Additional-language OCR: PASS / FAIL
QR: PASS / FAIL
Code 128: PASS / FAIL
Data Matrix: PASS / FAIL
PDF417: PASS / FAIL
Aztec: PASS / FAIL
QR-over-text precedence: PASS / FAIL
No-result and Escape: PASS / FAIL
Sound enabled and disabled: PASS / FAIL
Rapid reuse and focus preservation: PASS / FAIL
Settings, About, keyboard, VoiceOver, appearance: PASS / FAIL
Launch at Login enable/disable: PASS / FAIL
History default-off: PASS / FAIL
History opt-in, persistence, copy, delete, clear, disable: PASS / FAIL
No screenshot persistence observed: PASS / FAIL
Multi-display clamping: PASS / FAIL

0.2.2 fixture offered 0.3.0: PASS / FAIL
Later did not install: PASS / FAIL
Download required separate install confirmation: PASS / FAIL
Install and relaunch reached 0.3.0 (6): PASS / FAIL
Existing preferences retained: PASS / FAIL
History remained off with no key/archive: PASS / FAIL
Offline updater failure did not affect capture: PASS / FAIL
No rollback to 0.2.2 offered: PASS / FAIL

Anything unusual:
- ...