@jabworks/condux 0.17.2 → 0.18.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.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jabworks/condux",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "OpenCode plugin for the condux workflow toolkit — bundles the condux skills and injects the specialist agents (coder, explorer, planner, researcher) plus an opt-in plan-review listener.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -207,18 +207,16 @@ running preview reloads and shows the link, so the reader stays where they are.
|
|
|
207
207
|
## The Design File and the Live Preview (Step 3 onward)
|
|
208
208
|
|
|
209
209
|
**The file is created at §1, not at sign-off.** Write
|
|
210
|
-
`.condux/designs/YYYY-MM-DD-<feature>.md`
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
210
|
+
`.condux/designs/YYYY-MM-DD-<feature>.md` when Step 3 opens, and append each
|
|
211
|
+
section to it as it is agreed. This is the whole mechanism behind the card
|
|
212
|
+
contract: the card can stay small precisely because the design has somewhere
|
|
213
|
+
else to live.
|
|
214
214
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
```
|
|
215
|
+
**The file's shape lives in `references/design-template.md`** — the canonical
|
|
216
|
+
home of the frontmatter contract (`status` / `date` / `feature`), the section
|
|
217
|
+
set, and the lifecycle stamp saying when each part gets written. Copy its
|
|
218
|
+
at-creation parts when the file is created; append each agreed section in its
|
|
219
|
+
§-entry shape (the section card's presentation twin — same four facts).
|
|
222
220
|
|
|
223
221
|
At Step 7, flip `status` to `signed-off`. `/draft-plan` and the `planner` agent
|
|
224
222
|
both read that value; **a design file with `status: in-progress` does not
|
|
@@ -274,7 +272,8 @@ Detail-round answers (Step 4) belong in the spec concern files, not the
|
|
|
274
272
|
summary — the summary stays short; the spec carries the detail.
|
|
275
273
|
|
|
276
274
|
Lives at: `.condux/designs/YYYY-MM-DD-<feature>.md`, created at §1 and
|
|
277
|
-
appended to per section
|
|
275
|
+
appended to per section, in the shape of `references/design-template.md`
|
|
276
|
+
(see The Design File and the Live Preview). Step 7
|
|
278
277
|
does not write it — it flips its `status` to `signed-off`, and that flip is
|
|
279
278
|
what `/draft-plan`'s gate check reads. A design that lives only in
|
|
280
279
|
conversation doesn't count as signed off, and neither does one still marked
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Design Doc Template
|
|
2
|
+
|
|
3
|
+
The shape of `.condux/designs/YYYY-MM-DD-<feature>.md`. This file is the
|
|
4
|
+
canonical home of the design file's frontmatter contract and section set —
|
|
5
|
+
SKILL.md points here rather than restating it.
|
|
6
|
+
|
|
7
|
+
The template formalizes **accumulation**: the file is built by discovery's own
|
|
8
|
+
flow, never restructured afterwards. Every part carries a lifecycle stamp
|
|
9
|
+
saying when it gets written, so an agent mid-discovery always has a home for
|
|
10
|
+
what it is holding. The mid-flow file and the sign-off file are one artifact
|
|
11
|
+
with one shape.
|
|
12
|
+
|
|
13
|
+
```markdown
|
|
14
|
+
---
|
|
15
|
+
status: in-progress <!-- → signed-off at Step 7; /draft-plan's gate reads this -->
|
|
16
|
+
date: YYYY-MM-DD
|
|
17
|
+
feature: <slug>
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# <feature> — <one line> [at creation]
|
|
21
|
+
|
|
22
|
+
<what we're building and why — ≤3 lines> [at creation]
|
|
23
|
+
|
|
24
|
+
**Sections:** N — <names, in order> [at creation]
|
|
25
|
+
|
|
26
|
+
## §n · <name> — AGREED <date> [appended per agreement]
|
|
27
|
+
|
|
28
|
+
**Decided:** <the choice>, because <one line>.
|
|
29
|
+
|
|
30
|
+
| Rejected | Why not |
|
|
31
|
+
|---|---|
|
|
32
|
+
| <alternative> | <one line> |
|
|
33
|
+
|
|
34
|
+
<evidence — table, list, or a linked blueprint artifact. Never a wall.>
|
|
35
|
+
|
|
36
|
+
## Constraints & out of scope [accumulates — rows added any time]
|
|
37
|
+
|
|
38
|
+
| Constraint / exclusion | Why |
|
|
39
|
+
|---|---|
|
|
40
|
+
| <rule or exclusion> | <one line> |
|
|
41
|
+
|
|
42
|
+
## Open questions [finalized at sign-off; "none" is valid]
|
|
43
|
+
|
|
44
|
+
- <question still open after sign-off, or "none">
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## The rules
|
|
48
|
+
|
|
49
|
+
| Rule | Why |
|
|
50
|
+
|---|---|
|
|
51
|
+
| Every agreed § carries the four facts a `decisions.md` entry carries — title+date, choice, alternatives with one-line why-nots, consequence | Step 7's spec write-back becomes transcription, not authorship; the design doc and `decisions.md` cannot disagree on shape because they share one |
|
|
52
|
+
| Sections are appended as agreed, never drafted ahead | The file records the conversation's actual state; a pre-drafted section reads as agreed when it isn't |
|
|
53
|
+
| Constraints discovered mid-flow go straight into their table | The section exists from creation precisely so mid-flow findings have a home other than an invented heading |
|
|
54
|
+
| `status` flips to `signed-off` only at Step 7, and nothing else edits the frontmatter | `/draft-plan` and the `planner` agent gate on this value |
|
|
55
|
+
|
|
56
|
+
## Lifecycle stamps, spelled out
|
|
57
|
+
|
|
58
|
+
| Stamp | When written | Parts |
|
|
59
|
+
|---|---|---|
|
|
60
|
+
| `[at creation]` | Step 3 opens, before §1 is presented | frontmatter, title, why-line, section list |
|
|
61
|
+
| `[appended per agreement]` | each section, at the moment it is agreed | the § entries |
|
|
62
|
+
| `[accumulates]` | any time | `Constraints & out of scope` rows |
|
|
63
|
+
| `[finalized at sign-off]` | Step 7 | `Open questions`, the `status` flip |
|
|
64
|
+
|
|
65
|
+
A design file with no `status` field predates this contract and reads as
|
|
66
|
+
`signed-off` — see SKILL.md's existing-design check.
|
|
@@ -76,14 +76,22 @@ Order of checks, because this is where the defects were:
|
|
|
76
76
|
|
|
77
77
|
One artifact per claim that has a visual or observable outcome — screenshot,
|
|
78
78
|
response body, console excerpt. Store under
|
|
79
|
-
`<git-root>/.condux/verification/<YYYY-MM-DD>-<slug>/`
|
|
80
|
-
|
|
79
|
+
`<git-root>/.condux/verification/<YYYY-MM-DD>-<slug>/` — everything a run
|
|
80
|
+
produces lives inside that dir, nothing at the verification root. Name each
|
|
81
|
+
evidence file for the claim it supports and reference it from the report's
|
|
82
|
+
claim table. Console errors and failed network requests seen along the way
|
|
81
83
|
get reported even when they belong to another feature.
|
|
82
84
|
|
|
85
|
+
Then write `report.md` into the same dir, in the shape of
|
|
86
|
+
`references/report-template.md` — every run writes one, including runs where
|
|
87
|
+
nothing could be driven (the template carries the fallback shape).
|
|
88
|
+
|
|
83
89
|
### Step 5 — Report and stop
|
|
84
90
|
|
|
85
|
-
|
|
86
|
-
|
|
91
|
+
The terminal report **is** `report.md`: print the file's content — never a
|
|
92
|
+
second shape that can drift from the persisted one. One pass. Fix what you
|
|
93
|
+
found, re-verify only the claims that failed, update `report.md` to match,
|
|
94
|
+
then stop. This skill does not loop.
|
|
87
95
|
|
|
88
96
|
## Failure Handling
|
|
89
97
|
|
|
@@ -112,31 +120,13 @@ Two failed attempts on the same claim is the ceiling. Report and move on.
|
|
|
112
120
|
|
|
113
121
|
## Output Format
|
|
114
122
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
Save disabled while mutation in flight save-pending.png ✓
|
|
123
|
-
Failed save shows server message inline save-error.png ✓
|
|
124
|
-
Escape closes dialog, focus returns to trigger — ✗ focus lands on body
|
|
125
|
-
Empty list renders the empty state empty-state.png ✓
|
|
126
|
-
|
|
127
|
-
Also seen: 2 console errors on mount (pre-existing, unrelated to this change)
|
|
128
|
-
|
|
129
|
-
1 claim failed. Fixed focus return in dialog.tsx:44 — re-verified ✓
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
When nothing could be driven:
|
|
133
|
-
|
|
134
|
-
```
|
|
135
|
-
## Live verification: <change>
|
|
136
|
-
|
|
137
|
-
Target none — no dev/start/storybook script and nothing on the usual ports
|
|
138
|
-
Verdict NOT VERIFIED — 3 claims unchecked, listed below
|
|
139
|
-
```
|
|
123
|
+
The report shape — the fixed header table (Date / Target / Diff / Themes),
|
|
124
|
+
the claim table (Claim | Evidence | Verdict), "Also seen", and the outcome
|
|
125
|
+
line — lives in `references/report-template.md`, the canonical home. It also
|
|
126
|
+
carries the fallback shape for when nothing could be driven; that run still
|
|
127
|
+
writes `report.md`, because an absent report is indistinguishable from a run
|
|
128
|
+
that never happened. Fixed header keys and a fixed claim-table shape are what
|
|
129
|
+
make two runs of the same surface comparable.
|
|
140
130
|
|
|
141
131
|
## What Does NOT Happen
|
|
142
132
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Verification Report Template
|
|
2
|
+
|
|
3
|
+
The shape of `report.md` — one per run, at
|
|
4
|
+
`<git-root>/.condux/verification/<YYYY-MM-DD>-<slug>/report.md`. This file is
|
|
5
|
+
the canonical home of the report shape; SKILL.md's Output Format points here.
|
|
6
|
+
|
|
7
|
+
The terminal report **is** this file: write `report.md` first, then print its
|
|
8
|
+
content as the report. One fact, one home — a separate terminal shape and file
|
|
9
|
+
shape would drift.
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
# Live verification: <change>
|
|
13
|
+
|
|
14
|
+
| | |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Date | YYYY-MM-DD |
|
|
17
|
+
| Target | <url or command> (<how it was started>) |
|
|
18
|
+
| Diff | <branch or commit under test> |
|
|
19
|
+
| Themes | light ✓ dark ✓ |
|
|
20
|
+
|
|
21
|
+
| Claim | Evidence | Verdict |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| <behavior asserted, one line> | <file in this dir, or —> | ✓ / ✗ <what actually happened> |
|
|
24
|
+
|
|
25
|
+
Also seen: <console errors, failed requests, off-feature breakage — or "nothing">
|
|
26
|
+
|
|
27
|
+
<n> claims failed. <fix + re-verify note, or "all green">
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
When nothing could be driven, the report is still written — an absent
|
|
31
|
+
`report.md` is indistinguishable from a run that never happened:
|
|
32
|
+
|
|
33
|
+
```markdown
|
|
34
|
+
# Live verification: <change>
|
|
35
|
+
|
|
36
|
+
| | |
|
|
37
|
+
|---|---|
|
|
38
|
+
| Date | YYYY-MM-DD |
|
|
39
|
+
| Target | none — <what was tried, what blocked it> |
|
|
40
|
+
| Verdict | NOT VERIFIED — <n> claims unchecked, listed below |
|
|
41
|
+
|
|
42
|
+
| Claim | Evidence | Verdict |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| <each enumerated claim> | — | unchecked |
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## The rules
|
|
48
|
+
|
|
49
|
+
| Rule | Why |
|
|
50
|
+
|---|---|
|
|
51
|
+
| Everything a run produces lives inside its run dir — nothing at the verification root | Root-level orphans belonging to no run were observed in the wild; the dir is the unit of a run |
|
|
52
|
+
| Evidence files are named for the claim they support and referenced from the claim table | The table is the index — an evidence file it doesn't reference is uncontextualized in a week |
|
|
53
|
+
| Header keys are fixed: Date, Target, Diff, Themes (Themes only for UI surfaces) | Two runs of the same surface are diffable only when their headers line up |
|
|
54
|
+
| Every run writes `report.md`, including runs where nothing could be driven | Absence of a report must mean absence of a run, nothing else |
|