openwish 0.3.1__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 (52) hide show
  1. openwish-0.3.1/.python-version +1 -0
  2. openwish-0.3.1/CONTRIBUTING.md +61 -0
  3. openwish-0.3.1/LICENSE +21 -0
  4. openwish-0.3.1/MANIFEST.in +5 -0
  5. openwish-0.3.1/PKG-INFO +260 -0
  6. openwish-0.3.1/README.md +238 -0
  7. openwish-0.3.1/docs/design.md +190 -0
  8. openwish-0.3.1/docs/migration.md +28 -0
  9. openwish-0.3.1/docs/releases.md +111 -0
  10. openwish-0.3.1/pyproject.toml +39 -0
  11. openwish-0.3.1/scripts/check_release.py +41 -0
  12. openwish-0.3.1/scripts/smoke_dist.py +81 -0
  13. openwish-0.3.1/setup.cfg +4 -0
  14. openwish-0.3.1/src/openwish/__init__.py +3 -0
  15. openwish-0.3.1/src/openwish/__main__.py +3 -0
  16. openwish-0.3.1/src/openwish/assets/artifacts.md +168 -0
  17. openwish-0.3.1/src/openwish/assets/legacy-skills.json +24 -0
  18. openwish-0.3.1/src/openwish/assets/policy.md +125 -0
  19. openwish-0.3.1/src/openwish/assets/skills/ow-align/SKILL.md +29 -0
  20. openwish-0.3.1/src/openwish/assets/skills/ow-consolidate/SKILL.md +32 -0
  21. openwish-0.3.1/src/openwish/assets/skills/ow-fast-forward/SKILL.md +32 -0
  22. openwish-0.3.1/src/openwish/assets/skills/ow-implement/SKILL.md +31 -0
  23. openwish-0.3.1/src/openwish/assets/skills/ow-onboard/SKILL.md +29 -0
  24. openwish-0.3.1/src/openwish/assets/skills/ow-plan/SKILL.md +30 -0
  25. openwish-0.3.1/src/openwish/assets/skills/ow-propose/SKILL.md +36 -0
  26. openwish-0.3.1/src/openwish/assets/skills/ow-review/SKILL.md +35 -0
  27. openwish-0.3.1/src/openwish/budgets.py +86 -0
  28. openwish-0.3.1/src/openwish/cli.py +188 -0
  29. openwish-0.3.1/src/openwish/integrations.py +133 -0
  30. openwish-0.3.1/src/openwish/model.py +127 -0
  31. openwish-0.3.1/src/openwish/scaffold.py +69 -0
  32. openwish-0.3.1/src/openwish/storage.py +147 -0
  33. openwish-0.3.1/src/openwish/terminal.py +156 -0
  34. openwish-0.3.1/src/openwish/validation.py +162 -0
  35. openwish-0.3.1/src/openwish/versions.py +64 -0
  36. openwish-0.3.1/src/openwish/views.py +52 -0
  37. openwish-0.3.1/src/openwish/workflow.py +259 -0
  38. openwish-0.3.1/src/openwish.egg-info/PKG-INFO +260 -0
  39. openwish-0.3.1/src/openwish.egg-info/SOURCES.txt +50 -0
  40. openwish-0.3.1/src/openwish.egg-info/dependency_links.txt +1 -0
  41. openwish-0.3.1/src/openwish.egg-info/entry_points.txt +2 -0
  42. openwish-0.3.1/src/openwish.egg-info/top_level.txt +1 -0
  43. openwish-0.3.1/tests/__init__.py +0 -0
  44. openwish-0.3.1/tests/support.py +62 -0
  45. openwish-0.3.1/tests/test_budgets.py +53 -0
  46. openwish-0.3.1/tests/test_cli.py +124 -0
  47. openwish-0.3.1/tests/test_integrations.py +153 -0
  48. openwish-0.3.1/tests/test_model.py +89 -0
  49. openwish-0.3.1/tests/test_release.py +43 -0
  50. openwish-0.3.1/tests/test_storage.py +83 -0
  51. openwish-0.3.1/tests/test_terminal.py +135 -0
  52. openwish-0.3.1/tests/test_workflow.py +191 -0
