@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.29.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
- Conversation memory does not survive compaction. Track task completion in a
50
- ledger file, not only in todos.
51
-
52
- - At skill start, check for a ledger: `.condux/progress/<feature-slug>.md`
53
- (slug inferred kebab-case from the plan's feature name — the same
54
- convention `draft-plan` uses for its own filename). Tasks listed there as
55
- complete are DONE — do not re-dispatch them; resume at the first task not
56
- marked complete.
57
- - If no ledger exists, create it with a header naming the plan file:
58
- ```
59
- # Subagent Execution Progress: <feature-slug>
60
-
61
- Plan: .condux/plans/<plan-file>.md
62
-
63
- ```
64
- - When a task's review comes back clean, append one line in the same
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
 
@@ -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 (`subagent-execution` if the
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
@@ -11,5 +11,8 @@
11
11
  ]
12
12
  }
13
13
  ]
14
- }
14
+ },
15
+ "modules": [
16
+ "./mod/register.tsx"
17
+ ]
15
18
  }