Skip to main content

throughline-ratify

A full-screen, htop-style terminal cockpit for working through the throughline requirement items that await human ratification — one item at a time, with colour and glyphs carrying the semantic weight so your eye lands on the actionable rows first.

It is compose-aware: on a tl-compose project it grounds each item over the composed union, so an item whose grounding chain reaches a root only through a borrowed source counts as grounded — never orphaned. Writes only ever land on your own consumer registers; a composed source stays read-only.

 throughline-ratify │ my-service                               composed │ 2 source(s)
 queue: ● 3 proposed  ◉ 2 ready  ○ 0 blocked  ⚠ 1 ungrounded  ⚑ 0 ambiguous   (6 shown)
 ▸ ● SR-0007  Rate-limit the login endpoint    │ ● SR-0007  system_requirement
   ◉ SR-0008  Store audit events append-only   │   status: proposed
   ⚠ SR-0011  Redact PII from logs             │
                                               │   ✓ ready to ratify (proposed → ratified)
                                               │   grounded: ✓   ambiguous: no
                                               │   links
                                               │     derives_from → asvs:V7.1.1  "..."
 j/k:move  r/↵:ratify  x:reject  a:all  /:filter  R:reload  ?:help  q:quit

Install

pipx install throughline-ratify

This pulls in throughline-compose (and, transitively, the throughline core), so the tl and tl-compose CLIs come along too.

Use

From anywhere inside a throughline project (it walks up to find throughline.toml):

tl-ratify                    # open the cockpit
tl-ratify -C path/to/project # point at a specific project
tl-ratify --by alice         # record a specific ratifier on sign-off
tl-ratify --list             # print the worklist (no TUI) — good for CI/pipelines
tl-ratify --list --all       # widen: also show ratified and dead (rejected/tombstoned) items

Keys

Key Action
j / ↓, k / ↑ move
g / G, PgUp / PgDn jump / page
r / Enter ratify the selected item (with confirm); on an item that overshot ratification, record the missed sign-off via a route the project's transitions permit
x reject (invalidate) the selected item, cascading suspect to dependents
a toggle the wide view — also show already-ratified and dead (rejected/tombstoned) items
/ filter by uid or title
R reload the graph from disk
? help
q quit

Concerns

Every row is classified by the one thing you most need to know about it:

Glyph Concern Meaning
● proposed AI-proposed, awaiting a human's accountability
◉ ready already approved, one move from ratified
○ blocked pending, but not directly ratifiable from its status
⚠ ungrounded reaches no root — link it upward before sign-off
⚑ ambiguous flagged ambiguous — clarify it first
✓ ratified already signed off — shown only in the wide view (a)
✗ rejected invalidated, kept for the record — shown only in the wide view (a)
☠ deleted tombstoned, kept for history — shown only in the wide view (a)

How it works

tl-ratify is a thin, safe view over throughline's own Python API:

  • What needs ratifying — every local item whose status is not the project's ratified role and is not a dead status. Ranking, colour and icon come from the concern each item earns.
  • Ratifying mirrors tl-compose ratify: it runs throughline's grounding gate over the composed union (refusing ambiguous or ungrounded items), sets the ratified-role status through the config-driven set_status choke point, records who signed off, and writes the item back to its own register.
  • Rejecting calls throughline's invalidate, moving the item to the invalidated role and cascading suspect to its trusting dependents.

No status names are hardcoded: the project's [status.roles] and [transitions] govern every move.

Development

python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
pytest -q
tl -C idd check --strict   # this repo is itself throughline-managed

This project practises what it automates: its own requirements live in idd/ as a throughline graph, and CI gates every change on tl check --strict.

Licence

Created by Dr Henry J Grech-Cini (ORCID 0009-0007-1565-7530). Copyright © 2026 Henry J Grech-Cini. Released under the Apache License 2.0 — see LICENSE and NOTICE.

Metadata

Release files for throughline-ratify 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for throughline-ratify 0.1.5
File Size Uploaded
throughline_ratify-0.1.5.tar.gz 32.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for throughline-ratify 0.1.5
File Interpreter ABI Platform
throughline_ratify-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 60.8 kB

Release files / throughline_ratify-0.1.5.tar.gz

Download URL throughline_ratify-0.1.5.tar.gz
Size 32.1 kB
Tags Source
SHA-256 checksum
How to use checksums
78fd6fce2a1762cdce56675750bbbaa8958620ef2cf850771f1e2c111ef05fdf
BLAKE2b-256 checksum
How to use checksums
c51fa2abe0f04241b9ec53b883935970f46472ba46fd162dbae7a82fa5ddda52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Release files / throughline_ratify-0.1.5-py3-none-any.whl

Download URL throughline_ratify-0.1.5-py3-none-any.whl
Size 28.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fc36721486ac10d6c2bc0d2e2c48b61423ca10ace4ce76eb2db77f26f039427c
BLAKE2b-256 checksum
How to use checksums
7ffd4b6ea9865a64e27d398fc40fec3ad843f84c40d544da77c516154441872c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Release history Release notifications | RSS feed

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page