You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #609 intentionally ships conservative, safe defaults for execution budgets, stack safety, parsing/analysis checkpoints, pattern execution, source loading, HTTP admission/body/response handling, and WebSocket capacity. Keep those defaults, but make every user-relevant limit or policy introduced or consolidated by the PR overrideable through a project .wflcfg when an operator has a legitimate need to raise or lower it.
This is low priority for now. The current defaults should remain unchanged and safe.
Scope
Audit the complete PR #609 surface, including all later remediation commits and issue #611, and classify every constant/default as one of:
Public operational policy — must have a documented .wflcfg override.
Internal sampling/implementation detail — should remain private unless a real operational use case justifies exposing it.
Safety invariant — may be configurable only with validation, warnings, or an explicit unsafe/advanced opt-in.
At minimum, verify configurability and consistent propagation for:
overall execution timeout and cooperative cancellation behavior;
maximum interpreter operations;
call/recursion depth, including the conservative direct-embedding default;
import/include and execute file depth;
maximum source size for CLI, REPL, modules, includes, and nested execution;
pattern transition/step and active-state ceilings;
HTTP request-body and response-body limits;
HTTP pending/in-flight admission and bounded request queue capacity;
HTTP body/handler response timeout;
WebSocket queue, queued-byte, and connection ceilings;
interpreter stack sizing / stack-safety policy where it is controlled by WFL;
Also audit constructors and entry points. A value loaded from .wflcfg should reach the CLI, REPL, nested interpreters, modules/includes, pattern VM, HTTP/WebSocket transports, and supported embedding runners without silently falling back to a different hard-coded value.
Important distinction
Do not automatically expose hot-loop implementation constants such as lexer checkpoint stride or cooperative-yield sampling stride merely because they are constants. Expose them only if users need them to control observable behavior. Deadline/cancellation correctness must not depend on making sampling internals configurable.
Proposed behavior
Existing values remain the defaults.
Local/project .wflcfg overrides global configuration following the existing precedence rules.
Invalid, zero, overflowing, or dangerous values receive clear validation errors or documented sentinel behavior.
Safety-sensitive overrides have documented consequences. For example, a high recursion limit without an adequate interpreter stack must not quietly reintroduce native stack overflow risk.
Config-taking library APIs continue to honor explicit caller configuration; define clearly how filesystem .wflcfg applies to embedding APIs such as Interpreter::new().
Configuration checker/fixer, reference docs, examples, and generated/default config are updated together.
Summary
Follow-up to PR #609.
PR #609 intentionally ships conservative, safe defaults for execution budgets, stack safety, parsing/analysis checkpoints, pattern execution, source loading, HTTP admission/body/response handling, and WebSocket capacity. Keep those defaults, but make every user-relevant limit or policy introduced or consolidated by the PR overrideable through a project
.wflcfgwhen an operator has a legitimate need to raise or lower it.This is low priority for now. The current defaults should remain unchanged and safe.
Scope
Audit the complete PR #609 surface, including all later remediation commits and issue #611, and classify every constant/default as one of:
.wflcfgoverride.At minimum, verify configurability and consistent propagation for:
execute filedepth;Also audit constructors and entry points. A value loaded from
.wflcfgshould reach the CLI, REPL, nested interpreters, modules/includes, pattern VM, HTTP/WebSocket transports, and supported embedding runners without silently falling back to a different hard-coded value.Important distinction
Do not automatically expose hot-loop implementation constants such as lexer checkpoint stride or cooperative-yield sampling stride merely because they are constants. Expose them only if users need them to control observable behavior. Deadline/cancellation correctness must not depend on making sampling internals configurable.
Proposed behavior
.wflcfgoverrides global configuration following the existing precedence rules..wflcfgapplies to embedding APIs such asInterpreter::new().Acceptance criteria
.wflcfgkey and default.Related