disensor 0.9.2__tar.gz → 0.9.3__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 (56) hide show
  1. {disensor-0.9.2/src/disensor.egg-info → disensor-0.9.3}/PKG-INFO +9 -3
  2. {disensor-0.9.2 → disensor-0.9.3}/README.md +8 -2
  3. {disensor-0.9.2 → disensor-0.9.3}/pyproject.toml +1 -1
  4. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/__init__.py +1 -1
  5. {disensor-0.9.2 → disensor-0.9.3/src/disensor.egg-info}/PKG-INFO +9 -3
  6. {disensor-0.9.2 → disensor-0.9.3}/LICENSE +0 -0
  7. {disensor-0.9.2 → disensor-0.9.3}/setup.cfg +0 -0
  8. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/GUIDE.es.md +0 -0
  9. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/GUIDE.md +0 -0
  10. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/__main__.py +0 -0
  11. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/brief.py +0 -0
  12. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/cli.py +0 -0
  13. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/gate.py +0 -0
  14. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/gitctx.py +0 -0
  15. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/guide.py +0 -0
  16. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/init.py +0 -0
  17. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/pack.py +0 -0
  18. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/pin.py +0 -0
  19. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/prompts/_common.md +0 -0
  20. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/prompts/architecture.md +0 -0
  21. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/prompts/diff.md +0 -0
  22. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/prompts/plan.md +0 -0
  23. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/render.py +0 -0
  24. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/residue.schema.json +0 -0
  25. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/residue.schema.v0.2.json +0 -0
  26. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/residue.schema.v0.3.json +0 -0
  27. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/reviewers.py +0 -0
  28. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/round.py +0 -0
  29. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/rules.py +0 -0
  30. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/scope.py +0 -0
  31. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/template.py +0 -0
  32. {disensor-0.9.2 → disensor-0.9.3}/src/disensor/vectors.py +0 -0
  33. {disensor-0.9.2 → disensor-0.9.3}/src/disensor.egg-info/SOURCES.txt +0 -0
  34. {disensor-0.9.2 → disensor-0.9.3}/src/disensor.egg-info/dependency_links.txt +0 -0
  35. {disensor-0.9.2 → disensor-0.9.3}/src/disensor.egg-info/entry_points.txt +0 -0
  36. {disensor-0.9.2 → disensor-0.9.3}/src/disensor.egg-info/requires.txt +0 -0
  37. {disensor-0.9.2 → disensor-0.9.3}/src/disensor.egg-info/top_level.txt +0 -0
  38. {disensor-0.9.2 → disensor-0.9.3}/tests/test_brief.py +0 -0
  39. {disensor-0.9.2 → disensor-0.9.3}/tests/test_cli_errors.py +0 -0
  40. {disensor-0.9.2 → disensor-0.9.3}/tests/test_docs.py +0 -0
  41. {disensor-0.9.2 → disensor-0.9.3}/tests/test_docs_sync.py +0 -0
  42. {disensor-0.9.2 → disensor-0.9.3}/tests/test_gate.py +0 -0
  43. {disensor-0.9.2 → disensor-0.9.3}/tests/test_guide.py +0 -0
  44. {disensor-0.9.2 → disensor-0.9.3}/tests/test_hardening.py +0 -0
  45. {disensor-0.9.2 → disensor-0.9.3}/tests/test_init.py +0 -0
  46. {disensor-0.9.2 → disensor-0.9.3}/tests/test_new_round.py +0 -0
  47. {disensor-0.9.2 → disensor-0.9.3}/tests/test_pack.py +0 -0
  48. {disensor-0.9.2 → disensor-0.9.3}/tests/test_pin.py +0 -0
  49. {disensor-0.9.2 → disensor-0.9.3}/tests/test_requirement.py +0 -0
  50. {disensor-0.9.2 → disensor-0.9.3}/tests/test_reviewers.py +0 -0
  51. {disensor-0.9.2 → disensor-0.9.3}/tests/test_round.py +0 -0
  52. {disensor-0.9.2 → disensor-0.9.3}/tests/test_rules.py +0 -0
  53. {disensor-0.9.2 → disensor-0.9.3}/tests/test_scope.py +0 -0
  54. {disensor-0.9.2 → disensor-0.9.3}/tests/test_upgrade.py +0 -0
  55. {disensor-0.9.2 → disensor-0.9.3}/tests/test_v04.py +0 -0
  56. {disensor-0.9.2 → disensor-0.9.3}/tests/test_vectors.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: disensor
3
- Version: 0.9.2
3
+ Version: 0.9.3
4
4
  Summary: Adversarial plan & code review with a declared residue. Emits, validates and CI-enforces residue declarations (residue/v0.4 schema).
5
5
  Author-email: Nicolas Rocchia <nicolasrocchia@gmail.com>
6
6
  License: MIT
@@ -146,7 +146,7 @@ jobs:
146
146
  - uses: actions/checkout@v4
147
147
  with:
148
148
  fetch-depth: 0
149
- - uses: NicolasRocchia/disensor@v0.9.2
149
+ - uses: NicolasRocchia/disensor@v0.9.3
150
150
  ```
151
151
 
152
152
  The gate validates the declarations **the PR adds**, applies the policy and
@@ -288,6 +288,7 @@ to resolve:
288
288
  - **Organisation ruleset or required workflow**, defined outside the audited repository.
289
289
  - **Pin the Action by SHA**, not by tag: a tag is movable and is not a root of trust. `disensor init` resolves the tag of the installed version to the commit it points at and writes the workflow already frozen; without network at init time the tag stays and `disensor pin` finishes the job. The command resolves annotated tags to the commit they wrap, never to the tag object, which is the classic trap of doing it by hand. This repository's documentation still uses the tag, because it documents which version corresponds; the frozen SHA is produced by whoever deploys.
290
290
  - **Bootstrap**: the first PR that adds the config and the workflow cannot make itself the root of trust. Initial activation is an administrative step, prior to the gate meaning anything.
291
+ - **When the pin goes up**: the workflow sits in the non-relaxable floor, so raising the pin through a PR costs an adversarial round for a change whose correctness a `git rev-parse` verifies better than any model. The convention in this repository is that a new pin **travels in the next PR of real work**, with its declaration, rather than in a PR of its own. **Exception**: if the release fixes gate security or changes the schema version, the pin goes up immediately, because the window in which the repository judges itself with the previous version stops being harmless: an old gate does not know the new contract and rejects what the freshly published CLI emits. This is a convention, not a control: as long as the branch does not require pull requests with bypass disabled for administrators too, nothing prevents pushing the pin directly ([#17](https://github.com/NicolasRocchia/disensor/issues/17)).
291
292
 
292
293
  Explicit limit: reading the policy from the base turns a one-step bypass into a
293
294
  two-step one, it does not eliminate it. Whoever can merge a relaxation uses it
@@ -467,7 +468,12 @@ it says.
467
468
 
468
469
  ## Status
469
470
 
470
- v0.9.2, on **residue/v0.4**. This version makes `disensor guide` hand over the
471
+ v0.9.3, on **residue/v0.4**. This version writes down when the gate Action's own
472
+ pin goes up: it travels in the next PR of real work, except when the release
473
+ fixes gate security or changes the schema version, and it says out loud that
474
+ this is a convention rather than a control
475
+ ([#17](https://github.com/NicolasRocchia/disensor/issues/17)). The previous
476
+ version makes `disensor guide` hand over the
471
477
  event runbook as well as the artifact filling guide, so an agent that is not
472
478
  Claude Code gets from one command the same material the Claude Code skill
473
479
  carries, which is what the documentation had been promising since the round
@@ -121,7 +121,7 @@ jobs:
121
121
  - uses: actions/checkout@v4
122
122
  with:
123
123
  fetch-depth: 0
124
- - uses: NicolasRocchia/disensor@v0.9.2
124
+ - uses: NicolasRocchia/disensor@v0.9.3
125
125
  ```
126
126
 
127
127
  The gate validates the declarations **the PR adds**, applies the policy and
@@ -263,6 +263,7 @@ to resolve:
263
263
  - **Organisation ruleset or required workflow**, defined outside the audited repository.
264
264
  - **Pin the Action by SHA**, not by tag: a tag is movable and is not a root of trust. `disensor init` resolves the tag of the installed version to the commit it points at and writes the workflow already frozen; without network at init time the tag stays and `disensor pin` finishes the job. The command resolves annotated tags to the commit they wrap, never to the tag object, which is the classic trap of doing it by hand. This repository's documentation still uses the tag, because it documents which version corresponds; the frozen SHA is produced by whoever deploys.
265
265
  - **Bootstrap**: the first PR that adds the config and the workflow cannot make itself the root of trust. Initial activation is an administrative step, prior to the gate meaning anything.
266
+ - **When the pin goes up**: the workflow sits in the non-relaxable floor, so raising the pin through a PR costs an adversarial round for a change whose correctness a `git rev-parse` verifies better than any model. The convention in this repository is that a new pin **travels in the next PR of real work**, with its declaration, rather than in a PR of its own. **Exception**: if the release fixes gate security or changes the schema version, the pin goes up immediately, because the window in which the repository judges itself with the previous version stops being harmless: an old gate does not know the new contract and rejects what the freshly published CLI emits. This is a convention, not a control: as long as the branch does not require pull requests with bypass disabled for administrators too, nothing prevents pushing the pin directly ([#17](https://github.com/NicolasRocchia/disensor/issues/17)).
266
267
 
267
268
  Explicit limit: reading the policy from the base turns a one-step bypass into a
268
269
  two-step one, it does not eliminate it. Whoever can merge a relaxation uses it
@@ -442,7 +443,12 @@ it says.
442
443
 
443
444
  ## Status
444
445
 
445
- v0.9.2, on **residue/v0.4**. This version makes `disensor guide` hand over the
446
+ v0.9.3, on **residue/v0.4**. This version writes down when the gate Action's own
447
+ pin goes up: it travels in the next PR of real work, except when the release
448
+ fixes gate security or changes the schema version, and it says out loud that
449
+ this is a convention rather than a control
450
+ ([#17](https://github.com/NicolasRocchia/disensor/issues/17)). The previous
451
+ version makes `disensor guide` hand over the
446
452
  event runbook as well as the artifact filling guide, so an agent that is not
447
453
  Claude Code gets from one command the same material the Claude Code skill
448
454
  carries, which is what the documentation had been promising since the round
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "disensor"
7
- version = "0.9.2"
7
+ version = "0.9.3"
8
8
  description = "Adversarial plan & code review with a declared residue. Emits, validates and CI-enforces residue declarations (residue/v0.4 schema)."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -1,2 +1,2 @@
1
1
  """disensor: residue declaration of adversarial review (controlled disagreement)."""
2
- __version__ = "0.9.2"
2
+ __version__ = "0.9.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: disensor
3
- Version: 0.9.2
3
+ Version: 0.9.3
4
4
  Summary: Adversarial plan & code review with a declared residue. Emits, validates and CI-enforces residue declarations (residue/v0.4 schema).
5
5
  Author-email: Nicolas Rocchia <nicolasrocchia@gmail.com>
6
6
  License: MIT
@@ -146,7 +146,7 @@ jobs:
146
146
  - uses: actions/checkout@v4
147
147
  with:
148
148
  fetch-depth: 0
149
- - uses: NicolasRocchia/disensor@v0.9.2
149
+ - uses: NicolasRocchia/disensor@v0.9.3
150
150
  ```
151
151
 
152
152
  The gate validates the declarations **the PR adds**, applies the policy and
@@ -288,6 +288,7 @@ to resolve:
288
288
  - **Organisation ruleset or required workflow**, defined outside the audited repository.
289
289
  - **Pin the Action by SHA**, not by tag: a tag is movable and is not a root of trust. `disensor init` resolves the tag of the installed version to the commit it points at and writes the workflow already frozen; without network at init time the tag stays and `disensor pin` finishes the job. The command resolves annotated tags to the commit they wrap, never to the tag object, which is the classic trap of doing it by hand. This repository's documentation still uses the tag, because it documents which version corresponds; the frozen SHA is produced by whoever deploys.
290
290
  - **Bootstrap**: the first PR that adds the config and the workflow cannot make itself the root of trust. Initial activation is an administrative step, prior to the gate meaning anything.
291
+ - **When the pin goes up**: the workflow sits in the non-relaxable floor, so raising the pin through a PR costs an adversarial round for a change whose correctness a `git rev-parse` verifies better than any model. The convention in this repository is that a new pin **travels in the next PR of real work**, with its declaration, rather than in a PR of its own. **Exception**: if the release fixes gate security or changes the schema version, the pin goes up immediately, because the window in which the repository judges itself with the previous version stops being harmless: an old gate does not know the new contract and rejects what the freshly published CLI emits. This is a convention, not a control: as long as the branch does not require pull requests with bypass disabled for administrators too, nothing prevents pushing the pin directly ([#17](https://github.com/NicolasRocchia/disensor/issues/17)).
291
292
 
292
293
  Explicit limit: reading the policy from the base turns a one-step bypass into a
293
294
  two-step one, it does not eliminate it. Whoever can merge a relaxation uses it
@@ -467,7 +468,12 @@ it says.
467
468
 
468
469
  ## Status
469
470
 
470
- v0.9.2, on **residue/v0.4**. This version makes `disensor guide` hand over the
471
+ v0.9.3, on **residue/v0.4**. This version writes down when the gate Action's own
472
+ pin goes up: it travels in the next PR of real work, except when the release
473
+ fixes gate security or changes the schema version, and it says out loud that
474
+ this is a convention rather than a control
475
+ ([#17](https://github.com/NicolasRocchia/disensor/issues/17)). The previous
476
+ version makes `disensor guide` hand over the
471
477
  event runbook as well as the artifact filling guide, so an agent that is not
472
478
  Claude Code gets from one command the same material the Claude Code skill
473
479
  carries, which is what the documentation had been promising since the round
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes