A terminal reading of the gap between Stated System and Lived System. Companion utility to Leading Agile When No One Agrees.
Project description
drift
A five-question terminal reading of the gap between what your organisation says it does and what it does in practice. Companion utility to Leading Agile When No One Agrees by Kyle Hauslaib.
The score is for the person scoring. The tool never sends data anywhere.
DRIFT CHECK
Five questions. Score 1 to 5. The score is for you.
Reflect on the past three months,
not your best week or your worst sprint.
1 = rarely true 3 = sometimes true 5 = consistently true
01 Information
The information reaching strategic decision-makers matches
what teams privately discuss about the same work.
Score (1-5): 3
...
Install
Requires Python 3.10 or later. No third-party dependencies.
pip install drift-check
Or run from a clone without installing:
git clone https://github.com/hauslaib/drift-cli
cd drift-cli
python3 -m drift
Use
Run the five-question check interactively:
drift
Save the result as a local JSON file under ~/.drift/scores/:
drift --save
drift --save --label "alpha team Q2"
Show your saved scores over time:
drift --history
Get a JSON object on stdout (for scripting):
echo "3 4 2 5 3" | drift --json
What this tool does, and does not do
It walks the five-question Drift Check from the front matter of the book, collects scores, computes the total, and prints the interpretation. If you ask it to save, it writes a dated JSON file under your home directory.
It does not send data anywhere. It does not phone home. It does not call any network API. There is no analytics, no telemetry, no opt-in or opt-out because there is nothing to opt out of. The score is yours and stays on the machine you ran the tool from.
This is a design choice, not an oversight. The book argues that the moment the Drift Check becomes a metric reported upward, it stops measuring the Drift and starts producing it. The tool enforces this in code.
How to use the check in a team
The practical pattern from the book:
- Each person on the team scores independently.
- The team compares scores in retrospective.
- The team decides which low-scoring dimension to attend to in the next sprint.
Do not roll the scores up beyond the team. The check is a prompt for a more honest conversation, not a number for someone above you to track.
Reading your score
21 to 25 Low Drift
14 to 20 Moderate Drift
13 or below Significant Drift
The book covers each band in detail. The companion site at https://kylehauslaib.com/companion/ has a printable version of the check plus six related practical-tool worksheets.
Development
git clone https://github.com/hauslaib/drift-cli
cd drift-cli
python3 -m drift # run interactively
python3 -m pytest tests/ # run the tests
The package has no runtime dependencies. The test suite uses pytest.
File layout
drift-cli/
├── drift/
│ ├── __init__.py
│ ├── __main__.py CLI entry point
│ ├── check.py Domain model (Question, Reading, Check)
│ ├── interface.py Terminal interaction
│ └── storage.py Local-only score storage
├── tests/
│ ├── test_check.py
│ └── test_storage.py
├── README.md
├── LICENSE
├── LICENSE-CODE.md
├── LICENSE-CONTENT.md
├── CONTRIBUTING.md
└── pyproject.toml
Licences
Code under MIT (LICENSE-CODE.md). The question text, reading bands, and
prose are under Creative Commons Attribution-ShareAlike 4.0 International
(LICENSE-CONTENT.md), matching the companion repository at
https://github.com/hauslaib/leading-agile-companion.
Related
- The book: Leading Agile When No One Agrees: A Field Guide to Engineering Leadership in Imperfect Organisations
- Companion site: https://kylehauslaib.com/companion/
- Companion repository: https://github.com/hauslaib/leading-agile-companion
Kyle Hauslaib, 2026.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file drift_check-1.0.0.tar.gz.
File metadata
- Download URL: drift_check-1.0.0.tar.gz
- Upload date:
- Size: 13.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b362fd6d6a9a6ae5890e05a39ede4fc4e0314b60bc4e7b859293273bf235778
|
|
| MD5 |
36cad6493d7c4e4cbe6deda645dc9d44
|
|
| BLAKE2b-256 |
e85a2e2df5096e356ed435476c2ee667810c3b45dc14df232825dcf176e61d29
|
File details
Details for the file drift_check-1.0.0-py3-none-any.whl.
File metadata
- Download URL: drift_check-1.0.0-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91be2a983169bc502a5a57f3f7e92c041c6db9777cb69305fc913474802b5526
|
|
| MD5 |
dceca5ddb9fa0eba943cff9f05686c00
|
|
| BLAKE2b-256 |
0edbf9ba4a050d8b609ebcb0ce2be263d99e84d097da4c520f1a5208d788f280
|