@@ -0,0 +1 @@
1
+ 3.14
@@ -0,0 +1,61 @@
1
+ # Contributing to OpenWish
2
+
3
+ Start from the need behind an ask. Check all current needs, keep the smallest
4
+ coherent scope, and preserve the documented workflow and artifact budgets.
5
+
6
+ ## Local development
7
+
8
+ Python 3.11+ is sufficient to run the code and tests without installation:
9
+
10
+ ```sh
11
+ PYTHONPATH=src python3 -m openwish --help
12
+ PYTHONPATH=src python3 -m unittest discover -s tests -v
13
+ ```
14
+
15
+ For an installed executable, use a virtual environment and `python -m pip install
16
+ -e .`, or `uv tool install .`. Setuptools is a build-time dependency only.
17
+
18
+ ## Engineering rules
19
+
20
+ - Keep pure model/validation functions separate from filesystem operations.
21
+ - Prefer standard-library functionality and established packages where needed.
22
+ - Keep source below 500 nonblank lines when practical; 1000 is the hard maximum
23
+ without a justified low-complexity exception. All Markdown/OW artifacts stay
24
+ below 500 lines. Data-file exceptions never bypass OW knowledge limits.
25
+ - Test behaviors that protect intent, user data, ordering, approval freshness,
26
+ or review correctness. Avoid tests that merely reproduce implementation text.
27
+ - Run the full suite after substantive changes; it should remain well under
28
+ five minutes. Choose further checks based on actual unresolved risk.
29
+ - Keep canonical skills in `src/openwish/assets/skills/`. Test generated adapters
30
+ without copying divergent workflow logic into them.
31
+ - Store durable needs rather than asks or change containers. Put authoritative
32
+ need references in spec designs and retain them in human-facing summaries.
33
+ - Use numbered clarification questions, two or three A/B/C choices, and
34
+ `(Recommended)` before the preferred text. Present only the current decision.
35
+ - Review all observable outcomes before marking a need approved. Distinguish
36
+ a human decision, a fast-forward bypass, and a model's own assessment.
37
+
38
+ ## Compatibility
39
+
40
+ Artifact schema version is stored in `openwish/config.json`. Reject unsupported
41
+ versions clearly. Preserve unknown project files. Integration updates overwrite
42
+ older versions, preserve same-version edits, and require confirmation to downgrade.
43
+ Keep package and `__version__` values in sync; bump the version when bundled skills
44
+ or adapters change so existing installations can receive the update. Preserve
45
+ known legacy template hashes when adding compatibility for unversioned releases.
46
+ Make schema migrations explicit before introducing incompatible formats.
47
+
48
+ Publish from the source checkout only after tests and a wheel-install smoke test
49
+ pass. Check package data contains policy, artifact reference, legacy template
50
+ hashes, and all eight skills.
51
+
52
+ ## Releases
53
+
54
+ The canonical PyPI distribution is `openwish`; its executable is `ow`. The Check
55
+ workflow tests the supported Python matrix, checks version agreement, builds a
56
+ wheel and source distribution, validates metadata, and installs both with uv.
57
+ The Release workflow reuses those checks and publishes the exact tested artifacts.
58
+
59
+ Published stable GitHub releases go to PyPI; a manual Release workflow run goes
60
+ to TestPyPI. See [release setup and procedure](docs/releases.md) for the one-time
61
+ Trusted Publisher configuration and the steps for each release.
openwish-0.3.1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Scott Yang
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,5 @@
1
+ include CONTRIBUTING.md
2
+ include .python-version
3
+ recursive-include docs *.md
4
+ recursive-include scripts *.py
5
+ recursive-include tests *.py
@@ -0,0 +1,260 @@
1
+ Metadata-Version: 2.4
2
+ Name: openwish
3
+ Version: 0.3.1
4
+ Summary: Need-Driven Development for humans and coding agents
5
+ License-Expression: MIT
6
+ Project-URL: Homepage, https://github.com/yisyang/open-wish
7
+ Project-URL: Documentation, https://github.com/yisyang/open-wish/blob/main/README.md
8
+ Project-URL: Repository, https://github.com/yisyang/open-wish
9
+ Project-URL: Issues, https://github.com/yisyang/open-wish/issues
10
+ Project-URL: Releases, https://github.com/yisyang/open-wish/releases
11
+ Keywords: need-driven-development,coding-agents,agent-skills,cli
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Environment :: Console
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Topic :: Software Development
18
+ Requires-Python: >=3.11
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ Dynamic: license-file
22
+
23
+ # OpenWish (OW)
24
+
25
+ **Need-Driven Development for humans and coding agents.**
26
+
27
+ Humans ask. AI identifies needs, aligns solutions, plans, implements, and reviews.
28
+ Humans review the results. Current needs remain binding after implementation,
29
+ so the next feature does not quietly undo what the previous one accomplished.
30
+ **OW operates on needs.** Asks stay in conversation; existing needs are revised
31
+ or reopened, and distinct outcomes become new needs. There are no change records.
32
+
33
+ OpenWish takes inspiration from [Spec Kit](https://github.com/github/spec-kit)
34
+ and [OpenSpec](https://github.com/Fission-AI/OpenSpec), with durable needs and
35
+ bounded agent context at the center of the workflow.
36
+
37
+ ## Get started
38
+
39
+ Requires Python 3.11+. The runtime has **no third-party dependencies**.
40
+ After the first PyPI release, install the CLI with [uv](https://docs.astral.sh/uv/):
41
+
42
+ ```sh
43
+ uv tool install openwish
44
+ cd /path/to/your/product
45
+ ow init
46
+ ```
47
+
48
+ Until that first publication, install from a checkout using `uv tool install .`.
49
+ The package name is **openwish** and the installed command is **ow**. If your
50
+ shell cannot find `ow`, run `uv tool update-shell` and open a new terminal.
51
+
52
+ `ow init` opens a terminal multi-select for **OpenCode, Claude Code, Codex, and
53
+ generic Agent Skills**. Move with the arrow keys, toggle with Space, and press
54
+ Enter to initialize all selected harnesses. Press A to toggle all or Q/Esc to
55
+ cancel. Installed harnesses are preselected on subsequent runs. Basic or narrow
56
+ terminals use a numbered multi-select instead.
57
+
58
+ To select harnesses directly, including in scripts:
59
+
60
+ ```sh
61
+ ow init --harness opencode claude codex
62
+ # Equivalent: ow init --harness opencode --harness claude --harness codex
63
+ ```
64
+
65
+ Without an interactive terminal, specify `--harness`. Codex and generic Agent
66
+ Skills share `.agents/skills`, so selecting both installs one copy. One
67
+ product/domain in one repository, including a monorepo, is the default.
68
+
69
+ ### Updating installed skills
70
+
71
+ Upgrade the CLI, then run `ow init` again in your project:
72
+
73
+ ```sh
74
+ uv tool upgrade openwish
75
+ ow init
76
+ ```
77
+
78
+ Initialization installs missing integrations and compares each selected file's
79
+ installed version with the CLI's bundled version:
80
+
81
+ | Installed version | Behavior |
82
+ | --- | --- |
83
+ | Older | Overwrite with the bundled version, including any local edits |
84
+ | Same | Leave the file untouched, including local edits and timestamps |
85
+ | Newer | Ask before downgrading; keeping the newer files is the default |
86
+
87
+ Downgrades require explicit terminal confirmation; scripts fail before writing
88
+ if confirmation is needed. Declining keeps newer files while other selected
89
+ installs/upgrades proceed. Deselection does not uninstall existing integrations.
90
+
91
+ Version stamps and `openwish/installation.json` track installed skills and command
92
+ adapters. Exact unversioned v0.2 templates are recognized and upgraded; unknown
93
+ unversioned files are preserved with an actionable error. Existing needs, specs,
94
+ project configuration, policy, and knowledge are preserved when reinitializing.
95
+
96
+ In **OpenCode**, start with:
97
+
98
+ ```text
99
+ /onboard
100
+ /ow-propose Let operations reconcile this month's transactions without copying rows.
101
+ ```
102
+
103
+ Or explicitly choose the uninterrupted workflow:
104
+
105
+ ```text
106
+ /fast-forward Let operations reconcile this month's transactions without copying rows.
107
+ ```
108
+
109
+ `/fast-forward` skips **all OW confirmations and approvals**, including final
110
+ acceptance, for the selected needs' current implementation revisions. It still performs alignment, planning, implementation,
111
+ verification, and AI review. It asks only for genuinely blocking clarification,
112
+ access, or manual observations, after continuing any independent ready work.
113
+
114
+ ## The workflow
115
+
116
+ ```text
117
+ Ask → Propose → Align → Plan → Implement ↔ Review → Accepted results
118
+ │ │ │ │
119
+ confirm approve authorize explicit acceptance
120
+ needs design implementation in default mode
121
+ ```
122
+
123
+ Propose automatically enters Align after need confirmation. Align enters Plan
124
+ after design approval. Plan asks whether to implement. Implementation continues
125
+ through ready work and AI review/remediation; it does not stop for approval of
126
+ each task or epic. Human acceptance is requested once available work is finished.
127
+
128
+ | Skill | Responsibility |
129
+ | --- | --- |
130
+ | `ow-propose` | Distill an ask into new or revised needs; clarify material intent |
131
+ | `ow-align` | Reconcile all current needs and affected implementations; update specs/designs |
132
+ | `ow-plan` | Inspect code and plan minimal epics and correctly ordered task groups |
133
+ | `ow-implement` | Execute ready work until completion or an actual human blocker |
134
+ | `ow-review` | Check needs and regressions, remediate, and present compact results |
135
+ | `ow-consolidate` | Promote durable knowledge and remove completed execution detail |
136
+ | `ow-fast-forward` | Run the full workflow without confirmation/approval prompts |
137
+ | `ow-onboard` | Infer candidate needs and map an existing codebase for confirmation |
138
+
139
+ ### Harness invocation
140
+
141
+ | Harness | Initialization | Invocation |
142
+ | --- | --- | --- |
143
+ | OpenCode V2 | `ow init --harness opencode` | `/ow-propose`, `/fast-forward`, `/onboard` |
144
+ | Claude Code | `ow init --harness claude` | `/ow-propose`, `/fast-forward`, `/onboard` |
145
+ | Codex | `ow init --harness codex` | `$ow-propose`, `$ow-fast-forward`, `$ow-onboard` |
146
+ | Other Agent Skills hosts | `ow init --harness generic` | Host-specific skill selection |
147
+
148
+ Add or update integrations later with `ow init`, or `ow skills --harness NAME ...`.
149
+ Both commands use the same version-aware installer. The same workflow is used
150
+ everywhere; command adapters do not contain divergent process logic.
151
+
152
+ ## Needs are first-class
153
+
154
+ Each need records its actor, desired outcome, observable
155
+ acceptance, human confirmation date, and latest verified implementation date.
156
+
157
+ Two independent state dimensions avoid confusing delivery with relevance:
158
+
159
+ - **Currency:** `current`, `retired`.
160
+ - **Implementation:** `open`, `in-progress`, `review`, `approved`.
161
+
162
+ A `current/approved` need still constrains every future design. Fast-forward
163
+ acceptance records its origin; it is not mislabeled as human confirmation.
164
+ An inferred need starts unconfirmed, and existing code is not assumed verified.
165
+
166
+ Spec designs contain authoritative many-to-many references to needs. Specs describe
167
+ entities, UI modules, or cross-cutting capabilities; epics/tasks organize bounded
168
+ implementation. Containment and prerequisite relationships are distinct.
169
+
170
+ `ow reopen N-001` resumes work under the same ID and resets authority to default.
171
+ Only an explicit new fast-forward request enables it for the reopened revision.
172
+
173
+ ### Human-facing communication
174
+
175
+ Propose confirms only the need interpretation. Later approvals are discussed when
176
+ their stage is reached. Clarifications use numbered questions and two or three
177
+ lettered choices, with `(Recommended)` before the preferred choice text:
178
+
179
+ ```text
180
+ 1. N-001 already provides local monthly trends. Uploading raw records would
181
+ conflict with its local-only constraint. What should I do?
182
+ A. (Recommended) Keep N-001 as-is. No new need or product modification.
183
+ B. Add third-party upload and keep trends local. Revise N-001's allowed-domain exception.
184
+ C. Add third-party upload and computation with local viewing. Revise N-001's constraint.
185
+ ```
186
+
187
+ Final updates lead with need → spec → outcome, followed by verification and any
188
+ blocker. `ow summary N-001` provides that context; reporting only task IDs is insufficient.
189
+
190
+ ## Small artifacts, complete intent
191
+
192
+ - OW-managed knowledge and planning: **under 500 lines per artifact**.
193
+ - All current needs together: **under 500 lines**, default **6,000 estimated tokens**.
194
+ - Source: **under 500 LOC soft target**, **under 1000 LOC hard maximum**.
195
+ - Data formats are exempt from source limits. Low-complexity source exceptions
196
+ are exact paths with a rationale; they do not exempt OW knowledge artifacts.
197
+ - Routine verification should finish within **five minutes**. Necessary slower
198
+ checks are explicit, and missing verification never counts as success.
199
+ - Latest summaries replace earlier ones. Git holds history; there is no required
200
+ append-only journal, growing evidence archive, or duplicate needs ledger.
201
+
202
+ `ow context` derives the needs register and related spec statuses from authoritative
203
+ records. `ow context N-001` also lists affected contracts and work to retrieve.
204
+ Agents read detailed designs only for the work at hand.
205
+
206
+ ## CLI
207
+
208
+ The CLI handles deterministic operations. The coding harness supplies reasoning,
209
+ code execution, and semantic review; OW does not make model-provider API calls.
210
+
211
+ ```sh
212
+ ow status # needs, linked specs, implementation progress
213
+ ow context # all current needs, including approved ones
214
+ ow context N-001 N-002 # plus affected spec/epic IDs
215
+ ow check # schema, links, cycles, ordering, size budgets
216
+ ow ready N-001 N-002 # ready work with spec/need context and blockers
217
+ ow summary N-001 # outcomes, specs, work, and verification
218
+ ```
219
+
220
+ Artifact scaffolding and decision recording are available to agents and humans:
221
+
222
+ ```sh
223
+ ow new need N-001 --title "Monthly reconciliation"
224
+ ow new spec S-001 --title "Transaction export"
225
+ ow new epic E-001 --title "Export implementation"
226
+ # Fill templates and references before checks or gates.
227
+ ow gate needs N-001 --by human
228
+ ow reopen N-001 # reuse a need when further work is necessary
229
+ ```
230
+
231
+ Gates are revision-bound: changed need intent invalidates downstream authority,
232
+ while updating task progress does not. Reviews are bound to the plan and repository
233
+ content. The CLI records human decisions supplied by the harness; it does not
234
+ authenticate a conversation or establish semantic correctness on its own.
235
+
236
+ `--root PATH` works before the subcommand; otherwise the project root is discovered
237
+ from the current directory and its parents. `check`, `status`, and `ready` support
238
+ `--json`. See `ow --help` and the installed `openwish/artifacts.md` for all commands.
239
+
240
+ ## Design and contribution
241
+
242
+ - [Framework design](docs/design.md)
243
+ - [OpenWish's own current needs](openwish/needs/)
244
+ - [Artifact format](src/openwish/assets/artifacts.md)
245
+ - [Workflow policy](src/openwish/assets/policy.md)
246
+ - [Contributing and verification](CONTRIBUTING.md)
247
+ - [Publishing releases to PyPI](docs/releases.md)
248
+
249
+ Run directly from a source checkout without installing:
250
+
251
+ ```sh
252
+ PYTHONPATH=src python3 -m openwish --help
253
+ PYTHONPATH=src python3 -m unittest discover -s tests -v
254
+ ```
255
+
256
+ OpenWish is an initial `0.3.1` implementation using artifact schema 2. The v0.1
257
+ prototype's change records are superseded; see [migration guidance](docs/migration.md).
258
+ Integration files follow current
259
+ host documentation; deterministic checks do not substitute for hands-on harness
260
+ workflow validation. Licensed under [MIT](LICENSE).
@@ -0,0 +1,238 @@
1
+ # OpenWish (OW)
2
+
3
+ **Need-Driven Development for humans and coding agents.**
4
+
5
+ Humans ask. AI identifies needs, aligns solutions, plans, implements, and reviews.
6
+ Humans review the results. Current needs remain binding after implementation,
7
+ so the next feature does not quietly undo what the previous one accomplished.
8
+ **OW operates on needs.** Asks stay in conversation; existing needs are revised
9
+ or reopened, and distinct outcomes become new needs. There are no change records.
10
+
11
+ OpenWish takes inspiration from [Spec Kit](https://github.com/github/spec-kit)
12
+ and [OpenSpec](https://github.com/Fission-AI/OpenSpec), with durable needs and
13
+ bounded agent context at the center of the workflow.
14
+
15
+ ## Get started
16
+
17
+ Requires Python 3.11+. The runtime has **no third-party dependencies**.
18
+ After the first PyPI release, install the CLI with [uv](https://docs.astral.sh/uv/):
19
+
20
+ ```sh
21
+ uv tool install openwish
22
+ cd /path/to/your/product
23
+ ow init
24
+ ```
25
+
26
+ Until that first publication, install from a checkout using `uv tool install .`.
27
+ The package name is **openwish** and the installed command is **ow**. If your
28
+ shell cannot find `ow`, run `uv tool update-shell` and open a new terminal.
29
+
30
+ `ow init` opens a terminal multi-select for **OpenCode, Claude Code, Codex, and
31
+ generic Agent Skills**. Move with the arrow keys, toggle with Space, and press
32
+ Enter to initialize all selected harnesses. Press A to toggle all or Q/Esc to
33
+ cancel. Installed harnesses are preselected on subsequent runs. Basic or narrow
34
+ terminals use a numbered multi-select instead.
35
+
36
+ To select harnesses directly, including in scripts:
37
+
38
+ ```sh
39
+ ow init --harness opencode claude codex
40
+ # Equivalent: ow init --harness opencode --harness claude --harness codex
41
+ ```
42
+
43
+ Without an interactive terminal, specify `--harness`. Codex and generic Agent
44
+ Skills share `.agents/skills`, so selecting both installs one copy. One
45
+ product/domain in one repository, including a monorepo, is the default.
46
+
47
+ ### Updating installed skills
48
+
49
+ Upgrade the CLI, then run `ow init` again in your project:
50
+
51
+ ```sh
52
+ uv tool upgrade openwish
53
+ ow init
54
+ ```
55
+
56
+ Initialization installs missing integrations and compares each selected file's
57
+ installed version with the CLI's bundled version:
58
+
59
+ | Installed version | Behavior |
60
+ | --- | --- |
61
+ | Older | Overwrite with the bundled version, including any local edits |
62
+ | Same | Leave the file untouched, including local edits and timestamps |
63
+ | Newer | Ask before downgrading; keeping the newer files is the default |
64
+
65
+ Downgrades require explicit terminal confirmation; scripts fail before writing
66
+ if confirmation is needed. Declining keeps newer files while other selected
67
+ installs/upgrades proceed. Deselection does not uninstall existing integrations.
68
+
69
+ Version stamps and `openwish/installation.json` track installed skills and command
70
+ adapters. Exact unversioned v0.2 templates are recognized and upgraded; unknown
71
+ unversioned files are preserved with an actionable error. Existing needs, specs,
72
+ project configuration, policy, and knowledge are preserved when reinitializing.
73
+
74
+ In **OpenCode**, start with:
75
+
76
+ ```text
77
+ /onboard
78
+ /ow-propose Let operations reconcile this month's transactions without copying rows.
79
+ ```
80
+
81
+ Or explicitly choose the uninterrupted workflow:
82
+
83
+ ```text
84
+ /fast-forward Let operations reconcile this month's transactions without copying rows.
85
+ ```
86
+
87
+ `/fast-forward` skips **all OW confirmations and approvals**, including final
88
+ acceptance, for the selected needs' current implementation revisions. It still performs alignment, planning, implementation,
89
+ verification, and AI review. It asks only for genuinely blocking clarification,
90
+ access, or manual observations, after continuing any independent ready work.
91
+
92
+ ## The workflow
93
+
94
+ ```text
95
+ Ask → Propose → Align → Plan → Implement ↔ Review → Accepted results
96
+ │ │ │ │
97
+ confirm approve authorize explicit acceptance
98
+ needs design implementation in default mode
99
+ ```
100
+
101
+ Propose automatically enters Align after need confirmation. Align enters Plan
102
+ after design approval. Plan asks whether to implement. Implementation continues
103
+ through ready work and AI review/remediation; it does not stop for approval of
104
+ each task or epic. Human acceptance is requested once available work is finished.
105
+
106
+ | Skill | Responsibility |
107
+ | --- | --- |
108
+ | `ow-propose` | Distill an ask into new or revised needs; clarify material intent |
109
+ | `ow-align` | Reconcile all current needs and affected implementations; update specs/designs |
110
+ | `ow-plan` | Inspect code and plan minimal epics and correctly ordered task groups |
111
+ | `ow-implement` | Execute ready work until completion or an actual human blocker |
112
+ | `ow-review` | Check needs and regressions, remediate, and present compact results |
113
+ | `ow-consolidate` | Promote durable knowledge and remove completed execution detail |
114
+ | `ow-fast-forward` | Run the full workflow without confirmation/approval prompts |
115
+ | `ow-onboard` | Infer candidate needs and map an existing codebase for confirmation |
116
+
117
+ ### Harness invocation
118
+
119
+ | Harness | Initialization | Invocation |
120
+ | --- | --- | --- |
121
+ | OpenCode V2 | `ow init --harness opencode` | `/ow-propose`, `/fast-forward`, `/onboard` |
122
+ | Claude Code | `ow init --harness claude` | `/ow-propose`, `/fast-forward`, `/onboard` |
123
+ | Codex | `ow init --harness codex` | `$ow-propose`, `$ow-fast-forward`, `$ow-onboard` |
124
+ | Other Agent Skills hosts | `ow init --harness generic` | Host-specific skill selection |
125
+
126
+ Add or update integrations later with `ow init`, or `ow skills --harness NAME ...`.
127
+ Both commands use the same version-aware installer. The same workflow is used
128
+ everywhere; command adapters do not contain divergent process logic.
129
+
130
+ ## Needs are first-class
131
+
132
+ Each need records its actor, desired outcome, observable
133
+ acceptance, human confirmation date, and latest verified implementation date.
134
+
135
+ Two independent state dimensions avoid confusing delivery with relevance:
136
+
137
+ - **Currency:** `current`, `retired`.
138
+ - **Implementation:** `open`, `in-progress`, `review`, `approved`.
139
+
140
+ A `current/approved` need still constrains every future design. Fast-forward
141
+ acceptance records its origin; it is not mislabeled as human confirmation.
142
+ An inferred need starts unconfirmed, and existing code is not assumed verified.
143
+
144
+ Spec designs contain authoritative many-to-many references to needs. Specs describe
145
+ entities, UI modules, or cross-cutting capabilities; epics/tasks organize bounded
146
+ implementation. Containment and prerequisite relationships are distinct.
147
+
148
+ `ow reopen N-001` resumes work under the same ID and resets authority to default.
149
+ Only an explicit new fast-forward request enables it for the reopened revision.
150
+
151
+ ### Human-facing communication
152
+
153
+ Propose confirms only the need interpretation. Later approvals are discussed when
154
+ their stage is reached. Clarifications use numbered questions and two or three
155
+ lettered choices, with `(Recommended)` before the preferred choice text:
156
+
157
+ ```text
158
+ 1. N-001 already provides local monthly trends. Uploading raw records would
159
+ conflict with its local-only constraint. What should I do?
160
+ A. (Recommended) Keep N-001 as-is. No new need or product modification.
161
+ B. Add third-party upload and keep trends local. Revise N-001's allowed-domain exception.
162
+ C. Add third-party upload and computation with local viewing. Revise N-001's constraint.
163
+ ```
164
+
165
+ Final updates lead with need → spec → outcome, followed by verification and any
166
+ blocker. `ow summary N-001` provides that context; reporting only task IDs is insufficient.
167
+
168
+ ## Small artifacts, complete intent
169
+
170
+ - OW-managed knowledge and planning: **under 500 lines per artifact**.
171
+ - All current needs together: **under 500 lines**, default **6,000 estimated tokens**.
172
+ - Source: **under 500 LOC soft target**, **under 1000 LOC hard maximum**.
173
+ - Data formats are exempt from source limits. Low-complexity source exceptions
174
+ are exact paths with a rationale; they do not exempt OW knowledge artifacts.
175
+ - Routine verification should finish within **five minutes**. Necessary slower
176
+ checks are explicit, and missing verification never counts as success.
177
+ - Latest summaries replace earlier ones. Git holds history; there is no required
178
+ append-only journal, growing evidence archive, or duplicate needs ledger.
179
+
180
+ `ow context` derives the needs register and related spec statuses from authoritative
181
+ records. `ow context N-001` also lists affected contracts and work to retrieve.
182
+ Agents read detailed designs only for the work at hand.
183
+
184
+ ## CLI
185
+
186
+ The CLI handles deterministic operations. The coding harness supplies reasoning,
187
+ code execution, and semantic review; OW does not make model-provider API calls.
188
+
189
+ ```sh
190
+ ow status # needs, linked specs, implementation progress
191
+ ow context # all current needs, including approved ones
192
+ ow context N-001 N-002 # plus affected spec/epic IDs
193
+ ow check # schema, links, cycles, ordering, size budgets
194
+ ow ready N-001 N-002 # ready work with spec/need context and blockers
195
+ ow summary N-001 # outcomes, specs, work, and verification
196
+ ```
197
+
198
+ Artifact scaffolding and decision recording are available to agents and humans:
199
+
200
+ ```sh
201
+ ow new need N-001 --title "Monthly reconciliation"
202
+ ow new spec S-001 --title "Transaction export"
203
+ ow new epic E-001 --title "Export implementation"
204
+ # Fill templates and references before checks or gates.
205
+ ow gate needs N-001 --by human
206
+ ow reopen N-001 # reuse a need when further work is necessary
207
+ ```
208
+
209
+ Gates are revision-bound: changed need intent invalidates downstream authority,
210
+ while updating task progress does not. Reviews are bound to the plan and repository
211
+ content. The CLI records human decisions supplied by the harness; it does not
212
+ authenticate a conversation or establish semantic correctness on its own.
213
+
214
+ `--root PATH` works before the subcommand; otherwise the project root is discovered
215
+ from the current directory and its parents. `check`, `status`, and `ready` support
216
+ `--json`. See `ow --help` and the installed `openwish/artifacts.md` for all commands.
217
+
218
+ ## Design and contribution
219
+
220
+ - [Framework design](docs/design.md)
221
+ - [OpenWish's own current needs](openwish/needs/)
222
+ - [Artifact format](src/openwish/assets/artifacts.md)
223
+ - [Workflow policy](src/openwish/assets/policy.md)
224
+ - [Contributing and verification](CONTRIBUTING.md)
225
+ - [Publishing releases to PyPI](docs/releases.md)
226
+
227
+ Run directly from a source checkout without installing:
228
+
229
+ ```sh
230
+ PYTHONPATH=src python3 -m openwish --help
231
+ PYTHONPATH=src python3 -m unittest discover -s tests -v
232
+ ```
233
+
234
+ OpenWish is an initial `0.3.1` implementation using artifact schema 2. The v0.1
235
+ prototype's change records are superseded; see [migration guidance](docs/migration.md).
236
+ Integration files follow current
237
+ host documentation; deterministic checks do not substitute for hands-on harness
238
+ workflow validation. Licensed under [MIT](LICENSE).