Live-sync tools: prune files outside packaging/files.json (dry run first) #11

Merged
claude merged 2 commits from oss-oo/live-sync-prune into main 2026-10-28 03:19:38 +00:00
Member

Owner request (Claudiu, 2026-10-28): the family port of cinnamon-z-usage #27. The live sync removes files in the applet folder that packaging/files.json does not name, always after a dry run.

The live-sync skill is station-wide (~/.codex/skills and ~/.zcode/skills), so its tools come from this repository, versioned with the payload and tested by make check:

  • scripts/live-sync/prune_unmanaged.py (the same tool as z-usage, reviewed there in three rounds): dry run with a one-shot plan (15 minutes, each entry bound to inode, size and mtime); --apply removes only planned entries that are still unmanaged and unchanged. Only inside a real applets/<uuid> folder; never follows a symlink (removal via directory handles with O_NOFOLLOW).
  • scripts/live-sync/audit_deployment.py: manifest files byte-identical, no symlink, EXTRA (fails) and CACHE (tolerated) entries.
  • tests/test_live_sync_tools.py: the 27 tests of the z-usage tool. AGENTS.md names the new sync steps.

install.sh and scripts/package.py are unchanged: the payload and install.zip stay as released (no release needed). The station skills (both layers) follow after the merge.

🤖 Generated with Claude Code

Owner request (Claudiu, 2026-10-28): the family port of [cinnamon-z-usage #27](https://oss-oo.io/OSS-Singularity/cinnamon-z-usage/pulls/27). The live sync removes files in the applet folder that `packaging/files.json` does not name, always after a dry run. The live-sync skill is station-wide (`~/.codex/skills` and `~/.zcode/skills`), so its tools come from this repository, versioned with the payload and tested by `make check`: - `scripts/live-sync/prune_unmanaged.py` (the same tool as z-usage, reviewed there in three rounds): dry run with a one-shot plan (15 minutes, each entry bound to inode, size and mtime); `--apply` removes only planned entries that are still unmanaged and unchanged. Only inside a real `applets/<uuid>` folder; never follows a symlink (removal via directory handles with `O_NOFOLLOW`). - `scripts/live-sync/audit_deployment.py`: manifest files byte-identical, no symlink, `EXTRA` (fails) and `CACHE` (tolerated) entries. - `tests/test_live_sync_tools.py`: the 27 tests of the z-usage tool. `AGENTS.md` names the new sync steps. `install.sh` and `scripts/package.py` are unchanged: the payload and `install.zip` stay as released (no release needed). The station skills (both layers) follow after the merge. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude agent added 1 commit 2026-10-28 02:48:41 +00:00
Live-sync tools: prune files outside packaging/files.json (dry run first)
All checks were successful
Checks / Functional checks (pull_request) Successful in 42s
b1e1751c0a
Owner request (2026-10-28), the family port of cinnamon-z-usage #27. The
station-wide skill cinnamon-chatgpt-usage-live-sync gets its tools from
this repository, so they are versioned with the payload and tested by
make check:

- scripts/live-sync/prune_unmanaged.py (the same tool as z-usage): the
  dry run lists every entry the manifest does not name (__pycache__
  included) and writes a one-shot plan (15 minutes, each entry bound to
  inode, size and mtime); --apply removes only planned entries that are
  still unmanaged and unchanged. Only inside a real applets/<uuid>
  folder (no symlink at or above it, no git checkout, no overlap with the
  project, no symlinked managed path); removal walks directory handles
  with O_NOFOLLOW.
- scripts/live-sync/audit_deployment.py: every manifest file
  byte-identical, no symlink, EXTRA (fails) and CACHE (tolerated)
  entries; after a sync EXPECTED=25 VALID=25 SYMLINKS=0 MISMATCHES=0
  EXTRA=0 CACHE=0.
- tests/test_live_sync_tools.py: the 27 tests of the z-usage tool.
- AGENTS.md names the new sync steps.

install.sh and scripts/package.py are unchanged, so the payload and
install.zip stay as released.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent added 1 commit 2026-10-28 03:13:04 +00:00
Review round 1 (#11): defaults from the own checkout; neutral test name
All checks were successful
Checks / Functional checks (pull_request) Successful in 42s
a374445535
- The audit's defaults are this checkout and ~/.local/share: the
  canonical checkout follows the frozen mirror (1.0.7, no
  scripts/live-sync) and gave false mismatches against the live 1.1.0.
- The test's planted leftover is icons/retired-artwork.svg: this repo
  ships icons/chat-bubble.svg.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent merged commit 6cf187c236 into main 2026-10-28 03:19:38 +00:00
claude agent deleted branch oss-oo/live-sync-prune 2026-10-28 03:19:38 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
OSS-Singularity/cinnamon-chatgpt-usage!11
No description provided.