Skip to content

qmstrace impact

TL;DR

qmstrace impact ID… combines the downstream work affected by several starting items and shows their upstream origins. It prints a candidate Impacts: line for a change request. The analysis stops at this repo's edge. An unseen starting ID rejects the whole request.

Synopsis

Usage: qmstrace impact [OPTIONS] {ID…}

  Show the combined downstream items and upstream origins of several starting
  items.

  The Impacts line is a candidate for review, filtered by configured baseline
  types. It stops at this repo's edge. Any unseen starting ID rejects the whole
  request.

Arguments:
  ID…  One or more item IDs visible to this run.  [required]

Options:
  -C PATH  Run as if qmstrace had been started in PATH, as with git -C. Before
           or after the command.
  --help   Show this message and exit.

Supply one or more IDs visible to the run: requirements, design elements, module paths, test node IDs, external clauses or sibling items. Repeated IDs and argument order do not change the output. -C works before or after the command.

Output

Two requirements in the miniature service share downstream work. Each downstream item appears once, grouped by its configured type. Origins are those of the starting items, not of every item reached downstream:

impact — working-tree analysis, this repo only

starting items:
  REQ-SVC-01 — A call carries a key · requirement · docs/req/service-srs.md:12
  REQ-SVC-02 — Records survive a restart · requirement · docs/req/service-srs.md:21
  baselines: judged from reachable local tags — remote-tag completeness NOT VERIFIED; qmstrace never fetches
  baselines: no matching reachable local tag — nothing frozen locally
  change requests: NOT VERIFIED — ../ledger/change-requests is unavailable; fresh citations are verified at the ledger's import

downstream — grouped by item type:
  design element (2):
    DSN-SVC-01 — Key check · design element · docs/design/service-design.md:8
    DSN-SVC-02 — Record store · design element · docs/design/service-design.md:13 · also Assumes DSN-SVC-01
  component (2):
    src/service/keys.py · component
    src/service/store.py · component
  automated test (4):
    tests/integration/test_store.py::test_a_record_survives_a_restart · automated test, integration · also verifies DSN-SVC-02
    tests/integration/test_store.py::test_a_restart_loses_no_accepted_record · automated test, integration
    tests/unit/test_keys.py::TestTheKeyCheck::test_it_runs_before_any_handler · automated test, unit
    tests/unit/test_keys.py::test_a_call_without_a_valid_key_is_refused · automated test, unit

upstream origins — of the starting items:
  AGR-1 · origin clause, in the agreement
  AGR-2 · origin clause, in the agreement
  AGR-3 · origin clause, in the agreement

candidate for review — configured baseline types, not a claim of edits or frozen state:
Impacts: DSN-SVC-01, DSN-SVC-02, REQ-SVC-01, REQ-SVC-02

starts: 2 · downstream: 2 design elements, 2 components, 4 automated tests · upstream origins: 3 — this repo only

Assumes carries impact forward through further items. Backward, it does not establish ancestry: an assumed item's origins appear only if an ordinary path also reaches them.

The candidate line contains starting and downstream items whose types are covered by a configured baseline. It is sorted and deduplicated. Upstream origins are context, not added to this line. A starting origin can qualify only if its type is itself covered.

The line proposes items to review; it does not claim they all need edits or are frozen. The shared assessment reads baseline evidence and change requests, but candidate membership still depends on configured types, not frozen state. An accepted request's reservation is reported for an unseen start; it does not establish that item's type or links. When no known item type qualifies, the command explains why it emits no candidate line.

Repository boundary

A sibling's item is read from its working tree, not pinned. Only links authored in the current repo are traversed; the sibling's own ancestry and downstream work are not scanned:

impact — working-tree analysis, this repo only

starting items:
  REQ-SVC-01 — A call carries a key · requirement, in sibling service — not pinned · ../service/docs/req/service-srs.md:12
  baselines: judged from reachable local tags — remote-tag completeness NOT VERIFIED; qmstrace never fetches
  baselines: no matching reachable local tag — nothing frozen locally
  change requests: NOT VERIFIED — ../ledger/change-requests is unavailable; fresh citations are verified at the ledger's import
  sibling ancestry and downstream links there are not scanned

downstream — grouped by item type:
  automated test (1):
    tests/unit/test_api.py::test_the_service_refuses_a_call_without_a_key · automated test, unit

upstream origins — of the starting items:
  no upstream origins reached here

candidate for review — configured baseline types, not a claim of edits or frozen state:
Impacts: REQ-SVC-01

starts: 1 · downstream: 1 automated test · upstream origins: 0 — this repo only

In a pipeline a cited sibling ID can remain visible even when its source is unavailable. Its type is unknown and it is omitted from the candidate line, explicitly:

impact — working-tree analysis, this repo only

starting items:
  REQ-SVC-01 · not verified here — judged at the ledger's import
  external AGR-*: NOT VERIFIED — ../ledger/agreement.md is not reachable; each cited AGR-N is judged at the ledger's import
  sibling service: NOT REACHABLE at ../service
  baselines: judged from reachable local tags — remote-tag completeness NOT VERIFIED; qmstrace never fetches
  baselines: no matching reachable local tag — nothing frozen locally
  change requests: NOT VERIFIED — ../ledger/change-requests is unavailable; fresh citations are verified at the ledger's import

downstream — grouped by item type:
  automated test (1):
    tests/unit/test_api.py::test_the_service_refuses_a_call_without_a_key · automated test, unit

upstream origins — of the starting items:
  no upstream origins reached here

candidate for review — configured baseline types, not a claim of edits or frozen state:
  unknown type, omitted from the candidate: REQ-SVC-01
  no candidate line — no items with a known type covered by a baseline

starts: 1 · downstream: 1 automated test · upstream origins: 0 — this repo only

Unread sources, unverified citations and violations that exclude links remain visible. This is a working-tree analysis within one repo, not a project-wide analysis at pins.

Exit codes

0 means the requested walk was produced, including its limitations; gaps and violations do not turn this informational command into a gate. Use check to judge the repo.

2 means usage, configuration or unseen starting IDs prevented the request. If even one starting ID is unseen, the entire request is refused: no partial listing and no Impacts: line. The diagnostic lists every unseen ID, nearby matches and source limitations. An unseen ID is never presumed reserved by a change request.

3 means an internal error. See Exit codes.

For the authoring steps, see Write an impact list.