← QuarryFi R&D TrackerCONTENT HISTORY

Update to QuarryFi R&D Tracker

Snapshot Sep 30, 2026 · 23:14 UTC · version 0.4.7

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "quarryfi-update",
  "description": "Refresh the local QuarryFi plugin install from GitHub",
  "included_files": [],
  "skill_md_contents": "---\nname: quarryfi-update\ndescription: Refresh the local QuarryFi plugin install from GitHub\n---\n\nRefresh the local QuarryFi time tracking plugin install by pulling the latest changes from GitHub into the folder Codex is currently using.\n\n## Safety invariant\n\nThe local plugin checkout must not change during ordinary Codex use. Runtime hooks, status checks, and background heartbeats may write only to `~/.quarryfi/`. This update skill is the only sanctioned workflow that changes files under the plugin directory, and it should make that explicit in its response.\n\nKeep three locations distinct:\n\n- Upstream development repo: where maintainers author, commit, and push product changes to GitHub.\n- Local install source: the clone referenced by the Codex marketplace; this is what the updater may fast-forward.\n- Codex runtime cache: `~/.codex/plugins/cache/...`; Codex owns this copy. Never run `git pull`, `git reset`, or repair commands inside the cache.\n\n## What to do\n\n1. Find the plugin installation directory. Check these locations in order:\n   - `~/plugins/quarryfi-time-tracker` (home-local install)\n   - Marketplace source paths in `~/.agents/plugins/marketplace.json` and `<repo>/.agents/plugins/marketplace.json`, resolving relative `source.path` entries from the marketplace file's parent directory\n   - Search for a directory containing `.codex-plugin/plugin.json` with `\"name\": \"quarryfi-time-tracker\"` under `~/plugins/`, `~/.codex/plugins/` excluding `~/.codex/plugins/cache/`, or the current repo's `plugins/` directory\n   - If the only discovered copy is under `~/.codex/plugins/cache/`, do not update it. Tell the user:\n     ```\n     Found only Codex's runtime cache copy of quarryfi-time-tracker.\n     The updater must run against the marketplace source clone, not the cache.\n     Reinstall or restore the local source clone, then run the update again.\n     ```\n\n2. If the plugin directory is not found, tell the user:\n   ```\n   Could not find the quarryfi-time-tracker plugin.\n   Install it first: https://github.com/quarryFi/codex-plugin#install\n   ```\n\n3. Check for updates:\n   ```bash\n   cd <plugin-dir>\n   git fetch origin main 2>/dev/null\n   LOCAL=$(git rev-parse HEAD)\n   REMOTE=$(git rev-parse origin/main)\n   STATUS=$(git status --short)\n   ```\n\n4. Before pulling, protect against dirty or half-updated checkouts:\n   - If `$STATUS` is non-empty and `git diff --quiet origin/main` succeeds, the files on disk already match the remote but git metadata is stale. Tell the user:\n     ```\n     QuarryFi plugin files already match GitHub, but the local git branch is stale.\n     This indicates an out-of-band file sync or interrupted update.\n     Repairing git metadata only; file contents will not change.\n     ```\n     Then run:\n     ```bash\n     git reset --mixed origin/main\n     ```\n     After that, recompute `LOCAL`, `REMOTE`, and `STATUS`.\n   - If `$STATUS` is non-empty and the worktree does not match `origin/main`, do not pull and do not stash automatically. Show `git status --short` and tell the user:\n     ```\n     QuarryFi plugin update blocked because the plugin checkout has local edits.\n     Review or stash those edits, then run the update again.\n     ```\n     If they want to preserve those edits, suggest:\n     ```bash\n     cd <plugin-dir>\n     git stash push -m quarryfi-plugin-local-edits\n     git pull --ff-only origin main\n     git stash pop\n     ```\n\n5. If `$LOCAL` equals `$REMOTE` and `$STATUS` is empty, tell the user:\n   ```\n   QuarryFi plugin is already up to date (version X.Y.Z).\n   ```\n   Read the version from `.codex-plugin/plugin.json`.\n\n6. If there are updates available, show what's changed:\n   ```bash\n   git log --oneline HEAD..origin/main\n   ```\n\n7. Pull the update with fast-forward only:\n   ```bash\n   git pull --ff-only origin main\n   ```\n\n8. Read the new version from `.codex-plugin/plugin.json` and show:\n   ```\n   ✓ QuarryFi plugin updated to vX.Y.Z\n\n   Restart the Codex App to load the new version.\n   ```\n\n9. Be explicit that this updates the local plugin folder on disk. The current Codex session may still be running the previously cached copy until restart.\n\n10. Suggest verifying with `quarryfi-status` after restart so the user can confirm:\n   - the installed version\n   - the latest local audit timestamp\n   - whether a hook has fired in the new session\n\n11. If `git pull --ff-only` fails, do not try a merge. Report the failure and show the user the current `git status --short`.\n\n## Error handling\n\n- If the directory exists but is not a git repo, tell the user to re-clone.\n- If there's no network, say the update check failed and to try again later.\n- Never delete or overwrite the user's `~/.quarryfi/config.json` — that's separate from the plugin code.\n- Be explicit that this updates the local plugin folder on disk; the current Codex session still needs a restart before the new version is active.\n"
}

SHA-256: 55643f7c3ccd467b22ddbe7bf89af3995dfd4f349cd0c5e6c0a459677e5c836d