@pennixrv/trellis 0.6.22 → 0.6.24
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/dist/migrations/manifests/0.6.23.json +9 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/subnode-work.md +7 -6
- package/dist/templates/common/bundled-skills/trellis-research-record/SKILL.md +1 -1
- package/dist/templates/trellis/scripts/subnode_artifact.py +7 -7
- package/package.json +2 -2
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.6.23",
|
|
3
|
+
"description": "Improves Channel subnode artifact validation and aligns the Pennix Marketplace workflow source.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug fixes:**\n- Makes optional subnode retry and counter fields optional, and permits an empty `completed_scope` when no assigned work started.\n- Aligns the fork with the Pennix Marketplace workflow source.\n\n**Internal:**\n- Restores the missing release manifest so adjacent-version `trellis update` paths remain complete.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "No project migration is required. Existing projects can run the normal `trellis update` flow."
|
|
9
|
+
}
|
|
@@ -16,11 +16,11 @@ Before spawning, the coordinator must use an active task (`planning` or
|
|
|
16
16
|
`in_progress`), define one stable `work_id` and
|
|
17
17
|
`subnode_id`, then prepare a brief-draft JSON with the question, independence
|
|
18
18
|
reason, scope, protected targets, lens, evidence method, source snapshot,
|
|
19
|
-
dependencies, stop conditions, deadline, `channel_ref
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
dependencies, stop conditions, deadline, and `channel_ref`. Set `retry_of`
|
|
20
|
+
only for an explicit manual retry and `counter_of` only for intentional
|
|
21
|
+
counterwork. A retry names an existing, different subnode in the same task and
|
|
22
|
+
`work_id`; counterwork may be initialized independently. The helper supplies
|
|
23
|
+
the immutable task identity and report path.
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
26
|
TASK=.trellis/tasks/09-07-example
|
|
@@ -74,7 +74,8 @@ complete report is:
|
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
For `blocked`, `incomplete`, or `error`, include the same base fields plus a
|
|
77
|
-
|
|
77
|
+
`completed_scope` list (empty when no assigned scope started) and a non-empty
|
|
78
|
+
`blocker` string. Never use
|
|
78
79
|
`accepted`, `rejected`, or `deferred` as a report status.
|
|
79
80
|
|
|
80
81
|
## Dispatch And Wait
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: trellis-research-record
|
|
3
|
-
description: Record verified research, audit, or review findings
|
|
3
|
+
description: Record task-relevant verified research, audit, or review findings in active Trellis task artifacts. Use when material facts, candidates, uncertainty, or a decision basis should persist; do not use for routine navigation or transient observations.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Trellis Research Record
|
|
@@ -232,17 +232,13 @@ def _validate_brief_data(
|
|
|
232
232
|
_require_text_list(brief.get("stop_conditions"), "brief.stop_conditions")
|
|
233
233
|
_require_text(brief.get("deadline"), "brief.deadline", max_len=128)
|
|
234
234
|
_validate_channel_ref(brief.get("channel_ref"))
|
|
235
|
-
if "retry_of" not in brief:
|
|
236
|
-
_fail("brief.retry_of must be present; use null when this is not a retry")
|
|
237
|
-
if "counter_of" not in brief:
|
|
238
|
-
_fail("brief.counter_of must be present; use null when this is not counterwork")
|
|
239
235
|
_validate_retry_target(
|
|
240
|
-
brief
|
|
236
|
+
brief.get("retry_of"),
|
|
241
237
|
task_dir,
|
|
242
238
|
work_id,
|
|
243
239
|
subnode_id,
|
|
244
240
|
)
|
|
245
|
-
counter_of = brief
|
|
241
|
+
counter_of = brief.get("counter_of")
|
|
246
242
|
if counter_of is not None:
|
|
247
243
|
counter_id = _require_id(counter_of, "brief.counter_of")
|
|
248
244
|
if counter_id == subnode_id:
|
|
@@ -339,7 +335,11 @@ def _validate_report_data(
|
|
|
339
335
|
if status == "complete" and not evidence:
|
|
340
336
|
_fail("a complete report requires at least one evidence item")
|
|
341
337
|
if status != "complete":
|
|
342
|
-
_require_text_list(
|
|
338
|
+
_require_text_list(
|
|
339
|
+
report.get("completed_scope"),
|
|
340
|
+
"report.completed_scope",
|
|
341
|
+
allow_empty=True,
|
|
342
|
+
)
|
|
343
343
|
_require_text(report.get("blocker"), "report.blocker")
|
|
344
344
|
return evidence
|
|
345
345
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pennixrv/trellis",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.24",
|
|
4
4
|
"description": "AI capabilities grow like ivy — Trellis provides the structure to guide them along a disciplined path",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"inquirer": "^9.3.7",
|
|
35
35
|
"undici": "^6.21.0",
|
|
36
36
|
"zod": "^4.4.2",
|
|
37
|
-
"@pennixrv/trellis-core": "0.6.
|
|
37
|
+
"@pennixrv/trellis-core": "0.6.24"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@eslint/js": "^9.18.0",
|