Internal plan, restricted to project members. Back to the internal index.
main@e8d62722 plus a fresh sweep of core and the
web/mcp edges (2026-10-13). The sweep was static reading only; nothing below was reproduced or run.
Conf says how sure the finding is: read = the cited lines were read and show the behaviour,
plausible = follows from documented framework behaviour, write the failing test first, inferred =
deduced from code paths, unconfirmed.
Status: B28, B31 and B34 (memory bounds) are fixed: the default execution log trims like the file log, the idempotency cache and the status history are capped. S3-S8, S10-S13, B4 and B35 are fixed by the security hardening PR (fix/security-hardening): key checks on the decoded path (400 for ;, encoded separators and dot segments), MCP uses the REST keys, a Host/Origin filter for keyless loopback servers, a protected actuator, refusal to start on a non-loopback address without a key, process execution off unless a list or yukta.process.allow-any=true is set, an expression method allow-list, a script watchdog (yukta.script.timeout-ms, default 10 s; no memory limit), ${context.x} limited to plain values outside yukta.*, an execution id check in the file log reader, 1 MiB request bodies (YUKTA_LIMITS_MAX_BODY, 413), reviewed and audited limit/priority changes, signals refused on the raw node command. F3 (hashed and rotating keys, session-limited keys that also cover execution routes, MCP roles per tool, MCP actor) and F5 (gateway tool allow-list, argument size cap and deny patterns yukta.mcp-client.*; LLM_CALL prompt and answer filters yukta.llm.*) are done, with a per-tool approval option (requireApproval) and a Control page view of who did what (GET /api/control/audit). Scripts also stop after yukta.script.max-statements; a heap limit is not available on this runtime.
New IDs continue the backlog numbering (S security, B bug). The sweep’s own labels (N1-N14) are
kept in brackets. IDs S5-S13 and B28-B33 were checked against core/docs and the module guides:
no collisions (checked on main only, not on unmerged branches).
Effort: S up to half a day, M 1-3 days, L a week or more. Sev: C/H/M/L.
Who can exploit what (read before ranking)
Decision (2026-10-13): workflow authors are trusted today and may not be later. Severities in the
tables assume trusted authors, so S11/S12/S13/F5 stay where they are in the order below. They become
a release gate for the day untrusted authors are allowed:
- S4 deny-by-default for
PROCESS_EXECUTORshipped (PR-3) - S11 expression method allow-list, S12 script statement limit and watchdog, S13 context key allow-list
- F5 gateway-level tool allow-list and prompt filters; F3 per-session scoping (an author must not reach another session)
- B35 size limits and B34/B28/B31/B21 memory bounds (an author can otherwise exhaust memory)
- Re-rate S11/S12/S13 as High and move them from P2 to P1
Decisions needed from you (they gate effort more than code size does)
- S4 deny-by-default for
PROCESS_EXECUTOR(done,yukta.process.allow-any=trueis the migration switch): breaking for anyone relying on the empty list. Ship in which release, and with a migration switch? - S6 refuse to start on a non-loopback bind with no API key: breaking for current Docker users, who bind to all addresses. Refuse, or only log a loud warning?
- B4 / B25 plugin-api changes (new sealed command types, an actor field on status events): public API change. Is a break acceptable now, or do they wait for the next major?
- B21 retention policy for session state: evict (and serve history from the log) or keep everything?
- S3: fix the unused file plugin-log package, or delete it?
- Workflow authors (decided: trusted now, untrusted possible later): the gate list above applies before that changes.
- Size limits (B35 in the performance plan): which maximum start payload and definition size?
P0: security exposure, small fixes
Suggested as one “edge hardening” PR (S5-S8) plus one core PR (S9, B28, R1, B31, B32). The memory bounds B28, B31, B34 and B35 are also denial-of-service fixes; their performance side is in the performance plan.P1: control-plane integrity and correctness
P2: resource limits and design-level work
P3: enhancements (statuses re-verified against code)
Suggested order
- PR-1 S5 + S6 + S7 + S8: edge hardening (one theme, web and mcp).
- PR-2 S9 + B28 + R1 + B31 + B32 + B34 + B35: small core fixes and memory bounds.
- PR-3 S4 with a release note (decision 1).
- PR-4 S10 + B4: plugin-api command types (decision 3).
- PR-5 B29 + B27 guard + B33 + B26 + S3.
- P2 items one at a time, then P3 by product priority.
CLAUDE.md tiers; each PR ends with spotlessApply check once.