@grainulation/orchard 1.0.0 → 1.0.2
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.
- package/CODE_OF_CONDUCT.md +25 -0
- package/CONTRIBUTING.md +96 -0
- package/README.md +52 -61
- package/bin/orchard.js +227 -80
- package/lib/assignments.js +19 -17
- package/lib/conflicts.js +177 -29
- package/lib/dashboard.js +100 -47
- package/lib/decompose.js +268 -0
- package/lib/doctor.js +48 -32
- package/lib/export.js +72 -44
- package/lib/farmer.js +54 -38
- package/lib/hackathon.js +349 -0
- package/lib/planner.js +150 -21
- package/lib/server.js +396 -203
- package/lib/sync.js +31 -25
- package/lib/tracker.js +52 -40
- package/package.json +10 -4
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our standards
|
|
4
|
+
|
|
5
|
+
We are committed to providing a welcoming and productive environment for everyone. We expect participants to:
|
|
6
|
+
|
|
7
|
+
- Use welcoming and inclusive language
|
|
8
|
+
- Respect differing viewpoints and experiences
|
|
9
|
+
- Accept constructive criticism gracefully
|
|
10
|
+
- Focus on what is best for the community and the project
|
|
11
|
+
- Show empathy toward other participants
|
|
12
|
+
|
|
13
|
+
Unacceptable behavior includes harassment, trolling, personal attacks, and publishing others' private information without permission.
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
This code of conduct applies to all project spaces -- issues, pull requests, discussions, and any public channel where someone represents the project.
|
|
18
|
+
|
|
19
|
+
## Enforcement
|
|
20
|
+
|
|
21
|
+
Instances of unacceptable behavior may be reported to the project maintainers. All complaints will be reviewed and investigated, and will result in a response deemed necessary and appropriate.
|
|
22
|
+
|
|
23
|
+
## Attribution
|
|
24
|
+
|
|
25
|
+
Adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Contributing to Orchard
|
|
2
|
+
|
|
3
|
+
Thanks for considering contributing. Orchard is the multi-sprint planner for the grainulation ecosystem -- it tracks dependencies, assignments, and timelines across concurrent sprints.
|
|
4
|
+
|
|
5
|
+
## Quick setup
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
git clone https://github.com/grainulation/orchard.git
|
|
9
|
+
cd orchard
|
|
10
|
+
node bin/orchard.js --help
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
No `npm install` needed -- orchard has zero dependencies.
|
|
14
|
+
|
|
15
|
+
## How to contribute
|
|
16
|
+
|
|
17
|
+
### Report a bug
|
|
18
|
+
|
|
19
|
+
Open an issue with:
|
|
20
|
+
|
|
21
|
+
- What you expected
|
|
22
|
+
- What happened instead
|
|
23
|
+
- Your Node version (`node --version`)
|
|
24
|
+
- Steps to reproduce
|
|
25
|
+
|
|
26
|
+
### Suggest a feature
|
|
27
|
+
|
|
28
|
+
Open an issue describing the use case, not just the solution. "I need X because Y" is more useful than "add X."
|
|
29
|
+
|
|
30
|
+
### Submit a PR
|
|
31
|
+
|
|
32
|
+
1. Fork the repo
|
|
33
|
+
2. Create a branch (`git checkout -b fix/description`)
|
|
34
|
+
3. Make your changes
|
|
35
|
+
4. Run the tests: `node test/basic.test.js`
|
|
36
|
+
5. Commit with a clear message
|
|
37
|
+
6. Open a PR
|
|
38
|
+
|
|
39
|
+
## Architecture
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
bin/orchard.js CLI entrypoint -- dispatches subcommands
|
|
43
|
+
lib/scanner.js Auto-detects active sprints in a workspace
|
|
44
|
+
lib/planner.js Sprint planning and scheduling logic
|
|
45
|
+
lib/tracker.js Progress tracking across sprints
|
|
46
|
+
lib/dependencies.js Cross-sprint dependency resolution
|
|
47
|
+
lib/conflicts.js Conflict detection between parallel sprints
|
|
48
|
+
lib/assignments.js Work assignment and load balancing
|
|
49
|
+
lib/timeline.js Timeline generation and critical path
|
|
50
|
+
lib/sync.js State synchronization across sprint repos
|
|
51
|
+
lib/export.js Export planner data to various formats
|
|
52
|
+
lib/dashboard.js Dashboard data aggregation
|
|
53
|
+
lib/server.js Local preview server (SSE, zero deps)
|
|
54
|
+
templates/ HTML templates (orchard-dashboard, etc.)
|
|
55
|
+
public/ Web UI -- multi-sprint planning dashboard
|
|
56
|
+
site/ Public website (orchard.grainulation.com)
|
|
57
|
+
test/ Node built-in test runner tests
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The key architectural principle: **orchard operates above individual sprints.** It scans for active wheat sprints, detects dependencies and conflicts between them, and provides a unified planning view. It reads sprint data but never modifies it directly.
|
|
61
|
+
|
|
62
|
+
## Code style
|
|
63
|
+
|
|
64
|
+
- Zero dependencies. If you need something, write it or use Node built-ins.
|
|
65
|
+
- No transpilation. Ship what you write.
|
|
66
|
+
- ESM imports (`import`/`export`). Node 18+ required.
|
|
67
|
+
- Keep functions small. If a function needs a scroll, split it.
|
|
68
|
+
- No emojis in code, CLI output, or dashboards.
|
|
69
|
+
|
|
70
|
+
## Testing
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
node test/basic.test.js
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Tests use Node's built-in test runner. No test framework dependencies.
|
|
77
|
+
|
|
78
|
+
## Commit messages
|
|
79
|
+
|
|
80
|
+
Follow the existing pattern:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
orchard: <what changed>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Examples:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
orchard: add cross-sprint dependency graph
|
|
90
|
+
orchard: fix timeline calculation for overlapping sprints
|
|
91
|
+
orchard: update scanner to detect archived sprints
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## License
|
|
95
|
+
|
|
96
|
+
MIT. See LICENSE for details.
|
package/README.md
CHANGED
|
@@ -1,28 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="site/wordmark.svg" alt="Orchard" width="400">
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
>
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://www.npmjs.com/package/@grainulation/orchard"><img src="https://img.shields.io/npm/v/@grainulation/orchard" alt="npm version"></a> <a href="https://www.npmjs.com/package/@grainulation/orchard"><img src="https://img.shields.io/npm/dm/@grainulation/orchard" alt="npm downloads"></a> <a href="https://github.com/grainulation/orchard/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="license"></a> <a href="https://nodejs.org"><img src="https://img.shields.io/node/v/@grainulation/orchard" alt="node"></a> <a href="https://github.com/grainulation/orchard/actions"><img src="https://github.com/grainulation/orchard/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
7
|
+
<a href="https://deepwiki.com/grainulation/orchard"><img src="https://deepwiki.com/badge.svg" alt="Explore on DeepWiki"></a>
|
|
8
|
+
</p>
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
<p align="center"><strong>Multi-sprint orchestration and dependency tracking.</strong></p>
|
|
11
|
+
|
|
12
|
+
12 sprints running. One command to see them all. Orchard coordinates parallel research across teams with dependency graphs, conflict detection, and unified dashboards.
|
|
6
13
|
|
|
7
14
|
## Install
|
|
8
15
|
|
|
9
16
|
```bash
|
|
10
|
-
|
|
17
|
+
npm install -g @grainulation/orchard
|
|
11
18
|
```
|
|
12
19
|
|
|
13
|
-
|
|
20
|
+
Or use directly:
|
|
14
21
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
- **Resource allocation** -- distribute research bandwidth
|
|
19
|
-
- **Cross-sprint conflict detection** -- when two sprints reach opposing conclusions
|
|
20
|
-
- **Unified status dashboard** across all active sprints
|
|
21
|
-
- **Sprint scheduling and deadline tracking**
|
|
22
|
+
```bash
|
|
23
|
+
npx @grainulation/orchard status
|
|
24
|
+
```
|
|
22
25
|
|
|
23
26
|
## Quick start
|
|
24
27
|
|
|
25
|
-
Create
|
|
28
|
+
Create `orchard.json` in your project root:
|
|
26
29
|
|
|
27
30
|
```json
|
|
28
31
|
{
|
|
@@ -50,68 +53,56 @@ Create a `orchard.json` in your project root:
|
|
|
50
53
|
Then:
|
|
51
54
|
|
|
52
55
|
```bash
|
|
53
|
-
#
|
|
54
|
-
orchard
|
|
55
|
-
|
|
56
|
-
#
|
|
57
|
-
orchard status
|
|
58
|
-
|
|
59
|
-
# Assign someone to a sprint
|
|
60
|
-
orchard assign ./sprints/data-migration carol
|
|
61
|
-
|
|
62
|
-
# Sync status from sprint directories
|
|
63
|
-
orchard sync
|
|
64
|
-
|
|
65
|
-
# Generate HTML dashboard
|
|
66
|
-
orchard dashboard
|
|
56
|
+
orchard plan # Show the dependency graph
|
|
57
|
+
orchard status # Check status of all sprints
|
|
58
|
+
orchard sync # Sync status from sprint directories
|
|
59
|
+
orchard dashboard # Generate unified HTML dashboard
|
|
67
60
|
```
|
|
68
61
|
|
|
69
|
-
##
|
|
70
|
-
|
|
71
|
-
| Command | Description |
|
|
72
|
-
|---------|-------------|
|
|
73
|
-
| `orchard plan` | Show sprint dependency graph as ASCII |
|
|
74
|
-
| `orchard status` | Show status of all tracked sprints |
|
|
75
|
-
| `orchard assign <path> <person>` | Assign a person to a sprint |
|
|
76
|
-
| `orchard sync` | Sync sprint states from their directories |
|
|
77
|
-
| `orchard dashboard [outfile]` | Generate unified HTML dashboard |
|
|
78
|
-
| `orchard init` | Initialize orchard.json in the current directory |
|
|
79
|
-
| `orchard serve` | Start the portfolio dashboard web server |
|
|
80
|
-
| `orchard help` | Show help |
|
|
81
|
-
|
|
82
|
-
## orchard.json schema
|
|
62
|
+
## What it does
|
|
83
63
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
assigned_to: string; // Person responsible
|
|
91
|
-
deadline: string; // ISO date string
|
|
92
|
-
status: string; // active | done | blocked | not-started
|
|
93
|
-
}>
|
|
94
|
-
}
|
|
95
|
-
```
|
|
64
|
+
- **Sprint dependency graphs** -- "sprint B needs sprint A's results first"
|
|
65
|
+
- **Cross-sprint conflict detection** -- when two sprints reach opposing conclusions
|
|
66
|
+
- **Team assignment** -- who's running which sprint
|
|
67
|
+
- **Unified status dashboard** across all active sprints
|
|
68
|
+
- **Sprint scheduling and deadline tracking**
|
|
69
|
+
- **Topological sort** -- determines execution order, flags cycles
|
|
96
70
|
|
|
97
|
-
##
|
|
71
|
+
## CLI
|
|
98
72
|
|
|
99
|
-
|
|
73
|
+
| Command | Description |
|
|
74
|
+
| -------------------------------- | ---------------------------------------- |
|
|
75
|
+
| `orchard plan` | Show sprint dependency graph |
|
|
76
|
+
| `orchard status` | Show status of all tracked sprints |
|
|
77
|
+
| `orchard assign <path> <person>` | Assign a person to a sprint |
|
|
78
|
+
| `orchard sync` | Sync sprint states from directories |
|
|
79
|
+
| `orchard dashboard [outfile]` | Generate unified HTML dashboard |
|
|
80
|
+
| `orchard init` | Initialize orchard.json |
|
|
81
|
+
| `orchard serve` | Start the portfolio dashboard web server |
|
|
100
82
|
|
|
101
|
-
|
|
83
|
+
## Conflict detection
|
|
102
84
|
|
|
103
85
|
Orchard flags two types of cross-sprint conflicts:
|
|
104
86
|
|
|
105
|
-
1. **Opposing recommendations** -- two sprints make recommendations on the same topic that
|
|
87
|
+
1. **Opposing recommendations** -- two sprints make recommendations on the same topic that contradict
|
|
106
88
|
2. **Constraint-recommendation tension** -- one sprint's constraints conflict with another's recommendations
|
|
107
89
|
|
|
108
|
-
|
|
90
|
+
## Zero dependencies
|
|
109
91
|
|
|
110
|
-
|
|
92
|
+
Node built-in modules only.
|
|
111
93
|
|
|
112
|
-
##
|
|
94
|
+
## Part of the grainulation ecosystem
|
|
113
95
|
|
|
114
|
-
|
|
96
|
+
| Tool | Role |
|
|
97
|
+
| ------------------------------------------------------------ | ----------------------------------------------------------- |
|
|
98
|
+
| [wheat](https://github.com/grainulation/wheat) | Research engine -- grow structured evidence |
|
|
99
|
+
| [farmer](https://github.com/grainulation/farmer) | Permission dashboard -- approve AI actions in real time |
|
|
100
|
+
| [barn](https://github.com/grainulation/barn) | Shared tools -- templates, validators, sprint detection |
|
|
101
|
+
| [mill](https://github.com/grainulation/mill) | Format conversion -- export to PDF, CSV, slides, 24 formats |
|
|
102
|
+
| [silo](https://github.com/grainulation/silo) | Knowledge storage -- reusable claim libraries and packs |
|
|
103
|
+
| [harvest](https://github.com/grainulation/harvest) | Analytics -- cross-sprint patterns and prediction scoring |
|
|
104
|
+
| **orchard** | Orchestration -- multi-sprint coordination and dependencies |
|
|
105
|
+
| [grainulation](https://github.com/grainulation/grainulation) | Unified CLI -- single entry point to the ecosystem |
|
|
115
106
|
|
|
116
107
|
## License
|
|
117
108
|
|