pinax-tracker 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. pinax_tracker-0.1.2/LICENSE +21 -0
  2. pinax_tracker-0.1.2/PKG-INFO +10 -0
  3. pinax_tracker-0.1.2/README.md +105 -0
  4. pinax_tracker-0.1.2/pinax/__init__.py +1 -0
  5. pinax_tracker-0.1.2/pinax/__main__.py +985 -0
  6. pinax_tracker-0.1.2/pinax/all_branches.py +138 -0
  7. pinax_tracker-0.1.2/pinax/append.py +217 -0
  8. pinax_tracker-0.1.2/pinax/commands/__init__.py +1 -0
  9. pinax_tracker-0.1.2/pinax/commands/add.py +147 -0
  10. pinax_tracker-0.1.2/pinax/commands/annul.py +113 -0
  11. pinax_tracker-0.1.2/pinax/commands/block.py +104 -0
  12. pinax_tracker-0.1.2/pinax/commands/board_cmd.py +72 -0
  13. pinax_tracker-0.1.2/pinax/commands/claim.py +92 -0
  14. pinax_tracker-0.1.2/pinax/commands/dep.py +188 -0
  15. pinax_tracker-0.1.2/pinax/commands/dispatch.py +199 -0
  16. pinax_tracker-0.1.2/pinax/commands/doctor_cmd.py +321 -0
  17. pinax_tracker-0.1.2/pinax/commands/done.py +114 -0
  18. pinax_tracker-0.1.2/pinax/commands/init.py +229 -0
  19. pinax_tracker-0.1.2/pinax/commands/metrics_cmd.py +92 -0
  20. pinax_tracker-0.1.2/pinax/commands/next_cmd.py +66 -0
  21. pinax_tracker-0.1.2/pinax/commands/note.py +183 -0
  22. pinax_tracker-0.1.2/pinax/commands/overview.py +612 -0
  23. pinax_tracker-0.1.2/pinax/commands/park.py +93 -0
  24. pinax_tracker-0.1.2/pinax/commands/priority.py +173 -0
  25. pinax_tracker-0.1.2/pinax/commands/ready.py +79 -0
  26. pinax_tracker-0.1.2/pinax/commands/reconcile.py +434 -0
  27. pinax_tracker-0.1.2/pinax/commands/registry_cmd.py +209 -0
  28. pinax_tracker-0.1.2/pinax/commands/replay_cmd.py +76 -0
  29. pinax_tracker-0.1.2/pinax/commands/report_cmd.py +198 -0
  30. pinax_tracker-0.1.2/pinax/commands/status_cmd.py +242 -0
  31. pinax_tracker-0.1.2/pinax/commands/verify.py +235 -0
  32. pinax_tracker-0.1.2/pinax/doctor.py +511 -0
  33. pinax_tracker-0.1.2/pinax/event.py +155 -0
  34. pinax_tracker-0.1.2/pinax/fold.py +1668 -0
  35. pinax_tracker-0.1.2/pinax/ids.py +94 -0
  36. pinax_tracker-0.1.2/pinax/metrics.py +167 -0
  37. pinax_tracker-0.1.2/pinax/projection.py +670 -0
  38. pinax_tracker-0.1.2/pinax/remote.py +367 -0
  39. pinax_tracker-0.1.2/pinax/replay.py +165 -0
  40. pinax_tracker-0.1.2/pinax/separation.py +138 -0
  41. pinax_tracker-0.1.2/pinax/statusview.py +298 -0
  42. pinax_tracker-0.1.2/pinax/visibility.py +127 -0
  43. pinax_tracker-0.1.2/pinax_tracker.egg-info/PKG-INFO +10 -0
  44. pinax_tracker-0.1.2/pinax_tracker.egg-info/SOURCES.txt +86 -0
  45. pinax_tracker-0.1.2/pinax_tracker.egg-info/dependency_links.txt +1 -0
  46. pinax_tracker-0.1.2/pinax_tracker.egg-info/entry_points.txt +2 -0
  47. pinax_tracker-0.1.2/pinax_tracker.egg-info/requires.txt +4 -0
  48. pinax_tracker-0.1.2/pinax_tracker.egg-info/top_level.txt +1 -0
  49. pinax_tracker-0.1.2/pyproject.toml +30 -0
  50. pinax_tracker-0.1.2/setup.cfg +4 -0
  51. pinax_tracker-0.1.2/tests/test_all_branches.py +335 -0
  52. pinax_tracker-0.1.2/tests/test_annul.py +437 -0
  53. pinax_tracker-0.1.2/tests/test_append.py +206 -0
  54. pinax_tracker-0.1.2/tests/test_append_concurrency.py +311 -0
  55. pinax_tracker-0.1.2/tests/test_append_guard.py +195 -0
  56. pinax_tracker-0.1.2/tests/test_board.py +80 -0
  57. pinax_tracker-0.1.2/tests/test_chain_merge.py +315 -0
  58. pinax_tracker-0.1.2/tests/test_chain_multishard.py +238 -0
  59. pinax_tracker-0.1.2/tests/test_console_ascii.py +192 -0
  60. pinax_tracker-0.1.2/tests/test_cross_platform.py +180 -0
  61. pinax_tracker-0.1.2/tests/test_dep_cli.py +445 -0
  62. pinax_tracker-0.1.2/tests/test_doctor.py +694 -0
  63. pinax_tracker-0.1.2/tests/test_double_claim.py +442 -0
  64. pinax_tracker-0.1.2/tests/test_fold_determinism.py +393 -0
  65. pinax_tracker-0.1.2/tests/test_integrity.py +244 -0
  66. pinax_tracker-0.1.2/tests/test_merge_safety.py +1156 -0
  67. pinax_tracker-0.1.2/tests/test_next_critical_path.py +703 -0
  68. pinax_tracker-0.1.2/tests/test_note_lint.py +525 -0
  69. pinax_tracker-0.1.2/tests/test_overview.py +673 -0
  70. pinax_tracker-0.1.2/tests/test_overview_markdown.py +360 -0
  71. pinax_tracker-0.1.2/tests/test_overview_remote.py +558 -0
  72. pinax_tracker-0.1.2/tests/test_phase_seq_order.py +208 -0
  73. pinax_tracker-0.1.2/tests/test_precommit_hook.py +266 -0
  74. pinax_tracker-0.1.2/tests/test_priority.py +624 -0
  75. pinax_tracker-0.1.2/tests/test_projection.py +621 -0
  76. pinax_tracker-0.1.2/tests/test_ready_next.py +676 -0
  77. pinax_tracker-0.1.2/tests/test_reconcile.py +624 -0
  78. pinax_tracker-0.1.2/tests/test_reconcile_roundtrip.py +315 -0
  79. pinax_tracker-0.1.2/tests/test_registry.py +340 -0
  80. pinax_tracker-0.1.2/tests/test_replay.py +444 -0
  81. pinax_tracker-0.1.2/tests/test_report.py +252 -0
  82. pinax_tracker-0.1.2/tests/test_root_guard.py +385 -0
  83. pinax_tracker-0.1.2/tests/test_separation_negative.py +340 -0
  84. pinax_tracker-0.1.2/tests/test_status_view.py +200 -0
  85. pinax_tracker-0.1.2/tests/test_two_clone_divergence.py +336 -0
  86. pinax_tracker-0.1.2/tests/test_typed_edge_fold.py +788 -0
  87. pinax_tracker-0.1.2/tests/test_verify_fix.py +255 -0
  88. pinax_tracker-0.1.2/tests/test_visibility.py +196 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Georgios Antikatzidis
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,10 @@
1
+ Metadata-Version: 2.4
2
+ Name: pinax-tracker
3
+ Version: 0.1.2
4
+ Summary: Git-native, deterministic build tracker
5
+ Requires-Python: >=3.10
6
+ License-File: LICENSE
7
+ Provides-Extra: test
8
+ Requires-Dist: pytest; extra == "test"
9
+ Requires-Dist: pytest-timeout; extra == "test"
10
+ Dynamic: license-file
@@ -0,0 +1,105 @@
1
+ # Pinax
2
+
3
+ Pinax is a Git-native tracker for software delivery work. It stores an
4
+ append-only JSONL event log in the repository, derives the current board from
5
+ that log, and commits the generated Markdown board alongside the code.
6
+
7
+ The tracker gives a team one durable record of items, dependencies, ownership,
8
+ status, and completion briefings. Git carries the record between clones and
9
+ branches. There is no service to host, database to operate, or account to
10
+ create.
11
+
12
+ ## Install
13
+
14
+ Pinax requires Python 3.10 or later and Git.
15
+
16
+ ```bash
17
+ pipx install pinax-tracker
18
+ pinax --help
19
+ ```
20
+
21
+ The same package installs with pip:
22
+
23
+ ```bash
24
+ python -m pip install pinax-tracker
25
+ ```
26
+
27
+ To work from a checkout:
28
+
29
+ ```bash
30
+ git clone https://github.com/antikas/pinax-tracker.git
31
+ cd pinax-tracker
32
+ python -m pip install -e .
33
+ ```
34
+
35
+ ## Start tracking a repository
36
+
37
+ Run `pinax init` at the root of the repository you want to track. It creates
38
+ `.ergon/`, records the initial events, configures the log's merge attributes,
39
+ and installs a pre-commit verification hook when Git allows it.
40
+
41
+ ```bash
42
+ pinax init --actor alex@laptop
43
+ pinax add --title "Ship the widget" --actor alex@laptop
44
+ pinax claim <item-id> --actor alex@laptop
45
+ pinax done <item-id> --briefing completion.md --actor alex@laptop
46
+ pinax status
47
+ ```
48
+
49
+ `completion.md` is a short work record. It stays with the item in the
50
+ generated projection.
51
+
52
+ ## Everyday commands
53
+
54
+ ```text
55
+ pinax add --title TEXT
56
+ pinax claim ITEM_ID
57
+ pinax done ITEM_ID --briefing FILE
58
+ pinax block ITEM_ID --gate scope|decision|destructive|proposal
59
+ pinax park ITEM_ID --reason TEXT
60
+ pinax dep add FROM_ID --blocks TO_ID
61
+ pinax ready
62
+ pinax next
63
+ pinax status [--json]
64
+ pinax board [--json]
65
+ pinax report [--json]
66
+ pinax verify [--fix]
67
+ pinax replay --at GIT_REF
68
+ ```
69
+
70
+ `pinax verify` checks that every physical parsed event has a valid event hash
71
+ unless it is covered by a valid tombstone, then compares the generated board
72
+ and item pages with the committed projection. `--fix` regenerates only a
73
+ drifted projection. It refuses invalid event history without changing the log
74
+ or projection.
75
+
76
+ ## Storage model
77
+
78
+ ```text
79
+ .ergon/
80
+ log/*.jsonl append-only event shards
81
+ board.md generated project board
82
+ items/<id>.md generated item pages
83
+ ```
84
+
85
+ Each event has a content-derived identifier. The fold sorts events by
86
+ `(seq, ts, actor, id)`, deduplicates by identifier, and applies the resulting
87
+ stream deterministically. Git's union merge driver preserves concurrent JSONL
88
+ appends; a duplicated line is a no-op in the fold.
89
+
90
+ Claims resolve during the fold. If two claims name one item, the earliest
91
+ `(ts, actor, id)` claim wins and the other becomes a reported supersession.
92
+ Dependency edges drive `ready` and `next`.
93
+
94
+ The predecessor field is a local consistency check. It can report a dangling
95
+ predecessor reference, but version 1 does not hash the predecessor field or
96
+ provide remote anchoring, signatures, or hostile-writer authentication.
97
+
98
+ The event envelope, integrity rules, and projection model are described in
99
+ [DESIGN.md](DESIGN.md). The executable event handlers and renderers are the
100
+ authoritative implementation details.
101
+ Architecture decisions are in [docs/decisions](docs/decisions).
102
+
103
+ ## Licence
104
+
105
+ Pinax is available under the [MIT License](LICENSE).
@@ -0,0 +1 @@
1
+ __version__ = "0.1.2"