plan_driven 0.1.0 → 0.3.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +74 -1
- data/README.md +437 -37
- data/app/controllers/plan_driven/wizard/application_controller.rb +59 -0
- data/app/controllers/plan_driven/wizard/configuration_controller.rb +62 -0
- data/app/controllers/plan_driven/wizard/jobs_controller.rb +16 -0
- data/app/controllers/plan_driven/wizard/plans_controller.rb +113 -0
- data/app/views/layouts/plan_driven/wizard/application.html.erb +151 -0
- data/app/views/plan_driven/wizard/configuration/show.html.erb +104 -0
- data/app/views/plan_driven/wizard/plans/_agents.html.erb +44 -0
- data/app/views/plan_driven/wizard/plans/_approve.html.erb +40 -0
- data/app/views/plan_driven/wizard/plans/_finish.html.erb +31 -0
- data/app/views/plan_driven/wizard/plans/_plan.html.erb +52 -0
- data/app/views/plan_driven/wizard/plans/_tickets.html.erb +42 -0
- data/app/views/plan_driven/wizard/plans/index.html.erb +31 -0
- data/app/views/plan_driven/wizard/plans/new.html.erb +21 -0
- data/app/views/plan_driven/wizard/plans/show.html.erb +37 -0
- data/app/views/plan_driven/wizard/plans/statistics.html.erb +94 -0
- data/config/routes.rb +17 -0
- data/exe/plan-driven +1 -0
- data/lib/generators/plan_driven/install_generator.rb +7 -0
- data/lib/generators/plan_driven/templates/plan_driven.rb +10 -1
- data/lib/plan_driven/charts.rb +252 -0
- data/lib/plan_driven/cli/config_commands.rb +60 -0
- data/lib/plan_driven/cli/plan_commands.rb +6 -2
- data/lib/plan_driven/cli/setup_commands.rb +10 -0
- data/lib/plan_driven/cli/ticket_commands.rb +64 -3
- data/lib/plan_driven/cli/ui.rb +41 -2
- data/lib/plan_driven/cli.rb +21 -4
- data/lib/plan_driven/configuration.rb +31 -3
- data/lib/plan_driven/connections.rb +69 -0
- data/lib/plan_driven/cursor_agents.rb +10 -2
- data/lib/plan_driven/delivery.rb +23 -5
- data/lib/plan_driven/evidence.rb +11 -4
- data/lib/plan_driven/github.rb +4 -0
- data/lib/plan_driven/guards/migration_guard.rb +86 -9
- data/lib/plan_driven/guards/ticket_guard.rb +1 -2
- data/lib/plan_driven/interview.rb +161 -0
- data/lib/plan_driven/local_agents.rb +254 -0
- data/lib/plan_driven/renderer/html.rb +34 -5
- data/lib/plan_driven/renderer/markdown.rb +67 -3
- data/lib/plan_driven/renderer/style.css +21 -0
- data/lib/plan_driven/renderer.rb +11 -4
- data/lib/plan_driven/statistics.rb +195 -0
- data/lib/plan_driven/template.rb +7 -2
- data/lib/plan_driven/usage.rb +114 -0
- data/lib/plan_driven/version.rb +1 -1
- data/lib/plan_driven/wizard/engine.rb +19 -0
- data/lib/plan_driven/wizard.rb +245 -0
- data/lib/plan_driven.rb +8 -1
- metadata +32 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7ffc191c08d6787d03cfccdcb13fb559e2fb48f5d042fbe5597335544f36339f
|
|
4
|
+
data.tar.gz: f32edb2f3c5cd3fd1eed677bc834d6a60527c59d15d49a89065083dc07ee18b8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8a9a83308065071c48d13c575f06966a99fd517a3f6e2fbcacb5d804f937e433395305aef7578332fc171929c8e234923f5abc537ba21e5c6100cbb9e7ee7279
|
|
7
|
+
data.tar.gz: 79a273ff6f7d84e371445047646f9ea799a374ca0f2a838863b76eb3e9cf3a3a3ded7054235e68c3d500ef02f31e744bf2aa9e255364d071afc0112ed1c9af20
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,78 @@ All notable changes to this project are documented here. The format follows
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Statistics, computed from the audit trail: how long planning, tickets, development and proof
|
|
12
|
+
took, each ticket's time split into queued, agent coding, waiting for review, agent fixing
|
|
13
|
+
feedback and approved but not merged, the agents' share of the work, first-time approvals,
|
|
14
|
+
and acceptance criteria merged and proven over time. `plan-driven stats PLAN` prints them,
|
|
15
|
+
the wizard has a Statistics page with charts, and the delivery report has a Statistics
|
|
16
|
+
section.
|
|
17
|
+
- Charts drawn in Ruby as SVG, with no JavaScript: a burn-up of criteria merged and proven,
|
|
18
|
+
a timeline of each ticket, the split between agents and people, and a bar of every
|
|
19
|
+
criterion's result. The delivery report writes them next to the Markdown, so GitHub shows
|
|
20
|
+
them, and inlines them in the HTML and the PDF.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- The delivery report has colour: every acceptance criterion's result is a green, red, amber
|
|
25
|
+
or grey pill with a matching edge on its row, failed rows are tinted red, merged tickets are
|
|
26
|
+
marked green, and the Markdown shows ✅, ❌, ⏸️ or ⚠️ before each result.
|
|
27
|
+
|
|
28
|
+
## [0.2.0] - 2026-09-30
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
|
|
32
|
+
- The browser wizard: a Rails engine the install generator mounts at `/plan_driven`, in
|
|
33
|
+
development only. It walks a plan through the interview, plan, approval, tickets, agents
|
|
34
|
+
and evidence with Back and Next, and every button runs the matching `plan-driven` command in
|
|
35
|
+
the background, with the command and its live output shown beside the form. Only a fixed
|
|
36
|
+
list of commands can run, for local requests only (`config.wizard_enabled`).
|
|
37
|
+
- The wizard's Configuration page: Connections shows which services the app uses and whether
|
|
38
|
+
each has a key, and connects one from a pasted key; Interview questions changes, adds and
|
|
39
|
+
removes the questions `new` asks.
|
|
40
|
+
- `plan-driven connect SERVICE` (`cursor`, `openai`, `anthropic`, `github`) checks a key with
|
|
41
|
+
the service before storing it, and stores nothing when the service refuses it. The key is
|
|
42
|
+
read from stdin, never from the command line.
|
|
43
|
+
- `plan-driven questions` and `plan-driven question KEY` (`--title`, `--ask`, `--group`,
|
|
44
|
+
`--required`, `--optional`, `--remove`). The changes live in the app, in
|
|
45
|
+
`config/plan_driven/interview.yml`, so the team shares one interview; an added question is
|
|
46
|
+
a section of the plan like the others.
|
|
47
|
+
- `plan-driven edit PLAN SECTION --from FILE` replaces a section with a file's contents.
|
|
48
|
+
- Tokens and cost. Every model call (drafting, redrafts, tickets) and every agent run is
|
|
49
|
+
recorded with its tokens and duration. `plan-driven usage PLAN` prints them, and the delivery
|
|
50
|
+
report has a Tokens and cost table. `config.token_prices` turns tokens into dollars.
|
|
51
|
+
- Local coding agents: `config.agent_provider = :local` runs `config.agent_command` (Claude
|
|
52
|
+
Code, Codex, the Cursor CLI...) in its own git worktree per ticket, then commits, pushes and
|
|
53
|
+
opens the pull request. Feedback runs in the same worktree; the worktree is removed after
|
|
54
|
+
the merge. `{prompt_file}` in the command passes the prompt as a file instead of stdin.
|
|
55
|
+
- `GitHub#create_pull`, and Cursor agent runs carry `duration_ms`.
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- MigrationGuard judges each removal or rename on its own sentence, or migration code line,
|
|
60
|
+
and the step it sits under. Before, the word "expand" or "contract" anywhere in Database
|
|
61
|
+
changes excused every destructive change in the section. Headings, negated sentences,
|
|
62
|
+
rollback notes and tables the plan creates are no longer read as removals.
|
|
63
|
+
- Terminal tables fit the terminal width, cutting the last column short instead of wrapping.
|
|
64
|
+
- When answers are piped into `plan-driven new`, the interview prints each answer after its
|
|
65
|
+
question, so the transcript reads like the terminal session.
|
|
66
|
+
|
|
67
|
+
### Fixed
|
|
68
|
+
|
|
69
|
+
- Optional questions no longer read "(optional) (optional)" in the New plan form: the
|
|
70
|
+
interview adds "(optional)" itself, in the terminal and in the wizard alike.
|
|
71
|
+
- `plan-driven version` exits with status 0 instead of a TypeError after printing the version.
|
|
72
|
+
- `evidence` always runs Cucumber with `RAILS_ENV=test`. Started from a development server,
|
|
73
|
+
as the wizard does, it inherited `RAILS_ENV=development` and ran the scenarios against the
|
|
74
|
+
development database. The wizard also no longer passes the server's `RAILS_ENV` to commands.
|
|
75
|
+
- `remove_check_constraint` and other `remove_*` methods that drop no data are no longer
|
|
76
|
+
destructive changes; `remove_column(s)`, `remove_reference`, `remove_timestamps`,
|
|
77
|
+
`drop_table`, `rename_*` and `change_column` still are.
|
|
78
|
+
- Ticket coverage asks for tickets only for tables the plan creates or changes. Tables the
|
|
79
|
+
plan names in prose, or that already exist in the schema, no longer need their own ticket.
|
|
80
|
+
|
|
9
81
|
## [0.1.0] - 2026-09-30
|
|
10
82
|
|
|
11
83
|
First public release.
|
|
@@ -72,5 +144,6 @@ First public release.
|
|
|
72
144
|
- `plan-driven doctor` checks keys, the repository, the PDF browser, the Cursor API, the agent
|
|
73
145
|
model, and Node and the SDK for `:cursor`.
|
|
74
146
|
|
|
75
|
-
[Unreleased]: https://github.com/blaz1988/plan-driven/compare/v0.
|
|
147
|
+
[Unreleased]: https://github.com/blaz1988/plan-driven/compare/v0.2.0...HEAD
|
|
148
|
+
[0.2.0]: https://github.com/blaz1988/plan-driven/compare/v0.1.0...v0.2.0
|
|
76
149
|
[0.1.0]: https://github.com/blaz1988/plan-driven/releases/tag/v0.1.0
|