Skip to content

Check the whole project

TL;DR

In the ledger repo, run qmstrace ledger check. It reads every repo the schema lists under [repos] — from the folders beside the ledger — and judges them as one project. qmstrace ledger check --strict is the ledger's gate. A repo it cannot read stops it, with exit 2.

Steps

  1. List every repo of the project under [repos] in the ledger's qmstrace.schema.toml, each as a name and a path from the ledger. If the ledger holds the requirements and the design, list it too, as ledger = ".", and give it a qmstrace.toml of its own — see configuration.

  2. Put every repo where [repos] says, beside the ledger. In a pipeline, check each one out at that path: a repo that is not there stops the check rather than passing unread.

  3. Give every product repo the ledger's rules, in the ledger:

    qmstrace ledger copy-schema
    

    A repo holding other rules than the ledger's schema — an older copy, say — is refused by the check, and named. See share the project's schema.

  4. Run the check, in the ledger:

    qmstrace ledger check
    
    read — each repo's working tree, not pinned:
      client   ../client   1 component · 2 automated tests
      ledger   .           3 requirements · 3 design elements
      service  ../service  2 components · 2 automated tests
      external AGR-*: verified against agreement.md (3 declared)
      controlled document items: 0 frozen · 0 changed · 0 new · 0 removed · 0 withdrawn
      baselines: judged from each repo's reachable local tags — remote-tag completeness NOT VERIFIED; qmstrace never fetches
      baselines in ledger: no matching reachable local tag — nothing frozen
      change requests: change-requests (1 readable; 0 malformed) — working tree, not pinned
    
    result: 0 violations, 0 gaps in 13 items across 3 repos · 0 suspects (informational) · exit 0 · authoring: gaps do not fail — the gate is qmstrace ledger check --strict · working trees, not pinned · controlled document items: 0 frozen · 0 changed · 0 new · 0 removed · 0 withdrawn · remote-tag completeness NOT VERIFIED
    

    The header lists every repo read. If the command stops with exit 2, deal with each repo it names, then run it again.

  5. Work through the findings. A violation's location names the repo it is in (../client/…); fix it there. A gap's next move names the repos where the missing link can be written. A suspect in another repo than the changed item is reached by today's links only — review it as any suspect: review downstream suspects. To see what hangs off an item across every repo, qmstrace ledger thread ID.

  6. Gate the ledger on the strict form, in its pipeline:

    qmstrace ledger check --strict
    

    Each product repo keeps its own gate, qmstrace check --strict, in its own pipeline.

What each part of the output means, and every refusal: the ledger reference. Why the check reads working trees and what is left to the pinned import: Around the repo.