Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
c3f2b6f
fix(ecs): write task payload to S3, not inline overrides (#502)
Jun 29, 2026
331751e
Merge branch 'main' into fix/502-ecs-payload-s3-pointer
krokoko Jul 7, 2026
85e141d
Merge branch 'main' into fix/502-ecs-payload-s3-pointer
isadeks Jul 8, 2026
6e0db96
fix: enable corepack in the agent image so yarn/pnpm resolve
isadeks Jun 29, 2026
bef9b86
wire ECS/Fargate substrate (context-gated) at 32GB/8vCPU for heavy bu…
isadeks Jun 29, 2026
c6a2f28
bump ECS Fargate to 64GB/16vCPU + BUILD_VERIFY_TIMEOUT_S=3600
isadeks Jun 29, 2026
5da571e
fix(ecs): map full payload to run_task so channel/build/cedar fields …
isadeks Jul 1, 2026
bf0a86d
fix(ecs): grant task role GetSecretValue on bgagent-{linear,jira}-oau…
isadeks Jul 1, 2026
70efb8d
fix(ecs): wire ARTIFACTS_BUCKET_NAME into the Fargate task (ECS-parit…
isadeks Jul 6, 2026
b9da937
feat(compute): guard compute_type=ecs against a stack without the ECS…
isadeks Jul 6, 2026
26ec150
fix(cdk): raise BUILD task memory 64→120 GB (max Fargate) — ABCA-662 …
isadeks Jul 9, 2026
9add784
fix(cdk): make ecs-strategy top-of-file import hermetic vs ambient env
isadeks Jul 9, 2026
4acccf3
fix(cdk): grant ec2:DescribeAvailabilityZones to ECS agent task role …
isadeks Jul 9, 2026
209c66a
fix(ecs): grant ECS task role AgentCore Memory access (F-2, ABCA-488-…
Jul 2, 2026
a5550eb
docs(bootstrap): correct the ECS ComputeTypes enable instructions
isadeks Jul 10, 2026
86a3f41
fix(errors): classify a build/verify command TIMEOUT (live-caught ABC…
isadeks Jul 8, 2026
b91bc5b
fix(agent): ensure claude-code native binary is placed at image build…
isadeks Jul 9, 2026
0bb0d6e
fix(agent): log stdout on run_cmd failure so build-gate failures are …
isadeks Jul 9, 2026
0e25d3d
fix(agent): surface the FAILING line from a parallel build DAG, not j…
isadeks Jul 9, 2026
d7d6a02
fix(agent): bound the aws_session concurrency test's Barrier + joins …
isadeks Jul 10, 2026
d9aead0
fix(build): add pytest per-test timeout so a hung agent test fails loud
isadeks Jul 10, 2026
32b1370
fix(agent): pytest-timeout method thread→signal so a hung test is act…
isadeks Jul 10, 2026
1ad937d
Merge remote-tracking branch 'upstream/main' into HEAD
isadeks Jul 14, 2026
8e30da4
Merge branch 'main' into fix/502-ecs-payload-s3-pointer
isadeks Jul 14, 2026
ce93b62
fix(ecs): remove dead ECS_PAYLOAD_OBJECT_KEY_PREFIX export (review B1)
isadeks Jul 14, 2026
8644f9c
docs+feat: address review nits N1–N4 on the ECS substrate
isadeks Jul 14, 2026
1c5e64a
Merge branch 'main' into fix/502-ecs-payload-s3-pointer
krokoko Jul 14, 2026
cc93150
Merge branch 'fix/502-ecs-payload-s3-pointer' into pr/ecs-substrate-h…
isadeks Jul 14, 2026
d258e76
style: ruff-format the N4 payload-key block (fix build-mutation failure)
isadeks Jul 14, 2026
ca8af9a
fix+docs: WARN on dropped task_started_at (HITL parity) + defensive m…
isadeks Jul 14, 2026
faaf395
Merge remote-tracking branch 'upstream/main' into pr/ecs-substrate-ha…
isadeks Jul 14, 2026
c2a3f26
Merge branch 'main' into pr/ecs-substrate-hardening
isadeks Jul 14, 2026
68c9735
fix(ecs): address #596 review — drop over-privileged artifacts grant …
isadeks Jul 15, 2026
86ab249
Merge branch 'main' into pr/ecs-substrate-hardening
isadeks Jul 17, 2026
fc328ef
fix(ecs): address #596 re-review nits — stale parity comments + WARN …
isadeks Jul 19, 2026
88e0ac8
Merge branch 'main' into pr/ecs-substrate-hardening
isadeks Jul 21, 2026
f5e4bba
Merge branch 'main' into pr/ecs-substrate-hardening
isadeks Jul 21, 2026
8f8663f
Merge remote-tracking branch 'upstream/main' into cascade-pr-ecs-subs…
isadeks Jul 21, 2026
b8bcff8
Merge branch 'cascade-pr-ecs-substrate-hardening' into cascade-pr-age…
isadeks Jul 21, 2026
1e1896f
Merge branch 'cascade-pr-agent-build-robustness' into cascade-pr-ecs-…
isadeks Jul 21, 2026
28b437f
Merge remote-tracking branch 'upstream/pr/ecs-substrate-hardening' in…
isadeks Jul 21, 2026
3d5c89f
Merge branch 'c597' into c598
isadeks Jul 21, 2026
f9d0f75
Merge branch 'main' into pr/ecs-substrate-hardening
isadeks Jul 21, 2026
35cbf7f
Merge branch 'pr/ecs-substrate-hardening' into pr/agent-build-robustness
isadeks Jul 21, 2026
613fc1e
Merge branch 'pr/agent-build-robustness' into pr/ecs-test-hygiene
isadeks Jul 21, 2026
b99f049
Merge branch 'main' into pr/agent-build-robustness
isadeks Jul 21, 2026
9c8ea42
Merge branch 'pr/agent-build-robustness' into pr/ecs-test-hygiene
isadeks Jul 21, 2026
e6cd934
Merge branch 'main' into pr/agent-build-robustness
isadeks Jul 22, 2026
c1cfc73
Merge branch 'pr/agent-build-robustness' into pr/ecs-test-hygiene
isadeks Jul 22, 2026
5ef12a0
Merge remote-tracking branch 'upstream/main' into pr598-resolve-confl…
isadeks Jul 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions agent/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ dev = [
"pytest",
"pygments==2.20.0",
"pytest-cov==7.1.0",
"pytest-timeout==2.4.0", # per-test wall-clock cap: a single hung test (network/subprocess/Bedrock without its own timeout) must fail LOUDLY with a traceback, not silently burn the whole build-verify budget (ABCA-684/686: one hang stalled the baseline build past its 3600s ceiling)
"vulture==2.16", # dead-code detection (#282): unused functions/classes ruff F can't see
]

Expand Down Expand Up @@ -130,6 +131,18 @@ ignore = [
[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["src"]
# pytest-timeout: hard wall-clock cap PER TEST. A unit test that blocks (an
# unmocked network/subprocess/Bedrock call with no timeout of its own) otherwise
# hangs the whole `mise run build` until the 3600s build-verify ceiling kills it,
# turning one flaky test into an un-diagnosable 60-min stall (ABCA-684/686). With
# this, the offending test fails with a dumped stack in 120s and the suite moves on.
# method="signal" (SIGALRM) actually ABORTS the hung test — pytest runs
# single-threaded in the main thread here, so the alarm interrupts even a blocked
# C-level/socket call. method="thread" only PRINTS the stack and cannot interrupt a
# syscall-blocked test (proven live on ABCA-688: the thread method dumped the stack
# but the build kept hanging ~55 min until the 3600s ceiling). signal is the real fix.
timeout = 120
timeout_method = "signal"

[tool.coverage.run]
branch = true
Expand Down
15 changes: 13 additions & 2 deletions agent/tests/test_aws_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,15 @@ def _slow_build(_arn: str) -> Any:
return MagicMock(name="scoped")

def _worker() -> None:
start.wait()
# Bounded barrier wait. A bare Barrier(20).wait() blocks FOREVER if
# even one of the 20 threads never arrives (e.g. a worker reaped under
# container memory pressure, or thread creation throttled) — every
# survivor then hangs here and the main thread hangs in join() below,
# stalling the whole `mise run build` until the 3600s ceiling. This is
# the ECS-only flaky hang chased across ABCA-684/686/688 (pytest-timeout
# only fixed the SYMPTOM; this Barrier is the ROOT cause). A timeout
# makes the barrier raise BrokenBarrierError so the test fails fast.
start.wait(timeout=30)
session = get_session()
with lock:
results.append(session)
Expand All @@ -140,8 +148,11 @@ def _worker() -> None:
threads = [threading.Thread(target=_worker) for _ in range(20)]
for t in threads:
t.start()
# Bounded joins for the same reason — a worker that died before
# appending must not hang the suite; a leftover live thread trips the
# assertion below (results != 20) rather than blocking indefinitely.
for t in threads:
t.join()
t.join(timeout=60)

mk_build.assert_called_once()
assert len(results) == 20
Expand Down
14 changes: 14 additions & 0 deletions agent/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading