napkinstack 0.7.4__tar.gz → 0.7.6__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.4 → napkinstack-0.7.6}/PKG-INFO +4 -4
  2. {napkinstack-0.7.4 → napkinstack-0.7.6}/README.md +3 -3
  3. {napkinstack-0.7.4 → napkinstack-0.7.6}/pyproject.toml +1 -1
  4. {napkinstack-0.7.4 → napkinstack-0.7.6}/pyproject.toml.orig +1 -1
  5. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/fitness/hygiene.py +5 -4
  6. {napkinstack-0.7.4 → napkinstack-0.7.6}/LICENSE +0 -0
  7. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/__init__.py +0 -0
  8. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/assurance.py +0 -0
  9. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/cli.py +0 -0
  10. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/compat.py +0 -0
  11. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/discovery.py +0 -0
  12. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/doctor.py +0 -0
  13. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/fitness/__init__.py +0 -0
  14. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/fitness/boundaries.py +0 -0
  15. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/fitness/manifests.py +0 -0
  16. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/fitness/plan.py +0 -0
  17. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/fitness/pr_scope.py +0 -0
  18. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/landed.py +0 -0
  19. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/modules.py +0 -0
  20. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/project.py +0 -0
  21. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/provenance.py +0 -0
  22. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/pull_request.py +0 -0
  23. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/settings.py +0 -0
  24. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/skills.py +0 -0
  25. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/templates/contracts/AGENTS.md +0 -0
  26. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/templates/contracts/MANIFEST.yaml +0 -0
  27. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/templates/contracts/README.md +0 -0
  28. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/templates/contracts/docs/runbook.md +0 -0
  29. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/templates/contracts/tests/.gitkeep +0 -0
  30. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/templates/module/AGENTS.md +0 -0
  31. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/templates/module/MANIFEST.yaml +0 -0
  32. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/templates/module/README.md +0 -0
  33. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/templates/module/docs/adr/.gitkeep +0 -0
  34. {napkinstack-0.7.4 → napkinstack-0.7.6}/src/napkinstack/templates/module/src/.gitkeep +0 -0
  35. {napkinstack-0.7.4 → napkinstack-0.7.6}/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.4
3
+ Version: 0.7.6
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,7 +20,7 @@ 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.7.4, published** on [PyPI](https://pypi.org/project/napkinstack/).
23
+ > **Status: v0.7.6, published** on [PyPI](https://pypi.org/project/napkinstack/).
24
24
  > What each version changes, engine and project apart: [`CHANGELOG.md`](CHANGELOG.md).
25
25
  > What is open: [`docs/governance/workstreams.md`](docs/governance/workstreams.md).
26
26
 
@@ -84,8 +84,8 @@ To try it without installing anything, or to install it from this repository ins
84
84
  registry — always pinned to a release tag:
85
85
 
86
86
  ```bash
87
- uvx --from "git+https://github.com/NapkinStack/engineering-os@v0.7.4" nstack init my-project
88
- uv tool install "napkinstack @ git+https://github.com/NapkinStack/engineering-os@v0.7.4"
87
+ uvx --from "git+https://github.com/NapkinStack/engineering-os@v0.7.6" nstack init my-project
88
+ uv tool install "napkinstack @ git+https://github.com/NapkinStack/engineering-os@v0.7.6"
89
89
  ```
90
90
 
91
91
  **Two channels, one published artefact.** The registry publishes: the PyPI artefact of a
@@ -5,7 +5,7 @@ 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.7.4, published** on [PyPI](https://pypi.org/project/napkinstack/).
8
+ > **Status: v0.7.6, published** on [PyPI](https://pypi.org/project/napkinstack/).
9
9
  > What each version changes, engine and project apart: [`CHANGELOG.md`](CHANGELOG.md).
10
10
  > What is open: [`docs/governance/workstreams.md`](docs/governance/workstreams.md).
11
11
 
@@ -69,8 +69,8 @@ To try it without installing anything, or to install it from this repository ins
69
69
  registry — always pinned to a release tag:
70
70
 
71
71
  ```bash
72
- uvx --from "git+https://github.com/NapkinStack/engineering-os@v0.7.4" nstack init my-project
73
- uv tool install "napkinstack @ git+https://github.com/NapkinStack/engineering-os@v0.7.4"
72
+ uvx --from "git+https://github.com/NapkinStack/engineering-os@v0.7.6" nstack init my-project
73
+ uv tool install "napkinstack @ git+https://github.com/NapkinStack/engineering-os@v0.7.6"
74
74
  ```
75
75
 
76
76
  **Two channels, one published artefact.** The registry publishes: the PyPI artefact of a
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "napkinstack"
3
- version = "0.7.4"
3
+ version = "0.7.6"
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.4"
3
+ version = "0.7.6"
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"
@@ -12,9 +12,10 @@ Rules:
12
12
 
13
13
  Refused: the home of a named user, on any of the three systems, and a tilde followed by a
14
14
  real folder. Accepted, because they are true on every machine: a tilde followed by a
15
- dot-directory (`~/.config`, `~/.cache`, `~/.ssh` — tooling is documented legitimately), a
16
- tilde inside an address, the repository's placeholders (`<workspace>`), environment
17
- variables, and the home of an image's own user — `node`, `vscode`, `runner`, `codespace`,
15
+ dot-directory (`~/.config`, `~/.cache`, `~/.ssh` — tooling is documented legitimately) and
16
+ its macOS counterpart, `~/Library`, where every Mac keeps software's own files and a macOS
17
+ app documents its storage (D97); a tilde inside an address, the repository's placeholders
18
+ (`<workspace>`), environment variables, and the home of an image's own user — `node`, `vscode`, `runner`, `codespace`,
18
19
  `gitpod`, `jovyan` — which is the same wherever the image runs (D41).
19
20
 
20
21
  The patterns are written so that this file, the rule's tests and any document describing
@@ -45,7 +46,7 @@ IMAGE_USERS = r"(?:node|vscode|runner|codespace|gitpod|jovyan)(?![A-Za-z0-9_.-])
45
46
  SEGMENT = r"[A-Za-z0-9_.-]+"
46
47
  HOME_PATH = re.compile(
47
48
  rf"(?:/home/(?!{IMAGE_USERS}){SEGMENT}|/Users/{SEGMENT}|[A-Za-z]:\\Users\\{SEGMENT}"
48
- r"|(?<![\w/:])~(?=/[A-Za-z0-9]))"
49
+ r"|(?<![\w/:])~(?=/[A-Za-z0-9])(?!/Library(?![\w.-])))"
49
50
  r"[^\s'\"`,;)\]]*"
50
51
  )
51
52
  ACTION = ("write what the step needs: a path relative to the repository, a placeholder such "
File without changes