@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.
@@ -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.
@@ -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
- # @grainulation/orchard
1
+ <p align="center">
2
+ <img src="site/wordmark.svg" alt="Orchard" width="400">
3
+ </p>
2
4
 
3
- > 12 sprints running. One command to see them all.
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
- **Orchard** is the multi-sprint orchestrator for [Wheat](https://github.com/grainulation/wheat) research sprints. It coordinates parallel research across teams with dependency tracking, conflict detection, and unified dashboards.
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
- npx @grainulation/orchard status
17
+ npm install -g @grainulation/orchard
11
18
  ```
12
19
 
13
- ## What it does
20
+ Or use directly:
14
21
 
15
- - **Run multiple wheat sprints in parallel** with dependency tracking
16
- - **Sprint dependency graphs** -- "sprint B needs sprint A's results first"
17
- - **Team assignment** -- who's running which sprint
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 a `orchard.json` in your project root:
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
- # See the dependency graph
54
- orchard plan
55
-
56
- # Check status of all sprints
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
- ## Commands
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
- ```typescript
85
- {
86
- sprints: Array<{
87
- path: string; // Relative path to sprint directory
88
- question: string; // The research question
89
- depends_on: string[]; // Paths of prerequisite sprints
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
- ## How it works
71
+ ## CLI
98
72
 
99
- Orchard reads `orchard.json` for the sprint graph, then scans each sprint directory for `claims.json` and `compilation.json` to determine actual state. It detects conflicts by comparing claims across sprints that share tags.
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
- ### Conflict detection
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 may contradict
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
- ### Dependency tracking
90
+ ## Zero dependencies
109
91
 
110
- Sprints can declare dependencies. Orchard uses topological sorting to determine execution order and flags cycles. The `plan` command renders this as ASCII art.
92
+ Node built-in modules only.
111
93
 
112
- ## Zero dependencies
94
+ ## Part of the grainulation ecosystem
113
95
 
114
- Orchard uses only Node.js built-in modules. No npm install required.
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