@jabworks/condux 0.29.0 → 0.31.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.31.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": {
|
|
@@ -49,6 +49,12 @@ Run through this checklist. Every item must be answered honestly — not optimis
|
|
|
49
49
|
│ No console.log, no debug code, no TODO comments that │
|
|
50
50
|
│ weren't there before, no commented-out blocks. │
|
|
51
51
|
│ │
|
|
52
|
+
│ □ NO WORKAROUNDS │
|
|
53
|
+
│ Did anything here bypass a convention, widen a type, │
|
|
54
|
+
│ disable a rule, or special-case around a design just to │
|
|
55
|
+
│ make it land? Report it — the user decides whether it │
|
|
56
|
+
│ ships. Nothing bypassed → N/A, no commentary. │
|
|
57
|
+
│ │
|
|
52
58
|
│ □ READY FOR FINALIZE │
|
|
53
59
|
│ All the above are yes → call /finalize │
|
|
54
60
|
│ Any are no → fix first, then re-check │
|
|
@@ -100,6 +106,7 @@ a preflight failure like any other.
|
|
|
100
106
|
| "The edge cases are unlikely" | They happen in production. Consider them now. |
|
|
101
107
|
| "The plan steps were mostly done" | Mostly done is not done. |
|
|
102
108
|
| "I only changed one line, nothing could break" | One-line changes cause regressions too. |
|
|
109
|
+
| "It's a small workaround, I'll do it properly later" | Later is a PR nobody opens. Report it; the user chooses. |
|
|
103
110
|
|
|
104
111
|
## Output
|
|
105
112
|
|
|
@@ -112,6 +119,7 @@ a preflight failure like any other.
|
|
|
112
119
|
□ Spec drift ✓ / ✗ / N/A [notes] (N/A = no spec for this task)
|
|
113
120
|
□ No regressions ✓ / ✗ [notes]
|
|
114
121
|
□ Nothing left behind ✓ / ✗ [notes]
|
|
122
|
+
□ No workarounds ✓ / ✗ / N/A [notes] (N/A = nothing bypassed)
|
|
115
123
|
|
|
116
124
|
→ Ready for /finalize [YES / NO — list blockers if NO]
|
|
117
125
|
```
|
|
@@ -46,32 +46,22 @@ If you can't answer all four, don't spawn.
|
|
|
46
46
|
|
|
47
47
|
## Progress Ledger
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
message as other bookkeeping: `- [x] Task N: <name> — commits
|
|
66
|
-
<base7>..<head7>, review clean`.
|
|
67
|
-
- The ledger is a recovery aid, not the source of truth — the commits it
|
|
68
|
-
names exist in git even if context no longer remembers creating them.
|
|
69
|
-
After compaction or a new session, trust the ledger and `git log` over
|
|
70
|
-
your own recollection.
|
|
71
|
-
- `.condux/` is gitignored working state (see `/workflow` → Artifacts). If
|
|
72
|
-
it's ever deleted, recover progress from `git log` against the plan's task
|
|
73
|
-
list — and note the plan itself lived there too, so re-derive scope from
|
|
74
|
-
the spec in `specs/` if the plan is gone as well.
|
|
49
|
+
The ledger contract — path, header, line format, wrap-up lines — is owned by
|
|
50
|
+
`/workflow` → **Progress Ledger**, because inline execution keeps the same file;
|
|
51
|
+
this section only adds what is specific to dispatching agents.
|
|
52
|
+
|
|
53
|
+
- At skill start, check for a ledger: `.condux/progress/<feature-slug>.md`.
|
|
54
|
+
Tasks listed there as complete are DONE — do not re-dispatch them; resume at
|
|
55
|
+
the first task not marked complete.
|
|
56
|
+
- If no ledger exists, create it with the header `/workflow` defines (naming the
|
|
57
|
+
plan file and the BASE commit).
|
|
58
|
+
- When a task's review comes back clean, append one line in the same message as
|
|
59
|
+
other bookkeeping: `- [x] Task N: <name> — commits <base7>..<head7>, review
|
|
60
|
+
clean`.
|
|
61
|
+
- After compaction or a new session, trust the ledger and `git log` over your own
|
|
62
|
+
recollection. If `.condux/` is ever deleted, recover progress from `git log`
|
|
63
|
+
against the plan's task list — and note the plan itself lived there too, so
|
|
64
|
+
re-derive scope from the spec in `specs/` if the plan is gone as well.
|
|
75
65
|
|
|
76
66
|
## How It Works
|
|
77
67
|
|
package/skills/workflow/SKILL.md
CHANGED
|
@@ -42,6 +42,11 @@ Condux is **lean and proportional** — the opposite of "always run every gate."
|
|
|
42
42
|
6. **House style rides along.** Before the first line of code in any tier, load
|
|
43
43
|
the `coding-directive` skill if it is installed — skip silently when it
|
|
44
44
|
isn't. Codebase mimicry and repo config still win over the directive.
|
|
45
|
+
7. **Two tracks, one of them triggered.** Tactical is the task in front of you.
|
|
46
|
+
Strategic is the environment that produced it — would a narrower type, a
|
|
47
|
+
lint rule, or a written convention have made this task's bug impossible?
|
|
48
|
+
The strategic track is *not* a standing obligation; that would violate rule
|
|
49
|
+
1. It fires on a trigger, and the triggers are in Environment Hardening.
|
|
45
50
|
|
|
46
51
|
## Entry Contract
|
|
47
52
|
|
|
@@ -102,8 +107,8 @@ Every tier ends with `preflight` then `finalize` — no exceptions.
|
|
|
102
107
|
Overview · Files · Interfaces · Sketch where non-obvious · Edge cases) → CP-1 →
|
|
103
108
|
implement top-to-bottom → CP-2 → `/preflight` → `/finalize` → CP-3.
|
|
104
109
|
- **LARGE:** load `discovery`, run fully to sign-off → load `draft-plan`, produce the
|
|
105
|
-
plan doc, sign-off → CP-1 → implement task by task
|
|
106
|
-
user picks it) → CP-2 → `/preflight` → `/finalize` → CP-3.
|
|
110
|
+
plan doc, sign-off → CP-1 → implement task by task, keeping the Progress Ledger
|
|
111
|
+
(`subagent-execution` if the user picks it) → CP-2 → `/preflight` → `/finalize` → CP-3.
|
|
107
112
|
|
|
108
113
|
## Checkpoints
|
|
109
114
|
|
|
@@ -167,7 +172,7 @@ Load each only when its step is reached.
|
|
|
167
172
|
| `blueprint` | discovery's propose step, or a standalone mockup/visualization ask | load only when a UI surface or data model is in play; structure, never styling |
|
|
168
173
|
| `draft-plan` | LARGE, after discovery sign-off | needs a signed-off design; no design → apply the discovery soft gate first |
|
|
169
174
|
| `test-first-development` | user asks, or picks it at CP-1 | one upfront consent; always ask before editing an existing test spec |
|
|
170
|
-
| `subagent-execution` | LARGE plan where specialization/parallelism pays off | default is implement yourself |
|
|
175
|
+
| `subagent-execution` | LARGE plan where specialization/parallelism pays off | default is implement yourself; keeps the Progress Ledger |
|
|
171
176
|
| `subagent-deployment` | 2+ independent tasks, no shared files/deps | ad-hoc work, not ordered plans |
|
|
172
177
|
| `preflight` | end of every tier, before finalize | automatic on SMALL; recommended CP-2 choice |
|
|
173
178
|
| `finalize` | after all implementation | runs in order, once, stops on first failure; check AGENTS.md for the real commands |
|
|
@@ -224,6 +229,40 @@ without asking. Not a git repo → fall back to CWD and say so once.
|
|
|
224
229
|
**Override.** A project can relocate either tier in `AGENTS.md`; an explicit
|
|
225
230
|
override always wins over these defaults.
|
|
226
231
|
|
|
232
|
+
## Progress Ledger
|
|
233
|
+
|
|
234
|
+
Conversation memory does not survive compaction, and a plan file records intent,
|
|
235
|
+
not progress. Whoever implements a plan saved in `.condux/plans/` — you inline,
|
|
236
|
+
or `subagent-execution` — keeps one ledger beside it,
|
|
237
|
+
`.condux/progress/<feature-slug>.md` (the plan's file name minus its date and
|
|
238
|
+
extension):
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
# Progress: <feature-slug>
|
|
242
|
+
|
|
243
|
+
Plan: .condux/plans/<plan-file>.md
|
|
244
|
+
BASE: <sha7 of HEAD before Task 1>
|
|
245
|
+
|
|
246
|
+
- [x] Task 1: <name> — commit <sha7>
|
|
247
|
+
- [x] preflight clean
|
|
248
|
+
- [x] committed <sha7>; PR #N open
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
- **Task lines** are appended after the task's commit, one per task, in the same
|
|
252
|
+
message as ticking the todo. A line names a real commit.
|
|
253
|
+
- **Wrap-up lines** (no task number) are appended as each checkpoint step
|
|
254
|
+
finishes: `code-review`, `preflight`, `finalize`, live verification, then the
|
|
255
|
+
commit or PR line. A tool that reads the ledger — the `/condux` board — turns
|
|
256
|
+
them into the pipeline's done and still-to-come steps.
|
|
257
|
+
- **Start of work:** if a ledger exists, tasks ticked there are DONE; resume at
|
|
258
|
+
the first one that is not.
|
|
259
|
+
- **No saved plan file, no ledger.** A SMALL task and a MEDIUM inline plan have
|
|
260
|
+
nothing for a ledger to key on; do not invent a plan file to get one.
|
|
261
|
+
- The ledger is a recovery aid, not the source of truth: the commits it names
|
|
262
|
+
exist in git even when context no longer remembers them. `.condux/` is
|
|
263
|
+
gitignored working state (see Artifacts), so never cite a ledger from a
|
|
264
|
+
committed file.
|
|
265
|
+
|
|
227
266
|
## Agents
|
|
228
267
|
|
|
229
268
|
Five **named specialist agents** ship with condux — never invent a generic subagent
|
|
@@ -253,6 +292,38 @@ Scope turns out bigger than the confirmed tier? Stop immediately, report what yo
|
|
|
253
292
|
found ("this touches auth middleware, not just the UI"), re-confirm the tier before
|
|
254
293
|
continuing. Never silently expand scope.
|
|
255
294
|
|
|
295
|
+
## Environment Hardening
|
|
296
|
+
|
|
297
|
+
The strategic track, fired by a trigger rather than run on every task. Two
|
|
298
|
+
triggers, both observed rather than imagined:
|
|
299
|
+
|
|
300
|
+
- **Repeated friction.** The same obstacle cost time twice — twice in this
|
|
301
|
+
task, or once here and once earlier in the session.
|
|
302
|
+
- **A workaround taken.** You bypassed a convention, widened a type, disabled a
|
|
303
|
+
rule, or special-cased around a design to make the change land. `preflight`'s
|
|
304
|
+
no-workarounds box catches the ones you stopped noticing.
|
|
305
|
+
|
|
306
|
+
When one fires, spend a sentence on the cause rather than the symptom. Agents
|
|
307
|
+
succeed in a **pit of success** — an environment where the wrong thing is hard
|
|
308
|
+
to express:
|
|
309
|
+
|
|
310
|
+
| Lever | Looks like |
|
|
311
|
+
|---|---|
|
|
312
|
+
| Constrained surface | a narrower type, a smaller public API, an argument that cannot be passed wrong |
|
|
313
|
+
| Rules that force correctness | a lint rule, a stricter compiler flag, a test that fails on the shape and not just the value |
|
|
314
|
+
| Written convention | a line in `AGENTS.md` / `CLAUDE.md` or the house-style skill, so a reviewer cites it instead of re-deriving it |
|
|
315
|
+
| Data the agent lacks | dev-server or production logs, a test database, browser access to watch the thing actually render |
|
|
316
|
+
|
|
317
|
+
**The output is a sentence to the user, or a backlog item — never a new
|
|
318
|
+
artifact.** Name the hardening and let the user decide. If a backlog skill
|
|
319
|
+
(`record`, or the repo's own convention) is installed and they want it kept,
|
|
320
|
+
file it there. Do not create a file for it, do not add a `.condux/` directory
|
|
321
|
+
for it, and do not implement it inside the current task — that is scope
|
|
322
|
+
expansion, which Escalating Mid-Task already forbids.
|
|
323
|
+
|
|
324
|
+
**Silence is the correct output when neither trigger fired.** A clean SMALL
|
|
325
|
+
task gets no hardening commentary at all.
|
|
326
|
+
|
|
256
327
|
## Red Flags
|
|
257
328
|
|
|
258
329
|
Stop if you catch yourself doing any of these:
|
|
@@ -271,6 +342,7 @@ Stop if you catch yourself doing any of these:
|
|
|
271
342
|
| Auto-running code-review, commits, or agents | They're checkpoint choices; run only when picked |
|
|
272
343
|
| Verifying live without loading `live-verification` | Load it — its `report.md` is the evidence (9 of 11 ad-hoc runs in a mobile eval left none) |
|
|
273
344
|
| Auto-advancing past a checkpoint on MEDIUM/LARGE | The user owns every transition |
|
|
345
|
+
| Absorbing a workaround silently so the change lands | Name it — that's a hardening trigger, and preflight asks for it anyway |
|
|
274
346
|
| Expanding scope past the confirmed tier | Stop, report, re-confirm |
|
|
275
347
|
|
|
276
348
|
## Tips
|