3.4 KiB
name, description
| name | description |
|---|---|
| live-checkout-landing-chain | Prove whether a merged change is actually deployed in ~/.omp: walk origin/main vs the checked-out main commit vs the worktree, then fast-forward in place — git refuses fetch into a checked-out branch, and a running harness caches its config. |
When to use
The user says a merged/committed change is "not there" (/switch can't see a model, a doc is missing, a config edit is invisible) while the repo work itself is green. In a repo where the checkout is the deployment (dank/command-center at ~/.omp), "merged" and "deployed" are different commits — measure both before believing either claim.
The ladder — read all four levels, in order, before answering
cd ~/.omp && git rev-parse HEAD origin/main # 1+2: deployment vs forge
git ls-tree --name-only HEAD # is the file even in HEAD?
git worktree list # 3: which worktree am I in vs main?
origin/main— the forge truth (gh/teaabsent; Gitea API or a fetch)./home/blank/.ompHEAD — what the running agent actually reads. Merged PR at3eb1adawhile this sat at53025a6is the whole bug.- The feature/session worktree — where the edit was authored; its files can be correct while main is stale, which is why the author sees the change and the user does not.
- The running process —
models.yml/config.ymlare read at startup and cached for the process lifetime; an open session needs a restart even after level 2 is correct.
Belt-and-braces when the answer hinges on file contents, not just commit ids: parse the live file (python3 -c "import yaml; ..." for agent/models.yml, or grep the doc) rather than inferring from git log.
Landing main without touching the tree
git fetch origin main:main fails: fatal: refusing to fetch into branch 'refs/heads/main' checked out at '/home/blank/.omp'. The fetch-into-ref trick only works for branches that are not checked out anywhere.
For a checked-out main, prove then fast-forward:
git merge-base --is-ancestor main origin/main && echo "ff possible"
git merge --ff-only origin/main # no rebase — Frank dislikes history rewrites
--ff-only is the safe verb on a dirty main checkout: tracked-file commits (the live-sync tier) and runtime dirt (agent/memories/*/state.json, dotfiles/**) survive untouched, and it cannot rewrite history. Confirm the dirt is still there afterwards — if it vanished, something else clobbered the tree.
The heartbeat is not instant
scripts/live-sync.sh (systemd user timer, hourly) is what normally advances main. Check its cadence rather than assuming it ran:
systemctl --user status live-sync.timer --no-pager # "Trigger: …" = next beat
systemctl --user status live-sync.service --no-pager # "since …" = last run
A merge made minutes after the last beat waits until the next one; fast-forwarding by hand is legitimate (idempotent with the script) and is the answer when the user wants it now. Never --no-verify, never force-push.
Do not confuse with
omp-worktree-path-gotchas— edits landing in the wrong worktree (cwd drift), not a stale main.dotfiles-deployment-truth-audit— classifies which files are tracked vs runtime state.serverappconfigs-vault-page-registration/gitea-merge-form-encoded— the PR mechanics upstream of this question.