drydock-sdd 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. drydock_sdd-0.1.0/.gitignore +50 -0
  2. drydock_sdd-0.1.0/LICENSE +11 -0
  3. drydock_sdd-0.1.0/PKG-INFO +240 -0
  4. drydock_sdd-0.1.0/QuarterDeck/README.md +430 -0
  5. drydock_sdd-0.1.0/QuarterDeck/app.py +1586 -0
  6. drydock_sdd-0.1.0/QuarterDeck/console.json +131 -0
  7. drydock_sdd-0.1.0/QuarterDeck/console.yaml +124 -0
  8. drydock_sdd-0.1.0/QuarterDeck/console.yaml.sample +63 -0
  9. drydock_sdd-0.1.0/QuarterDeck/data/.gitkeep +0 -0
  10. drydock_sdd-0.1.0/QuarterDeck/pages/initial-review.md +28 -0
  11. drydock_sdd-0.1.0/QuarterDeck/pages/overview.md +33 -0
  12. drydock_sdd-0.1.0/QuarterDeck/questionnaires/initial-direction.json +51 -0
  13. drydock_sdd-0.1.0/QuarterDeck/requirements.txt +5 -0
  14. drydock_sdd-0.1.0/QuarterDeck/sample/archived-note.md +8 -0
  15. drydock_sdd-0.1.0/QuarterDeck/sample/guide.md +51 -0
  16. drydock_sdd-0.1.0/QuarterDeck/sample/intent.md +19 -0
  17. drydock_sdd-0.1.0/QuarterDeck/sample/kickoff.json +36 -0
  18. drydock_sdd-0.1.0/QuarterDeck/sample/review.md +20 -0
  19. drydock_sdd-0.1.0/QuarterDeck/sample/tickets.json +52 -0
  20. drydock_sdd-0.1.0/QuarterDeck/tickets.json +95 -0
  21. drydock_sdd-0.1.0/README.md +209 -0
  22. drydock_sdd-0.1.0/Rigging/AUTHORING.md +76 -0
  23. drydock_sdd-0.1.0/Rigging/BRANDING_DOCUMENTATION.md +199 -0
  24. drydock_sdd-0.1.0/Rigging/BRANDING_MAIN.md +96 -0
  25. drydock_sdd-0.1.0/Rigging/BRANDING_POSTS.md +31 -0
  26. drydock_sdd-0.1.0/Rigging/BRANDING_WEBSITE.md +38 -0
  27. drydock_sdd-0.1.0/Rigging/BRANDING_WHITEPAPERS.md +106 -0
  28. drydock_sdd-0.1.0/Rigging/BUSINESS_RULES.md +547 -0
  29. drydock_sdd-0.1.0/Rigging/CLAUDE_RULES.md +290 -0
  30. drydock_sdd-0.1.0/Rigging/CLAUDE_RULES_compact.md +244 -0
  31. drydock_sdd-0.1.0/Rigging/README.md +48 -0
  32. drydock_sdd-0.1.0/Rigging/gitignore +106 -0
  33. drydock_sdd-0.1.0/Rigging/spec_template/ARCHITECTURE.md +38 -0
  34. drydock_sdd-0.1.0/Rigging/spec_template/COMPASS.md +32 -0
  35. drydock_sdd-0.1.0/Rigging/spec_template/DATABASE.md +53 -0
  36. drydock_sdd-0.1.0/Rigging/spec_template/FEATURE-Example.md +31 -0
  37. drydock_sdd-0.1.0/Rigging/spec_template/HOMEPAGE.md +43 -0
  38. drydock_sdd-0.1.0/Rigging/spec_template/IDEAS.md +8 -0
  39. drydock_sdd-0.1.0/Rigging/spec_template/METADATA.md +19 -0
  40. drydock_sdd-0.1.0/Rigging/spec_template/README.md +3 -0
  41. drydock_sdd-0.1.0/Rigging/spec_template/SCREEN-Example.md +40 -0
  42. drydock_sdd-0.1.0/Rigging/spec_template/UI-Component-Example.md +38 -0
  43. drydock_sdd-0.1.0/Rigging/spec_template/UI.md +27 -0
  44. drydock_sdd-0.1.0/Rigging/stack/README.md +245 -0
  45. drydock_sdd-0.1.0/Rigging/stack/alexa-skills-kit.md +137 -0
  46. drydock_sdd-0.1.0/Rigging/stack/aws-api-gateway.md +157 -0
  47. drydock_sdd-0.1.0/Rigging/stack/aws-dynamodb.md +202 -0
  48. drydock_sdd-0.1.0/Rigging/stack/aws-lambda.md +184 -0
  49. drydock_sdd-0.1.0/Rigging/stack/aws-s3.md +127 -0
  50. drydock_sdd-0.1.0/Rigging/stack/aws-sqs.md +135 -0
  51. drydock_sdd-0.1.0/Rigging/stack/bootstrap5.md +357 -0
  52. drydock_sdd-0.1.0/Rigging/stack/bootstrap5_compact.md +215 -0
  53. drydock_sdd-0.1.0/Rigging/stack/common.md +214 -0
  54. drydock_sdd-0.1.0/Rigging/stack/common_compact.md +153 -0
  55. drydock_sdd-0.1.0/Rigging/stack/django.md +489 -0
  56. drydock_sdd-0.1.0/Rigging/stack/fastapi.md +399 -0
  57. drydock_sdd-0.1.0/Rigging/stack/flask.md +550 -0
  58. drydock_sdd-0.1.0/Rigging/stack/flask.md.v1 +455 -0
  59. drydock_sdd-0.1.0/Rigging/stack/flask_compact.md +411 -0
  60. drydock_sdd-0.1.0/Rigging/stack/github-actions.md +137 -0
  61. drydock_sdd-0.1.0/Rigging/stack/index.html +162 -0
  62. drydock_sdd-0.1.0/Rigging/stack/marina-library.md +171 -0
  63. drydock_sdd-0.1.0/Rigging/stack/persistence.md +189 -0
  64. drydock_sdd-0.1.0/Rigging/stack/postgres.md +215 -0
  65. drydock_sdd-0.1.0/Rigging/stack/python.md +305 -0
  66. drydock_sdd-0.1.0/Rigging/stack/python_compact.md +211 -0
  67. drydock_sdd-0.1.0/Rigging/stack/sqlite.md +185 -0
  68. drydock_sdd-0.1.0/Rigging/stack/sqlite_compact.md +146 -0
  69. drydock_sdd-0.1.0/Rigging/stack/terraform.md +154 -0
  70. drydock_sdd-0.1.0/Rigging/stack/ui-flask.bootstrap-client.md +270 -0
  71. drydock_sdd-0.1.0/Rigging/templates/common.py +147 -0
  72. drydock_sdd-0.1.0/Rigging/templates/common.sh +80 -0
  73. drydock_sdd-0.1.0/Rigging/templates/index.html +11 -0
  74. drydock_sdd-0.1.0/Rigging/templates/pyproject.toml +21 -0
  75. drydock_sdd-0.1.0/Rigging/templates/test.sh +4 -0
  76. drydock_sdd-0.1.0/prompts/BLUEPRINTS_CONTRACT.md +333 -0
  77. drydock_sdd-0.1.0/prompts/CONFIGURE_CONSOLE_INITIAL.md +99 -0
  78. drydock_sdd-0.1.0/prompts/MANIFEST_CONTRACT.md +233 -0
  79. drydock_sdd-0.1.0/prompts/README.md +23 -0
  80. drydock_sdd-0.1.0/prompts/analyze.md +326 -0
  81. drydock_sdd-0.1.0/prompts/plan_create.md +196 -0
  82. drydock_sdd-0.1.0/prompts/rigging_compact.md +65 -0
  83. drydock_sdd-0.1.0/prompts/survey.md +63 -0
  84. drydock_sdd-0.1.0/prompts/survey_import.md +51 -0
  85. drydock_sdd-0.1.0/pyproject.toml +109 -0
  86. drydock_sdd-0.1.0/src/drydock/__init__.py +11 -0
  87. drydock_sdd-0.1.0/src/drydock/__main__.py +5 -0
  88. drydock_sdd-0.1.0/src/drydock/analyze.py +250 -0
  89. drydock_sdd-0.1.0/src/drydock/build_documentation.py +256 -0
  90. drydock_sdd-0.1.0/src/drydock/build_plan.py +260 -0
  91. drydock_sdd-0.1.0/src/drydock/cli.py +977 -0
  92. drydock_sdd-0.1.0/src/drydock/config.py +249 -0
  93. drydock_sdd-0.1.0/src/drydock/errors.py +31 -0
  94. drydock_sdd-0.1.0/src/drydock/execution.py +86 -0
  95. drydock_sdd-0.1.0/src/drydock/import_markdown.py +122 -0
  96. drydock_sdd-0.1.0/src/drydock/import_source.py +149 -0
  97. drydock_sdd-0.1.0/src/drydock/import_speckit.py +156 -0
  98. drydock_sdd-0.1.0/src/drydock/init_specification.py +137 -0
  99. drydock_sdd-0.1.0/src/drydock/init_target.py +87 -0
  100. drydock_sdd-0.1.0/src/drydock/llm.py +595 -0
  101. drydock_sdd-0.1.0/src/drydock/logging.py +84 -0
  102. drydock_sdd-0.1.0/src/drydock/metadata.py +83 -0
  103. drydock_sdd-0.1.0/src/drydock/paths.py +112 -0
  104. drydock_sdd-0.1.0/src/drydock/plan_compass.py +170 -0
  105. drydock_sdd-0.1.0/src/drydock/planning_session.py +284 -0
  106. drydock_sdd-0.1.0/src/drydock/prompts.py +83 -0
  107. drydock_sdd-0.1.0/src/drydock/py.typed +0 -0
  108. drydock_sdd-0.1.0/src/drydock/quarterdeck_run.py +66 -0
  109. drydock_sdd-0.1.0/src/drydock/rigging_compact.py +278 -0
  110. drydock_sdd-0.1.0/src/drydock/ships_log.py +202 -0
  111. drydock_sdd-0.1.0/src/drydock/ships_log_tool.py +82 -0
  112. drydock_sdd-0.1.0/src/drydock/standard_artifacts.py +148 -0
  113. drydock_sdd-0.1.0/src/drydock/status.py +275 -0
  114. drydock_sdd-0.1.0/src/drydock/stubs.py +11 -0
  115. drydock_sdd-0.1.0/src/drydock/survey.py +484 -0
  116. drydock_sdd-0.1.0/src/drydock/validate_specification.py +364 -0
