engineering-process 1.2.3__tar.gz → 1.2.4__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 (76) hide show
  1. {engineering_process-1.2.3/engineering_process.egg-info → engineering_process-1.2.4}/PKG-INFO +5 -1
  2. {engineering_process-1.2.3 → engineering_process-1.2.4}/README.md +4 -0
  3. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/__init__.py +1 -1
  4. {engineering_process-1.2.3 → engineering_process-1.2.4/engineering_process.egg-info}/PKG-INFO +5 -1
  5. {engineering_process-1.2.3 → engineering_process-1.2.4}/process_assets/skills/review-change/SKILL.md +25 -0
  6. {engineering_process-1.2.3 → engineering_process-1.2.4}/pyproject.toml +1 -1
  7. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_lifecycle.py +28 -0
  8. {engineering_process-1.2.3 → engineering_process-1.2.4}/LICENSE +0 -0
  9. {engineering_process-1.2.3 → engineering_process-1.2.4}/MANIFEST.in +0 -0
  10. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/__main__.py +0 -0
  11. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/_supervisor_contract.py +0 -0
  12. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/_supervisor_posix.py +0 -0
  13. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/_supervisor_windows.py +0 -0
  14. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/_windows_job.py +0 -0
  15. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/adoption.py +0 -0
  16. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/cli.py +0 -0
  17. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/commands.py +0 -0
  18. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/contracts.py +0 -0
  19. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/distribution.py +0 -0
  20. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/helper_launch.py +0 -0
  21. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/lifecycle.py +0 -0
  22. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/production_engineering.py +0 -0
  23. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/project.py +0 -0
  24. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/publication_compat.py +0 -0
  25. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/release.py +0 -0
  26. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/repository.py +0 -0
  27. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/requirements-dev.txt +0 -0
  28. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/requirements-runtime.txt +0 -0
  29. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/skills.py +0 -0
  30. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process/supervision.py +0 -0
  31. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process.egg-info/SOURCES.txt +0 -0
  32. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process.egg-info/dependency_links.txt +0 -0
  33. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process.egg-info/entry_points.txt +0 -0
  34. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process.egg-info/requires.txt +0 -0
  35. {engineering_process-1.2.3 → engineering_process-1.2.4}/engineering_process.egg-info/top_level.txt +0 -0
  36. {engineering_process-1.2.3 → engineering_process-1.2.4}/process-graph.json +0 -0
  37. {engineering_process-1.2.3 → engineering_process-1.2.4}/process_assets/skills/finish-change/SKILL.md +0 -0
  38. {engineering_process-1.2.3 → engineering_process-1.2.4}/process_assets/skills/implement-change/SKILL.md +0 -0
  39. {engineering_process-1.2.3 → engineering_process-1.2.4}/process_assets/skills/improve-process/SKILL.md +0 -0
  40. {engineering_process-1.2.3 → engineering_process-1.2.4}/process_assets/skills/plan-change/SKILL.md +0 -0
  41. {engineering_process-1.2.3 → engineering_process-1.2.4}/process_assets/skills/production-engineering/SKILL.md +0 -0
  42. {engineering_process-1.2.3 → engineering_process-1.2.4}/process_assets/skills/production-engineering/invariants.json +0 -0
  43. {engineering_process-1.2.3 → engineering_process-1.2.4}/process_assets/skills/run-change/SKILL.md +0 -0
  44. {engineering_process-1.2.3 → engineering_process-1.2.4}/process_assets/skills/start-change/SKILL.md +0 -0
  45. {engineering_process-1.2.3 → engineering_process-1.2.4}/process_assets/skills/verify-change/SKILL.md +0 -0
  46. {engineering_process-1.2.3 → engineering_process-1.2.4}/schemas/change.schema.json +0 -0
  47. {engineering_process-1.2.3 → engineering_process-1.2.4}/schemas/plan.schema.json +0 -0
  48. {engineering_process-1.2.3 → engineering_process-1.2.4}/schemas/process-graph.schema.json +0 -0
  49. {engineering_process-1.2.3 → engineering_process-1.2.4}/schemas/process-lock.schema.json +0 -0
  50. {engineering_process-1.2.3 → engineering_process-1.2.4}/schemas/production-engineering.schema.json +0 -0
  51. {engineering_process-1.2.3 → engineering_process-1.2.4}/schemas/project-legacy.schema.json +0 -0
  52. {engineering_process-1.2.3 → engineering_process-1.2.4}/schemas/project.schema.json +0 -0
  53. {engineering_process-1.2.3 → engineering_process-1.2.4}/schemas/receipt.schema.json +0 -0
  54. {engineering_process-1.2.3 → engineering_process-1.2.4}/schemas/release-change.schema.json +0 -0
  55. {engineering_process-1.2.3 → engineering_process-1.2.4}/schemas/release.schema.json +0 -0
  56. {engineering_process-1.2.3 → engineering_process-1.2.4}/schemas/review.schema.json +0 -0
  57. {engineering_process-1.2.3 → engineering_process-1.2.4}/schemas/run.schema.json +0 -0
  58. {engineering_process-1.2.3 → engineering_process-1.2.4}/setup.cfg +0 -0
  59. {engineering_process-1.2.3 → engineering_process-1.2.4}/templates/AGENTS.process.md +0 -0
  60. {engineering_process-1.2.3 → engineering_process-1.2.4}/templates/PULL_REQUEST_TEMPLATE.md +0 -0
  61. {engineering_process-1.2.3 → engineering_process-1.2.4}/templates/adopt-process-windows-job.py +0 -0
  62. {engineering_process-1.2.3 → engineering_process-1.2.4}/templates/adopt-process.py +0 -0
  63. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_adoption.py +0 -0
  64. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_architecture.py +0 -0
  65. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_automation.py +0 -0
  66. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_cli.py +0 -0
  67. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_commands.py +0 -0
  68. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_contracts.py +0 -0
  69. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_distribution.py +0 -0
  70. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_production_engineering.py +0 -0
  71. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_publication_compat.py +0 -0
  72. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_pypi_cache_horizon.py +0 -0
  73. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_release.py +0 -0
  74. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_repository.py +0 -0
  75. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_skills.py +0 -0
  76. {engineering_process-1.2.3 → engineering_process-1.2.4}/tests/test_supervisor_posix.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: engineering-process
3
- Version: 1.2.3
3
+ Version: 1.2.4
4
4
  Summary: A small agent-neutral engineering lifecycle with managed adoption
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://github.com/phuongnse/engineering-process
@@ -352,6 +352,10 @@ URL; without it, the review remains pending. Earlier plan and review documents r
352
352
  readable, and their runs remain registrable or finishable with the version selected by
353
353
  the authority that started the relevant phase.
354
354
 
355
+ The [finding priority definitions](process_assets/skills/review-change/SKILL.md#finding-priority)
356
+ are the canonical P0-P3 impact convention for this process, including examples and
357
+ their relationship to blocking decisions.
358
+
355
359
  ## Running a change
356
360
 
357
361
  Create and validate a change contract, then register it:
@@ -328,6 +328,10 @@ URL; without it, the review remains pending. Earlier plan and review documents r
328
328
  readable, and their runs remain registrable or finishable with the version selected by
329
329
  the authority that started the relevant phase.
330
330
 
331
+ The [finding priority definitions](process_assets/skills/review-change/SKILL.md#finding-priority)
332
+ are the canonical P0-P3 impact convention for this process, including examples and
333
+ their relationship to blocking decisions.
334
+
331
335
  ## Running a change
332
336
 
333
337
  Create and validate a change contract, then register it:
@@ -1,3 +1,3 @@
1
1
  """Agent-neutral engineering process."""
2
2
 
3
- VERSION = "1.2.3"
3
+ VERSION = "1.2.4"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: engineering-process
3
- Version: 1.2.3
3
+ Version: 1.2.4
4
4
  Summary: A small agent-neutral engineering lifecycle with managed adoption
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://github.com/phuongnse/engineering-process
@@ -352,6 +352,10 @@ URL; without it, the review remains pending. Earlier plan and review documents r
352
352
  readable, and their runs remain registrable or finishable with the version selected by
353
353
  the authority that started the relevant phase.
354
354
 
355
+ The [finding priority definitions](process_assets/skills/review-change/SKILL.md#finding-priority)
356
+ are the canonical P0-P3 impact convention for this process, including examples and
357
+ their relationship to blocking decisions.
358
+
355
359
  ## Running a change
356
360
 
357
361
  Create and validate a change contract, then register it:
@@ -62,3 +62,28 @@ Follow-up scope is only carried findings, remediation diffs, and regressions aga
62
62
  the frozen contract. A new blocker must be either remediation-caused or a P0/P1 late
63
63
  violation with a rationale. After two correction cycles, another changes-requested
64
64
  verdict blocks the change; it never turns into approval or permission to skip review.
65
+
66
+ ## Finding priority
67
+
68
+ P0-P3 are this process's review-impact convention. Assess the consequences if the
69
+ finding remains unresolved in a supported scenario. Consumer scheduling and incident
70
+ response deadlines remain consumer-owned.
71
+
72
+ | Priority | Impact | Illustrative example |
73
+ | --- | --- | --- |
74
+ | P0 - critical | Catastrophic loss of essential operation, authoritative data, or a critical security guarantee. | Irrecoverable loss of the only authoritative dataset. |
75
+ | P1 - high | Severe failure of a core workflow or guarantee, below P0's catastrophic consequences. | A primary workflow produces wrong results that can be regenerated from intact inputs. |
76
+ | P2 - medium | Material but contained incorrect behavior or operational or maintenance cost; core workflows remain usable. | A recoverable failure in a secondary workflow with a safe alternative. |
77
+ | P3 - low | Minor inconvenience or clarity or consistency defect with little effect on behavior or reliability. | An unclear optional explanation when all required steps remain unambiguous. |
78
+
79
+ Choose the highest level whose consequences the evidence supports. Explain affected
80
+ guarantees, reach, preconditions, recoverability, and safe alternatives. Examples are
81
+ illustrative, not an exhaustive classifier; file type, finding category, keywords,
82
+ and ease of repair do not determine priority.
83
+
84
+ Severity follows whether the reviewed snapshot violates the accepted contract or an
85
+ applicable production invariant; priority is not a waiver. A P2 or P3 finding can
86
+ therefore be blocking. The existing P0/P1 restriction on a new `critical-late` blocker
87
+ is an eligibility condition, not permission to block without the required bounded
88
+ late rationale. Preserve carried finding priorities and historical reports under the
89
+ existing correction-cycle rules.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "engineering-process"
7
- version = "1.2.3"
7
+ version = "1.2.4"
8
8
  description = "A small agent-neutral engineering lifecycle with managed adoption"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -793,6 +793,34 @@ class LifecycleTests(unittest.TestCase):
793
793
  (self.root / ".process" / "runs" / "sample-change").exists()
794
794
  )
795
795
 
796
+ def test_live_producer_policy_requires_its_accepted_issue(self) -> None:
797
+ project = json.loads((PROCESS_ROOT / ".process" / "project.json").read_text())
798
+ self.project["lifecycle"]["processChanges"] = project["lifecycle"]["processChanges"]
799
+ self.contract["consumerEvidence"] = [
800
+ {"repository": "engineering-process", "incident": "Deferred issue handoff enablement."}
801
+ ]
802
+ for source in (
803
+ "issue-110",
804
+ "https://github.com/other/process/issues/110",
805
+ "https://github.com/phuongnse/engineering-process/pull/118",
806
+ ):
807
+ with self.subTest(source=source):
808
+ self.contract["source"] = source
809
+ write_json(self.contract_path, self.contract)
810
+ with self.assertRaisesRegex(ProcessError, "numbered issue"):
811
+ start_change(
812
+ self.root, PROCESS_ROOT, self.project, self.contract_path,
813
+ actor_id="author", context_id="author-context", kind="agent",
814
+ )
815
+ self.assertFalse((self.root / ".process" / "runs").exists())
816
+ self.contract["source"] = "https://github.com/phuongnse/engineering-process/issues/110"
817
+ write_json(self.contract_path, self.contract)
818
+ state = start_change(
819
+ self.root, PROCESS_ROOT, self.project, self.contract_path,
820
+ actor_id="author", context_id="author-context", kind="agent",
821
+ )
822
+ self.assertEqual("specified", state["phase"])
823
+
796
824
  def test_evidence_only_process_change_policy_remains_compatible(self) -> None:
797
825
  self.project["lifecycle"]["processChanges"] = {
798
826
  "requireConsumerEvidence": True