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.
- specfuse_orchestrator-0.3.0/.gitignore +34 -0
- specfuse_orchestrator-0.3.0/LICENSE +201 -0
- specfuse_orchestrator-0.3.0/NOTICE +6 -0
- specfuse_orchestrator-0.3.0/PKG-INFO +87 -0
- specfuse_orchestrator-0.3.0/README.md +63 -0
- specfuse_orchestrator-0.3.0/agents/README.md +47 -0
- specfuse_orchestrator-0.3.0/agents/component/README.md +30 -0
- specfuse_orchestrator-0.3.0/agents/onboarding/README.md +28 -0
- specfuse_orchestrator-0.3.0/agents/pm/README.md +32 -0
- specfuse_orchestrator-0.3.0/agents/qa/README.md +30 -0
- specfuse_orchestrator-0.3.0/agents/specs/README.md +29 -0
- specfuse_orchestrator-0.3.0/hatch_build.py +28 -0
- specfuse_orchestrator-0.3.0/project/README.md +28 -0
- specfuse_orchestrator-0.3.0/pyproject.toml +70 -0
- specfuse_orchestrator-0.3.0/scripts/README.md +238 -0
- specfuse_orchestrator-0.3.0/shared/ci/README.md +44 -0
- specfuse_orchestrator-0.3.0/shared/ci/merge-watcher.yml +150 -0
- specfuse_orchestrator-0.3.0/shared/distribution/README.md +125 -0
- specfuse_orchestrator-0.3.0/shared/distribution/ownership-manifest.yaml +336 -0
- specfuse_orchestrator-0.3.0/shared/rules/.gitkeep +0 -0
- specfuse_orchestrator-0.3.0/shared/rules/README.md +26 -0
- specfuse_orchestrator-0.3.0/shared/rules/correlation-ids.md +71 -0
- specfuse_orchestrator-0.3.0/shared/rules/escalation-protocol.md +80 -0
- specfuse_orchestrator-0.3.0/shared/rules/never-touch.md +66 -0
- specfuse_orchestrator-0.3.0/shared/rules/override-registry.md +86 -0
- specfuse_orchestrator-0.3.0/shared/rules/role-switch-hygiene.md +39 -0
- specfuse_orchestrator-0.3.0/shared/rules/security-boundaries.md +77 -0
- specfuse_orchestrator-0.3.0/shared/rules/state-vocabulary.md +104 -0
- specfuse_orchestrator-0.3.0/shared/rules/verify-before-report.md +97 -0
- specfuse_orchestrator-0.3.0/shared/schemas/README.md +34 -0
- specfuse_orchestrator-0.3.0/shared/schemas/event.schema.json +78 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/README.md +45 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/escalation_resolved.schema.json +41 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/feature_created.schema.json +42 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/feature_state_changed.schema.json +82 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/human_escalation.schema.json +45 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/initiative_created.schema.json +42 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/qa_execution_completed.schema.json +42 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/qa_execution_failed.schema.json +78 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/qa_regression_filed.schema.json +46 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/qa_regression_resolved.schema.json +46 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/regression_suite_curated.schema.json +101 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/spec_issue_resolved.schema.json +36 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/spec_issue_routed.schema.json +31 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/spec_validated.schema.json +77 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/task_started.schema.json +27 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/template_coverage_checked.schema.json +30 -0
- specfuse_orchestrator-0.3.0/shared/schemas/events/test_plan_authored.schema.json +25 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/escalation_resolved.json +13 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/event.json +11 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/feature-frontmatter.json +35 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/feature_created.json +6 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/override.json +10 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/qa_execution_completed.json +14 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/qa_execution_failed.json +21 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/qa_regression_filed.json +14 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/qa_regression_resolved.json +14 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/regression_suite_curated.json +28 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/spec_validated.json +10 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/template-coverage.json +11 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/test-plan.json +22 -0
- specfuse_orchestrator-0.3.0/shared/schemas/examples/test_plan_authored.json +11 -0
- specfuse_orchestrator-0.3.0/shared/schemas/feature-frontmatter.schema.json +173 -0
- specfuse_orchestrator-0.3.0/shared/schemas/labels.md +47 -0
- specfuse_orchestrator-0.3.0/shared/schemas/override.schema.json +64 -0
- specfuse_orchestrator-0.3.0/shared/schemas/template-coverage.schema.json +28 -0
- specfuse_orchestrator-0.3.0/shared/schemas/test-plan.schema.json +68 -0
- specfuse_orchestrator-0.3.0/shared/skills/.gitkeep +0 -0
- specfuse_orchestrator-0.3.0/shared/templates/README.md +16 -0
- specfuse_orchestrator-0.3.0/shared/templates/feature-registry.md +62 -0
- specfuse_orchestrator-0.3.0/shared/templates/human-escalation.md +45 -0
- specfuse_orchestrator-0.3.0/shared/templates/initiative-backlog.template.md +58 -0
- specfuse_orchestrator-0.3.0/shared/templates/initiative-idea-dossier.template.md +103 -0
- specfuse_orchestrator-0.3.0/shared/templates/qa-regression-issue.md +88 -0
- specfuse_orchestrator-0.3.0/shared/templates/spec-issue.md +43 -0
- specfuse_orchestrator-0.3.0/shared/templates/work-unit-issue.example.md +66 -0
- specfuse_orchestrator-0.3.0/shared/templates/work-unit-issue.md +246 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/__init__.py +10 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/ci/README.md +44 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/ci/merge-watcher.yml +150 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/distribution/README.md +125 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/distribution/ownership-manifest.yaml +336 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/.gitkeep +0 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/README.md +26 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/correlation-ids.md +71 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/escalation-protocol.md +80 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/never-touch.md +66 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/override-registry.md +86 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/role-switch-hygiene.md +39 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/security-boundaries.md +77 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/state-vocabulary.md +104 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/rules/verify-before-report.md +97 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/README.md +34 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/event.schema.json +78 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/README.md +45 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/escalation_resolved.schema.json +41 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/feature_created.schema.json +42 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/feature_state_changed.schema.json +82 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/human_escalation.schema.json +45 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/initiative_created.schema.json +42 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/qa_execution_completed.schema.json +42 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/qa_execution_failed.schema.json +78 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/qa_regression_filed.schema.json +46 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/qa_regression_resolved.schema.json +46 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/regression_suite_curated.schema.json +101 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/spec_issue_resolved.schema.json +36 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/spec_issue_routed.schema.json +31 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/spec_validated.schema.json +77 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/task_started.schema.json +27 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/template_coverage_checked.schema.json +30 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/events/test_plan_authored.schema.json +25 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/escalation_resolved.json +13 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/event.json +11 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/feature-frontmatter.json +35 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/feature_created.json +6 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/override.json +10 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/qa_execution_completed.json +14 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/qa_execution_failed.json +21 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/qa_regression_filed.json +14 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/qa_regression_resolved.json +14 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/regression_suite_curated.json +28 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/spec_validated.json +10 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/template-coverage.json +11 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/test-plan.json +22 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/examples/test_plan_authored.json +11 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/feature-frontmatter.schema.json +173 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/labels.md +47 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/override.schema.json +64 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/template-coverage.schema.json +28 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/schemas/test-plan.schema.json +68 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/skills/.gitkeep +0 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/README.md +16 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/feature-registry.md +62 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/human-escalation.md +45 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/initiative-backlog.template.md +58 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/initiative-idea-dossier.template.md +103 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/qa-regression-issue.md +88 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/spec-issue.md +43 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/work-unit-issue.example.md +66 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_substrate/templates/work-unit-issue.md +246 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/_version.py +64 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/check_manifest.py +84 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/cli.py +360 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/init.py +373 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/orchestrator.ownership.yaml +179 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/paths.py +49 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/poller.py +723 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/qa_dispatcher.py +153 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/raise_spec_issue.py +143 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/reconcile_overrides.py +156 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/runner.py +665 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/spec_issue_dispatcher.py +122 -0
- specfuse_orchestrator-0.3.0/specfuse/orchestrator/validate_event.py +247 -0
- 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,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
|
+
)
|