@@ -0,0 +1,50 @@
1
+ # Python
2
+ logs/
3
+ __pycache__/
4
+ *.py[cod]
5
+ *.pyo
6
+ *.pyd
7
+ .Python
8
+ *.egg
9
+ *.egg-info/
10
+ dist/
11
+ build/
12
+ .eggs/
13
+ *.whl
14
+ MANIFEST
15
+
16
+ # Virtual environments
17
+ .venv/
18
+ venv/
19
+ env/
20
+
21
+ # uv
22
+ .uv/
23
+
24
+ # Testing
25
+ .pytest_cache/
26
+ .coverage
27
+ htmlcov/
28
+ *.log
29
+
30
+ # Ruff
31
+ .ruff_cache/
32
+
33
+ # Editor
34
+ .DS_Store
35
+ .vscode/
36
+ .idea/
37
+ *.swp
38
+ *.swo
39
+
40
+ # Drydock generated
41
+ prompts/generated/
42
+
43
+ # Drydock self-host workspace
44
+ targets/
45
+
46
+ # QuarterDeck local state
47
+ QuarterDeck/data/*.sqlite
48
+
49
+ # Local project config
50
+ .env
@@ -0,0 +1,11 @@
1
+ Copyright (c) 2026 Web Cloud Studio. All rights reserved.
2
+
3
+ This software and its associated documentation are proprietary and confidential property of
4
+ Web Cloud Studio.
5
+
6
+ No part of this software or documentation may be copied, reproduced, modified, distributed,
7
+ published, transmitted, sublicensed, sold, used, or otherwise exploited, in whole or in part,
8
+ without prior explicit written permission from Web Cloud Studio.
9
+
10
+ Possession of a copy does not grant any license or right to use the software or documentation.
11
+ Unauthorized use is strictly prohibited.
@@ -0,0 +1,240 @@
1
+ Metadata-Version: 2.4
2
+ Name: drydock-sdd
3
+ Version: 0.1.0
4
+ Summary: Governed Blueprint-driven software delivery.
5
+ Project-URL: Homepage, https://github.com/webcloudstudio/Drydock
6
+ Project-URL: Repository, https://github.com/webcloudstudio/Drydock
7
+ Project-URL: Issues, https://github.com/webcloudstudio/Drydock/issues
8
+ Author-email: Ed Barlow <edward.m.barlow@gmail.com>
9
+ License: Proprietary
10
+ License-File: LICENSE
11
+ Keywords: blueprint-driven-development,cli,code-generation,llm,sdd,spec-kit,specification-driven-development
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: Other/Proprietary License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Software Development :: Code Generators
22
+ Requires-Python: >=3.11
23
+ Requires-Dist: python-dotenv>=1.0
24
+ Provides-Extra: dev
25
+ Requires-Dist: mypy>=1.10; extra == 'dev'
26
+ Requires-Dist: pre-commit>=3.7; extra == 'dev'
27
+ Requires-Dist: pytest-cov>=5.0; extra == 'dev'
28
+ Requires-Dist: pytest>=8.0; extra == 'dev'
29
+ Requires-Dist: ruff>=0.4; extra == 'dev'
30
+ Description-Content-Type: text/markdown
31
+
32
+ # Drydock
33
+
34
+ Drydock is an installable Python CLI implementing the governed Drydock Blueprint Methodology
35
+ through **SAIL: Set Up, Arrange, Implement, Loop**.
36
+
37
+ Copyright (c) 2026 Web Cloud Studio. All rights reserved. See [LICENSE](LICENSE).
38
+
39
+ ---
40
+
41
+ ## Installation
42
+
43
+ ```bash
44
+ uv pip install drydock
45
+ ```
46
+
47
+ Or from source:
48
+
49
+ ```bash
50
+ git clone <repo>
51
+ cd Drydock
52
+ uv venv
53
+ uv pip install -e ".[dev]"
54
+ ```
55
+
56
+ ## Working Commands
57
+
58
+ The following commands are fully implemented:
59
+
60
+ ```bash
61
+ drydock --help
62
+ drydock --version
63
+
64
+ drydock config show
65
+ drydock config set blueprint_directory <path>
66
+ drydock config set target_directory <path>
67
+
68
+ drydock init <Target>
69
+
70
+ drydock validate <Blueprint>
71
+ drydock validate <Blueprint> --verbose
72
+
73
+ drydock rigging compact <Blueprint> [--all] [--force]
74
+
75
+ drydock import <Blueprint> <Source> --format markdown
76
+ drydock plan create <Blueprint> <Target>
77
+ drydock build status <Blueprint> <Target>
78
+ ```
79
+
80
+ The planning flow starts with Target initialization, then uses three commands plus QuarterDeck
81
+ approval:
82
+
83
+ ```bash
84
+ drydock init <Target>
85
+ drydock import <Blueprint> <Source> --format markdown
86
+ drydock plan create <Blueprint> <Target>
87
+ # Review and approve the draft plan in <Target>/QuarterDeck.
88
+ drydock build status <Blueprint> <Target>
89
+ ```
90
+
91
+ `init` creates the specification-independent Target baseline and QuarterDeck. `import` creates the
92
+ Blueprint workspace and preserves the source material. `plan create`
93
+ internally inventories the Blueprint inputs and writes the executable `BUILD_PLAN.md` into the
94
+ Target. Configured Blueprint and Target roots belong in Drydock's user-scoped `.env`, never project
95
+ `METADATA.md`.
96
+
97
+ ## Deferred Commands
98
+
99
+ The following commands are registered and visible in help, but not yet
100
+ implemented. Each returns a clear message and exits with code `2`:
101
+
102
+ ```bash
103
+ drydock document generate <Blueprint> <Target>
104
+ drydock document assemble <Blueprint> <Target>
105
+ drydock document <Blueprint> <Target>
106
+ drydock rigging update <Target>
107
+ drydock rigging verify <Target>
108
+ drydock build <Blueprint> <Target>
109
+ drydock build score <Blueprint> <Target>
110
+ drydock refit <Blueprint> <Target> <BOTH|BLUEPRINT|TGT> <Scope> <Change>
111
+ drydock analyze <Blueprint> [<Target>]
112
+ drydock import <Blueprint> <Source> --format <source|speckit>
113
+ ```
114
+
115
+ ## Configuration
116
+
117
+ Drydock reads these global configuration values:
118
+
119
+ | Variable | Purpose |
120
+ |---|---|
121
+ | `BLUEPRINT_DIRECTORY` | Root path containing all Drydock Blueprints |
122
+ | `TARGET_DIRECTORY` | Root path containing all target software projects |
123
+ | `LLM_PROVIDER` | Subscription CLI provider: `claude` (default) or `codex` |
124
+
125
+ **Effective-value precedence:**
126
+ 1. Environment variables `BLUEPRINT_DIRECTORY`, `TARGET_DIRECTORY`, and `LLM_PROVIDER`.
127
+ 2. Values persisted in the user-scoped Drydock `.env` file.
128
+
129
+ **Config file location** (OS-appropriate):
130
+ - Linux/macOS: `~/.config/drydock/.env`
131
+ - Windows: `%APPDATA%\drydock\.env`
132
+
133
+ Set values with:
134
+
135
+ ```bash
136
+ drydock config set blueprint_directory /path/to/blueprints
137
+ drydock config set target_directory /path/to/projects
138
+ ```
139
+
140
+ `SPECIFICATION_DIRECTORY` and `specification_directory` remain accepted as deprecated migration
141
+ aliases for `BLUEPRINT_DIRECTORY` and `blueprint_directory`.
142
+
143
+ ## Source-Tree Launchers
144
+
145
+ When developing, you can run Drydock without installing it:
146
+
147
+ ```bash
148
+ # Bash (Linux/macOS)
149
+ bin/drydock.sh --help
150
+
151
+ # PowerShell (Windows)
152
+ bin/drydock.ps1 --help
153
+
154
+ # Python module
155
+ python -m drydock --help
156
+ ```
157
+
158
+ All three dispatch to the same CLI entry point as the installed `drydock` command.
159
+
160
+ PowerShell structural behavior is defined but not runtime-verified in WSL environments.
161
+
162
+ ## LLM Execution Foundation
163
+
164
+ Application functions pass a fully assembled prompt to the subscription-authenticated CLI runner:
165
+
166
+ ```python
167
+ from drydock.llm import run_prompt
168
+
169
+ result = run_prompt(
170
+ prompt,
171
+ target_directory,
172
+ llm="claude", # optional; LLM_PROVIDER or claude default
173
+ model="sonnet", # optional
174
+ command_name="plan-create",
175
+ parameters={"blueprint": blueprint_name, "block": block_id},
176
+ debug=debug,
177
+ timeout_seconds=3600,
178
+ on_text=lambda chunk: print(chunk, end="", flush=True),
179
+ on_event=handle_structured_event,
180
+ )
181
+ ```
182
+
183
+ Every run writes timestamped prompt, human log, raw provider output, final output, and stderr files
184
+ under `<Target>/logs/`. `<Target>/logs/executions.jsonl` contains one self-contained JSON object per
185
+ run with the effective argv, working directory, caller parameters, artifact paths, hashes, status,
186
+ and parsed provider statistics. The JSONL file is append-only and intentionally extensible for
187
+ future provenance and staleness fields.
188
+
189
+ Provider JSONL is read while the process runs. `on_text` receives Claude partial text deltas or
190
+ Codex agent-message steps immediately; `on_event` receives structured Drydock lifecycle and
191
+ provider events. The same events are appended immediately to `<Target>/logs/events.jsonl`.
192
+ Timeouts terminate the child process and return exit code `124`; interruption terminates the child,
193
+ records exit code `130`, and re-raises `KeyboardInterrupt`.
194
+
195
+ Material Drydock product decisions and delivery milestones are separate from execution mechanics.
196
+ Agents developing Drydock follow the Ship's Log Process in `AGENTS.md` and use the repository-local
197
+ utility:
198
+
199
+ ```text
200
+ python bin/ships_log.py record --event-type decision --title "..." --summary "..." \
201
+ --rationale "..." --source-type agent [--scope ...] [--evidence ...] [--tag ...]
202
+ python bin/ships_log.py audit
203
+ ```
204
+
205
+ The sole Ship's Log artifact is Drydock's `logs/ships_log.jsonl`. It is append-only, rendered by
206
+ QuarterDeck's generic JSONL viewer, and intended as the direct input to downstream publishing
207
+ tools. It is not a public `drydock` command or a target-project Rigging rule. No Markdown Ship's Log
208
+ is generated.
209
+
210
+ ## Project Governance Documents
211
+
212
+ - `docs/Drydock_Specification.md` — sole authoritative Drydock behavior specification; agents
213
+ require product-owner approval before changing it.
214
+ - `docs/SOUNDINGS.md` — authoritative implementation acceptance/readiness checklist and completion
215
+ evidence.
216
+ - `docs/SEA_TRIALS.md` — strategic product outcomes and proof-of-methodology criteria.
217
+ - `AGENTS.md` — operating rules, development architecture, and the mandatory Drydock-only agent
218
+ decision-capture (Ship's Log) process.
219
+
220
+ QuarterDeck exposes these documents and the other owned artifacts under `docs/` directly.
221
+
222
+ `LLM_PROVIDER=claude|codex` may be set in the process environment or user-scoped Drydock `.env`;
223
+ the process environment takes precedence and Claude is the default. API-key environment variables
224
+ are removed before invoking either CLI.
225
+
226
+ ## Packaged Rigging Resources
227
+
228
+ The installed wheel contains a synchronized copy of the Drydock Rigging at
229
+ `drydock/resources/Rigging/`. This is the same tree as the root-level `Rigging/`
230
+ directory; it is included so Blueprint import, validation, and Rigging commands work from an
231
+ installed wheel without access to the source checkout. The installed wheel also contains the
232
+ QuarterDeck runtime used by `drydock init <Target>`.
233
+
234
+ When running from the source tree, Drydock uses the root-level `Rigging/` directly.
235
+ When running from an installed wheel, it falls back to `importlib.resources`.
236
+
237
+ ## License
238
+
239
+ Proprietary — Web Cloud Studio. See [LICENSE](LICENSE) for terms.
240
+ No part of this software may be used without explicit written permission.