#3096
A nested structural swamp still waits on its run's lock when the lock holder is not a same-host ancestor (cross-host worker, --server into a non-ancestor serve)
h14h ago
#3111
A nested structural swamp that outlives the run that started it keeps skipping that run's lock while the holder writes
15h ago
#3110
Show signal waits to remote clients and the dashboard
15h ago
#3109
Settle expired signal waits from swamp serve
15h ago
#3108
Resume signalled workflow runs automatically under swamp serve
15h ago
#3093
Deliver workflow signals through a write-once outcome record instead of writing the run record
h15h ago
#2982
Forward held-lock identity over --server so a loopback nested swamp does not wait on its caller's lock
h17h ago
#2983
A nested structural swamp on a same-host remote worker waits on its own step's lock held by swamp serve
h17h ago
#2981
Fail fast when nested structural commands under parallel runs wait on each other's locks
h18h ago
#3079
Docs: remove followUpActions from the MethodResult reference in the extension model manual
h18h ago
#3092
signal_test: already-settled test fails by chance when a random UUID spells the sender name
18h ago
#3068
Add a wait_for_signal workflow step that pauses a run for a JSON message
h18h ago
#3094
Deliver workflow signals through swamp serve
h13h ago
#3059
run doctor through serve interrupts a live run of another serve instance when no heartbeats are recorded
h19h ago
#3081
Flaky test: WalSink replayed segments are delivered before events written after replay leaves one WAL segment
h20h ago
#3078
Remove followUpActions: no model or extension can produce them
h20h ago
#2946
Workflow schedule watcher and workflow edit symlink lookup ignore the managed config workflows dir
h20h ago
#3084
main is red: repository_dirty_coverage_test fails for UnifiedData.collectGarbage(orphaned deferred write)
20h ago
#3082
isProcessGone always reports alive on Linux under the test task permissions, failing 9 tests on main
h20h ago
#3083
Flaky test: WalSink replayed segments are delivered before events written after replay
18h ago
#2893
serve: relative tls cert-file/key-file and --config resolve against the working directory, not the repository
h21h ago
#2975
findBySpec/findByTag lose a workflow step's output after a version is deleted, pruned or rolled back
s21h ago
#3074
serve HA: worker enrollment on a replica that lacks the enrollment token's definition may create a second definition (unverified)
21h ago
#3073
serve HA: pull a token's definition on an auth miss so a peer accepts a new token at once
21h ago
#2917
Run tracker keeps some interrupted workflow rows forever: retention waits for markSettled, which several paths never call
22h ago
#3051
run doctor reads every run record on each run to rebuild the run indexes
hs22h ago
#3037
Serve audit: two sinks with the same name share one emitter cursor, so the second never receives events
1d ago
#3039
Serve audit: a durable sink write that times out is retried while the first call is still pending, so the store can hold duplicate sequences
s1d ago
#3043
Flaky test: ModelResolver data accessors for a renamed model return the earlier id's record from findBySpec
s1d ago
#2985
data query --limit returns fewer live records than exist and reports limited: false when stale catalog rows fall inside the limit
s1d ago
#2987
data get: help example passes --run latest, which is not a recognised run id
s1d ago
#2905
workflow reject leaves sibling gates waiting_approval and dependents pending in a failed, retryable run
h1d ago
#3045
Show expired approval gates as expired, with a Cancel action in the dashboard
1d ago
#3041
digitalocean codegen leaves an orphaned security_secret.ts model file after its endpoint left the spec
1d ago
#2920
workflow cancel cannot cancel a suspended run whose workflow file was deleted, and cancel --all silently skips it
h1d ago
#2898
A job alone in its level starts after the abort, and its unstarted step is recorded as a real failure instead of settledByAbort
h1d ago
#2919
workflow approve racing workflow cancel loses the cancel: the run returns to suspended after cancel reported cancelled
h1d ago
#2972
data query: does not follow data rename forwarding that data get follows
h1d ago
#2994
Unit tests share fixed /tmp catalog paths, so concurrent runs corrupt them and fail every later run
h1d ago
#2968
data query: renamed data items are not found by their old name
h4d ago
#2960
data query: model lookup by id and orphan recovery parity with data get
h4d ago
#2899
workflow approve on a run that is not suspended prints a fatal error with a stack trace
h4d ago
#2957
data query: no way to target a workflow's latest run
h4d ago
#2959
data query: binary content lacks contentEncoding/base64 parity with data get
h4d ago
#2958
data query: no fallback from spec name to data instance name
h4d ago
#2967
data query: no definitionHash or garbageCollection fields in query results
h4d ago
#2955
A nested structural swamp spawned by swamp serve skips every lock serve holds, including other runs' locks
h4d ago
#2962
data query: confirm catalog parity with data get for custom datastores
h4d ago
#2961
data query: single-result --json mode for scripts migrating from data get
h4d ago
#2973
Docs: document data query --single and fix the stale --limit default in reference/data.md
1d ago
#2948
data get --workflow silently returns an arbitrary step's data when several steps share a data name
h4d ago
#2942
swamp doctor workflows misses nested and .yml extension workflows that the loader reads
h4d ago
#2928
auth whoami says the stored API key is no longer valid when auth.json only holds an env-key identity cache
s4d ago
#2921
Docs: swamp skill says cancelling a parent run cancels its nested child runs; the child is left suspended
s4d ago
#2941
Namespace advice in the slow-lock warning is wrong for a single repo on a local datastore
h4d ago
#2930
Method-run records left running by a dead owner are never reaped
s5d ago
#2909
Flaky: usecase_sync_characterization_data_test 'data gc (serve)' asserts markDirty order that varies under parallel load
s5d ago
#2926
Worker dispatch rebuilds the definition with Definition.create, so a legacy-named model cannot run on a worker
h5d ago
#2918
A cancelled workflow exits before its steps stop, leaving their method-run records at running
h5d ago
#2927
Nested swamp structural command in a shell step times out on its parent's per-model lock (SWAMP_LOCK_HOLDER_PID is stripped)
5d ago
#2924
Auth gate blocks nested swamp in workflow shell steps when the credential is in SWAMP_API_KEY
h5d ago
#2925
swamp workflow create crashes with an [FTL] ZodError stack trace on an invalid (uppercase) workflow name
5d ago
#2923
swamp model create crashes with an [FTL] ZodError stack trace on an invalid (uppercase) model name
h5d ago
#2914
model cancel SIGTERMs a running swamp serve process when the method run belongs to a serve-run workflow
h5d ago
#2929
Follow-up action retries ignore the run's abort signal and can outlast a cancel
h21h ago
#2915
model cancel --all on a running workflow leaves its method-run records at running, or records them failed instead of cancelled
5d ago
#2910
model cancel SIGKILLs the owner 2 s after SIGTERM, before the step executor's own 3 s kill grace, so the run never records its own cancellation
h5d ago
#2895
workflow cancel and supersede of a suspended run leave its jobs running in the cancelled record
h5d ago
#2922
Tell timeouts apart from cancels in method-run records, and review the hidden 30 s fallback timer for step-called model methods
5d ago
#2896
A force-exited workflow run stays running with a dead pid: resume, recover and run doctor --fix cannot clear it
h5d ago
#2736
A nested workflow that suspends on manual approval forwards its suspended event into the parent run's stream
h5d ago
#2897
workflow cancel SIGKILLs the run 2 s after SIGTERM, cutting off always/completed cleanup jobs mid-step
h5d ago
#2845
Warn when datastore setup keeps managedConfig but the new datastore has no config tier
h5d ago
#2903
Docs: run doctor --fix and workflow recover settle runs left running by a force-exited process
5d ago
#2812
serve: a relative grants-dir resolves against the working directory, not the repository
h5d ago
#2597
workflow resume cleanup mode can run an always-gated teardown before a suspended job's approved work
h5d ago
#2894
Docs: serve-flags.md should state that relative grants-dir and grants-file resolve against the repository
5d ago
#2838
managedConfig: extension writes update the shared lockfile from a stale cache and overwrite peers' entries
h5d ago
#2868
managedConfig: model/vault create and other bulk-push commands re-upload a stale extension lockfile and erase peers' entries
h5d ago
#2867
Cancel, reject and supersede of a parent run should settle its suspended nested child runs
6d ago
#2837
datastore setup extension overwrites the shared config tier with the repo-local copy and drops managedConfig from .swamp.yaml
h6d ago
#2844
datastore setup can overwrite an existing remote config tier when it moves an in-repo tier into an extension datastore
6d ago
#2829
serve daemon enable writes a unit that crash-loops when serve args are invalid (e.g. missing --admins)
h6d ago
#2833
Concurrent embedded deno extraction races: stale temp-file cleanup deletes another process's in-flight .deno.tmp file (chmod ENOENT)
h6d ago
#2836
Docs: manual approval gates inside nested workflows (swamp-club#2736)
5d ago
#2802
Telemetry bridge drops a parent step's invocation when a nested workflow step has the same job and step names
h6d ago
#2824
serve daemon: unit sets SWAMP_HOME, which relocates the config dir — token/oauth daemons can't find auth.json and crash-loop
h6d ago
#2825
Workflow step that times out on the model lock leaves its output and run-tracker row stuck at 'running'
h6d ago
#2827
Docs: serve daemon enable pins SWAMP_CONFIG_DIR; document the SWAMP_CONFIG_DIR override
6d ago
#2724
An extension upgrade that hits a type collision is rolled back to no version: roll back to the prior version with a commit/rollback install handle
h6d ago
#2735
Telemetry bridge attributes a parent run's later method invocations to its nested child run
h6d ago
#2814
sensitive_data_delivery_test fails where /bin/sh is bash: the final ps is exec'd and reports its own argv
h6d ago
#2815
build-attestation rejects every run: evaluated workflows now carry sensitiveFormat, which the provenance check treats as an uncommitted field
h6d ago
#2762
DuplicateTypeError names the incoming extension as the existing claimant and reports a false ghost row when it sorts first
h6d ago
#2723
Install extensions by stage and swap, with a journal and crash recovery
h7d ago
#2593
workflow resume ignores SWAMP_MAX_CONCURRENT_STEPS for job-level concurrency
h7d ago
#2651
Tidy up tests and helpers from the serve suspended-run cancel
h7d ago
#2709
Concurrent extension installs and removals can interleave in one checkout: add a pulled-extensions lock and LockfileRepository.refresh()
h7d ago
#2722
deno run audit prints No description available for every advisory
h7d ago
#2492
Add a literal() CEL function so one string can mix swamp expressions with another service template syntax
h7d ago
#2707
Extension archives have no size cap: cap the compressed and decompressed size on pull and push
h7d ago
#2616
withGeneratorSpan does not forward return() to the wrapped generator, so its finally blocks are skipped on early exit
h7d ago
#2713
forEach over a direct step with a shared modelName runs every iteration with one iteration's globalArgs on first creation
h7d ago
#2708
Split installExtension into an unlocked prepare and a repo-changing apply
h7d ago
#2650
workflow cancel --server shows raw JSON errors and drops --reason
h7d ago
#2702
Two pulled extensions providing one type + a rebuilt catalog brick every command (I-Repo-1 at startup reconcile, even rm/--repair)
h7d ago
#2490
Extension catalog keeps stale rows after install migration and rm; model type describe crashes with ENOENT
h7d ago
#2698
Flaky test: CollectiveRefreshService fallback getAccessToken test counts calls after a fixed 200ms sleep
sh7d ago
#2701
Docs: worker-fleet guides start swamp serve without --admins and mint tokens with a removed command
7d ago
#2493
model validate log output misaligns multi-entry Expression paths errors
h7d ago
#2447
Retry refusals print unquoted forEach template names in --from hints, which bash rejects
h7d ago
#2580
workflow run log output: a forEach step with a templated name labels its iterations with the raw expression, e.g. deploy-${{ self.env }}[0]
h7d ago
#2694
Docs: update the model validate Expression paths example in cel-expressions.md
7d ago
#2652
Docker image runs swamp as PID 1 without an init, so orphaned step processes are never reaped
h7d ago
#2617
swamp.cli.bootstrap, configure_extension_loaders and teardown spans each start their own trace
h7d ago
#2691
Docs: run swamp under an init in the worker-fleet guides
h7d ago
#2646
Extension restore leaves a parent installed and its dependency permanently missing when the dependency install fails
h7d ago
#2426
serve: vault edit over --server opens an editor on the server host and ignores the managedConfig vaults dir
s7d ago
#2514
A suspended run started by swamp serve cannot be cancelled
h8d ago
#2634
command/shell: aborting a step kills only sh, leaving the command's child processes orphaned
h8d ago
#2639
Extension restore drops the lockfile entry's channel and leaks the parent's expectedChecksum into dependency installs
h8d ago
#2429
managedConfig: serve extension handlers disagree on the pulled-extensions root, and lockfile files[] are repo-relative
h8d ago
#2589
swamp.model.method spans are parented to the workflow run span instead of their swamp.workflow.step span
h8d ago
#2314
Platform certificate load failure surfaces as an uncaught error on network commands
h8d ago
#2417
serve: server-login can't be traced: no request spans, and gcs-datastore push is unparented with an 81s gap in child spans
h8d ago
#2420
workflow resume keeps the original run's process identity (run record pid and instanceId)
h8d ago
#2612
managedConfig: store pulled extension archives in the config tier and converge each checkout to the shared lockfile
h7d ago
#2547
workflow run --json: guarded-skip lines land on stdout or stderr depending on timing
h8d ago
#2360
workflow run and model method run reject --ca-cert, but their TLS error tells users to pass it
h8d ago
#2549
After a cancel or --timeout, jobs that share a level are abandoned mid-flight: their steps stay running and their own cleanup steps never run
h8d ago
#2359
SWAMP_CA_CERT overrides the --ca-cert flag, contrary to the documented flag-wins precedence
h8d ago
#2594
workflow resume --timeout records cancel_reason 'The signal has been aborted' instead of a timeout reason
h8d ago
#2556
InProcessExecutor mutates the process-wide TRACEPARENT, so concurrent in-process executions clobber and leak trace context
h8d ago
#2550
workflow resume has no job-level cleanup mode: after --timeout or a cancel, always/completed cleanup jobs start with the aborted signal and fail at once
h8d ago
#2548
workflow cancel on a live local run overwrites the owning process's final run record with a stale snapshot
h8d ago
#2592
s3-datastore: SWAMP_S3_REQUEST_TIMEOUT_MS does not appear to apply to ListObjectsV2 during pull
8d ago
#2591
s3-datastore: S3Lock.acquire overshoots maxWaitMs by up to a full backoff interval
8d ago
#2590
s3-datastore: a model-scoped pull still lists, walks and indexes the whole namespace
8d ago
#2543
After a cancel or --timeout, a never-started dependency stays pending, so failed- and completed-gated cleanup steps are skipped
h8d ago
#2579
Direct-type forEach fan-out waits about 1s on the auto-definition lock when its definition is first created (missed by swamp-club#2126)
h8d ago
#2483
managedConfig: fix startup config-base resolution and extension list (prerequisites for swamp-club#2429)
h8d ago
#2538
workflow run log output: a skipped plain step's line names only the job, not the step
h11d ago
#2551
Docs: manual examples show the old workflow skip line without the step name
8d ago
#2537
A forEach step's dependsOn condition is never evaluated, so its iterations run when the condition is false
h11d ago
#2531
managedConfig: the datastore extension is only found through a lockfile, so the config base is guessed (part 3c of swamp-club#2483)
h11d ago
#2510
model output data/logs/search can't find outputs of user extension model types locally
h11d ago
#2413
serve: ServerTokenGcService is never started, so expired server tokens accumulate forever
s11d ago
#2502
workflow resume --input key=value does not coerce the value to the declared input type (workflow run does)
h11d ago
#2496
Direct-execution workflow steps validate evaluated globalArgs, so the CEL concatenation workaround for colliding template names fails
s11d ago
#2498
workflow resume of a suspended run crashes mid-run when the workflow was edited during the approval window
h12d ago
#2494
Install rollback recursively deletes pre-existing skill dirs that pull merged into
s12d ago
#2491
Foreign CEL like GitHub Actions ${{ github.sha }} in a global argument fails validate and throws when the method reads it
sh12d ago
#2497
model validate blames foreign {{ ... }} text for an unclosed ${{ expression
h12d ago
#2433
workflow resume --from: a step moved or renamed since the run failed is skipped and the run reported succeeded, or crashes with 'Step run not found'
h12d ago
#2495
managedConfig: extension lockfile writes lose updates, and auto-resolved installs never reach the shared lockfile
h6d ago
#2432
workflow resume prints unexpected errors as a fatal stack trace, and --json returns them unclassified with the stack
h12d ago
#2415
serve: remove the remaining no-path markDirty() calls that force full-cache datastore pushes
h12d ago
#2430
workflow resume: Ctrl-C leaves the run 'running' with nothing driving it, and it can no longer be resumed
h13d ago
#2431
workflow recover crashes on every invocation: 'Path must be a string'
h13d ago
#2409
workflow resume: retry the failed steps of a failed run without --from
h13d ago
#2428
Remote indicator prints the full --server URL, including a ?token= query credential, to stderr
s13d ago
#2425
serve: vault annotate --label over --server is rejected (CLI sends labels as an object, protocol expects string[])
h13d ago
#2443
workflow recover: a changed definition leaves the interrupted run with no way to recover or resume
h7d ago
#2408
serve: the device-token poll that returns the token takes 88s, making server-login to ops.swamp-club.com take ~90s
h13d ago
#2421
datastore sync: repositories mark paths dirty before writing, so a concurrent ungated push can drop the write
13d ago
#2419
gcs-datastore: push spends almost all its time in an untraced gap between index read and first upload (81s in the #2408 login, up to 836s)
13d ago
#2418
serve: after lazy hydration, scoped poller pulls never take the fast path, and the login mint waits behind them on the sync gate
13d ago
#2416
datastore extensions: full pushes re-hash every pulled file on every run because index mtimes never match pulled copies
13d ago
#2386
steps.<name>.outputs is never populated for model_method steps
s14d ago
#2378
auth server-login hangs after device-flow authorization is approved in browser; never completes or times out
h14d ago
#2379
Let a method inside serve start a workflow run: context.runWorkflow
14d ago
#2365
s3-datastore: every scoped push on a fresh datastore warns 'Index merge failed, fast path stays unarmed' (missing .datastore-index.json) and the fast path never arms
14d ago
#2363
Flaky integration tests: cel_data_access and webhook_payload_inputs race on SWAMP_TEST_2172_AUTHORED env var
s14d ago
#2361
serve rejects doctor.datastores, cluster.instances and serve.config requests: no zod schema
14d ago
#2349
s3/gcs datastore: no safe recovery when _meta.json v2 lists a shard missing from the bucket
14d ago
#2333
gcs-datastore: a failed lock read is reported as "unlocked" — #2298 in the GCS backend
15d ago
#2309
Scheduled runs that suspend on an approval gate are logged as failures
s15d ago
← Back to list9/24/2026, 8:43:55 PM
01Issue
BugShippedSwamp CLIPublic
Assigneeshammz
Relationships
#2497 model validate blames foreign {{ ... }} text for an unclosed ${{ expression
Opened by hammz · 9/24/2026· Shipped 9/24/2026
What happens
An unclosed ${{ makes a later foreign {{ ... }} look like the problem. In a command/shell run such as
echo ${{ self.name } && docker ps --format '{{.Names}}'the expression is missing a closing brace, so it runs on until the Go template's }}. Validation (#2424) then reports {{.Names}} as template text inside a dollar-double-brace expression that "cuts it short", and suggests CEL concatenation. The real fix is the missing }.
Expected
When the text between ${{ and the closing }} does not parse as CEL, say so and point at a likely unclosed expression, instead of blaming the inner {{ ... }}.
Found by the adversarial review of #2424. inside-expression in src/domain/models/template_syntax_scan.ts.
02Bog Flow
Shipped
Click a lifecycle step above to view its details.
03Sludge Pulse