Skip to content

fix: default child timeout and validate AAS_GUI_PORT - #11

Merged
EauDoon merged 1 commit into
mainfrom
devloop/cycle-06-env-defaults
Aug 30, 2026
Merged

fix: default child timeout and validate AAS_GUI_PORT#11
EauDoon merged 1 commit into
mainfrom
devloop/cycle-06-env-defaults

Conversation

@EauDoon

@EauDoon EauDoon commented Aug 30, 2026

Copy link
Copy Markdown
Owner

What

Apply env-backed defaults for child process timeouts and the local GUI port.

  • Decide/act/prove children now fail closed after 30000ms (AAS_CHILD_TIMEOUT_MS), instead of hanging the run.
  • A Python timeout no longer falls through to the next interpreter candidate.
  • AAS_GUI_PORT (default 8787) is parsed as an integer 1–65535. Empty/unset keeps the default; Number("") / NaN no longer bind a junk port.
  • Spawn maxBuffer is wired to the existing CHILD_JSON_LIMIT.
  • Help text and README document both variables.

Why

Theme 6 (config, env, and defaults): the GUI already read AAS_GUI_PORT but defaulted badly, and child tools had no timeout at all.

How tested

  • npm test (42 passing, including env parsing, hung-child timeout, decide-timeout fail-closed, and invalid timeout before a demo run)
  • npm run gui:smoke
  • node --check on the orchestrator, GUI, and bootstrap entrypoints

Devin Review

Hung decide/act/prove children now fail closed after 30s
(AAS_CHILD_TIMEOUT_MS). Empty GUI port and timeout env values keep
the documented defaults instead of Number("")/NaN, and invalid
integers are rejected before a run starts.
@EauDoon
EauDoon merged commit 5a80c4b into main Aug 30, 2026
2 of 5 checks passed
@EauDoon
EauDoon deleted the devloop/cycle-06-env-defaults branch August 30, 2026 04:26

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Devin Review

Comment thread bin/aas.mjs
...opts,
maxBuffer: CHILD_JSON_LIMIT,
...rest,
timeout,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Child timeout can hang forever

When a child ignores SIGTERM, spawnSync keeps waiting after timeout expires. One hung stage can still block the entire run indefinitely.

Suggested change
timeout,
timeout,
killSignal: "SIGKILL",
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

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