specfuse-orchestrator 0.3.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 (154) hide show
  1. specfuse_orchestrator-0.3.0/.gitignore +34 -0
  2. specfuse_orchestrator-0.3.0/LICENSE +201 -0
  3. specfuse_orchestrator-0.3.0/NOTICE +6 -0
  4. specfuse_orchestrator-0.3.0/PKG-INFO +87 -0
  5. specfuse_orchestrator-0.3.0/README.md +63 -0
  6. specfuse_orchestrator-0.3.0/agents/README.md +47 -0
  7. specfuse_orchestrator-0.3.0/agents/component/README.md +30 -0
  8. specfuse_orchestrator-0.3.0/agents/onboarding/README.md +28 -0
  9. specfuse_orchestrator-0.3.0/agents/pm/README.md +32 -0
  10. specfuse_orchestrator-0.3.0/agents/qa/README.md +30 -0
  11. specfuse_orchestrator-0.3.0/agents/specs/README.md +29 -0
  12. specfuse_orchestrator-0.3.0/hatch_build.py +28 -0
  13. specfuse_orchestrator-0.3.0/project/README.md +28 -0
  14. specfuse_orchestrator-0.3.0/pyproject.toml +70 -0
  15. specfuse_orchestrator-0.3.0/scripts/README.md +238 -0
  16. specfuse_orchestrator-0.3.0/shared/ci/README.md +44 -0
  17. specfuse_orchestrator-0.3.0/shared/ci/merge-watcher.yml +150 -0
  18. specfuse_orchestrator-0.3.0/shared/distribution/README.md +125 -0
  19. specfuse_orchestrator-0.3.0/shared/distribution/ownership-manifest.yaml +336 -0
  20. specfuse_orchestrator-0.3.0/shared/rules/.gitkeep +0 -0
  21. specfuse_orchestrator-0.3.0/shared/rules/README.md +26 -0
  22. specfuse_orchestrator-0.3.0/shared/rules/correlation-ids.md +71 -0
  23. specfuse_orchestrator-0.3.0/shared/rules/escalation-protocol.md +80 -0
  24. specfuse_orchestrator-0.3.0/shared/rules/never-touch.md +66 -0
  25. specfuse_orchestrator-0.3.0/shared/rules/override-registry.md +86 -0
  26. specfuse_orchestrator-0.3.0/shared/rules/role-switch-hygiene.md +39 -0
  27. specfuse_orchestrator-0.3.0/shared/rules/security-boundaries.md +77 -0
  28. specfuse_orchestrator-0.3.0/shared/rules/state-vocabulary.md +104 -0
  29. specfuse_orchestrator-0.3.0/shared/rules/verify-before-report.md +97 -0
  30. specfuse_orchestrator-0.3.0/shared/schemas/README.md +34 -0
  31. specfuse_orchestrator-0.3.0/shared/schemas/event.schema.json +78 -0
  32. specfuse_orchestrator-0.3.0/shared/schemas/events/README.md +45 -0
  33. specfuse_orchestrator-0.3.0/shared/schemas/events/escalation_resolved.schema.json +41 -0
  34. specfuse_orchestrator-0.3.0/shared/schemas/events/feature_created.schema.json +42 -0
  35. specfuse_orchestrator-0.3.0/shared/schemas/events/feature_state_changed.schema.json +82 -0
  36. specfuse_orchestrator-0.3.0/shared/schemas/events/human_escalation.schema.json +45 -0
  37. specfuse_orchestrator-0.3.0/shared/schemas/events/initiative_created.schema.json +42 -0
  38. specfuse_orchestrator-0.3.0/shared/schemas/events/qa_execution_completed.schema.json +42 -0
  39. specfuse_orchestrator-0.3.0/shared/schemas/events/qa_execution_failed.schema.json +78 -0
  40. specfuse_orchestrator-0.3.0/shared/schemas/events/qa_regression_filed.schema.json +46 -0
  41. specfuse_orchestrator-0.3.0/shared/schemas/events/qa_regression_resolved.schema.json +46 -0
  42. specfuse_orchestrator-0.3.0/shared/schemas/events/regression_suite_curated.schema.json +101 -0
  43. specfuse_orchestrator-0.3.0/shared/schemas/events/spec_issue_resolved.schema.json +36 -0
  44. specfuse_orchestrator-0.3.0/shared/schemas/events/spec_issue_routed.schema.json +31 -0
  45. specfuse_orchestrator-0.3.0/shared/schemas/events/spec_validated.schema.json +77 -0
  46. specfuse_orchestrator-0.3.0/shared/schemas/events/task_started.schema.json +27 -0
  47. specfuse_orchestrator-0.3.0/shared/schemas/events/template_coverage_checked.schema.json +30 -0
  48. specfuse_orchestrator-0.3.0/shared/schemas/events/test_plan_authored.schema.json +25 -0
  49. specfuse_orchestrator-0.3.0/shared/schemas/examples/escalation_resolved.json +13 -0
  50. specfuse_orchestrator-0.3.0/shared/schemas/examples/event.json +11 -0
  51. specfuse_orchestrator-0.3.0/shared/schemas/examples/feature-frontmatter.json +35 -0
  52. specfuse_orchestrator-0.3.0/shared/schemas/examples/feature_created.json +6 -0
  53. specfuse_orchestrator-0.3.0/shared/schemas/examples/override.json +10 -0
  54. specfuse_orchestrator-0.3.0/shared/schemas/examples/qa_execution_completed.json +14 -0
  55. specfuse_orchestrator-0.3.0/shared/schemas/examples/qa_execution_failed.json +21 -0
  56. specfuse_orchestrator-0.3.0/shared/schemas/examples/qa_regression_filed.json +14 -0
  57. specfuse_orchestrator-0.3.0/shared/schemas/examples/qa_regression_resolved.json +14 -0
  58. specfuse_orchestrator-0.3.0/shared/schemas/examples/regression_suite_curated.json +28 -0
  59. specfuse_orchestrator-0.3.0/shared/schemas/examples/spec_validated.json +10 -0
  60. specfuse_orchestrator-0.3.0/shared/schemas/examples/template-coverage.json +11 -0
  61. specfuse_orchestrator-0.3.0/shared/schemas/examples/test-plan.json +22 -0
  62. specfuse_orchestrator-0.3.0/shared/schemas/examples/test_plan_authored.json +11 -0
  63. specfuse_orchestrator-0.3.0/shared/schemas/feature-frontmatter.schema.json +173 -0
  64. specfuse_orchestrator-0.3.0/shared/schemas/labels.md +47 -0
  65. specfuse_orchestrator-0.3.0/shared/schemas/override.schema.json +64 -0
  66. specfuse_orchestrator-0.3.0/shared/schemas/template-coverage.schema.json +28 -0
  67. specfuse_orchestrator-0.3.0/shared/schemas/test-plan.schema.json +68 -0
  68. specfuse_orchestrator-0.3.0/shared/skills/.gitkeep +0 -0
  69. specfuse_orchestrator-0.3.0/shared/templates/README.md +16 -0
  70. specfuse_orchestrator-0.3.0/shared/templates/feature-registry.md +62 -0
  71. specfuse_orchestrator-0.3.0/shared/templates/human-escalation.md +45 -0
  72. specfuse_orchestrator-0.3.0/shared/templates/initiative-backlog.template.md +58 -0
  73. specfuse_orchestrator-0.3.0/shared/templates/initiative-idea-dossier.template.md +103 -0
  74. specfuse_orchestrator-0.3.0/shared/templates/qa-regression-issue.md +88 -0
  75. specfuse_orchestrator-0.3.0/shared/templates/spec-issue.md +43 -0
  76. specfuse_orchestrator-0.3.0/shared/templates/work-unit-issue.example.md +66 -0
  77. specfuse_orchestrator-0.3.0/shared/templates/work-unit-issue.md +246 -0
  78. specfuse_orchestrator-0.3.0/specfuse/orchestrator/__init__.py +10 -0
  79. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/ci/README.md +44 -0
  80. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/ci/merge-watcher.yml +150 -0
  81. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/distribution/README.md +125 -0
  82. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/distribution/ownership-manifest.yaml +336 -0
  83. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/.gitkeep +0 -0
  84. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/README.md +26 -0
  85. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/correlation-ids.md +71 -0
  86. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/escalation-protocol.md +80 -0
  87. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/never-touch.md +66 -0
  88. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/override-registry.md +86 -0
  89. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/role-switch-hygiene.md +39 -0
  90. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/security-boundaries.md +77 -0
  91. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/state-vocabulary.md +104 -0
  92. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/verify-before-report.md +97 -0
  93. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/README.md +34 -0
  94. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/event.schema.json +78 -0
  95. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/README.md +45 -0
  96. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/escalation_resolved.schema.json +41 -0
  97. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/feature_created.schema.json +42 -0
  98. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/feature_state_changed.schema.json +82 -0
  99. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/human_escalation.schema.json +45 -0
  100. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/initiative_created.schema.json +42 -0
  101. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/qa_execution_completed.schema.json +42 -0
  102. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/qa_execution_failed.schema.json +78 -0
  103. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/qa_regression_filed.schema.json +46 -0
  104. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/qa_regression_resolved.schema.json +46 -0
  105. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/regression_suite_curated.schema.json +101 -0
  106. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/spec_issue_resolved.schema.json +36 -0
  107. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/spec_issue_routed.schema.json +31 -0
  108. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/spec_validated.schema.json +77 -0
  109. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/task_started.schema.json +27 -0
  110. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/template_coverage_checked.schema.json +30 -0
  111. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/test_plan_authored.schema.json +25 -0
  112. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/escalation_resolved.json +13 -0
  113. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/event.json +11 -0
  114. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/feature-frontmatter.json +35 -0
  115. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/feature_created.json +6 -0
  116. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/override.json +10 -0
  117. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/qa_execution_completed.json +14 -0
  118. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/qa_execution_failed.json +21 -0
  119. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/qa_regression_filed.json +14 -0
  120. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/qa_regression_resolved.json +14 -0
  121. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/regression_suite_curated.json +28 -0
  122. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/spec_validated.json +10 -0
  123. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/template-coverage.json +11 -0
  124. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/test-plan.json +22 -0
  125. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/test_plan_authored.json +11 -0
  126. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/feature-frontmatter.schema.json +173 -0
  127. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/labels.md +47 -0
  128. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/override.schema.json +64 -0
  129. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/template-coverage.schema.json +28 -0
  130. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/test-plan.schema.json +68 -0
  131. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/skills/.gitkeep +0 -0
  132. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/README.md +16 -0
  133. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/feature-registry.md +62 -0
  134. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/human-escalation.md +45 -0
  135. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/initiative-backlog.template.md +58 -0
  136. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/initiative-idea-dossier.template.md +103 -0
  137. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/qa-regression-issue.md +88 -0
  138. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/spec-issue.md +43 -0
  139. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/work-unit-issue.example.md +66 -0
  140. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/work-unit-issue.md +246 -0
  141. specfuse_orchestrator-0.3.0/specfuse/orchestrator/_version.py +64 -0
  142. specfuse_orchestrator-0.3.0/specfuse/orchestrator/check_manifest.py +84 -0
  143. specfuse_orchestrator-0.3.0/specfuse/orchestrator/cli.py +360 -0
  144. specfuse_orchestrator-0.3.0/specfuse/orchestrator/init.py +373 -0
  145. specfuse_orchestrator-0.3.0/specfuse/orchestrator/orchestrator.ownership.yaml +179 -0
  146. specfuse_orchestrator-0.3.0/specfuse/orchestrator/paths.py +49 -0
  147. specfuse_orchestrator-0.3.0/specfuse/orchestrator/poller.py +723 -0
  148. specfuse_orchestrator-0.3.0/specfuse/orchestrator/qa_dispatcher.py +153 -0
  149. specfuse_orchestrator-0.3.0/specfuse/orchestrator/raise_spec_issue.py +143 -0
  150. specfuse_orchestrator-0.3.0/specfuse/orchestrator/reconcile_overrides.py +156 -0
  151. specfuse_orchestrator-0.3.0/specfuse/orchestrator/runner.py +665 -0
  152. specfuse_orchestrator-0.3.0/specfuse/orchestrator/spec_issue_dispatcher.py +122 -0
  153. specfuse_orchestrator-0.3.0/specfuse/orchestrator/validate_event.py +247 -0
  154. specfuse_orchestrator-0.3.0/specfuse/orchestrator/validate_frontmatter.py +217 -0
@@ -0,0 +1,34 @@
1
+ # JetBrains project folder
2
+ .idea/
3
+
4
+ # macOS
5
+ .DS_Store
6
+
7
+ # Editor swap / backup files
8
+ *.swp
9
+ *.swo
10
+ *~
11
+ .*.swp
12
+ .*.swo
13
+
14
+ # Logs
15
+ *.log
16
+
17
+ # Transient orchestrator state
18
+ /events/*.tmp
19
+ /inbox/*.processed/
20
+ # Loop gitignore additions — written by specfuse init / specfuse upgrade.
21
+ # Un-ignore .specfuse/ in case the repo's root .gitignore already ignores it;
22
+ # the loop driver uses git as its state backend and silently misbehaves when
23
+ # .specfuse/ is untracked.
24
+ !.specfuse/
25
+ # Ignore per-feature work/ scratch directories (large, ephemeral).
26
+ .specfuse/**/work/
27
+ # Ignore loop runtime artifacts.
28
+ .specfuse/.loop.lock
29
+ .specfuse/.scratch-*
30
+ .specfuse/scripts/__pycache__/
31
+
32
+ # specfuse-orchestrator packaging
33
+ /specfuse/orchestrator/_substrate/
34
+ /dist/
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for describing the origin of the Work and
141
+ reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Support. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or support.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright 2026 Specfuse contributors
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
@@ -0,0 +1,6 @@
1
+ Specfuse Orchestrator
2
+ Copyright 2026 Specfuse contributors
3
+
4
+ This product is licensed under the Apache License, Version 2.0.
5
+ See the LICENSE file for the full license text, or obtain a copy at:
6
+ http://www.apache.org/licenses/LICENSE-2.0
@@ -0,0 +1,87 @@
1
+ Metadata-Version: 2.4
2
+ Name: specfuse-orchestrator
3
+ Version: 0.3.0
4
+ Summary: Specfuse orchestrator: initiative coordination drivers for multi-repo Specfuse loops.
5
+ Project-URL: Homepage, https://github.com/Specfuse/orchestrator
6
+ Project-URL: Source, https://github.com/Specfuse/orchestrator
7
+ Author: Specfuse contributors
8
+ License: Apache-2.0
9
+ License-File: LICENSE
10
+ License-File: NOTICE
11
+ Keywords: agents,gate-cycle,orchestrator,planning,specfuse
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Topic :: Software Development :: Code Generators
16
+ Requires-Python: >=3.10
17
+ Requires-Dist: jsonschema>=4.18
18
+ Requires-Dist: pyyaml>=6.0
19
+ Provides-Extra: dev
20
+ Requires-Dist: build>=1.0; extra == 'dev'
21
+ Requires-Dist: coverage>=7.0; extra == 'dev'
22
+ Requires-Dist: pytest>=8.0; extra == 'dev'
23
+ Description-Content-Type: text/markdown
24
+
25
+ # Specfuse Orchestrator
26
+
27
+ Specfuse Orchestrator is a filesystem-based coordination layer for multi-agent software development workflows. It uses a directory structure of features, events, and an agent inbox — along with agent configurations, shared skills, rules, schemas, and templates — to let specs, PM, component, and QA agents collaborate on feature delivery without a central runtime. This repository holds the orchestrator scaffolding; downstream projects consume it via a template clone.
28
+
29
+ For background, goals, and design rationale, see [`docs/orchestrator-vision.md`](docs/orchestrator-vision.md). For the directory layout, protocols, and architectural decisions, see [`docs/orchestrator-architecture.md`](docs/orchestrator-architecture.md). A condensed overview is in [`docs/orchestrator-design-summary.md`](docs/orchestrator-design-summary.md). The phased build plan is in [`docs/orchestrator-implementation-plan.md`](docs/orchestrator-implementation-plan.md).
30
+
31
+ ## Status
32
+
33
+ Phases 0–4 complete; Phase 4.5 (onboarding agent) added to support real-project adoption. The four operational agents are at frozen v1 baselines; the onboarding meta-role is at v0.1 draft.
34
+
35
+ | Role | Version | Frozen | Phase |
36
+ |---|---|---|---|
37
+ | [Specs](agents/specs/) | 1.0.1 | yes | Phase 4 |
38
+ | [PM](agents/pm/) | 1.6.3 | yes | Phase 2 |
39
+ | [Component](agents/component/) | 1.5.2 | yes | Phase 1 |
40
+ | [QA](agents/qa/) | 1.5.2 | yes | Phase 3 |
41
+ | [Onboarding](agents/onboarding/) | 0.1.0 | no (draft) | Phase 4.5 |
42
+
43
+ The idea → spec → plan → implement → QA → done pipeline is operational end-to-end. **Phase 5** (generator feedback loop, override-registry inversion, config-steward meta-agent) is the remaining build phase per the implementation plan.
44
+
45
+ ## Getting started on a real project
46
+
47
+ **Five-minute path:** see [`GETTING_STARTED.md`](GETTING_STARTED.md). One `git clone` + `./scripts/setup.sh` does the entire one-time setup (strip, git re-init, private GitHub repo creation, upstream remote configuration, personalized next-steps doc). Then `/onboard` in a Claude Code session walks you through the rest.
48
+
49
+ The orchestration repo is the **process-state store for one product** (singleton per product). Template-cloned to your own org as `<your-org>/<your-product>-orchestration`. Full workflow — including how to **pull upstream improvements** into your downstream over time and how to **contribute fixes back upstream** — is documented in [`docs/upstream-downstream-sync.md`](docs/upstream-downstream-sync.md).
50
+
51
+ The orchestrator engages **downstream of product discussion**. Brainstorming, business decisions, and feature ideation belong in your project's **product reference repo** (the `/product/` subtree); the orchestrator picks up at feature-intake when an idea crystallizes into a feature.
52
+
53
+ Two project shapes are supported, both via the same setup script:
54
+
55
+ - **Greenfield:** new project, no repos yet. The onboarding agent's `bootstrap-greenfield` skill produces a setup checklist covering environment prereqs, repo-creation order, per-repo conventions, and first-feature scoping.
56
+ - **Brownfield:** existing project with code, specs, and possibly in-flight features. The onboarding agent's `repo-inventory` skill walks each repo and produces readiness assessments; `integration-plan` then drafts a phased rollout (pilot → expand → import in-flight → steady state) that brings the project under orchestrator coordination without disrupting current delivery.
57
+
58
+ The exact sequence — including the literal commands — is in [`GETTING_STARTED.md`](GETTING_STARTED.md). The `setup.sh` script asks for your project type and chooses the right onboarding skill for you.
59
+
60
+ ### Day-to-day operation
61
+
62
+ Once a project is wired:
63
+
64
+ - [`docs/operator-runbook.md`](docs/operator-runbook.md) — quickstart for driving a feature from idea through `planning` with the specs agent. Includes environment prerequisites.
65
+ - [`docs/operator-pipeline-reference.md`](docs/operator-pipeline-reference.md) — full-lifecycle operator reference covering PM, component, and QA sessions, inbox handling, spec-issue triage, and escalations.
66
+
67
+ ### Licensing — upstream vs. downstream
68
+
69
+ This **upstream** repository is licensed under [Apache 2.0](LICENSE). You can incorporate the scaffolding into your own work, including proprietary work, with attribution.
70
+
71
+ A **downstream** orchestration repo created via [`scripts/setup.sh`](scripts/setup.sh) holds your project's coordination state — `/features/`, `/events/`, `/inbox/`, `/project/` — alongside the upstream-derived scaffolding. Most teams want this content treated as **proprietary**, not Apache 2.0. The setup script handles this automatically:
72
+
73
+ - The upstream's `LICENSE` (Apache 2.0) is replaced with a **proprietary placeholder** carrying your org name as the copyright holder and the current year.
74
+ - A `NOTICES.md` is created at the downstream's root with full Apache 2.0 attribution and reproduces the upstream's `LICENSE` and `NOTICE` text in full — satisfying Apache 2.0 §4.b for the upstream-derived files (`agents/`, `shared/`, `scripts/`, `docs/`, the top-level Markdown docs, `.github/`, `.claude/`).
75
+ - Modifications you make to upstream-derived files remain governed by Apache 2.0; original work added by you (`/features/`, `/events/`, `/inbox/`, project-specific `/agents/<role>/rules/`, `/project/` content beyond `README.md`) is governed by your downstream's `LICENSE`.
76
+
77
+ If your downstream is itself open-source rather than proprietary, [`scripts/setup.sh`](scripts/setup.sh) documents the one-line revert to Apache 2.0 in the generated `project/NEXT_STEPS.md`. Either way, the licensing decision is **explicit and visible** in your downstream from day one — no inherited LICENSE files quietly imply terms that don't match your intent.
78
+
79
+ ### Slash commands (in a Claude Code session)
80
+
81
+ Project-scoped slash commands wrap the most common operations and become available via `/` autocomplete when you open a Claude Code session at the orchestration repo:
82
+
83
+ - `/onboard` — switch into the onboarding-agent role; runs `repo-inventory`, `integration-plan`, or `bootstrap-greenfield` depending on project state.
84
+ - `/sync-upstream` — periodic upstream sync; reviews and cherry-picks upstream commits since the `UPSTREAM` anchor.
85
+ - `/contribute-upstream` — extract scaffolding-only patches from downstream commits for an upstream PR.
86
+
87
+ The commands wrap the equivalent shell scripts under [`scripts/`](scripts/) and are documented in [`CONTRIBUTING.md`](CONTRIBUTING.md) and [`docs/upstream-downstream-sync.md`](docs/upstream-downstream-sync.md).
@@ -0,0 +1,63 @@
1
+ # Specfuse Orchestrator
2
+
3
+ Specfuse Orchestrator is a filesystem-based coordination layer for multi-agent software development workflows. It uses a directory structure of features, events, and an agent inbox — along with agent configurations, shared skills, rules, schemas, and templates — to let specs, PM, component, and QA agents collaborate on feature delivery without a central runtime. This repository holds the orchestrator scaffolding; downstream projects consume it via a template clone.
4
+
5
+ For background, goals, and design rationale, see [`docs/orchestrator-vision.md`](docs/orchestrator-vision.md). For the directory layout, protocols, and architectural decisions, see [`docs/orchestrator-architecture.md`](docs/orchestrator-architecture.md). A condensed overview is in [`docs/orchestrator-design-summary.md`](docs/orchestrator-design-summary.md). The phased build plan is in [`docs/orchestrator-implementation-plan.md`](docs/orchestrator-implementation-plan.md).
6
+
7
+ ## Status
8
+
9
+ Phases 0–4 complete; Phase 4.5 (onboarding agent) added to support real-project adoption. The four operational agents are at frozen v1 baselines; the onboarding meta-role is at v0.1 draft.
10
+
11
+ | Role | Version | Frozen | Phase |
12
+ |---|---|---|---|
13
+ | [Specs](agents/specs/) | 1.0.1 | yes | Phase 4 |
14
+ | [PM](agents/pm/) | 1.6.3 | yes | Phase 2 |
15
+ | [Component](agents/component/) | 1.5.2 | yes | Phase 1 |
16
+ | [QA](agents/qa/) | 1.5.2 | yes | Phase 3 |
17
+ | [Onboarding](agents/onboarding/) | 0.1.0 | no (draft) | Phase 4.5 |
18
+
19
+ The idea → spec → plan → implement → QA → done pipeline is operational end-to-end. **Phase 5** (generator feedback loop, override-registry inversion, config-steward meta-agent) is the remaining build phase per the implementation plan.
20
+
21
+ ## Getting started on a real project
22
+
23
+ **Five-minute path:** see [`GETTING_STARTED.md`](GETTING_STARTED.md). One `git clone` + `./scripts/setup.sh` does the entire one-time setup (strip, git re-init, private GitHub repo creation, upstream remote configuration, personalized next-steps doc). Then `/onboard` in a Claude Code session walks you through the rest.
24
+
25
+ The orchestration repo is the **process-state store for one product** (singleton per product). Template-cloned to your own org as `<your-org>/<your-product>-orchestration`. Full workflow — including how to **pull upstream improvements** into your downstream over time and how to **contribute fixes back upstream** — is documented in [`docs/upstream-downstream-sync.md`](docs/upstream-downstream-sync.md).
26
+
27
+ The orchestrator engages **downstream of product discussion**. Brainstorming, business decisions, and feature ideation belong in your project's **product reference repo** (the `/product/` subtree); the orchestrator picks up at feature-intake when an idea crystallizes into a feature.
28
+
29
+ Two project shapes are supported, both via the same setup script:
30
+
31
+ - **Greenfield:** new project, no repos yet. The onboarding agent's `bootstrap-greenfield` skill produces a setup checklist covering environment prereqs, repo-creation order, per-repo conventions, and first-feature scoping.
32
+ - **Brownfield:** existing project with code, specs, and possibly in-flight features. The onboarding agent's `repo-inventory` skill walks each repo and produces readiness assessments; `integration-plan` then drafts a phased rollout (pilot → expand → import in-flight → steady state) that brings the project under orchestrator coordination without disrupting current delivery.
33
+
34
+ The exact sequence — including the literal commands — is in [`GETTING_STARTED.md`](GETTING_STARTED.md). The `setup.sh` script asks for your project type and chooses the right onboarding skill for you.
35
+
36
+ ### Day-to-day operation
37
+
38
+ Once a project is wired:
39
+
40
+ - [`docs/operator-runbook.md`](docs/operator-runbook.md) — quickstart for driving a feature from idea through `planning` with the specs agent. Includes environment prerequisites.
41
+ - [`docs/operator-pipeline-reference.md`](docs/operator-pipeline-reference.md) — full-lifecycle operator reference covering PM, component, and QA sessions, inbox handling, spec-issue triage, and escalations.
42
+
43
+ ### Licensing — upstream vs. downstream
44
+
45
+ This **upstream** repository is licensed under [Apache 2.0](LICENSE). You can incorporate the scaffolding into your own work, including proprietary work, with attribution.
46
+
47
+ A **downstream** orchestration repo created via [`scripts/setup.sh`](scripts/setup.sh) holds your project's coordination state — `/features/`, `/events/`, `/inbox/`, `/project/` — alongside the upstream-derived scaffolding. Most teams want this content treated as **proprietary**, not Apache 2.0. The setup script handles this automatically:
48
+
49
+ - The upstream's `LICENSE` (Apache 2.0) is replaced with a **proprietary placeholder** carrying your org name as the copyright holder and the current year.
50
+ - A `NOTICES.md` is created at the downstream's root with full Apache 2.0 attribution and reproduces the upstream's `LICENSE` and `NOTICE` text in full — satisfying Apache 2.0 §4.b for the upstream-derived files (`agents/`, `shared/`, `scripts/`, `docs/`, the top-level Markdown docs, `.github/`, `.claude/`).
51
+ - Modifications you make to upstream-derived files remain governed by Apache 2.0; original work added by you (`/features/`, `/events/`, `/inbox/`, project-specific `/agents/<role>/rules/`, `/project/` content beyond `README.md`) is governed by your downstream's `LICENSE`.
52
+
53
+ If your downstream is itself open-source rather than proprietary, [`scripts/setup.sh`](scripts/setup.sh) documents the one-line revert to Apache 2.0 in the generated `project/NEXT_STEPS.md`. Either way, the licensing decision is **explicit and visible** in your downstream from day one — no inherited LICENSE files quietly imply terms that don't match your intent.
54
+
55
+ ### Slash commands (in a Claude Code session)
56
+
57
+ Project-scoped slash commands wrap the most common operations and become available via `/` autocomplete when you open a Claude Code session at the orchestration repo:
58
+
59
+ - `/onboard` — switch into the onboarding-agent role; runs `repo-inventory`, `integration-plan`, or `bootstrap-greenfield` depending on project state.
60
+ - `/sync-upstream` — periodic upstream sync; reviews and cherry-picks upstream commits since the `UPSTREAM` anchor.
61
+ - `/contribute-upstream` — extract scaffolding-only patches from downstream commits for an upstream PR.
62
+
63
+ The commands wrap the equivalent shell scripts under [`scripts/`](scripts/) and are documented in [`CONTRIBUTING.md`](CONTRIBUTING.md) and [`docs/upstream-downstream-sync.md`](docs/upstream-downstream-sync.md).
@@ -0,0 +1,47 @@
1
+ # Agents
2
+
3
+ Role configurations for the orchestrator's agents. Four **operational** agents drive per-feature work (specs, PM, component, QA); one **meta-role** (onboarding) operates project-wide to prepare a project for orchestrator coordination. Each role has its own directory with the layout fixed by architecture §5.2:
4
+
5
+ ```
6
+ /agents/<role>/
7
+ CLAUDE.md — role prompt and entry point
8
+ version.md — current version and changelog
9
+ skills/ — role-specific skills
10
+ rules/ — role-specific rule overrides (empty at v1 by design)
11
+ ```
12
+
13
+ Every `CLAUDE.md` opens by pulling in the full [`/shared/rules/`](../shared/rules/README.md) set, then layers its own role-specific behavior on top. The partitioning test is architecture §5.3: **if every role must behave identically under a rule, it belongs in `/shared/`; if two roles would diverge, it belongs under `/agents/<role>/rules/`.** At v1 no role overrides a shared rule; per-role `rules/` directories exist but are intentionally empty.
14
+
15
+ ## Operational roles (per-feature)
16
+
17
+ | Role | Version | Frozen | Skills |
18
+ |---|---|---|---|
19
+ | [`specs/`](specs/CLAUDE.md) | 1.0.1 | Phase 4 (2026-04-26) | feature-intake, spec-drafting, spec-validation, spec-issue-triage |
20
+ | [`pm/`](pm/CLAUDE.md) | 1.6.3 | Phase 2 (2026-04-23) | task-decomposition, plan-review, issue-drafting, dependency-recomputation, template-coverage-check |
21
+ | [`component/`](component/CLAUDE.md) | 1.5.2 | Phase 1 (2026-04-22) | verification, pr-submission, escalation |
22
+ | [`qa/`](qa/CLAUDE.md) | 1.5.2 | Phase 3 (2026-04-24) | qa-authoring, qa-execution, qa-regression, qa-curation |
23
+
24
+ - [`specs/`](specs/CLAUDE.md) — partners with the human in an interactive session to draft specifications, run Specfuse validation, and usher a feature from `drafting` through `validating` into `planning`. Reads and writes `/product/`; writes the feature registry during its phase of the lifecycle. Session-driven (the human is the primary driver), unlike the three task-driven downstream agents.
25
+ - [`pm/`](pm/CLAUDE.md) — converts a validated spec into a task graph, co-authors work unit prompts with the human, creates GitHub issues in component repos, and owns dependency recomputation. Sole writer of task-level `pending → ready` transitions.
26
+ - [`component/`](component/CLAUDE.md) — one instance per component repo; picks up `ready` task issues, writes hand-written code, opens PRs, and reconciles overrides for its repo. Does not cross repo boundaries.
27
+ - [`qa/`](qa/CLAUDE.md) — authors test plans, executes them, curates the regression suite. Owns `qa_authoring`, `qa_execution`, `qa_curation`, and `qa_regression` task types; files regression issues against implementation tasks and spec issues when ambiguities surface.
28
+
29
+ ## Meta-roles (project-wide)
30
+
31
+ | Role | Version | Frozen | Skills |
32
+ |---|---|---|---|
33
+ | [`onboarding/`](onboarding/CLAUDE.md) | 0.1.0 | no (Phase 4.5 draft) | repo-inventory, integration-plan, bootstrap-greenfield |
34
+
35
+ - [`onboarding/`](onboarding/CLAUDE.md) — prepares a project for orchestrator coordination at integration time. Inventories repos, drafts integration or bootstrap plans, identifies orchestrator-readiness gaps. Operates project-wide rather than per-feature; runs once at integration and rarely thereafter. Artifacts land in [`/project/`](../project/). v0.1 draft, intended to be exercised on a real project and hardened.
36
+
37
+ A second meta-role (config-steward) is named in architecture §5.1 and §5.4 and lands in **Phase 5** alongside the generator feedback loop. It will watch commits to `/agents/` and `/shared/` and steward version bumps. See [`docs/orchestrator-implementation-plan.md`](../docs/orchestrator-implementation-plan.md) §"Phase 5".
38
+
39
+ ## Versioning and change process
40
+
41
+ Each role carries a semantic version in `version.md`. Any change to a role's `CLAUDE.md`, skills, or rules requires a version bump and a changelog line. The event log records which agent version handled each event, so behavior changes can be reconstructed after the fact.
42
+
43
+ The frozen baselines above are the contract Phase 5+ inherits: changes to a frozen surface require architectural justification. Each role's `version.md` cites the freezing work unit and retrospective.
44
+
45
+ The full change-management protocol — including how version bumps are proposed, reviewed, and applied alongside role-config changes — lives in the config-steward agent's future specification (Phase 5; see architecture §5.4). Until that agent exists, version bumps are made by hand by the committer: bump the version in `version.md`, add a changelog entry describing the change, and commit the bump alongside the underlying change in the same commit.
46
+
47
+ Role configs are produced and revised in coordination with `/shared/` — the shared substrate every role depends on. When a shared rule, schema, or template changes, re-read every role's `CLAUDE.md` to confirm nothing drifts; when a role config changes, confirm it still reads coherently against the current `/shared/`.
@@ -0,0 +1,30 @@
1
+ # Component agent
2
+
3
+ The component agent is the worker instance that implements tasks inside a single component repository. One instance runs per component repo; its scope is hand-written code in that repo plus the cross-repo artifacts (events, overrides, escalations, spec issues) its tasks produce.
4
+
5
+ ## What it does
6
+
7
+ - Picks up `ready` task issues in its assigned component repo.
8
+ - Writes hand-written code on a feature branch.
9
+ - Opens a pull request, gated by role-specific verification.
10
+ - Files spec issues when generated code is wrong (never edits generated files in place).
11
+ - Reconciles overrides against its repo after Specfuse regeneration runs.
12
+ - Escalates to the human on the four reasons enumerated in [`escalation-protocol.md`](../../shared/rules/escalation-protocol.md).
13
+
14
+ ## What it does not do
15
+
16
+ - Planning, task creation, or dependency recomputation (PM agent).
17
+ - Test plan authoring or execution (QA agent).
18
+ - Merge closure (merge watcher, on branch-protection green).
19
+ - Any write to a second repository beyond the one it was instantiated for.
20
+
21
+ ## Layout
22
+
23
+ - [`CLAUDE.md`](CLAUDE.md) — the agent's configuration: role definition, transitions owned, output artifacts, verification, PR and escalation disciplines, and anti-patterns.
24
+ - [`version.md`](version.md) — current config version and changelog.
25
+ - [`skills/`](skills/) — role-specific skills layered on top of the shared substrate in [`/shared/`](../../shared/).
26
+ - [`rules/`](rules/) — role-specific rule overrides. Empty at v1.0.0 by design.
27
+
28
+ ## Where this role fits
29
+
30
+ See [`orchestrator-architecture.md`](../../docs/orchestrator-architecture.md) §5 for the full role taxonomy, and §6.2–§6.3 for task state and transition ownership. The architecture document is normative; this directory's files layer operational detail on top of it.
@@ -0,0 +1,28 @@
1
+ # Onboarding agent
2
+
3
+ The onboarding agent is a **meta-role** that prepares a project for orchestrator coordination. Unlike the four operational agents (specs, PM, component, QA) which operate per-feature, the onboarding agent operates **project-wide** — it runs once when a team adopts the orchestrator and occasionally afterward when the project's repo set changes.
4
+
5
+ ## What it does
6
+
7
+ - **Inventories the project's repositories** — purpose, language/framework, build/test commands, current spec coverage, in-flight work, orchestrator-readiness.
8
+ - **Drafts an integration plan** for brownfield projects — phased transition, which features go through the orchestrator first, how in-flight work is imported, per-repo onboarding checklist, risk register.
9
+ - **Drafts a setup checklist** for greenfield projects — environment prerequisites, repo creation, initial conventions.
10
+
11
+ ## What it does not do
12
+
13
+ - Per-feature work of any kind (specs, PM, component, QA agents handle that).
14
+ - Run the integration itself — the agent produces a plan; the human executes it.
15
+ - Replace product brainstorming or design — those happen in the project's product reference repo, upstream of the orchestrator (architecture §4.1).
16
+
17
+ ## Layout
18
+
19
+ - [`CLAUDE.md`](CLAUDE.md) — role configuration.
20
+ - [`version.md`](version.md) — current version (v0.1.0 draft) and changelog.
21
+ - [`skills/`](skills/) — three v0.1 skills: [`repo-inventory`](skills/repo-inventory/SKILL.md), [`integration-plan`](skills/integration-plan/SKILL.md), [`bootstrap-greenfield`](skills/bootstrap-greenfield/SKILL.md).
22
+ - [`rules/`](rules/) — empty at v0.1 by design.
23
+
24
+ ## Where this role fits
25
+
26
+ This is a Phase 4.5 interlude added to support real-project adoption. Companion meta-role (config-steward, Phase 5) is also project-level rather than per-feature; together they form the orchestrator's meta-role surface. See the implementation plan's "Phase 4.5" section for the rationale.
27
+
28
+ Artifacts produced by this agent land in [`/project/`](../../project/) in the orchestration repo. That subtree is the durable output of onboarding work — read it cold to understand what the project looks like and how integration is going.
@@ -0,0 +1,32 @@
1
+ # PM agent
2
+
3
+ The PM agent turns a validated product specification into an executable task graph: it decomposes the feature into implementation and QA tasks, assigns each to the correct component repo, collaborates with the human on work unit prompts, opens GitHub issues, and recomputes task dependencies on every completion. One instance runs per active feature.
4
+
5
+ ## What it does
6
+
7
+ - Reads a validated feature spec and drafts the task graph into the feature registry frontmatter.
8
+ - Materializes the task graph as a human-editable plan for the `plan_review` stage, and re-ingests the edits as the new source of truth.
9
+ - Opens `work-unit-issue.md`-compliant GitHub issues in the assigned component repos, re-verifying every factual claim about target-repo state at drafting time.
10
+ - Recomputes dependencies on every `task_completed` event and flips newly-unblocked tasks from `pending` to `ready`.
11
+ - Checks Specfuse template coverage at planning time via a stub protocol; escalates gaps rather than discovering them mid-implementation.
12
+ - Closes the feature when its last task reaches `done`.
13
+
14
+ ## What it does not do
15
+
16
+ - Specification authoring or validation (specs agent).
17
+ - Code or test writing (component and QA agents).
18
+ - Approval of a plan (human owns `plan_review → generating`).
19
+ - Merge closure (merge watcher, gated on branch protection).
20
+ - Writing to `/product/`, `/overrides/`, or any component-repo code path.
21
+
22
+ ## Layout
23
+
24
+ - [`CLAUDE.md`](CLAUDE.md) — the agent's configuration: role definition, transitions owned, output artifacts, verification, escalation, and anti-patterns.
25
+ - [`version.md`](version.md) — current config version and changelog.
26
+ - [`issue-drafting-spec.md`](issue-drafting-spec.md) — inherited forward specification the issue-drafting skill must honor on day one (authored in WU 1.9).
27
+ - [`skills/`](skills/) — role-specific skills layered on top of the shared substrate in [`/shared/`](../../shared/). Populated by Phase 2 WUs 2.2–2.6.
28
+ - [`rules/`](rules/) — role-specific rule overrides. Empty at v1.0.0 by design.
29
+
30
+ ## Where this role fits
31
+
32
+ See [`orchestrator-architecture.md`](../../docs/orchestrator-architecture.md) §5 for the full role taxonomy and §6.2–§6.3 for task state and transition ownership. The PM agent is the **sole writer of `pending → ready` task transitions** and the **sole owner of dependency recomputation** — centralizing both is what keeps the dependency graph auditable and race-free. The architecture document is normative; this directory's files layer operational detail on top of it.
@@ -0,0 +1,30 @@
1
+ # QA agent
2
+
3
+ The QA agent authors test plans from validated acceptance criteria, executes them against the implementation once it lands, files structured regression artifacts when execution fails, and curates the growing regression suite. Its cadence is longitudinal — a single feature traverses qa-authoring → qa-execution → (possibly regression → re-execution) → curation over multiple cycles. One agent instance runs per active QA task; its scope spans the product specs repo (test plans), the component repo(s) under test (indirectly, through regression artifacts), and the orchestration repo (events, inbox, escalations).
4
+
5
+ ## What it does
6
+
7
+ - Reads a validated feature's acceptance criteria and authors a test plan into `/product/test-plans/FEAT-YYYY-NNNN.md` in the product specs repo.
8
+ - Executes the plan idempotently against the component repo(s) under test and emits structured `qa_execution_completed` or `qa_execution_failed` events keyed on `(task_correlation_id, commit_sha)`.
9
+ - On a qa-execution failure, files a regression artifact via `/inbox/qa-regression/` that spawns a new implementation task — without writing labels or state to the task under test.
10
+ - On a qa-execution repeat failure, escalates `spinning_detected` on the original implementation task via an event, again without any label write.
11
+ - Curates the regression suite within a bounded scan budget: dedups overlaps, retires spec-removed orphans, consolidates failure-clustered tests. All curation changes land through a reviewable PR.
12
+
13
+ ## What it does not do
14
+
15
+ - Hand-written code or test harness implementation (component agent).
16
+ - Specification authoring outside `/product/test-plans/` (specs agent).
17
+ - Task creation, dependency recomputation, or feature-level state transitions (PM agent).
18
+ - Merge closure (merge watcher, on branch-protection green).
19
+ - Any label or state write on a task the QA agent does not own — including the implementation task under test, even when qa-execution reveals a regression.
20
+
21
+ ## Layout
22
+
23
+ - [`CLAUDE.md`](CLAUDE.md) — the agent's configuration: role definition, transitions owned, output artifacts, the cross-task regression invariant, verification, escalation, and anti-patterns.
24
+ - [`version.md`](version.md) — current config version and changelog.
25
+ - [`skills/`](skills/) — role-specific skills layered on top of the shared substrate in [`/shared/`](../../shared/). Populated by Phase 3 WUs 3.2–3.5.
26
+ - [`rules/`](rules/) — role-specific rule overrides. Empty at v1.0.0 by design.
27
+
28
+ ## Where this role fits
29
+
30
+ See [`orchestrator-architecture.md`](../../docs/orchestrator-architecture.md) §5 for the full role taxonomy, §6.2–§6.3 for task state and transition ownership, §6.4 for the spinning-detection / regression-vs-escalation rule the QA agent applies on qa-execution failures, and §4.3 for the canonical test plan location. The architecture document is normative; this directory's files layer operational detail on top of it.
@@ -0,0 +1,29 @@
1
+ # Specs agent
2
+
3
+ The specs agent partners with the human in an interactive Claude Code session to turn a feature idea into validated product specifications. It creates feature registry entries, drafts OpenAPI / AsyncAPI / Arazzo specifications under `/product/` in the product specs repo, runs Specfuse validation, and triages spec issues routed from downstream agents. Its cadence is session-driven — the human opens a Claude Code session and collaborates with the agent, unlike the three task-driven downstream agents (PM, component, QA) that pick up structured work from issues or event triggers.
4
+
5
+ ## What it does
6
+
7
+ - Creates feature registry entries in the orchestration repo, minting correlation IDs and emitting `feature_created` events.
8
+ - Drafts and iterates on product specifications collaboratively with the human inside `/product/` in the specs repo.
9
+ - Invokes Specfuse validation and presents actionable feedback on failures.
10
+ - Owns the `drafting → validating → planning` segment of the feature state machine; hands off to the PM agent at `planning`.
11
+ - Triages spec issues routed from downstream agents via `/inbox/spec-issue/`, resolving them in `/product/` or re-routing to the generator project.
12
+
13
+ ## What it does not do
14
+
15
+ - Task decomposition, dependency recomputation, or issue creation (PM agent).
16
+ - Code or test writing (component and QA agents).
17
+ - Merge gating or closure (merge watcher, on branch-protection green).
18
+ - Any write to `/business/`, `/product/test-plans/`, `/overrides/`, or component-repo code paths.
19
+
20
+ ## Layout
21
+
22
+ - [`CLAUDE.md`](CLAUDE.md) — the agent's configuration: role definition, interaction model, transitions owned, output surfaces, verification, escalation, and anti-patterns.
23
+ - [`version.md`](version.md) — current config version and changelog.
24
+ - [`skills/`](skills/) — role-specific skills layered on top of the shared substrate in [`/shared/`](../../shared/). Populated by Phase 4 WUs 4.2–4.5 (feature-intake, spec-drafting, spec-validation, spec-issue-triage).
25
+ - [`rules/`](rules/) — role-specific rule overrides. Empty at v1.0.0 by design.
26
+
27
+ ## Where this role fits
28
+
29
+ See [`orchestrator-architecture.md`](../../docs/orchestrator-architecture.md) §5 for the full role taxonomy, §6.1 for the feature state machine (`drafting → validating → planning` transitions), and §6.3 for transition ownership. The architecture document is normative; this directory's files layer operational detail on top of it.
@@ -0,0 +1,28 @@
1
+ """Hatch build hook: copy shared/** into specfuse/orchestrator/_substrate/.
2
+
3
+ `shared/` is the single source of truth for rules, schemas, and templates;
4
+ this hook mirrors it into the package at build time so the wheel ships a
5
+ self-contained substrate without a committed duplicate.
6
+ """
7
+
8
+ import shutil
9
+ from pathlib import Path
10
+
11
+ from hatchling.builders.hooks.plugin.interface import BuildHookInterface
12
+
13
+
14
+ class SubstrateBuildHook(BuildHookInterface):
15
+ def initialize(self, version, build_data):
16
+ root = Path(self.root)
17
+ src = root / "shared"
18
+ dest = root / "specfuse" / "orchestrator" / "_substrate"
19
+
20
+ if dest.exists():
21
+ shutil.rmtree(dest)
22
+ shutil.copytree(src, dest)
23
+
24
+ # `_substrate/` is gitignored (build artifact), so hatchling's default
25
+ # VCS-aware file selection would otherwise drop it from the wheel.
26
+ build_data.setdefault("artifacts", []).append(
27
+ "specfuse/orchestrator/_substrate/**/*"
28
+ )