napkinstack 0.7.0__tar.gz → 0.7.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 (35) hide show
  1. {napkinstack-0.7.0 → napkinstack-0.7.2}/PKG-INFO +9 -25
  2. {napkinstack-0.7.0 → napkinstack-0.7.2}/README.md +8 -24
  3. {napkinstack-0.7.0 → napkinstack-0.7.2}/pyproject.toml +1 -1
  4. {napkinstack-0.7.0 → napkinstack-0.7.2}/pyproject.toml.orig +1 -1
  5. {napkinstack-0.7.0 → napkinstack-0.7.2}/LICENSE +0 -0
  6. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/__init__.py +0 -0
  7. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/assurance.py +0 -0
  8. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/cli.py +0 -0
  9. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/compat.py +0 -0
  10. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/discovery.py +0 -0
  11. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/doctor.py +0 -0
  12. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/fitness/__init__.py +0 -0
  13. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/fitness/boundaries.py +0 -0
  14. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/fitness/hygiene.py +0 -0
  15. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/fitness/manifests.py +0 -0
  16. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/fitness/plan.py +0 -0
  17. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/fitness/pr_scope.py +0 -0
  18. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/landed.py +0 -0
  19. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/modules.py +0 -0
  20. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/project.py +0 -0
  21. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/provenance.py +0 -0
  22. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/pull_request.py +0 -0
  23. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/settings.py +0 -0
  24. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/skills.py +0 -0
  25. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/templates/contracts/AGENTS.md +0 -0
  26. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/templates/contracts/MANIFEST.yaml +0 -0
  27. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/templates/contracts/README.md +0 -0
  28. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/templates/contracts/docs/runbook.md +0 -0
  29. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/templates/contracts/tests/.gitkeep +0 -0
  30. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/templates/module/AGENTS.md +0 -0
  31. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/templates/module/MANIFEST.yaml +0 -0
  32. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/templates/module/README.md +0 -0
  33. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/templates/module/docs/adr/.gitkeep +0 -0
  34. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/templates/module/src/.gitkeep +0 -0
  35. {napkinstack-0.7.0 → napkinstack-0.7.2}/src/napkinstack/templates/module/tests/.gitkeep +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: napkinstack
3
- Version: 0.7.0
3
+ Version: 0.7.2
4
4
  Summary: Engineering framework for several teams and their agents working in one repository: modules, contracts, guardrails in CI.
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -20,27 +20,9 @@ modules, contracts, guardrails in CI. On the Django or Rails model, one command
20
20
  the project, which then receives new versions on demand; no application stack is imposed.
21
21
  Positioning and vocabulary: [`PRODUCT.md`](PRODUCT.md) §1.
22
22
 
23
- > **Status: v0.6.2, published** ([PyPI](https://pypi.org/project/napkinstack/)): what the
24
- > framework announces, it refuses — and what it cannot refuse, it says. The boundaries read the
25
- > contracts a module uses, a contract version someone relies on changes only with a proof that
26
- > runs in the base's tree, the module checks and stale approvals are enforced, a verifier is not
27
- > an author, and every verdict names the framework that gave it. Since v0.6.0, a document still
28
- > holding its template's words is refused, a deprecated module's consumers are named with their
29
- > removal date, and a contract change runs the checks of both sides — the producer and every
30
- > declared consumer. The diagnosis says whether anything refuses at all; a record names what
31
- > reached the default branch outside a pull request, and never refuses it. Since v0.6.2, each
32
- > version's notes are published, engine and project apart, and an update names every version it
33
- > crosses. A first real project, public, has run two cycles on it; **M11**, in progress, makes
34
- > the framework charge what a failure costs, and nothing more ([PDR-0011](docs/pdr/0011-ceremony-follows-consequence.md)).
35
- > Tracking: [engine roadmap](docs/governance/plans/2026-09-15-engine-v0.1.0.md),
36
- > [move to English](docs/governance/plans/2026-09-16-english-migration.md),
37
- > [frame, verify, approve](docs/governance/plans/2026-09-16-v0.3.0-frame-verify-approve.md),
38
- > [every barrier refuses](docs/governance/plans/2026-09-19-v0.4.0-every-barrier-refuses.md),
39
- > [a proof that cannot be rewritten](docs/governance/plans/2026-09-20-v0.5.0-a-proof-that-cannot-be-rewritten.md),
40
- > [the conformance suite](docs/governance/plans/2026-09-20-m12-conformance-suite.md),
41
- > [what is announced refuses](docs/governance/plans/2026-09-20-v0.6.0-what-is-announced-refuses.md),
42
- > [ceremony follows consequence](docs/governance/plans/2026-09-23-m11-ceremony-follows-consequence.md),
43
- > [`docs/governance/workstreams.md`](docs/governance/workstreams.md).
23
+ > **Status: v0.7.2, published** on [PyPI](https://pypi.org/project/napkinstack/).
24
+ > What each version changes, engine and project apart: [`CHANGELOG.md`](CHANGELOG.md).
25
+ > What is open: [`docs/governance/workstreams.md`](docs/governance/workstreams.md).
44
26
 
45
27
  ## A project's journey
46
28
 
@@ -102,8 +84,8 @@ To try it without installing anything, or to install it from this repository ins
102
84
  registry — always pinned to a release tag:
103
85
 
104
86
  ```bash
105
- uvx --from "git+https://github.com/NapkinStack/engineering-os@v0.6.2" nstack init my-project
106
- uv tool install "napkinstack @ git+https://github.com/NapkinStack/engineering-os@v0.6.2"
87
+ uvx --from "git+https://github.com/NapkinStack/engineering-os@v0.7.2" nstack init my-project
88
+ uv tool install "napkinstack @ git+https://github.com/NapkinStack/engineering-os@v0.7.2"
107
89
  ```
108
90
 
109
91
  **Two channels, one published artefact.** The registry publishes: the PyPI artefact of a
@@ -124,11 +106,13 @@ Each project then pins its version and changes it through `nstack update`.
124
106
  |---|---|
125
107
  | `nstack init <folder>` | Creates the project: skeleton, git repository, initial commit, GitHub checklist |
126
108
  | `nstack doctor` | Checks the workstation and the GitHub settings, read-only |
109
+ | `nstack settings` | Prints the calls that would bring the GitHub settings to the checklist; changes nothing |
127
110
  | `nstack new-module <name> <owner> <criticality>` | Creates a module, with no imposed stack |
111
+ | `nstack new-contract <name>` | Creates a contract and, the first time, the module that holds them all |
128
112
  | `nstack check`, `test`, `bootstrap` `[module]`; `nstack run <module>` | Run the commands declared in the module's manifest |
129
113
  | `nstack discover <idea-file>` | Starts a discovery for your agent: the idea kept, its document created |
130
114
  | `nstack plan` | The discovery, the charter and the cycles: formats, one cycle at a time, closures |
131
- | `nstack fitness` | Manifests, boundaries between modules, skills, plan, hygiene |
115
+ | `nstack fitness` | Manifests, boundaries between modules, skills, plan, hygiene — each also runs alone: `manifests`, `boundaries`, `skills`, `plan`, `hygiene` |
132
116
  | `nstack pr-scope` | One PR = one module, review budget |
133
117
  | `nstack modules [--changed-since <base>]` | The project's modules, or those with a file changed since a base |
134
118
  | `nstack compat [module] --base <base>` | A contract version consumed or stable changes only with the project's merged comparator |
@@ -5,27 +5,9 @@ modules, contracts, guardrails in CI. On the Django or Rails model, one command
5
5
  the project, which then receives new versions on demand; no application stack is imposed.
6
6
  Positioning and vocabulary: [`PRODUCT.md`](PRODUCT.md) §1.
7
7
 
8
- > **Status: v0.6.2, published** ([PyPI](https://pypi.org/project/napkinstack/)): what the
9
- > framework announces, it refuses — and what it cannot refuse, it says. The boundaries read the
10
- > contracts a module uses, a contract version someone relies on changes only with a proof that
11
- > runs in the base's tree, the module checks and stale approvals are enforced, a verifier is not
12
- > an author, and every verdict names the framework that gave it. Since v0.6.0, a document still
13
- > holding its template's words is refused, a deprecated module's consumers are named with their
14
- > removal date, and a contract change runs the checks of both sides — the producer and every
15
- > declared consumer. The diagnosis says whether anything refuses at all; a record names what
16
- > reached the default branch outside a pull request, and never refuses it. Since v0.6.2, each
17
- > version's notes are published, engine and project apart, and an update names every version it
18
- > crosses. A first real project, public, has run two cycles on it; **M11**, in progress, makes
19
- > the framework charge what a failure costs, and nothing more ([PDR-0011](docs/pdr/0011-ceremony-follows-consequence.md)).
20
- > Tracking: [engine roadmap](docs/governance/plans/2026-09-15-engine-v0.1.0.md),
21
- > [move to English](docs/governance/plans/2026-09-16-english-migration.md),
22
- > [frame, verify, approve](docs/governance/plans/2026-09-16-v0.3.0-frame-verify-approve.md),
23
- > [every barrier refuses](docs/governance/plans/2026-09-19-v0.4.0-every-barrier-refuses.md),
24
- > [a proof that cannot be rewritten](docs/governance/plans/2026-09-20-v0.5.0-a-proof-that-cannot-be-rewritten.md),
25
- > [the conformance suite](docs/governance/plans/2026-09-20-m12-conformance-suite.md),
26
- > [what is announced refuses](docs/governance/plans/2026-09-20-v0.6.0-what-is-announced-refuses.md),
27
- > [ceremony follows consequence](docs/governance/plans/2026-09-23-m11-ceremony-follows-consequence.md),
28
- > [`docs/governance/workstreams.md`](docs/governance/workstreams.md).
8
+ > **Status: v0.7.2, published** on [PyPI](https://pypi.org/project/napkinstack/).
9
+ > What each version changes, engine and project apart: [`CHANGELOG.md`](CHANGELOG.md).
10
+ > What is open: [`docs/governance/workstreams.md`](docs/governance/workstreams.md).
29
11
 
30
12
  ## A project's journey
31
13
 
@@ -87,8 +69,8 @@ To try it without installing anything, or to install it from this repository ins
87
69
  registry — always pinned to a release tag:
88
70
 
89
71
  ```bash
90
- uvx --from "git+https://github.com/NapkinStack/engineering-os@v0.6.2" nstack init my-project
91
- uv tool install "napkinstack @ git+https://github.com/NapkinStack/engineering-os@v0.6.2"
72
+ uvx --from "git+https://github.com/NapkinStack/engineering-os@v0.7.2" nstack init my-project
73
+ uv tool install "napkinstack @ git+https://github.com/NapkinStack/engineering-os@v0.7.2"
92
74
  ```
93
75
 
94
76
  **Two channels, one published artefact.** The registry publishes: the PyPI artefact of a
@@ -109,11 +91,13 @@ Each project then pins its version and changes it through `nstack update`.
109
91
  |---|---|
110
92
  | `nstack init <folder>` | Creates the project: skeleton, git repository, initial commit, GitHub checklist |
111
93
  | `nstack doctor` | Checks the workstation and the GitHub settings, read-only |
94
+ | `nstack settings` | Prints the calls that would bring the GitHub settings to the checklist; changes nothing |
112
95
  | `nstack new-module <name> <owner> <criticality>` | Creates a module, with no imposed stack |
96
+ | `nstack new-contract <name>` | Creates a contract and, the first time, the module that holds them all |
113
97
  | `nstack check`, `test`, `bootstrap` `[module]`; `nstack run <module>` | Run the commands declared in the module's manifest |
114
98
  | `nstack discover <idea-file>` | Starts a discovery for your agent: the idea kept, its document created |
115
99
  | `nstack plan` | The discovery, the charter and the cycles: formats, one cycle at a time, closures |
116
- | `nstack fitness` | Manifests, boundaries between modules, skills, plan, hygiene |
100
+ | `nstack fitness` | Manifests, boundaries between modules, skills, plan, hygiene — each also runs alone: `manifests`, `boundaries`, `skills`, `plan`, `hygiene` |
117
101
  | `nstack pr-scope` | One PR = one module, review budget |
118
102
  | `nstack modules [--changed-since <base>]` | The project's modules, or those with a file changed since a base |
119
103
  | `nstack compat [module] --base <base>` | A contract version consumed or stable changes only with the project's merged comparator |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "napkinstack"
3
- version = "0.7.0"
3
+ version = "0.7.2"
4
4
  description = "Engineering framework for several teams and their agents working in one repository: modules, contracts, guardrails in CI."
5
5
  requires-python = ">=3.12"
6
6
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "napkinstack"
3
- version = "0.7.0"
3
+ version = "0.7.2"
4
4
  description = "Engineering framework for several teams and their agents working in one repository: modules, contracts, guardrails in CI."
5
5
  requires-python = ">=3.12"
6
6
  license = "MIT"
File without changes