docs: complete nested local draft bindings

This commit is contained in:
lda
2026-07-22 09:15:48 +07:00 Verified
parent cde0a3c14f
commit ae4b21fce4
8 changed files with 90 additions and 33 deletions
+5
View File
@@ -549,6 +549,11 @@ clear operator feedback before adding more architecture.
`revision_conflict` while the patch path retains its mutation-time race
guard. Implementation:
[`draft semantic revision precedence`](historical/superpowers/plans/2026-07-22-draft-semantic-revision-precedence.md).
- Completed: focused draft bind and capability-step insertion now preserve
nested node-local paths and project nested capability schemas through one
shared bounded JSON Schema path module. CLI and agent guidance distinguish
rooted bind endpoints from implied rootless map targets. Implementation:
[`nested local draft bindings`](historical/superpowers/plans/2026-07-22-nested-local-draft-bindings.md).
- Completed: `wf draft set-input` and `wf draft set-output` now accept
`--merge`, preserving existing bindings when agents split map edits across
multiple revisions.
@@ -555,7 +555,7 @@
- Closes only: nested bind rejection, capability-add nested projection skip, and stale CLI/agent guidance.
- Leaves open: structured-input assembly, literals, fan-out maps, nested workflow-output source projection, metadata/update-step, and TypeScript parity.
- [ ] **Step 1: Update CLI and agent-facing examples**
- [x] **Step 1: Update CLI and agent-facing examples**
Replace “bare field” wording with “rootless node-local path” in all three live user-facing documents. Include both forms together:
@@ -569,7 +569,7 @@
Explain that `wf draft bind` names both rooted endpoints, while `set-input` and capability-add already imply the local side and therefore accept rootless targets. Do not claim support for literals, fan-out, or atomic object assembly.
- [ ] **Step 2: Update issue and roadmap state precisely**
- [x] **Step 2: Update issue and roadmap state precisely**
In `ISSUES.md`, check only these three entries:
@@ -585,7 +585,7 @@
historical/superpowers/plans/2026-07-22-nested-local-draft-bindings.md
```
- [ ] **Step 3: Run the complete focused verification matrix**
- [x] **Step 3: Run the complete focused verification matrix**
Run:
@@ -599,7 +599,7 @@
Expected: all focused tests and static checks pass. The pytest count may increase as tests are added; report exact totals rather than copying a planned count.
- [ ] **Step 4: Run an independent two-axis review**
- [x] **Step 4: Run an independent two-axis review**
Use the `requesting-code-review` skill against the implementation start commit. Review:
@@ -608,7 +608,7 @@
Fix Critical and Important findings, rerun affected focused tests, and record any intentional Minor deferrals in the final report.
- [ ] **Step 5: Archive the completed plan and commit documentation**
- [x] **Step 5: Archive the completed plan and commit documentation**
After all checks pass:
+12 -4
View File
@@ -328,9 +328,11 @@ wf draft compile concat_ws
```
`set-input` maps graph source paths to node-local input fields:
`input.text=text` means `input.text -> local.text`. Targets are bare
node-local field names: write `--map input.text=text`, not
`--map input.text=local.text`.
`input.title=report.title` means
`input.title -> local.report.title`. Targets are rootless node-local paths:
write `--map input.title=report.title`, not
`--map input.title=local.report.title`. Existing single-field targets such as
`input.text=text` remain valid.
`set-output` maps node-local output fields to workflow state paths:
`text=state.text` means `local.text -> state.text`.
@@ -360,9 +362,15 @@ use `input.*` or `state.*` to `local.*` for step inputs, and `local.*` to
wf draft bind concat_ws --revision 9 --step call --from local.value --to state.value
wf draft bind concat_ws --revision 9 --step call --from input.text --to local.text
wf draft bind concat_ws --revision 9 --step call --from local.result --to output.result
wf draft bind report_ws --revision 2 --step render --from input.title --to local.report.title
wf draft set-input report_ws --revision 3 --step render --map input.title=report.title
wf draft validate concat_ws
```
`bind` names both endpoints, so nested local paths use the explicit `local.`
root. `set-input` and `draft add capability --input` already imply the local
side and therefore use rootless targets such as `report.title`.
If the workflow schema field already exists, `bind` reuses it and only updates
the step binding. Use `set-input --merge` for pure input-map edits when no
schema projection is needed.
@@ -383,7 +391,7 @@ wf draft set-workflow-output report_ws --revision 6 --map state.markdown=markdow
The command combines two common edits:
- It copies the selected capability local field schema into the workflow input,
- It copies the selected capability local path schema into the workflow input,
state, or output schema at the graph path.
- It merges the matching step input or output binding.