Skip to content

Opt-in runtime reasoning node: admit an acknowledged non-deterministic AI step (second fenced carve-out beside RFC #223) #694

Open

Description

@pawellisowski

What

An opted-in way for an app to include one node whose output comes from AI reasoning at run time, alongside the existing single carve-out (vision.extract, RFC #223). Today check_node_agents (cli/src/validate.rs, ~L1245) rejects every other model in the run path with E_APP_RUNTIME_MODEL_FORBIDDEN.

Why

FloLess owner ruling (2026-10-12): a person may use an Agent (a named, scoped AI responsibility in FloLess) as a step in a workflow, provided they confirm they understand that step's output is not deterministic. "Build once, run forever" still holds: the app is compiled and approved once and runs unchanged; only that node's output varies. FloLess runs the reasoning through the person's own AI provider (Claude Code / Codex); AWARE stays model-free and only needs to admit, mark and label the node.

Proposed shape (for discussion, mirrors the RFC #223 fence)

  • Structural opt-in, not name-keyed: a curated command flagged e.g. model-reasoning: true on an agent declaring capabilities.runtime-model-reasoning: true. Every other path still gets E_APP_RUNTIME_MODEL_FORBIDDEN.
  • App-level acknowledgement in the source, e.g. nondeterministic-output: acknowledged (who/when supplied by the front door). Validate rejects a reasoning node without it, with a clear message.
  • The lock records it: the compiled node carries runtime-model: reasoning (distinct from extraction), and the lock carries an app-level nondeterministic-output: true marker so every front door can label results honestly. The node's instructions/config stay part of the source hash, so the .lock drift gate still pins the step, not its answer.
  • Run output is labelled: the run record marks that node's output as AI-produced / non-deterministic. No content-hash replay claim of determinism.
  • Same constraints as extraction where they still make sense: cannot be an assert: evaluator; open question whether it may feed control flow (FloLess leans: yes, if labelled), and whether a downstream host write must sit behind approve: (FloLess leans: yes by default).

Acceptance

Related: RFC #223 (vision.extract carve-out), decalog #9. FloLess tracking epic: pawellisowski/floless.app (to be linked).

Activity

  1. pawellisowski commented on Oct 12, 2026

    @pawellisowski
    ContributorAuthor

    FloLess tracking epic: pawellisowski/floless.app#2241

  2. pawellisowski commented on Oct 12, 2026

    @pawellisowski
    ContributorAuthor

    Heads-up for whoever lands this (found while reading the branch for floless.app#2241 slice S3a): REASONING_MIN_CLI is 0.159.0 in feat/runtime-reasoning-node-694 (cli/src/manifest/agent.rs), but v0.159.0 was released on 2026-10-12 (release notes: #685/#686/#690/#689/#610/#696) and does not contain this fence. A 0.159.0 install would therefore satisfy the requires-runtime floor and still run a model-reasoning command as an ordinary deterministic node, which is exactly what the floor exists to prevent. The first release that can carry #694 is 0.160.0, so the constant (and the plan's/spec's 0.159.0 mentions) should be re-pinned to the version that actually ships it. FloLess keeps its own floor in one constant (AGENT_STEP_MIN_AWARE) and will track whatever lands here.

  3. pawellisowski commented on Oct 12, 2026

    @pawellisowski
    ContributorAuthor

    Fixed in #698 - ready to test; close on pass or label qa-rejected if it fails. Lock fields: node runtime-reasoning: true, top-level nondeterministic-output: true; source nondeterministic-output: acknowledged; trace node-output nondeterministic: true. Runtime floor 0.160.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    qa-readyFixed and merged — awaiting QA verification

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions