modwire 4.0.0__tar.gz → 5.0.0__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 (136) hide show
  1. {modwire-4.0.0 → modwire-5.0.0}/.github/ISSUE_TEMPLATE/bug_report.yml +3 -2
  2. modwire-5.0.0/.github/ISSUE_TEMPLATE/decision.yml +48 -0
  3. modwire-5.0.0/.github/ISSUE_TEMPLATE/epic.yml +51 -0
  4. {modwire-4.0.0 → modwire-5.0.0}/.github/ISSUE_TEMPLATE/feature_request.yml +3 -2
  5. modwire-5.0.0/.github/ISSUE_TEMPLATE/task.yml +56 -0
  6. {modwire-4.0.0 → modwire-5.0.0}/.github/modwire-ecosystem.yml +84 -26
  7. {modwire-4.0.0 → modwire-5.0.0}/.github/scripts/reconcile_ecosystem.py +245 -9
  8. modwire-5.0.0/.github/workflows/human-approval.yml +133 -0
  9. modwire-5.0.0/.github/workflows/issue-metadata-check.yml +17 -0
  10. modwire-5.0.0/.github/workflows/issue-metadata.yml +87 -0
  11. modwire-4.0.0/.github/workflows/python-github-release.yml → modwire-5.0.0/.github/workflows/python-release-assets.yml +7 -5
  12. {modwire-4.0.0 → modwire-5.0.0}/.github/workflows/release.yml +17 -16
  13. {modwire-4.0.0 → modwire-5.0.0}/CHANGELOG.md +32 -0
  14. modwire-5.0.0/MANIFEST.in +2 -0
  15. {modwire-4.0.0/src/modwire.egg-info → modwire-5.0.0}/PKG-INFO +35 -29
  16. {modwire-4.0.0 → modwire-5.0.0}/README.md +30 -24
  17. modwire-5.0.0/docs/decisions/0001-canonical-modwire-repository-shape.md +106 -0
  18. {modwire-4.0.0 → modwire-5.0.0}/docs/governance/github-ecosystem.md +93 -26
  19. {modwire-4.0.0 → modwire-5.0.0}/docs/governance/python-workflows.md +28 -24
  20. modwire-5.0.0/docs/migration-5.md +53 -0
  21. modwire-5.0.0/docs/scaffolding/golden/cli.yaml +44 -0
  22. modwire-5.0.0/docs/scaffolding/golden/library.yaml +40 -0
  23. modwire-5.0.0/docs/scaffolding/repository-contract-v1.yaml +147 -0
  24. modwire-5.0.0/docs/wiki/Home.md +28 -0
  25. {modwire-4.0.0 → modwire-5.0.0}/docs/wiki/Reporting-bugs.md +1 -1
  26. {modwire-4.0.0 → modwire-5.0.0}/docs/wiki/Requesting-features.md +1 -1
  27. {modwire-4.0.0 → modwire-5.0.0}/pyproject.toml +4 -4
  28. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/__init__.py +2 -0
  29. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/_version.py +3 -3
  30. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/__init__.py +0 -3
  31. modwire-5.0.0/src/modwire/architecture/app.py +67 -0
  32. modwire-5.0.0/src/modwire/architecture/boundaries/__init__.py +4 -0
  33. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/boundaries/analyzer.py +6 -2
  34. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/boundaries/analyzers/backward.py +2 -0
  35. modwire-5.0.0/src/modwire/architecture/boundaries/analyzers/module_boundaries.py +146 -0
  36. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/boundaries/analyzers/no_cycles.py +2 -0
  37. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/boundaries/analyzers/no_reentry.py +2 -0
  38. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/boundaries/base.py +4 -0
  39. modwire-5.0.0/src/modwire/architecture/boundaries/composition.py +22 -0
  40. modwire-5.0.0/src/modwire/architecture/composition.py +21 -0
  41. modwire-5.0.0/src/modwire/architecture/insights/__init__.py +4 -0
  42. modwire-5.0.0/src/modwire/architecture/insights/composition.py +18 -0
  43. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/insights/reporters/coherence.py +2 -7
  44. modwire-5.0.0/src/modwire/architecture/map/__init__.py +4 -0
  45. modwire-5.0.0/src/modwire/architecture/map/composition.py +8 -0
  46. modwire-5.0.0/src/modwire/architecture/shape/__init__.py +4 -0
  47. modwire-5.0.0/src/modwire/architecture/shape/composition.py +27 -0
  48. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/shape/resolvers/import_resolver.py +5 -1
  49. modwire-5.0.0/src/modwire/code/__init__.py +6 -0
  50. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/facade.py +1 -8
  51. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/projects/__init__.py +10 -0
  52. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/projects/ecosystem.py +73 -10
  53. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/shared/base.py +0 -15
  54. modwire-5.0.0/src/modwire/shared/config/modwire.py +14 -0
  55. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/shared/config/shape.py +2 -2
  56. {modwire-4.0.0 → modwire-5.0.0/src/modwire.egg-info}/PKG-INFO +35 -29
  57. {modwire-4.0.0 → modwire-5.0.0}/src/modwire.egg-info/SOURCES.txt +22 -4
  58. {modwire-4.0.0 → modwire-5.0.0}/src/modwire.egg-info/requires.txt +1 -1
  59. {modwire-4.0.0 → modwire-5.0.0}/src/modwire.egg-info/scm_file_list.json +22 -4
  60. modwire-5.0.0/src/modwire.egg-info/scm_version.json +8 -0
  61. {modwire-4.0.0 → modwire-5.0.0}/tests/test_architecture.py +2 -2
  62. modwire-5.0.0/tests/test_boundaries.py +192 -0
  63. {modwire-4.0.0 → modwire-5.0.0}/tests/test_ecosystem_contract.py +40 -13
  64. modwire-5.0.0/tests/test_import_shape.py +57 -0
  65. {modwire-4.0.0 → modwire-5.0.0}/tests/test_models.py +9 -12
  66. modwire-5.0.0/tests/test_repository_shape_contract.py +44 -0
  67. {modwire-4.0.0 → modwire-5.0.0}/uv.lock +4 -4
  68. modwire-4.0.0/MANIFEST.in +0 -1
  69. modwire-4.0.0/docs/wiki/Home.md +0 -27
  70. modwire-4.0.0/src/modwire/architecture/app.py +0 -137
  71. modwire-4.0.0/src/modwire/architecture/boundaries/__init__.py +0 -8
  72. modwire-4.0.0/src/modwire/architecture/insights/__init__.py +0 -8
  73. modwire-4.0.0/src/modwire/architecture/map/__init__.py +0 -11
  74. modwire-4.0.0/src/modwire/architecture/shape/__init__.py +0 -8
  75. modwire-4.0.0/src/modwire/code/__init__.py +0 -10
  76. modwire-4.0.0/src/modwire/code/reader.py +0 -9
  77. modwire-4.0.0/src/modwire/code/writer.py +0 -27
  78. modwire-4.0.0/src/modwire/shared/config/modwire.py +0 -54
  79. modwire-4.0.0/src/modwire.egg-info/scm_version.json +0 -8
  80. {modwire-4.0.0 → modwire-5.0.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  81. {modwire-4.0.0 → modwire-5.0.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  82. {modwire-4.0.0 → modwire-5.0.0}/.github/workflows/ci.yml +0 -0
  83. {modwire-4.0.0 → modwire-5.0.0}/.github/workflows/python-package.yml +0 -0
  84. {modwire-4.0.0 → modwire-5.0.0}/.github/workflows/python-release-build.yml +0 -0
  85. {modwire-4.0.0 → modwire-5.0.0}/.gitignore +0 -0
  86. {modwire-4.0.0 → modwire-5.0.0}/.modwire/boundaries.yaml +0 -0
  87. {modwire-4.0.0 → modwire-5.0.0}/.modwire/shape.yaml +0 -0
  88. {modwire-4.0.0 → modwire-5.0.0}/CONTRIBUTING.md +0 -0
  89. {modwire-4.0.0 → modwire-5.0.0}/LICENSE +0 -0
  90. {modwire-4.0.0 → modwire-5.0.0}/Makefile +0 -0
  91. {modwire-4.0.0 → modwire-5.0.0}/docs/wiki/Development-checks.md +0 -0
  92. {modwire-4.0.0 → modwire-5.0.0}/setup.cfg +0 -0
  93. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/boundaries/analyzers/__init__.py +0 -0
  94. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/boundaries/analyzers/analyzer_base.py +0 -0
  95. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/boundaries/collector.py +0 -0
  96. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/boundaries/tags/__init__.py +0 -0
  97. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/boundaries/tags/matcher.py +0 -0
  98. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/boundaries/tags/tag_map.py +0 -0
  99. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/insights/base.py +0 -0
  100. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/insights/collector.py +0 -0
  101. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/insights/reporters/__init__.py +0 -0
  102. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/insights/reporters/base.py +0 -0
  103. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/insights/reporters/callables.py +0 -0
  104. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/insights/reporters/clusters.py +0 -0
  105. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/insights/reporters/exports.py +0 -0
  106. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/insights/reporters/hotspots.py +0 -0
  107. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/map/base.py +0 -0
  108. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/map/collector.py +0 -0
  109. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/map/loader.py +0 -0
  110. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/shape/base.py +0 -0
  111. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/shape/collector.py +0 -0
  112. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/shape/resolvers/__init__.py +0 -0
  113. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/shape/resolvers/abstract_class_resolver.py +0 -0
  114. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/shape/resolvers/callable_resolver.py +0 -0
  115. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/shape/resolvers/class_resolver.py +0 -0
  116. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/shape/resolvers/file_resolver.py +0 -0
  117. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/shape/resolvers/property_resolver.py +0 -0
  118. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/shape/resolvers/signature_resolver.py +0 -0
  119. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/architecture/shape/resolvers/symbol_resolver.py +0 -0
  120. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/code/package.py +0 -0
  121. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/layers/__init__.py +0 -0
  122. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/layers/app.py +0 -0
  123. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/modules/__init__.py +0 -0
  124. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/modules/app.py +0 -0
  125. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/projects/app.py +0 -0
  126. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/py.typed +0 -0
  127. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/shared/__init__.py +0 -0
  128. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/shared/config/__init__.py +0 -0
  129. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/shared/config/architecture.py +0 -0
  130. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/shared/config/layers.py +0 -0
  131. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/shared/config/modules.py +0 -0
  132. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/shared/config/projects.py +0 -0
  133. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/shared/report/__init__.py +0 -0
  134. {modwire-4.0.0 → modwire-5.0.0}/src/modwire/shared/report/base.py +0 -0
  135. {modwire-4.0.0 → modwire-5.0.0}/src/modwire.egg-info/dependency_links.txt +0 -0
  136. {modwire-4.0.0 → modwire-5.0.0}/src/modwire.egg-info/top_level.txt +0 -0
@@ -1,8 +1,9 @@
1
1
  name: Bug report
2
2
  description: Report incorrect architecture analysis, graph output, package metadata, or report output.
3
3
  title: "Bug: "
4
- labels:
5
- - bug
4
+ type: Bug
5
+ projects:
6
+ - modwire/1
6
7
  body:
7
8
  - type: markdown
8
9
  attributes:
@@ -0,0 +1,48 @@
1
+ name: Architecture or governance decision
2
+ description: Record a decision that changes contracts, compatibility, architecture, or governance.
3
+ title: "Decision: "
4
+ type: Decision
5
+ labels:
6
+ - contract
7
+ projects:
8
+ - modwire/1
9
+ body:
10
+ - type: textarea
11
+ id: context
12
+ attributes:
13
+ label: Context
14
+ description: Explain the forces, constraints, and decision deadline.
15
+ validations:
16
+ required: true
17
+
18
+ - type: textarea
19
+ id: options
20
+ attributes:
21
+ label: Options considered
22
+ description: Describe credible alternatives and their tradeoffs.
23
+ validations:
24
+ required: true
25
+
26
+ - type: textarea
27
+ id: decision
28
+ attributes:
29
+ label: Proposed decision
30
+ description: State the proposed choice and why it best fits the constraints.
31
+ validations:
32
+ required: true
33
+
34
+ - type: textarea
35
+ id: consequences
36
+ attributes:
37
+ label: Consequences and acceptance criteria
38
+ description: Describe positive and negative consequences plus the evidence needed to consider the decision implemented.
39
+ validations:
40
+ required: true
41
+
42
+ - type: input
43
+ id: relationships
44
+ attributes:
45
+ label: Related issues and decisions
46
+ description: Link superseded, blocking, blocked, parent, or implementation issues.
47
+ validations:
48
+ required: false
@@ -0,0 +1,51 @@
1
+ name: Ecosystem epic
2
+ description: Coordinate an outcome delivered by multiple repository-owned sub-issues.
3
+ title: "Epic: "
4
+ type: Epic
5
+ labels:
6
+ - ecosystem
7
+ projects:
8
+ - modwire/1
9
+ body:
10
+ - type: textarea
11
+ id: outcome
12
+ attributes:
13
+ label: Ecosystem outcome
14
+ description: Describe the user-visible or compatibility result across packages.
15
+ validations:
16
+ required: true
17
+
18
+ - type: textarea
19
+ id: repositories
20
+ attributes:
21
+ label: Affected repositories
22
+ description: List every repository expected to own a sub-issue.
23
+ placeholder: |
24
+ - modwire/modwire
25
+ - modwire/modwire-cli
26
+ validations:
27
+ required: true
28
+
29
+ - type: textarea
30
+ id: acceptance
31
+ attributes:
32
+ label: Acceptance criteria
33
+ description: Include integration verification and release-readiness conditions.
34
+ validations:
35
+ required: true
36
+
37
+ - type: textarea
38
+ id: rollout
39
+ attributes:
40
+ label: Rollout and rollback
41
+ description: Define compatibility promises, rollout order, and rollback strategy.
42
+ validations:
43
+ required: true
44
+
45
+ - type: input
46
+ id: relationships
47
+ attributes:
48
+ label: Initial sub-issues and dependencies
49
+ description: Link existing issues. Create native sub-issue and dependency relationships after submission.
50
+ validations:
51
+ required: false
@@ -1,8 +1,9 @@
1
1
  name: Feature request
2
2
  description: Suggest a new architecture, graph, shape, callable, export, or integration capability.
3
3
  title: "Feature: "
4
- labels:
5
- - enhancement
4
+ type: Feature
5
+ projects:
6
+ - modwire/1
6
7
  body:
7
8
  - type: markdown
8
9
  attributes:
@@ -0,0 +1,56 @@
1
+ name: Task
2
+ description: Propose concrete implementation, maintenance, documentation, or release work.
3
+ title: "Task: "
4
+ type: Task
5
+ projects:
6
+ - modwire/1
7
+ body:
8
+ - type: markdown
9
+ attributes:
10
+ value: |
11
+ Select every pinned issue field before submission. Use native dependencies and sub-issues for relationships; do not encode them only in prose.
12
+
13
+ - type: textarea
14
+ id: outcome
15
+ attributes:
16
+ label: Outcome
17
+ description: State the observable result, not only the activity.
18
+ placeholder: After this work...
19
+ validations:
20
+ required: true
21
+
22
+ - type: textarea
23
+ id: scope
24
+ attributes:
25
+ label: Scope
26
+ description: Describe the intended implementation boundary and important exclusions.
27
+ validations:
28
+ required: true
29
+
30
+ - type: textarea
31
+ id: acceptance
32
+ attributes:
33
+ label: Acceptance criteria
34
+ description: List objective conditions that prove the outcome is complete.
35
+ placeholder: |
36
+ - [ ] Observable behavior is implemented.
37
+ - [ ] Relevant tests and documentation are updated.
38
+ validations:
39
+ required: true
40
+
41
+ - type: textarea
42
+ id: rollout
43
+ attributes:
44
+ label: Rollout and rollback
45
+ description: Explain compatibility, migration, rollout, or rollback considerations; write "Not applicable" when none exist.
46
+ validations:
47
+ required: true
48
+
49
+ - type: input
50
+ id: relationships
51
+ attributes:
52
+ label: Related issues
53
+ description: Link candidate parents, sub-issues, blockers, or blocked work. A maintainer will create the native relationships.
54
+ placeholder: https://github.com/modwire/...
55
+ validations:
56
+ required: false
@@ -1,8 +1,8 @@
1
- version: 2
1
+ version: 3
2
2
 
3
3
  packages:
4
4
  core:
5
- repository: 9orky/modwire
5
+ repository: modwire/modwire
6
6
  distribution: modwire
7
7
  component: Core
8
8
  role: coordinator
@@ -10,7 +10,7 @@ packages:
10
10
  summary: Typed coordination library and ecosystem integration gate.
11
11
  depends_on: [extraction, mermaid, siren]
12
12
  cli:
13
- repository: 9orky/modwire-cli
13
+ repository: modwire/modwire-cli
14
14
  distribution: modwire-cli
15
15
  component: CLI
16
16
  role: runtime
@@ -18,43 +18,43 @@ packages:
18
18
  summary: Command-line runtime and user-facing workflows.
19
19
  depends_on: [core]
20
20
  extraction:
21
- repository: 9orky/modwire-extraction
21
+ repository: modwire/modwire-extraction
22
22
  distribution: modwire-extraction
23
23
  component: Extraction
24
24
  role: building_block
25
25
  lifecycle: active
26
26
  summary: Canonical source extraction and normalization.
27
27
  mermaid:
28
- repository: 9orky/modwire-mermaid
28
+ repository: modwire/modwire-mermaid
29
29
  distribution: modwire-mermaid
30
30
  component: Mermaid
31
31
  role: building_block
32
32
  lifecycle: active
33
33
  summary: Typed, deterministic Mermaid source generation.
34
34
  siren:
35
- repository: 9orky/modwire-siren
35
+ repository: modwire/modwire-siren
36
36
  distribution: modwire-siren
37
37
  component: Siren
38
38
  role: building_block
39
39
  lifecycle: active
40
40
  summary: Typed Siren hypermedia and OpenAPI integration.
41
41
  mcp:
42
- repository: 9orky/modwire-mcp
42
+ repository: modwire/modwire-mcp
43
43
  distribution: modwire-mcp
44
44
  component: MCP
45
45
  role: integration
46
46
  lifecycle: incubating
47
- summary: MCP surface and future home of scaffolding operations.
48
- depends_on: [core]
47
+ summary: Planned MCP integration, activated after CLI exposes filesystem, project, and execution capabilities.
48
+ depends_on: [cli]
49
49
 
50
50
  project:
51
- owner: 9orky
51
+ owner: modwire
52
52
  title: Modwire Ecosystem
53
- number: 4
53
+ number: 1
54
54
  visibility: public
55
55
  default_package: core
56
56
  description: Cross-repository roadmap and release coordination for the Modwire ecosystem.
57
- governance_url: https://github.com/9orky/modwire/blob/main/docs/governance/github-ecosystem.md
57
+ governance_url: https://github.com/modwire/modwire/blob/main/docs/governance/github-ecosystem.md
58
58
 
59
59
  workflows:
60
60
  contract_ref: workflows-v1
@@ -62,7 +62,9 @@ workflows:
62
62
  release_entrypoint: .github/workflows/release.yml
63
63
  verify_reusable: .github/workflows/python-package.yml
64
64
  release_build_reusable: .github/workflows/python-release-build.yml
65
- github_release_reusable: .github/workflows/python-github-release.yml
65
+ release_assets_reusable: .github/workflows/python-release-assets.yml
66
+ release_driver: github_release
67
+ release_event: published
66
68
  release_tag_pattern: ^v(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$
67
69
  artifact_name: python-package-distributions
68
70
  pypi_environment: pypi
@@ -73,26 +75,85 @@ workflows:
73
75
  download_artifact: actions/download-artifact@v8
74
76
  publish_pypi: pypa/gh-action-pypi-publish@release/v1
75
77
 
78
+ issue_types:
79
+ Task:
80
+ description: A concrete unit of implementation, maintenance, or documentation work.
81
+ color: yellow
82
+ Bug:
83
+ description: Incorrect or unexpected existing behavior.
84
+ color: red
85
+ Feature:
86
+ description: A new user-facing capability or behavior.
87
+ color: blue
88
+ Epic:
89
+ description: A coordinated outcome delivered through multiple sub-issues.
90
+ color: purple
91
+ Decision:
92
+ description: An architecture, compatibility, or governance decision.
93
+ color: green
94
+
76
95
  fields:
77
96
  Status:
97
+ owner: project
78
98
  type: single_select
79
99
  options: [Inbox, Ready, In progress, Blocked, Review, Done]
80
100
  Horizon:
101
+ owner: issue
81
102
  type: single_select
82
- options: [Now, Next, Later]
103
+ description: Planning horizon; Unscheduled means accepted but not placed on the roadmap.
104
+ visibility: public
105
+ options: [Now, Next, Later, Unscheduled]
83
106
  Priority:
107
+ owner: issue
84
108
  type: single_select
109
+ description: Relative delivery priority, from critical P0 to opportunistic P3.
110
+ visibility: public
85
111
  options: [P0, P1, P2, P3]
86
112
  Component:
113
+ owner: issue
87
114
  type: single_select
115
+ description: Modwire package primarily responsible for delivery.
116
+ visibility: public
88
117
  source: packages
89
118
  Release train:
119
+ owner: issue
90
120
  type: text
121
+ description: Coordinated delivery train, or Unscheduled when none applies.
122
+ visibility: public
91
123
  Target date:
124
+ owner: issue
92
125
  type: date
126
+ description: Expected completion date for committed work.
127
+ visibility: public
128
+ Start date:
129
+ owner: issue
130
+ type: date
131
+ description: Date on which active implementation begins.
132
+ visibility: public
93
133
  Risk:
134
+ owner: issue
94
135
  type: single_select
136
+ description: Delivery, compatibility, or operational risk if the issue changes or slips.
137
+ visibility: public
95
138
  options: [Low, Medium, High]
139
+ Effort:
140
+ owner: issue
141
+ type: single_select
142
+ description: Relative implementation effort using T-shirt sizing.
143
+ visibility: public
144
+ options: [XS, S, M, L, XL]
145
+
146
+ issue_intake:
147
+ project: modwire/1
148
+ required_fields: [Horizon, Priority, Risk, Component, Release train, Effort]
149
+ ready_requires: [assignee, acceptance_criteria]
150
+ incomplete_label: needs-metadata
151
+ agent_must_not_guess: true
152
+
153
+ relationships:
154
+ dependencies: native
155
+ hierarchy: native_sub_issues
156
+ cross_repository_parent: modwire/modwire
96
157
 
97
158
  views:
98
159
  - name: Roadmap
@@ -120,16 +181,10 @@ views:
120
181
  filter: "Status:Inbox"
121
182
 
122
183
  labels:
123
- "type:bug":
124
- color: "d73a4a"
125
- description: Incorrect existing behavior
126
- "type:feature":
127
- color: "0e8a16"
128
- description: New user-facing capability
129
- "type:maintenance":
184
+ maintenance:
130
185
  color: "c5def5"
131
186
  description: Internal maintenance
132
- "type:docs":
187
+ documentation:
133
188
  color: "0075ca"
134
189
  description: Documentation
135
190
  ecosystem:
@@ -141,19 +196,22 @@ labels:
141
196
  breaking:
142
197
  color: "b60205"
143
198
  description: Backward-incompatible change
144
- blocked:
145
- color: "e99695"
146
- description: Blocked by another decision or delivery
147
199
  release-gate:
148
200
  color: "fbca04"
149
201
  description: Must complete before a release
202
+ needs-metadata:
203
+ color: "b60205"
204
+ description: Missing required issue intake metadata
205
+ requires-human-approval:
206
+ color: "d93f0b"
207
+ description: Explicitly require a human to approve the pull request
150
208
 
151
209
  automation:
152
210
  auto_add_filter: "is:open"
153
211
  added_status: Inbox
154
212
  closed_status: Done
155
213
  merged_status: Done
156
- archive_filter: "Status:Done updated:<@today-30d"
214
+ archive_filter: "is:closed updated:<@today-30d"
157
215
 
158
216
  milestones:
159
217
  scope: repository