swamp data get and data versions report Behavior not found for data whose behavior definition was deleted
Workflow-scoped data get reports the behavior id as modelName once the behavior definition is deleted
Terminal report renderer prints HTML entities in table cells: a ' in a header shows as '
Slackwater: let customers build integrations that drive workflows securely and auditably
Container run inspection and isolation metadata for audited recovery tests
GCP codegen: generate media upload/download from Discovery mediaUpload and supportsMediaDownload
Docs: Claude audit hook covers PowerShell, swamp audit install --user, and doctor audit hook warnings
repo upgrade: drop stale Claude audit hooks when claude leaves the tool set
@swamp/video: small follow-ups from joining takes
swamp-lib: workflowRunStream drops a refusal and ends as if nothing went wrong
@swamp/video: rendering an edit list that keeps nothing fails with 'sumExpr needs at least one term'
@swamp/video: describe and chapters for a joined video
@swamp/video: splice a take into another at a point in edit.txt
swamp serve: apply config changes without failed requests (full reload, vault-backed webhook secrets, harmless restarts)
swamp-lib: workflowRun never settles when a run suspends at an approval gate
Cloudflare codegen: a oneOf/anyOf inside a multi-member allOf is dropped
stagecraft: low findings from the optional-inject verification (held-by attribution, dispatch timing, test helper)
stagecraft tracker: tidy up external relations (duplicate entries, id case, second lookup)
SWAMP_SERVER_TOKEN does not authenticate with --server, while --token and SWAMP_SERVER_TOKEN_FILE do
stagecraft validate: product-missing-on-path misses a required inject that one exit of its producing stage doesn't record
Cloudflare codegen: a self-referencing request body overflows the stack in normalizeProperty
Scheduled flaky-test detection is failing
Terminal title should be conversation summary
Docs: usage-telemetry reference should describe the telemetry stats empty state and the last-flush record
run doctor --fix --server cannot settle damaged runs left by a crashed serve after restart
@swamp/issue-lifecycle: collapse the verification_passed, post_attestation, link_pr sequence
@swamp/issue-lifecycle: one-call verification
audit: register legitimate non-swamp commands as approved bypasses
Docs: what serve instances must not share, flat AWS Secrets Manager names, and where OAuth values are stored
Let a serve:* collective key look up usernames, so a recreated swamp serve does not need oauth:manage at runtime
aws-sm vault: optional secret_prefix to scope secrets within an AWS account and region
swamp skill: add a workspace guide and routing-table entry
serve: a capability probe answered by a follower does not speak for the leader that handles the forwarded request
serve OAuth client reuse: remaining review findings from swamp-club#4264
Agents.md: consider not using H1 'Project' inside managed block
serve: the cron-fire dedup claim has no deadline, so a hung control plane stalls every scheduled fire
serve: define what swamp serve does when its OAuth client is deleted at swamp-club
Docs: schedule catch-up and missed-fire tracking for scheduled workflows
Work-item commands run from the wrong repo report the work item as not started
Docs: step concurrency caps only that step's forEach iterations, not its whole dependency level
Package everything on ops.swamp-club.com; stop direct server edits
Shorten swamp serve's token session re-check so revocation takes effect sooner
cfgmgmt firewall (ufw): an input for rule position (insert before/after)
agent-sessions: lockfile test helper silently depends on the captured @swamp/git key
agent-sessions: low-severity edge cases from the Codex importer reviews (#4158)
Team mode manual pages: swamp-serve and remote-execution for leader/follower, member checkouts, offline work, run control and known limits
Agent session record: four questions from the Codex importer (#4158)
@swamp/video: upload workflow to publish a take to YouTube (video, description, chapters, captions, thumbnail)
@swamp/video/brand: customizable outro card (next steps, headline, per-video CTA)
data prune through serve deletes data of an auto-definition whose declared type is invalid
serve: give the definition index a change signal (file watcher with a sync barrier) so a write to a definitions directory costs O(1), not a stat of every file in it
Warn when a grant with a methods list is a deny: it also refuses requests that name no method
serve reload reports 0 types reloaded when it replaced edited repo-local behaviors
@swamp/video/brand: cap each Chromium stderr line kept for errors
serve resolves realpath for thousands of files under .swamp/outputs/swamp/worker/set_status
Retention or GC for auto-definitions whose runs and data are gone
S3 and GCS: after a real commit by another writer, a serve stays off the pull fast path until it restarts
Licence header check only compares the first line of a file
CI: an accepted attestation approves the PR, and anything else fails the attestation job
artifacts.swamp-club.com unreachable in Spain during LaLiga matches (ISP blocking of Cloudflare IPs)
Supported binary file ingestion for remote members of swamp serve, without the bytes landing in run history
Worker queryData fails at the fixed 30 s RPC limit while it waits for a full catalog rebuild
Add expiring service-account token requests and authorization checks to RBAC
Reads other than findById still treat a lapsed temporary ban as active until the operative next signs in
verify-build upgrade gate silently skips models whose version is a constant
@swamp/agent-sessions: explore a decision model (TypeSafe Jev) for call labelling
agent-sessions: follow-ups from the 4211 reviews (repo resolution cache and edge cases)
agent-sessions: revisit the import's remaining review findings (redaction edge cases, import robustness)
Swamp Club collective GUI: show the swamp serve instances currently connected to a collective
A malformed --ca-cert file is reported as an unreadable OS certificate store
TLS hint blames a missing root CA and macOS for every invalid peer certificate failure
workflow cancel --server does not send SWAMP_SERVE_EXTRA_HEADERS
S3/GCS repairUnpushedFiles: the pull it asks for after a lost last-synced index does not stop it re-uploading copies a peer deleted
A resume runs settled work after the teardown gated on it has already run, and nothing tears that work down
serve (token mode): --admins accepts idp-group entries that can never match
deployment: getLogs method (deployment-aware pod log tailing)
model.output.search response phase takes 3.9s for 5,000 items with no attribution (redaction vs serialization vs send)
Skill/docs: document registry listing limits, static-extraction rules, and splitting large APIs by domain
Check registry listing limits in extension quality/push and suggest splitting into per-domain extensions
Over-limit contentMetadata publishes a blank extension page; archive fallback extracts nothing
@swamp/video/hyprland: recording hotkeys, retake marker and phone-mirror window rules
@swamp/video/obs: optional OBS recording with per-person hardware config for @swamp/video
serve daemon enable: add Windows support (service or startup task)
swamp skill docs: publishing.md contradicts itself on dynamic imports, overstates where git dependencies are listed, and never says consumers keep the publisher's bundle
extension push: the dynamic import() refusal tells authors to run swamp extension fmt, and the archive-project-file fix names the kind directory push never filters
extension push: file:, link:, workspace: and git package.json dependencies are left out of the unaudited list when the project also has a deno.json
Streak projector: incremental runs instead of a full scan every minute
Registry: detect code from outside npm and JSR in a v2 archive itself, not only from the author's dependency-audit.json
Scorecard: code past the analyzer's read caps, or unreadable, is skipped silently instead of counting as not audited
access can-i: evaluate a local grants file without --server
Support search and filters as URL query parameters on /extensions
bundleExtension same-cache test can pass with a broken first-bundle gate under CPU load
Five Mongo queues can hand the same row to two replicas
Collective invite shows "This invitation has expired or has already been used" after a successful join via Google sign-in
Move the Zod argument-field extractor into @swamp-club/extension-scoring so the CLI and registry read schemas alike
serve: dispatch to an idle worker waits for its worker_busy write on the shared gateway transition tail
serve: worker enrollment resolves and creates the worker definition inside the serialized gateway transition tail
Rescore every extension's current version under rubric v5
stagecraft studio ticket columns: round-5 review lows from #3828 (source watch cost, relationText lookup, cross-instance claim)
A long-lived serve client for extensions, and a stable rate_limited error code
Support creating 1Password vaults for new clients
Generated state schemas require every child of nested objects, so normal resources warn on create/get
Add LinkedIn as a login provider
Showcase reward backfill can double-pay 5,000,000 points when replicas start together
Profile showcase read: approved list sorts on review.reviewedAt in memory
Showcase countByStatus: $match live statuses before the $group
Showcase admin queues: index-serve the updatedAt sort on approved/rejected
Annotate and retain past workflow runs and data after the fact
serve shutdown does not wait for worker status writes, and its listener accepts workers after the gateway is disposed
auth token create --json fields key and signinToken are undocumented; no token-mode service setup page
trigger.schedule is evaluated in the serve host's local time zone, with no zone field and no doc saying so
Docs: publish typed-secrets Phase 4.6 expression and delivery semantics
Extension registry page: a supported way to include media (images) in the README
Server-driven warning and info messages to CLI users, targeted by swamp version (exploration)
Serve: delegate namespace-scoped extension pulls and reload without granting administrator access
Preserve active worker execution across serve restarts and upgrades; reconnect and reattach dispatches
vary/forEach object values with no key/name/id produce data names Windows refuses
issue-lifecycle start drops issue comments: context.comments is always empty
swamp core: a non-string sensitive value reads back as a JSON string
Generated vault keys carry raw data-name and vary characters that strict vault providers reject
local_source_failed drops the indexing error: a transient local extension failure leaves no cause (follow-up to 1672)
Finer-grained method locking: a long-running method on one definition blocks unrelated objects managed by the same definition
Surface (or warn about) values a model method returns besides dataHandles, with sensitive-field support
workflow placement: run a workflow transparently on a specified host, local or via swamp workers (incl. nested child workflows)
issue-lifecycle: pr_merged and ship report success and advance the phase when swamp-club is unreachable, writing nothing upstream
swamp-extensions CI: Review Integrity explains a stalled or failed audit (streamed progress, timeout, did-not-finish comment)
Workflow run cancellation on concurrency-key conflict
Read non-string sensitive resource fields back with their type
Run index repair-by-stat misses an in-place, same-size record rewrite that restores mtime within the same second as its entry: ctime is reported in whole seconds
Configurable storage tiers: runs, outputs, data versions and audit move through an ordered list of user-defined tiers, and stay queryable across them
A global argument that evaluates to swamp-namespace expression text is silently dropped, and literal() cannot pass it through
serve: the per-IP WebSocket burst limit can't be configured, so workers behind one NAT IP throttle each other
S3-backed serve: a poll that pulls one file invalidates the whole data catalog, so the next query re-reads every version
extensions_search index is never created if the first attempt fails, until the process restarts
S3/GCS datastore sync: shared sync service lets one sync clear another's dirty marks and pull over unpushed files
stagecraft: a factory-wide read of work items waiting on a person (no studio, no per-item status loop)
stagecraft: rebind a work item to another tracker (mirrored built-in tickets to Jira)
s3-datastore: first push on a fresh cache prints 'Index merge failed' for a missing local .datastore-index.json
stagecraft: studio state_test 'after its event stream reconnects' is timing-flaky under load
Activity projector fails with ZooKeeper "Bad version" error on swamp.score_grants during keeper instability
s3-datastore: model-scoped pullChanged lists and walks the whole namespace
extension safety analyzer does not warn on node:child_process or cluster subprocess spawning
Model types: decide whether names like @/@x/y or a+b/c should be legal (type grammar)
seed:collective cannot produce a superseded personal trial or a returned trial, so the UAT cannot cover them
serve HA: pull a token's definition on an auth miss so a peer accepts a new token at once
extension push: accept attestation-backed adversarial-review evidence (lookup by extension and content hash), generated provenance, and carry the evidence to the registry at confirm (design: Lab #3023)
Decide a stricter naming rule for workflow step and job names
s3-datastore/serve: readResource without a version returns an older version; the latest marker is rewritten backwards
Publish agent-facing projections of the manual: /llms.txt, .md pages, and llms-full.txt
Let agent-runner drive more agent CLIs (Kilo Code and others)
Feedback: Swamp as an approval-gated control plane for a small fleet
Tracking: test baseline required before the datastore refactor (commit-log design)
serve: define and supply the collective and owner grant condition variables
No first-class workflow primitive for spawning a permission-scoped agent session
Decorative animations outside the Lab still repaint on the main thread
s3/gcs datastore: pullChanged overwrites dirty, unpushed cache files
Codegen/AWS: create-only required fields block list/get/delete in generated AWS models
End a collective's trial when it begins a paid subscription
s3-datastore: SWAMP_S3_REQUEST_TIMEOUT_MS does not appear to apply to ListObjectsV2 during pull
s3-datastore: S3Lock.acquire overshoots maxWaitMs by up to a full backoff interval
s3-datastore: a model-scoped pull still lists, walks and indexes the whole namespace
Run the web dashboard locally from the CLI without swamp serve
extensions: cold-path catalog rebuild skips sources whose type is not a string literal, dropping them for one process lifetime
serve: rotate the external token-secrets key
Link each swamp-club panel to its manual page with a header DOCS link
managedConfig: extension lockfile writes lose updates, and auto-resolved installs never reach the shared lockfile
Generated @swamp/aws StateSchemas mark conditional and create-only properties as required, producing schema warnings on every read
workflows: a nested workflow step should inherit the caller's placement when the child declares none
Supported vault-write API for extension model methods (per-instance vault target)
serve: after lazy hydration, scoped poller pulls never take the fast path, and the login mint waits behind them on the sync gate
datastore extensions: full pushes re-hash every pulled file on every run because index mtimes never match pulled copies
Extension catalog caches a datastore bundle with an empty type, so the repo fails with Unknown datastore type when addressed by its realpath
Let a method inside serve start a workflow run: context.runWorkflow
s3/gcs datastore: no safe recovery when _meta.json v2 lists a shard missing from the bucket
worker secret allowlist rejects caller-chosen vault references resolved at run time (method args carrying {vaultName, secretKey})
serve: default placement for steps that declare none (so one workflow runs both locally and via workers)
s3-datastore: per-datastore AWS profile, so a serve audit store can use different credentials from the main datastore
s3/gcs-datastore: clean up data left behind by deletes that silently no-opped before the swamp-club#2249 fix
Expose Swamp as a REST/OpenAPI endpoint (for GPT Actions and other REST clients)
Promote CodeBuddy and WorkBuddy from custom-tool configs to first-class Swamp clients
s3-datastore: documented offline behaviour is unreachable — lock acquire fails closed before pull, while a mid-run outage exits 0 with the data stranded
Route log-mode output to stderr by default, with commands opting stdout back in
Billing telemetry: surface scheduled cancellations (cancelAtPeriodEnd) and emit subscription_canceled reliably
A pending platform invite that loses to the recruit lane is never consumed and leaks a pending slot
Recruit links have no web surface — a CLI-less operative cannot get their link
Workload identity (Kubernetes ServiceAccount / OIDC) for worker enrollment
Feed grant projection stamps a site route that does not exist
Serve Audit Log - Phase 6: Full documentation
Per-extension white listing
Retire or rebuild /admin/nurture once the epic lands — it is a gate, and gates are single-use
harness-marketing-funnel posts {batch:[...]} to /ingest, which is not a batch — every run silently measures zero
Epic: Product nurture — lifecycle identification, dedupe-safe delivery, and operator control (email, inbox, CLI)
Add interactive serve setup skill with best-practice guidance
Add intent and scope discovery to extension creation skill
feat(ui/tokens): metadata field or tags for collective API tokens
SCIM 2.0 provisioning endpoint for swamp-club (Users + Groups, deprovision)
SSO user profile fields are frozen at first login — overrideUserInfo is never set on any provider
add links to the docs for all account progress teasers
A subscription stuck in incomplete has no path forward: it grants nothing, and the billing page offers no way to finish paying
Identifier lookups are exact-match and case-sensitive across username, email and slug
Invite failures emit no telemetry, so a rejected invitation leaves no trace anywhere
Collective invitations expire after 48h and the auto-claim is gated on that window, so a late signup is never bound
Invite typeahead searches username prefix only, so an operative cannot be found by name or email
Support credentials in datastore config (vault-resolvable)
Feature: user-configurable redaction rules (.swamp/redaction.yaml)
Lab lifecycle POST rejects any payload string that starts with a dollar sign, not just operator keys
Finish the swamp_* attribute set on Attio users, and settle the two unprefixed ones (#809 follow-up)
aria-expanded is a raw boolean in 12 places — collapsed state is unannounced to screen readers
swamp CLI: surface the audience and resolvedInVersion fields swamp-club now serves
ApiKeyManager's collapsed trigger points aria-controls at an element it never renders
A boolean aria-expanded renders as no aria-expanded: two disclosure widgets report no state to a screen reader
Tell the inviter when a collective invite mis-lands, instead of leaving it pending forever
CLI has never sent insert_id: retried telemetry batches are double-counted into cli_daily, inflating XP in an append-only ledger
Docs: manual never mentions telemetry, and the serve/scheduling pages imply automated runs are visible when they are not
Explore: reconcile quality rubric's dormant provenance factor
Explore: pull-time signature verification for extensions
Explore: transparency-log integration (Rekor) for extension signatures
Explore: publish-time artifact signing for extensions (cosign keyless)
Docs: document catalog completeness check and --repair in doctor reference
Add --server support to model cancel (server-side run cancellation)
Relationships
#1784 Remote "write-bearing" classification is inferred from data-plane writes, not declared; external side effects can be re-executed on worker disconnect (docs say the opposite)
Opened by randybias · 8/22/2026· Shipped 8/27/2026
Summary
reference/remote-execution/failure-semantics says: "The distinction between no-write and write-bearing is declared at the step level in the workflow definition. The orchestrator does not inspect step behavior at runtime — it relies on the declared step metadata." There is no such field in the workflow schema (swamp workflow schema get --json step keys: name, description, task, forEach, dependsOn, weight, concurrency, dataOutputOverrides, allowFailure, target, labels, platform, queueTimeout, guard). In source, src/serve/dispatch_service.ts decides with const hadWrites = this.#writesByDispatch.has(dispatchId) — i.e. whether the dispatch performed a data-plane write through the orchestrator.
Consequence for operators: a step that has already mutated an external system (API call, kubectl apply, SSH command) but had not yet called writeResource when the worker socket dropped is classified "no-write" and re-dispatched from the beginning → double execution of a non-idempotent side effect, which is exactly what the write-then-fail rule is meant to prevent.
Expected
Either (a) add the documented step-level declaration (e.g. writes: true|false / idempotent: false) that forces fail-instead-of-redispatch, defaulting to the conservative choice for mutating method kinds, or (b) correct the documentation to describe the runtime inference and warn that methods must be idempotent at the external system.
Environment
swamp 20260822.011157.0-sha.06b61472 (source 06b61472), manual as of 2026-08-22.
Shipped
Click a lifecycle step above to view its details.
stack72 commented 8/27/2026, 4:41:55 PM
Thanks @randybias for reporting this! The fix has been merged and a release is on its way. We appreciate your contribution to swamp.
Sign in to post a ripple.