Skip to content

feat(vibe): Require traced decisions for new data directions and API writes - #302

Merged
shafty023 merged 2 commits into
mainfrom
feat/data-direction-provenance
Oct 16, 2026
Merged

shafty023 merged 2 commits into
mainfrom
feat/data-direction-provenance

Conversation

@shafty023

Copy link
Copy Markdown
Collaborator

Purpose

#298 and #299 required a cited human decision for a write into another tool's data, but both described that write as a write into its files. A write through the tool's API or IPC, for example a method that changes its stored state, read as not covered. Neither change had a check for a new direction of data flow between surfaces, and cl-analyze could still treat a Decisions section as a documented decision when it rated risk.

What changed

  • A write into another tool's data covers its files and its API or IPC. A supported interface lowers the risk but does not remove the need for a traced human decision. This is now in the guardrails reviewer's Mechanisms check, the change and requirements workers, the plan-review prompt's mechanism inventory and one-way doors, and planning step 13 (moving the write to a supported interface does not settle whether it is allowed).
  • cl-execute planning-and-gates.md gets a Data direction readiness item, defined once: a new direction of data flow between surfaces needs a cited human decision or approved document traced per Decision provenance. An earlier document that restricts the direction counts as a conflict. With no traced decision, it is a numbered human decision. The plan-review prompt mirrors it in one DECISIONS line, and the rest of that prompt is unchanged.
  • vibe: the requirements worker flags data direction (new) in its brief, with its source or untraced. The change worker builds only along directions that are already allowed and logs an untraced one as an Engineering decision. The guardrails reviewer treats an untraced new direction in the diff as a blocking engineering decision finding. None of this goes to the vibe person, and the build loop still has no plan review.
  • cl-analyze: the EXTREME rule counts a decision as documented only when it traces to a human statement, because a Decisions section is a record, not a ruling. New Decision provenance and Data direction readiness checks point to the cl-execute definitions, and both are added to the result's Readiness list. The decisions and routing rules are otherwise unchanged.
  • vibe 1.0.50 to 1.0.51, plus a CHANGELOG entry.

Commands run

node --test <every plugins/**/*.test.{mjs,cjs,js} file, as CI does>   # 398 pass
uv run pytest plugins/ -q                                            # 2335 passed, 3 skipped
uv run ruff check . && uv run pyright                                 # clean
cd tools/plugin-manifests && npm ci && npm test                       # 6 passed

The new test_vibe_data_direction_contract.py and the new skill-contract.test.mjs case fail when run against main's versions of the six changed docs. One existing assertion in test_vibe_mechanism_provenance_contract.py pinned "each write into files another tool owns". It now pins the wider wording, which is the intended change.

…writes

- A write into another tool's data covers its files and its API or IPC,
  such as a method that changes that tool's stored state. A supported
  interface lowers the risk but does not remove the need for a traced
  human decision. The guardrails reviewer's Mechanisms check, the change
  and requirements workers, the plan-review prompt and planning step 13
  now say so.
- Add a Data direction readiness item to cl-execute's
  planning-and-gates.md: a new direction of data flow between surfaces
  needs a cited human decision or approved document traced per Decision
  provenance; an earlier restricting document is a conflict, and with no
  traced decision it is a numbered human decision. The plan-review
  prompt mirrors it in one DECISIONS line.
- vibe: the requirements worker flags a new data direction in its brief,
  the change worker builds only along allowed directions and logs an
  untraced one as an Engineering decision, and the guardrails reviewer
  treats one in the diff as a blocking engineering decision finding.
- cl-analyze: the EXTREME rule counts a decision as documented only when
  it traces to a human statement, and Decision provenance and Data
  direction readiness checks point to cl-execute's definitions and join
  the result's Readiness list.
- Release vibe 1.0.51.

Testing: node --test over every plugin test file (398 pass), pytest
plugins/ (2335 pass, 3 skipped), ruff and pyright clean, manifest tests
pass. The new contract tests fail against main's versions of the docs.
Risks: Reviewers may flag ordinary reads as new data directions; the
check only asks for the traced decision, so the cost is a longer review.
… result

- Add Decision provenance and Data direction to the Readiness list of
  cl-execute's CL Execute Gate Result, so the gate reports the items it
  checks.
- The data direction contract case pins both lines.

Testing: node --test over every plugin test file (398 pass), pytest
plugins/vibe (271 pass); the new assertions fail without the lines.
Risks: None identified
@shafty023
shafty023 merged commit efbf74b into main Oct 16, 2026
10 checks passed
@shafty023
shafty023 deleted the feat/data-direction-provenance branch October 16, 2026 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant