def lockable
import ezx@1.11.0.0/src/lock/plan.bend as Planimport Base
import ezx@1.11.0.0/src/lock/lock.bend as L
import ezx@1.11.0.0/src/ledger/manifest.bend as M
421# whether a lock can be written so that it reads back: every hash is written
422# once, no hash, key or value holds `"`, `\` or a newline, and no file path
423# holds `=` (eztoml#24, above). The planner
424# refuses a lock that is not, so every lock ez writes is one of these.
425def lockable(ps: List<&2, L.Pack>, ts: List<&2, M.Tool>, hub: String) -> Bool:
426 Bool.and(clean(hub), Bool.and(packs.ok(ps), tools.ok(ts)))