nc://ux3

v0.1.0Pinned
ThomSharktools/nodecode-ux3: Judge a product direction across user, evidence and business flows and get one bounded verdict. - a rewrite of cis2042/ux3-product-design-harness (MIT), credited to cis20428761b0f· 9 Nov1 commit
test1 filecell.lisp6.4 KBkernel.lisp18.1 KB

nodecode-ux3

Product judgment across user, evidence and business flows: the decision gate before a direction is built, and at its next iteration. A Nodecode rewrite of cis2042/ux3-product-design-harness by cis2042.

Get it

Tell the agent "add the ux3 cell", or run nodecode add nc://ux3.

Use it

Ask the model to judge a direction before it builds it, or call the gate yourself:

(ux3:route "Add a migration for the billing table")
;; => (:ROUTE "commitment" :BYPASS NIL :REVIEW-REQUIRED T :MODE "standard"
;;     :WHY "the prompt names \"migration\", \"billing\": high risk, so it commits")

(ux3:evaluate "Let teams share one board" :evidence-tier "t2")
;; => (:ROUTE "discovery" :MODE "standard" :EVIDENCE-TIER "t2" :LANES
;;     (("user" "continue" "t2") ("evidence" "continue" "t2")
;;      ("business" "continue" "t2"))
;;     :COMBINED-VERDICT "continue" :WEAKEST-FLOW "user_flow"
;;     :NEXT-STEP "write a context pack inside the execution boundary: ..." ...)

(ux3:decide '((:user "verify" "t2")
               (:evidence "stop_reframe" "t1")
               (:business "continue" "t3"))
             :may-do '("Edit the settings page")
             :must-not-do '("Edit the settings page"))
;; => (:COMBINED-VERDICT "stop_reframe" :WEAKEST-FLOW "evidence_flow"
;;     :EVIDENCE-TIER "t1" :AUTHORIZED NIL :PROBLEMS ("the execution boundary ...") ...)

(ux3:gate-text ...) and (ux3:review-text ...) render either answer as prose. The model can also call the ux3_gate tool with a prompt (and an optional evidence tier), and /ux3 one line to judge runs the same gate from the shell.

While the cell runs, (help :ux3) answers the method: the three flows, the evidence tiers, the one-verdict rule, and the operating rules the original's skill states (review before implementing, list disconfirming evidence first, name may_do / must_not_do / must_ask, keep a human-owned call human-owned).

The three flows

Flow The question
user_flow Who is it for, who else is affected, what are they trying to accomplish, and what does it cost them or take from their control now?
evidence_flow What was observed, where did it come from, what interpretation is being made, which counter-signal weakens it, and what changes if it is wrong?
business_flow Who creates value, who receives it, who pays or decides, who carries the cost and the risk, and does the exchange stay viable and legitimate?

Evidence tiers bound the action, and confidence never upgrades them: t0 forces stop_reframe, t1 can never return continue, and a review's headline tier is the weakest lane's. Verdicts are never averaged; the weakest flow is chosen deterministically (severity, then the lowest tier, then evidence, user, business), so two people reading one review reach the same next step.

Configure

Nothing is required. The section, on unless it says "enabled": false:

{
  "ux3": {
    "evidence_tier": "t0",      // the tier a gate that names none is read at
    "working_language": "en"    // the prose's language; flow, verdict and tier names stay canonical
  }
}

A tier or a language of the wrong shape is a REFUSED line on the folder's record, and (restart-cells "nodecode-ux3") tries again once it is fixed.

What is in it

File What it is
kernel.lisp The decision kernel: route, the three-lane baseline, the reduction, the tier floor, the boundary check, and the prose renderers. No I/O, no network, no clock.
cell.lisp The method as the help topic, the ux3_gate tool, /ux3, and the ux3 section.
README.md, NOTICE, LICENSE What this is, where it came from, and the original's licence.

License

MIT, the original's: Copyright (c) 2026 Product Design Harness contributors. See LICENSE and NOTICE.

Add nc://ux3

  1. 1

    Install Nodecode

    Once per machine.

    $ curl -fsSL https://nodecode.ai/install.sh | sh
  2. 2

    Add the cell

    Pinned at 8761b0f.

    $ nodecode add nc://ux3

    Or tell the agent add the ux3 cell.