Files#

odx.lock#

The resolved commit of every merge and package, written only by odx and always in the same layout, so locking twice without upstream changes gives a byte-identical file. Commit it.

# Generated by odx. Do not edit.
version = 1

[odoo]
url = "https://github.com/OCA/OCB.git"
rev = "<commit>"

[[repositories]]
name = "pos"
url = "https://github.com/OCA/pos.git"
base = "17.0"
base_sha = "<commit>"
result_tree = "<tree>"

[[repositories.merges]]
source = { pr = 123 }          # the configured merge: pr, sha, or branch (+ remote)
sha = "<commit>"
tree = "<tree>"
patch_id = "<patch id>"
mirror_ref = "refs/odx/<commit>"
status = "pinned"              # merged | skipped | pinned
upstream_head = "<commit>"     # a newer head that was not adopted
upstream_head_ci = "red"       # green | red | pending | unknown
upstream_head_classification = "base-also-failing"   # red | base-also-failing | other-addon
pinned_since = "2026-10-12"

[packages.odoo-addon-pos-vouchers]
group = "oca_unmerged"
url = "https://github.com/OCA/pos.git"
source = { pr = 45 }
subdirectory = "pos_vouchers"
sha = "<commit>"

Repositories are sorted by name, merges keep the configured order, packages are sorted by name. A lockfile written by a newer odx is refused with a request to upgrade; an older format is refused with a request to run odx lock --migrate. odx drop removes the dropped merge or package from the lockfile as well.

.odx/mutes.toml#

Project decisions about upstream suggestions. Every mute needs a kind and a free-text reason; a deferred mute also needs an expiry date or a re-check trigger.

[[mute]]
match = "OCA/pos#789"              # or "OCA/pos@<commit>"
patch_ids = ["<patch id>"]
kind = "not-wanted"                # not-applicable | not-needed | superseded | already-present | declined | not-wanted | deferred
reason = "We do not use the loyalty program"
expires = "2027-01-01"
recheck = "never"                  # target-code-change | never
environments = ["test"]            # empty: every environment
muted_by = "developer@example.com"
muted_at = "2026-10-12"