One team worked it out.
Nobody else can reach it.
A team writes a security review that knows your ORM. Another works out how a model should handle your migrations. Today that work stays in the repository where somebody wrote it.
A pack is that work, installable. Installing one does not switch it on.
installed packs (offered, not in force — bind one in
.lockstep/lockstep.py)
acme-review-prompts prompt 1.0.0 imports: none
A security lens that knows about our ORM, and a
guardrail about migrations
The pack that ships in this repository, installed into a throwaway
environment. imports: none was derived by walking the AST of every file the
distribution ships, without importing one of them.
Two ways a thing arrives.
Organization standards and extension packs use two different entry point groups, and they behave in opposite ways on arrival, for a reason worth stating out loud.
The asymmetry is the point. A standards package may only tighten: lower a turn limit, deny a tool, force input scanning on. The worst it can do is refuse something, so applying it on arrival is safe and the real risk is the repository that never installed it.
An extension pack is the opposite risk. It hands a model write and execute tools, and it
spends money. So detect() does not query the extensions group at all, and a
test asserts that directly rather than inferring it from an empty container.
Installed, accepted, and still not running.
Drawn: how a pack is resolved. The pack from the panel above is installed here, and the record accepting it is written. This is the container that would actually run.
bindings Fix -> DiagnoseThenFix (singleton, explicit) Implement -> TDD (singleton, explicit) Test -> PytestTest (singleton, explicit) Validate -> RuffValidate (singleton, explicit) prompts (what each AI binding composes; * = not the shipped prompt) TDD implement/oneshot implement/tdd guardrails: baseline, implement/implementing standards (in_lockstep.standards entry points; applied before this module's own lines) (none installed)
Every binding, every prompt composed, the merged policy floor, the model routed to each verb. The full listing also prints, under each deterministic binding, which tool it resolved and where. There is no line for the pack, and no section it would appear in.
A pack writes into the same band of the resolution order your own
lockstep.py writes into, and nowhere else. Nothing lets a third party land
there on its own, and listing one runs no code it ships: everything printed comes from
distribution metadata rather than from importing the package to ask.
It is also the good failure mode. A pack installed and never bound does nothing at all, and its absence from this listing is how you find that out, which beats a binding nobody noticed arriving.
Publishing one is publishing a package.
A pack is an ordinary Python distribution holding prompts, a strategy or a verb. One entry point makes it discoverable. There is nothing else to sign up for.
[project] name = "acme-review-prompts" version = "1.0.0" dependencies = ["in-lockstep"] [project.entry-points."in_lockstep.extensions"] acme-review-prompts = "acme_review_prompts"
Discovery is all the entry point does. Publish the distribution wherever you already publish packages, your company's index or the public one.
[pack] kind = "prompt" summary = "A security lens that knows about our ORM, and a guardrail about migrations"
An unknown key is refused rather than ignored. The moment this file can carry a binding, a policy or a model route, it has become the second configuration surface this framework does not have. The kind is cross-checked against what the receipt derives, so a pack calling itself prose while shipping a strategy says so.
Check it before you trust it.
Three commands. None needs a key, none touches the network, none spends anything. Each reads the code you downloaded rather than the description its author wrote.
pack acme-review-prompts 1.0.0
distribution acme-review-prompts module acme_review_prompts
kind prompt
summary A security lens that knows about our ORM, and a
guardrail about migrations
imports none (nothing importable — every module is a
docstring, so installing it runs nothing)
offers
(nothing importable to offer — resources only)
evidence
corpus 2 case(s) in corpus — 2 with checks a machine
settles, 2 needing a judge
cassettes 0 — nothing replays offline
digest sha256:03208834909cadc0bbdde0dcebfb4fb7eac04d0bcbd3a0f4e19c4725c67dfb45
Capabilities off the bound object, the projection off the composed
prompt, imports off an AST walk. Nothing here is a claim the author
typed. The module is imported afterwards, and only once the tool has said there
is something to import.
config local working tree acme-review-prompts ships no cassette, so there is nothing to replay and nothing to measure. That is a fact about the pack rather than a fault in it: somebody has to spend real money once, recording what a model actually said, before everyone after them can measure it for nothing. `in-lockstep pack try acme-review-prompts --record`
Everything else can be checked and none of it says whether the pack is
any good. That answer is a rate on your own cases, so
--corpus ./our-cases counts yours apart from the pack's own. When nothing was
decided there is no rate, and the output names the absence rather than printing a zero.
NOT PINNED acme-review-prompts is not fixed to a version
here, so this receipt describes code that may not
be the code installed next time.
`uv add acme-review-prompts`.
recorded .lockstep/packs/acme-review-prompts.json
commit it: the record IS the acknowledgement, and
doctor reads it.
paste into .lockstep/lockstep.py:
from in_lockstep.packs import pack
acme_review_prompts = pack('acme-review-prompts')
until you do, nothing changes: `in-lockstep ls` will not mention
acme-review-prompts.
The last line is the whole safety model in one sentence, printed by the tool. Installing offered it. Pasting is what accepts it.
add writes no bytes to .lockstep/lockstep.py under any
combination of flags, and there is no flag that turns that off. That file can rebind any
adapter, remove any middleware and grant any tool, and it loads from a trusted ref
precisely because every line in it was typed by a person.
It does not install anything either. A framework that ran the installer would be deciding what you trust rather than telling you what you are trusting. What it writes is the receipt, and that file is what the next section compares against.
What an upgrade has to say out loud.
A pack you accepted a year ago can be widened by a dependency bump nobody read closely. Three checks re-derive the receipt from the code that is installed now and compare it with the record you committed.
| Check | What it says | Verdict |
|---|---|---|
| DOC170 | this pack may now do more than the repository accepted | fails |
| DOC171 | a bound prompt no longer opens with the shipped guardrail baseline | warns |
| DOC172 | a pack is installed but not pinned | warns |
Only DOC170 is an error, and the line it draws is agency. A
capability the pack did not hold before is refused until --accept says
otherwise, and a refusal records nothing, so a repository cannot end up having accepted
what it declined. A version or a new prompt is recorded without a flag: refusing over
those would teach people to pass --accept by reflex.
WARNING DOC172 pack 'acme-review-prompts' is
installed but not pinned
A receipt describes the code installed
now; a pin is what makes that the code
installed next time. Without one,
capabilities were accepted for a range.
Run here with the worked example accepted. DOC171 reads
the bound adapters rather than the installed packs, because what
matters is the prompt a run would really send.
The registry is a file in a git repository.
A catalog is a static index.toml listing packs and pointing at
receipts committed beside them. No service, no accounts, no ranking anyone has to
defend.
Registering one writes .lockstep/market.toml, and you commit
it, because a catalog decides where this repository looks for code.
An entry points at a receipt derived by pack describe, so a listing records
what the author's code did rather than what the author wrote. add re-derives
it locally and refuses a pack holding more than the catalog published, outright rather
than behind a flag: that is a listing that does not describe the code.
A listing you can check beats a listing you have to trust.
Nothing reads it during a run. A repository that installed a pack runs identically to one that copied the same class in by hand, which is what keeps a strategy from ever becoming a name untrusted input could reach.
Where this actually is
- No pack has been installed from a real index. The worked example is exercised by tests, and no catalog has been published at a real URL. The first person to publish one will find things these tests cannot.
- The worked example cannot be measured. It ships prose and two corpus cases and no recording. Fabricating a model exchange to turn that lint green would invent the one kind of evidence this project exists to refuse to invent.
pack trydrives one verb.reviewonly: a single model turn with the diff in the prompt, which is exactly what a cassette replays.
acme-review-prompts prompt FAILS
missing: at least one cassette, so
measuring costs nothing
1 entr(y/ies), 1 failing the criteria this catalog states
This project's catalog fails its own criteria, on purpose. Four checks
run off the receipt: a receipt at all, imports: none for a prompt pack, a
corpus so it can be measured, a cassette so measuring costs nothing.
Meeting them says nothing about whether the code is good.
config local working tree
Error: 'http://raw.example/acme/index.toml' is not an https
URL. A catalog says what code to install, so it is fetched over
a channel that cannot be rewritten in transit.
Refused before anything is written. Over plain http, a catalog's description of a pack is whatever the network says it is, and the receipt comparison would be checking an attacker's document.
Read a real one before you write yours.
Both ship in this repository, and every command on this page was run
against them. With no name, pack describe turns the same receipt on your own
project: what it binds, what that may do, and what proves it.
$ in-lockstep pack describe
The worked pack
Markdown, two corpus cases, and one module holding a docstring. The cheapest kind of pack there is.
The worked catalog
An index.toml, the receipts it points at, and a README saying why it fails
its own criteria today.
Rules that only tighten
The other entry point group: standards that apply themselves on install, because all they can do is constrain.