goldspec

Is what we wrote down still coherent?

New here? Write your first chapter — one worked process, part by part, in about twenty minutes.

A specification nothing checks rots, and the rot is silent.

$ goldspec spec
3 fault(s) in spec
  chapter-04-mutation.md: ch4-7 is declared twice
  chapter-02-manifest.md: ch2-9 is declared and never placed in a flow
  chapter-06-support.md: ch6-U2 is in the diagram and not in Open unknowns

Every check is a pure source scan — no build, no network, nothing rendered — which is what makes it cheap enough to actually run, and the only reason a gate ever is.

This is alpha software, pre-1.0 and published for trusted testers. It is versioned independently of Plumb: this version number says nothing about that one. Interfaces may change between versions without notice, and there is no support commitment.

Install

Two forms ship, and which one you want depends on how you intend to run the gates. Both are listed in the same SHA256SUMS and covered by the same signature.

The command — to check a spec by hand

curl -fsSL https://plumbspec.org/gold/install.sh | sh
goldspec <spec-directory>      # defaults to ./spec
goldspec spec --sibling ../other/spec   # when the corpus spans repositories

Use this while you are authoring, or to check a spec before anything is wired up. It verifies the checksum and the signature as it installs, and it needs no project of yours to be a Python one.

The library — to run the gates as tests in your own suite

pip install https://plumbspec.org/gold/latest/goldspec-0.1.1-py3-none-any.whl

This is the form the method is actually delivered in. The gates are tests, so that Plumb observes a test that ran and passed exactly as it observes any other and never learns it was a methodology gate — and a test has to import. It is also the only form that takes conventions other than ours: the command builds them from its own defaults, so a project whose ids are not ch* reaches the gate through a test.

from goldspec.specgate import Conventions, check_spec_directory

def test_the_spec_holds_together():
    report = check_spec_directory(
        SPEC, Conventions(namespace="app", flow_dir="diagrams"), cited_from=REPO)
    assert report.problems == []

To verify the wheel before installing it, fetch it beside SHA256SUMS and SHA256SUMS.asc from the same version directory and check them as you would the command — the library is not the one file you have to trust unchecked.

An unqualified install takes stable — what we run, and what a defect report is taken against. GOLDSPEC_VERSION=edge takes the candidate channel instead, and a version number pins that exact cut. Add GOLDSPEC_REQUIRE_SIGNATURE=1 to refuse the install unless the signature verifies.

Nothing is written into your project. goldspec holds no configuration, has no init, and reads a spec directory you wrote — so there is nothing to undo if you stop using it.

What it checks

This is not Plumb, and Plumb does not need it

Plumb observes a test run and derives whether a requirement is proven. It has no opinion about how you plan, what you call a requirement, or whether you keep a specification at all — a project with nothing but citations in its test suite gets a complete, correct board. It cannot read a spec, and that is deliberate: to check one, a tool must first decide what a story is and where it lives, which is choosing your method for you.

goldspec is that method, offered separately so that adopting it is a choice you make rather than a condition of using the tool. The two answer different questions and neither is a tier of the other. Nothing under Plumb's src/ may import this package, and a test in its suite fails the build if one ever does.

The conventions it presumes

A subject is declared by its row in a chapter's trace table — the id and what it claims, in one row — so a spec is markdown a person reads rather than modules a runner has to collect. That is what makes it sayable in a project with no Python in it. Process flows with IPO, data definitions, decisions and open unknowns are the rest of the shape.

Adopt these and the checks are yours, not something imposed. Adopt Plumb alone and nothing will ever ask you for any of it.