Locks · lockfile
lockfile plugins
A plugin answers one yes/no question about one file, fixed in its signed manifest, about format, structure, integrity or rendering, never about what the content means or says. Plugins take no parameters: with one bit of output, a parameter would let the agent aim that bit at the content.
Official plugins live in lockfile-marketplace, whose signer is pinned in the binary. Its source holds 13 plugins:
| Plugin | Question |
|---|---|
file.non-empty |
Does the file contain at least one byte? |
format.is-pdf |
Does the file start like a PDF? |
pdf.parses |
Does the file parse as a PDF without errors? |
pdf.truncated |
Does the PDF look truncated? |
pdf.encrypted |
Is the PDF encrypted? |
pdf.has-blank-page |
Does the PDF have at least one page that paints nothing visible? |
pdf.all-pages-blank |
Does every page of the PDF paint nothing visible? |
pdf.fonts-not-embedded |
Does the PDF use at least one font that is not embedded? |
pdf.has-javascript |
Does the PDF contain JavaScript? |
pdf.has-incremental-update |
Was the PDF modified by at least one incremental update after its first save? |
pdf.has-non-a4-page |
Does the PDF have at least one page whose visible size is not A4? |
pdf.has-rotated-page |
Does the PDF have at least one page with a /Rotate other than 0? |
pdf.claims-pdfa |
Does the PDF declare PDF/A conformance in its XMP metadata? |
lockfile plugin install pdf.parses@1.0.0 # exact versions only; signatures checked with cosign
lockfile plugin update pdf.parses@1.1.0 # shows the manifest diff; a changed question needs the name typed
lockfile plugin list | verify [NAME] | remove NAME
lockfile marketplace add NAME --index URL --identity-regexp REGEXP
A running console applies a newly installed plugin after :review
(lox attach NAME). An unofficial marketplace needs its name typed when
added, is flagged on every approval screen and in every agent result, and is
never auto-approved.
If the official index cannot be downloaded, the plugin commands say that the official marketplace is unreachable or not published
and give its URL (https://davidgodefroid.github.io/lockfile-marketplace/index.json);
a scheduled workflow (official-index) checks every day that this index
answers and that its signature verifies.
Writing a plugin: see plugin-contract.md.