Datastore rework Phase 5: content-level authorisation for forwarded definition and evaluated-file writes
Docs: run-workflows-on-a-schedule tells readers to curl /health for queue state, which no longer lists schedules
Inbox API contract and SwampClubClient inbox methods: summary, list, get and mark-read, pinned by a shared fixture and design/surfaces/inbox.md
Datastore rework Phase 5 (team mode) 2/3: the CLI's serve upstream — with serverAddress, a v3 checkout commits, reads chunks and catches up through serve's datastore API, with no storage credentials
Scheduled flaky-test detection is failing
v3 read model: guard against aliased key spellings on case-insensitive filesystems, without slowing replay
Scheduled flaky-test detection is failing
stagecraft remote studio: one long-lived connection to serve instead of a swamp process per read
stagecraft remote studio poll: follow-ups from #3658 review (flaky test, mid-poll first page, quiet-poll test)
docs(manual): the manual documents swamp subscription status and start — standings, call to action, flags and --json output
swamp subscription start opens the Swamp Club billing page, or a collective's with --collective, and status points its call to action at it
v3: the compaction policy bounds how much history a fresh clone replays (retainMs, minCommits, retainCommits) and the base load skips files the tail removes
datastore_v3_replica_verify_test stall case flakes under the full integration run: restore.pid is read before the stub writes it
v3 on S3/GCS: a replica restore yields a corrupt commits.db (fails SQLite's integrity check), so fresh clones and restores of the datastore fail; reproduces with Litestream alone from its first compacted L1 file (found by #3916)
swamp subscription status reports the plan and billing standing of the signed-in user and each collective, worded as auth whoami words it
/o/<slug>/billing sends a signed-out visitor to the collective page, or a 404 when private, instead of through login and back like /billing
swamp-extensions GCS storage test 'put: an abort mid-upload leaves no object and no resumable session' fails about 1 run in 5 (fixed 50 ms sleeps)
refactor(cli): share auth whoami's collective-standing helpers ahead of swamp subscription, and pin Personal License and Admin standings
@swamp/cve/tailworm: check the reachability matrix against a Tailscale-hosted tailnet
AWS codegen treats nested primaryIdentifier pointers as top-level fields
AWS codegen collapses nested createOnly/readOnly paths to their last segment
Generated state schemas require every child of nested objects, so normal resources warn on create/get
swamp-club.com/cve/tailworm states two things its sources do not say: finding 5's memory growth and no exploitation in the wild
cve/tailworm extension README says the findings were not seen in the wild, which no source states
Datastore rework Phase 5 (team mode) 1/3: serve's datastore API — commit, chunk and catch-up endpoints, authorisation on each op's intent, principal stamping and actionable conflicts
@swamp/cve/tailworm: reachability follow-ups from #3919 review
@swamp/cve/tailworm: opt-in reachability matrix from each node's packet filter
swamp-club.com/cve/tailworm: cover grade, probeScript, gradeFleet and the reachability matrix (extension 2026.10.25.5)
Docs: --trusted-hosts accepts host:port for public addresses on non-default ports
@swamp/cve/tailworm: after mitigate caps headscale, the rescan still tells you to set MemoryMax and Restart=always
@swamp/cve/tailworm grade: unix serve targets the probe could not resolve are graded as ordinary sockets
kubernetes: externalsecret and normalizeMeta follow-ups from #3907
v3 crash recovery's progress line breaks --json stderr: a failing command that recovered prints text before its JSON error (regression from #3363 / #3893)
Docs: vaults reference should say a wide local_encryption key file gets a warning
Docs: manual states the old pre-flight check rule and scores fast-check by deno doc --lint
Docs: define the sensitive-output fallback vault order and document the doctor vaults fallback warning
v3 long silent waits: crash recovery runs ~24 s with no output, data prune is silent 6-10 s in log mode, and a lagging read hangs ~112 s when Litestream's listing is cut (found by #3756)
Add @swamp/cve/http2shell: scan and mitigate the Brotli decoder RCE (CVE-2026-111497, Node2Shell/HTTP2Shell)
extension_tarball_analyzer_test fails on macOS: tar --mode is GNU-only
S3/GCS datastore: a push that fails after uploading drops its recorded deletes, so the retry brings deleted data back
v2 S3: about 4-5% of serial workflow runs fail with datastore_unpublished_data_version ('a concurrent run or the serve poller synced') when nothing else is running (found by #3756)
Datastore rework Phase 4 I: dogfood and benchmark solo v3 (filesystem, S3, GCS) in a throwaway repo with the released binary, check the kill criteria, and decide whether to announce
v3 bucket outage: a command cut off while becoming the writer says its changes are saved locally when nothing was saved (workflow approve), and the suggested recover fails for a run cut mid-step (found by #3756)
auth login browser flow prints a fatal stack trace when swamp-club cannot be reached
Scheduled flaky-test detection is failing
v3 first clone and restore of a bucket datastore take 2.6-3x v2, missing #3418's 1.5x target (found by #3756)
CVE pages: horizontally scrolling code blocks are not keyboard-reachable
Homepage club plate link has no visible keyboard focus
Scheduled flaky-test detection is failing
swamp update downloads before failing in a sticky directory with another user's binary, and blames an immutable flag
Docs: extra-headers how-to systemd snippet puts a path in SWAMP_SERVE_EXTRA_HEADERS
Docs: install-swamp says SWAMP_HOME moves everything, but agent skill folders stay in the user's home folder
Docs: dashboard Approvals view shows run context, reason and per-viewer decide state
v3 bucket outage: a workflow run whose checkpoint committed is told nothing was committed, three outage errors have no stable code, and exit takes 15-60 s (found by #3756)
v3 identity on buckets: S3 checkouts with different endpoint spellings fork the datastore silently, and a hostname change blocks every write for ~5 minutes (found by #3756)
typed_workflow_passes_test child-sentinel case flakes under full-suite load: f.received.at(-1) reads the compare step's empty payload
extension push drops local modules when the repo under a node_modules folder is reached through a symlinked path (macOS /var, the swamp-club#3782 fix)
Teach defineBehavior in the extension skill now that swamp-testing 0.20261013.52 exports it
Docs: issue redaction keeps git ids and non-address colon runs, and asks before posting (swamp-club#3686)
Docs: worker daemon enable reference is missing --ca-cert, --concurrency and SWAMP_SERVE_EXTRA_HEADERS
v3 on S3/GCS: a write whose commit cannot reach the bucket prints "succeeded" on --json, exits 1, and is lost (confirm-before-output, found by #3756)
swamp-club /cve/dirtyfrag page shows --input targetHost/sshUser/sshKey/dockerContainer, which the CLI rejects
v3: datastore config migrate skips every workflow that has run (name-committed), and they are then "not found" (found by #3756)
@swamp/cve/dirtyfrag report suggests commands for dirtyfrag-scanner whatever the model is named
v3 on a bucket: after a commit fails because the bucket is unreachable, the closing sync still waits its full 60 s before the command exits
Interactive history and output search pickers cannot open a run under a non-default datastore
v3 recovery sweep: dot-prefixed data names escape it, HFS+ non-ASCII names are deleted by it, and an old mtime keeps a dropped write's file (bug hunt group 8)
Source glob expansion crashes when a directory under the glob parent disappears mid-walk
v3 chunk barrier on macOS: use F_BARRIERFSYNC (ordering) instead of F_FULLFSYNC (full drive-cache flush), cutting ~10-25 ms (200 ms+ on a busy disk) per command
extension_source_add_test globs the real home directory and flakes when a file in ~ disappears mid-walk
v3 join check refuses a fresh managedConfig checkout on S3/GCS: the datastore extension's auto-install writes the managed lockfile first (regression of #3690)
Docs: doctor datastores reference for the v3 content check and lost format marker repair
Docs: step dataOutputOverrides vaultName and the field-by-field override merge (swamp-club#3606)
Docs: data name portability rule and warning
Docs: vault create and vault migrate refuse a local_encryption name with leftover storage
v3 namespaces: cross-namespace reads return the reader's own content, a namespaced local tier is overwritten by solo commits, and namespaces can collide with swamp's own .swamp/ directories (bug hunt group 7)
v3: a checkout holding v2 records joins a v3 datastore through .swamp.yaml unguarded, overwriting its records and diverging for good (bug hunt group 5)
v3 on S3/GCS: the namespace refusal names setup filesystem, and an unreadable marker on a format-3 repo says "will not open … as format 2" (found by swamp-uat#715)
v3 on S3/GCS: setup on a prefix holding only swamp's format-3 marker fails with "this swamp release can't open" format 3 (found by swamp-uat#715)
Workflow runs ignore defaultVault: step sensitive outputs land in the first vault, and validate predicts a vault the run doesn't use
v3 local durability: chunks aren't fsynced before the commit naming them, so a power cut can wedge every checkout; torn writer and format markers don't heal (bug hunt group 4)
v3: chunk durability barrier costs a full drive-cache flush per command on macOS; use an ordering barrier
Scheduled flaky-test detection is failing
ssh: follow-ups from #3581 review — master rekey vs per-call known_hosts, settle error handling, atomic new-file mode
v3 on S3/GCS: a fresh checkout whose restore from the replica fails reports an empty datastore and exits 0 (found by swamp-uat#715)
issue-lifecycle start drops issue comments: context.comments is always empty
swamp CLI: revokeCollectiveToken should tell an unknown token from an unknown collective once swamp-club answers 404
Dev stack serves corrupted gzip under Vite: browsers fail with ERR_CONTENT_DECODING_FAILED
worker daemon enable: an unreadable --ca-cert passes enable, and SWAMP_SERVE_EXTRA_HEADERS is silently dropped under sudo
v3: a crashed workflow run and its completed steps' data are deleted by recovery before workflow recover or serve's reaper can see them (bug hunt group 6)
Scheduled flaky-test detection is failing
v3 outbox: a reported failure can land, a commit can name a deleted chunk, and a fenced writer is told nothing landed when it did (bug hunt group 3)
v3: writer liveness is judged wrong: a same-hostname container takes over a live writer, a stalled writer's file is reverted then committed, and a fenced retention pass rewinds the new writer (bug hunt group 1)
agent-runner and deno-runner: support Windows (both refuse to start: Unsupported operating system)
v3 replication: check a possible S1 in serve's retake, fix serve wedging on a retake mid-replacement, and stop 'the next write replicates them' being false (bug hunt group 2)
Enforce the minimum S3/GCS extension version for v3 bucket datastores from the lockfile
Datastore rework Phase 4 E: v3 on S3 and GCS (solo mode): setup --format 3 on buckets, replication as a datastore property, end to end
doctor datastores decides v3 from the format key, so an override pointed at a v3 bucket runs the v2 contamination check and repair
Retention under serve load: measure and fix automatic passes against #3518's busy-serve contention, and the large-backlog first pass
Scheduled flaky-test detection is failing
S3/GCS datastores: keep v2 sync off v3 buckets (exclude _litestream/, refuse a format-3 marker) for swamp releases before v20261009.154711.0
v3: a refused commit leaves its staged files in the checkout for good, so that checkout shows data the datastore doesn't hold (exposed by #3532; swamp-uat breakglass test failing)
Datastore sync: a no-op push after a model-scoped pull arms the remote commitSeq, hiding other hosts' commits until the next commit
Regression from #3546: legacy (hashless) cache files lose their mtime trust, so a peer's deletion can be undone and untouched files are re-uploaded (seed the own record once)
@swamp/s3-datastore and @swamp/gcs-datastore: pull's same-size fast path trusts the pushing machine's mtime, so a conflicting local file can be kept
Scheduled flaky-test detection is failing
Datastore rework Phase 4 G: S3 and GCS extensions implement replicaTarget() for v3 Litestream replication
v3: a data name emptied of every version restarts at version 1, reusing a number for different content (use the partition's highWater; refuse a reused version)
Docs: garbageCollection retention — per-kind keys, automatic passes, and what is never removed
Datastore rework Phase 4: a provider capability to remove abandoned Litestream lineage paths on buckets (replicaPaths), so chunk GC isn't deferred forever
In-memory remote: model create-only data version writes so core tests can pin them (follow-up to swamp-club#3377)
Datastore rework Phase 4: a provider-supplied replica target (replicaTarget()) so v3 replicates to the datastore's own bucket, plus conformance
v3 commit outbox: a discarded entry is removed without fsync, so after a power cut recovery can land a commit whose command reported failure
Datastore rework Phase 4 G: S3 and GCS extensions implement storage/1 chunk storage for v3
Datastore rework Phase 4 G: S3 and GCS implement the writable datastore-wide control plane and keep _control/writer/ at the bucket root
Scheduled flaky-test detection is failing
Datastore rework Phase 4 F: a durable outbox for v3 commits, the post-commit chunk check on recovery, and pruning compacted_txns
swamp worker list shows a worker as idle while its verify-on-enroll probe is still pending
Docs: say what the first run after a typeVersion upgrade writes to the definition file
Datastore rework Phase 4: close D2 follow-ups before v3 replication is switched on (lineage, messages, migration, chunk GC)
Datastore rework Phase 4: serve confirms each v3 write request is replicated before it answers (group commit)
@swamp/gcs-datastore: GcsLock.inspect() reports a failed read as no lock, so a GCS outage looks like a lost model lock
Datastore rework Phase 4 D2: restore, refresh and takeover from the v3 replica, with a checkout-local commits.db (dormant)
S3/GCS: a run refused for losing its model lock keeps its write dirty when the refresh can't reach the datastore, so a later sync pushes it
Docs: add PowerShell to Set Up Shell Completions
Add Windows installer to the homepage and manual
CopyCommand's clipboard fallback selects the wrong command on pages with several copies
README: add Windows to the supported platforms and its installer
install.ps1 closes the user's PowerShell window on failure when run via irm | iex
v3 first clone on Linux is 2.6x slower than v2: batch the catalog refresh during catch-up
Windows: no PowerShell completions subcommand
Windows: extension yank fails with API key auth despite extensions:* scope
Windows: registry rejects windows-x86_64 as a valid platform
Windows: update --check reports no binary available for windows/x86_64
Windows: extension push type field shows file path instead of exported type name
Docs: extension quality now reports repository-verified for private source hosting (swamp-club#3406)
Docs: choosing where a new workspace is created (--path, start page Location field, workspaces.dir)
Manual: broken anchor and tutorials teach deprecated swamp data get
Docs: serve-flags.md admin/allowed-user resolution is stale (pinned names, oauth:manage for lookups, plain usernames only)
swamp update --check fails with a raw [FTL] TimeoutError when the artifacts host takes over 5s
whoami reports each collective's private source hosting and namespace privacy, so the CLI quality rubric can match the registry's repository-verified verdict
Manual: working-with-data copy button copies a truncated data query
Error and help messages still say model under swamp behavior commands (follow-up to #3431)
CLI output still says model under swamp behavior commands
Manual: make behavior the primary term and command spelling
Docs: Layout Migration says repo upgrade deletes gen-2 files without re-pulling
Scheduled flaky-test detection is failing
Datastore rework Phase 4 D1: Litestream sidecar for v3 writers, and a write command waits for replication before it reports success (dormant)
Accept usernames for user subjects in grant files
Docs: swamp workspace commands and workspaces in the manual (swamp-club#3424)
Docs: document swamp start onboarding and the local dashboard
Docs: grant-file username: subjects in the swamp serve manual
Datastore rework Phase 4: the v3 writer lease requires an extension's explicit declaration that it keeps _control/writer/ at the root, not just a writable store's shape
Datastore rework Phase 4: real-endpoint check of Phase 4A's replication figures on a hosted S3-compatible service (spike)
Datastore rework Phase 4 E/G: a writable datastore-wide control plane so the v3 writer lease binds at the bucket root
Docs: serve-flags check-config row for bare restricted-model-types entries
Datastore rework Phase 4: measure Litestream replication on real S3 and GCS buckets (spike: per-command vs idle sidecar, cost of waiting for replication)
v3 writer lease: a stray or unpadded fence key under _control/writer/ wedges the lease
datastore lock status reports held: false for model locks on S3 and GCS datastores
Extensions accept export const behavior, extensions/behaviors/ and a behaviors: manifest key alongside model
Docs: grant and revoke changes reach every serve instance within one poll interval (S3/GCS and v2 filesystem)
S3/GCS: a run whose model lock was force-released still pushes, and one run's write is lost
rollbackOnFailure methods fail when run as a workflow step
Registry UI and manual say Behaviors, keeping the stored models content type
S3/GCS datastores: write data version files create-only so a second writer cannot overwrite an existing version
Datastore rework Phase 4: a fenced writer lease for v3 datastores, replacing Phase 3's writer lock
Workflow YAML, extension exports and serve grants accept the behavior spelling alongside model
Datastore rework Phase 4: download, verify and cache a pinned Litestream binary on first v3 use (dormant)
Serve dashboard uses behavior terminology, with old routes kept
Docs: Claude Code page says swamp always writes CLAUDE.md (changed by swamp-club#3346)
A pulled extension can shadow a built-in type, and removing it leaves serve without the built-in
Skills and generated agent guidance use behavior and swamp behavior commands
Docs: state the OpenCode version requirement for the swamp audit plugin
swamp behavior is the full preferred command group, with every swamp model spelling kept
DispatchService two-slot worker test assigns disabled Object.prototype.__proto__
Partial extension catalog saves delete rows for sources mounted from outside the repo
Datastore rework: a fresh v3 checkout is slow because catch-up fsyncs every file one at a time (27 s vs 1.1 s for 1,000 items on macOS)
Build each swamp model command from a factory so behavior can share it (no visible change)
Design record: behavior is the product term for models, with model kept working
Docs: show the full --literal-inputs warning, including Raw:, in the model definitions reference
model method run --literal-inputs: the warning's Raw: text drops a brace from the expression
repo init --help omits pi and antigravity from the built-in --tool list
swamp model edit silently renames the target when the piped body's name differs
Add swamp behaviour run as the preferred model-method command
Datastore rework: on v3, an interrupted method run's outputs never reach other clones (SIGTERM should commit; SIGKILL must be visible)
Datastore rework: on v3, turning managedConfig on hides existing config (the default vault); give v3 its own config migrate
Datastore rework: on v3, namespace set before setup --format 3 fails without --skip-migration, and namespace list shows no namespaces
S3/GCS datastore sync: shared sync service lets one sync clear another's dirty marks and pull over unpushed files
Docs: --literal-inputs and data that never evaluates as authored (swamp-club#3205)
Docs: say that validation applies the upgrade chain before checking global arguments
datastore setup strands repo-local audit history and run logs in the new datastore
Datastore rework Phase 3: opt in to v3 for new filesystem datastores (single writer), and wire v3 into CLI and serve (no v2 behaviour change)
classifyConnectionError mislabels non-auth connection failures as auth failures
Docs: datastore reference says audit logs and telemetry live in the datastore
Datastore rework Phase 3: a v3 home for audit, telemetry, logs and files, dormant (no behaviour change)
s3-datastore: first push on a fresh cache prints 'Index merge failed' for a missing local .datastore-index.json
Datastore rework Phase 3: history compaction so superseded chunks can be reclaimed, dormant (no behaviour change)
Windows: extension install legacy migration finds zero files
Windows: worker daemon status reports not installed (no systemd/launchd)
Windows: extension rm joins repo dir with already-absolute bundle path
Datastore rework Phase 3: workflow run and vault config repositories stage typed changes on v3 (no v2 behaviour change)
Windows: cancelled step records error suffix that POSIX does not
Run GC never removes run logs when a non-default datastore is configured
Windows: check-config --grants-file and --grants-dir still output backslash absolute paths
Datastore rework Phase 3: definition, workflow and evaluated repositories stage typed changes on v3 (no v2 behaviour change)
Windows: datastore compact fails with database is not open
repo init: create a default local_encryption vault, and stop persisting absolute base_dir in vault configs
Docs: default vault at repo init, --no-vault, and base_dir no longer persisted (swamp-club#3259)
Datastore rework Phase 3: shared typed staging route, and data and output repositories stage typed changes on v3 (no v2 behaviour change)
Extension auto-resolution installs an unrelated extension when a registry search guess does not provide the type
Datastore rework Phase 3: chunk garbage collection for unreferenced chunks, dormant (no behaviour change)
Windows: check-config grant error messages use backslash paths
Windows: workflow run --input does not honour \@ escape in k=v value
Windows: model run with vault secret containing $ exits 1 silently
Datastore rework Phase 3: the v3 read model, dormant (no behaviour change)
Windows: workflow cancel and model cancel do not kill the step process tree
Extension auto-resolution reports a registry timeout as "no extension publishes this type"
Datastore rework Phase 3: the commit-log unit of work and binding registry (no v2 behaviour change)
Windows: workflow history outputs stdout has trailing CRLF that breaks exact-match schemas
serve: without a remote datastore the token GC is not serialized against token rotate/re-mint
Datastore rework Phase 3: the commits.db commit store, dormant (no behaviour change)
Datastore rework Phase 3: the chunk store and the storage/1 contract, dormant (no behaviour change)
Datastore rework Phase 3: the v3 commit and partition domain model, dormant (no behaviour change)
Datastore rework Phase 3: Litestream embedding spike (a written decision, no production code)
repo init writes Amp and Kiro permission settings in formats current versions no longer read
serve: server token GC follow-ups (upgrade backlog holds the sync gate, not-found matching, owner lookup, UX)
Docs: update Kiro and Amp how-to pages for the new scaffolding (swamp-club#3222)
Docs: serve token GC per-sweep limit and quoting 0 in serve.yaml
Datastore rework Phase 3: measure and bound the format-guard marker read's cost
@swamp/s3-datastore and @swamp/gcs-datastore: implement datastoreControlPlaneStore() for the format marker read
Datastore rework Phase 3: publish the extension lockfile as a unit-of-work commit (no behaviour change)
Docs: datastore-provider reference for datastoreControlPlaneStore and control-plane read options
Scheduled flaky-test detection is failing
Docs: concurrent scheduled runs and queue delay in swamp serve
Tests: serve pollers make a peer's writes, deletes and grants visible with a real catalog (before Phase 5)
s3-datastore: model-scoped pullChanged lists and walks the whole namespace
Docs: worker connect no longer needs a swamp-club credential (swamp-club#3128)
Datastore rework Phase 3: format-guard release, so swamp refuses datastores with a newer format and writes nothing
access grant create: --methods is silently dropped on the local path, so an allow grant covers every method
Codegen/DigitalOcean: create-only required fields block list/get/delete in generated DigitalOcean models
Tests: bring the in-memory remote's default semantics up to @swamp/s3-datastore and @swamp/gcs-datastore 2026.10.01.1
Tell the pushing client when its extension contentMetadata fails validation
Windows Compatibility CI fails on main: about a dozen tests across serve, sync, CLI path resolution, process and tracing
Concurrent first runs in a fresh repo log 'Catalog migration to per-extension-aggregate-v3 failed (database is locked)'
Docs: state the literal type/version catalog contract and the uncatalogued-model push warning in the extensions publishing reference
worker prune: remote datastore keeps deleted worker records (no-path markDirty() skips deletions)
worker prune cannot delete worker models when auto-definitions live in a remote datastore
model get and model search miss auto-definitions stored in a remote datastore
model delete resolves auto-definitions from repo-local .swamp instead of the datastore cache
datastore setup filesystem --path .swamp copies .swamp onto itself and never writes the datastore block
Docs: vault grants and run vault scoping on swamp serve (swamp-club#2676, swamp-club#2206)
Flaky property test: analyzeExpression dot/bracket agreement fails when the generated model name is a CEL keyword
Docs: enable-managed-config should say to re-run config migrate when its push fails
datastore config migrate checks the sentinel in the stale local cache and re-runs a full migration over a shared S3 datastore
datastore config migrate writes its sentinel before pushing; after a failed push a re-run reports 'already completed' and never publishes
Docs: grant file reference shows a stale format and omits resources and subjects
Resolve non-admin actors in dashboard audit logs
Docs: serve authorization page should cover expression-reference checks and the vault.get trust boundary
Shell steps: a vault.get on a continuation line of a multi-line double-quoted string inside a here-doc is wrapped in quotes
GCP bigquery datasets update cannot target the dataset: reads the id from a name field datasets do not have
swamp-testing withMockedCommand: record env and cwd in CapturedCommandCall
Share dashboard authentication across tabs for deep links
Docs: vault.get shell references are placed per occurrence, and every single-quoted use is warned about
Scheduled flaky-test detection is failing
Docs: serve authorization of expression references, env and direct-type runs (swamp-club#2786)
Docs: dispatch-env-allow and how remote shell steps receive secrets (swamp-club#2760, swamp-club#2791)
serve: a failed pull in acquireModelLocks leaves the per-model lock held until serve exits
Datastore rework Phase 2: find, wrap and warn on hooked writes outside a unit of work (route 2), without removing it (no behaviour change)
Serve audit: WAL replay at startup deletes segments before the store confirms them
Datastore rework Phase 2: one flush path, so every push is a root's flush or checkpoint (no behaviour change)
Flaky test: usePreviewFetch in-flight fetch for A is discarded after switching to cached B
Serve audit: delivered WAL segments are only deleted at shutdown, so a long-running serve fills the WAL
Serve audit: sink filter config in serve.yaml is never validated
Datastore rework Phase 2: root units can checkpoint, and the CLI token commands push mid-command through it (no behaviour change)
Docs: data query reference lists a --limit default of 100 and omits --single
Datastore rework Phase 2: remaining serve direct pushes commit through root units (no behaviour change)
Serve audit: emitter breaks the durable hash chain and drops WAL events when a non-durable sink fails or lags
Datastore rework Phase 2: serve handlers commit through the unit of work (no behaviour change)
CEL data.version, data.listVersions and data.findBySpec drop data written before a model instance rename
Docs: doctor install reports a stale or failing autoupdate scheduler
Datastore rework Phase 2: CLI commands stop marking and pushing directly (no behaviour change)
Datastore rework Phase 2: commit pushes through a root unit of work per command or request (no behaviour change)
Datastore rework Phase 2: use cases open and commit the unit of work (no behaviour change)
Docs: manual approval pages show old quoted approve/approvals hints
Datastore rework Phase 1 close-out: lock repository marks at zero, remove dead helpers, document the end state (no behaviour change)
Installer and README present required Swamp Club login as optional
Datastore rework Phase 1 move C2: the vault config repository stages typed changes, serve stops marking vault files by hand (no behaviour change)
Model add-ons that extend a built-in model type never attach in CLI processes
Datastore rework Phase 1 move C1: the workflow run repository stages typed changes (no behaviour change)
Datastore rework Phase 1 move B: definition, workflow and evaluated repositories stage typed changes (no behaviour change)
Add self._index to forEach expression context
Datastore rework Phase 1 move A: data and output repositories stage typed changes (no behaviour change)
Docs: document self._index for forEach steps in the manual
Datastore rework Phase 1: optional ambient unit of work in repositories (no behaviour change)
Extension content extractor truncates metadata when a string, comment or regex contains an unpaired brace
Datastore rework Phase 1: UnitOfWork port and legacy adapter (no behaviour change)
acquireModelLocks writes SWAMP_LOCK_HOLDER_PID to process-global env, so concurrent runs in one process clobber each other
verify-reviews reports provider-error when a passing review mentions swamp's own invalid_api_key error code
Show the redaction diff and ask for confirmation before submitting an issue in log mode
--json stderr mixes an offline auth-gate warning line with the pretty-printed error, so it can't be parsed
@swamp/tailscale: follow-ups from the initial release verification review
Scheduled flaky-test detection is failing
Docs: account-requirement manual page after the auth gate follow-ups (swamp-club#2916)
Auth gate follow-ups: fail closed when the fail-open window can't be recorded, UX polish (swamp-club#2231)
Codegen/Vercel: create-only required fields block read methods in generated Vercel models
Auth gate: enforce authentication and add background proof refresh
Server fallback content extraction drops quoted method keys and lists nested objects as methods
Docs: account requirement and auth gate (swamp-club#2231)
Conformance: behavioural round-trip suite for DatastoreSyncService in packages/testing
Tests: remote failures during sync keep local writes dirty and the next flush uploads them (every flush path)
Tests: two repos on one remote datastore: writes, deletes, renames and gc propagate through the real flush path and catalog
Tests: every file a datastore repository changes on disk is covered by a markDirty (pin today's unmarked paths)
Scheduled flaky-test detection is failing
Tests: property test for buildMarkDirtyHook path mapping
Tests: characterise marks and pushes for every libswamp write use case via CLI and serve compositions
Tests: characterise stale catalogs when two repos or serve nodes share a filesystem datastore
Fitness: ratchet markDirty call sites, repository constructions outside the factory, and unhooked datastore writers
Extension datastore: query still returns an item after its delete is pulled
Docs: document serve and worker trace structure in the OpenTelemetry reference
Test infra: shared in-memory remote datastore fake and recording sync service for pre-refactor datastore tests
CEL: an expression naming the identifier cel returns {} instead of the context value
Scheduled flaky-test detection is failing
Docs: SWAMP_API_KEY_FILE and serve --club-api-key-file
Tracking: test baseline required before the datastore refactor (commit-log design)
CI: run swamp-uat's datastore suite against the PR binary for PRs touching datastore code
Docs: document mount-independent file grant sources for --grants-dir and --grants-file
serve reload keeps a removed extension's add-on methods on built-in and local model types
Docs: telemetry opt-out is user-level and applies everywhere (swamp-club#2831)
Object-level refinements on globalArguments schemas are not enforced at execution time
Docs: remove stale Docker Execution Driver section from the extension model reference
Docs: authorization reference should say access-control records need admin, not a data grant (swamp-club#2756)
Docs: use-the-audit-timeline should state the permission swamp audit --server needs
issue-lifecycle triage fails with 422 when the primary issue is already in_progress in swamp-club
Docs: worker-fleets TLS one-liner fails with KeyMismatch on macOS LibreSSL
Docs: sensitive values read through expressions are delivered like vault.get (swamp-club#2171)
serve: define and supply the collective and owner grant condition variables
managedConfig: most CLI config writes exit 0 when the push to the datastore fails, leaving the change unpublished
managedConfig: extension rm on one serve instance leaves the extension's types registered on its peers
PulledExtensionsLock timeout names the lock file with a forward slash on Windows; Windows CI fails on main
definitions: delete() silently leaves an auto-definition file unless an earlier lookup cached its path
Docs: describe how enrollment token revoke disconnects connected workers
vault create/migrate --config help says local_encryption 'always uses' the server key source
Docs: local_encryption key-source fields are refused over --server
Docs: serve authorizes requests by id against the resource's name
issue-lifecycle: link issues that ship together and ship duplicates
serve audit: auth.token.used hardcodes principalKind user for worker tokens
serve: model.delete of a missing model replies with message [object Object]
deno task audit fails on main: new OSV advisories in locked dependencies block verify-build
tests: extension_member_precedence_test fails on macOS (/var vs /private/var temp path)
tests: extension_member_precedence_test fails on macOS (tmp path vs /private realpath)
vault edit cannot open a vault whose YAML no longer parses
Codegen/Hetzner: create-only required fields block list/get/delete in generated Hetzner models
Add a duplicate_of relationship type to lab issues
vault edit rename leaves local_encryption secrets under the old vault name
Windows compat CI red on main since #2644: extension_reload_test compares a raw path to the catalog's canonical path
Concurrent workflow runs race on extension auto-resolve: 'Unknown model type' in one of them
Docs: vault rename moves local_encryption secrets
s3/gcs datastore: pullChanged overwrites dirty, unpushed cache files
Docs: edit commands over --server take piped YAML on stdin
GCP codegen: filtered generate:gcp <service> produces different output than a full generate:gcp run
Flaky test: resolve_datastore_test sets SWAMP_DATASTORE process-wide and breaks parallel workflow_recover_test
Codegen/Cloudflare: create-only required fields block read methods in generated Cloudflare models
Docs: document snapshot cleanup and the new snapshot fields in the swamp run gc reference
GCP codegen: a same-surface merge that fails to parse drops the whole preferred document silently
Reports from failed workflow steps are persisted but not recorded on the run
Codegen/GCP: PUT update fallback from stored state silently reverts out-of-band changes
swamp writes .swamp/audit into the current directory when --repo-dir or SWAMP_REPO_DIR points elsewhere
Codegen: PUT updates clear optional fields that global arguments leave unset
Docs: document health stream limits and narrowed snapshots in the swamp serve REST API reference
GCP codegen: fetch-schema pulls preview API versions, so preview-only compute resources ship in @swamp/gcp/compute
build-attestation cannot find workflow runs when run from a git worktree
issue-lifecycle approve logs a 422 from swamp-club: Cannot triage issue in status triaged
Dashboard live audit stream fails in auth mode none when a token is left in sessionStorage
GCP enrichment snapshots omit the name field their model StateSchema requires
Docs: health endpoints need a valid token, not admin, and the stream ends on token revoke
verify-build codegen group runs no tests, so GCP enrichment test suites are never gated
datastore config migrate skips setting managedConfig when the datastore is already migrated
Codegen/AWS: create-only required fields block list/get/delete in generated AWS models
Docs: fix config migrate output and second-instance setup in enable-managed-config
Dashboard never reconnects after the serve WebSocket closes
Dashboard JSON highlighter inserts spaces after colons inside string values
Dashboard Back button wraps onto two lines at phone width
Run-scoped data get/list return the latest version, not the version the run produced
Relationships
#2679 Docs: edit commands over --server take piped YAML on stdin
Opened by stack72 · 9/29/2026
After swamp-club#2426, swamp vault edit, swamp model edit and swamp workflow edit accept the new YAML on stdin (vault edit gains this locally too). With --server, stdin is the only edit mode: the server never opens an editor, and the CLI fails with a clear error when nothing is piped. The manual page content/manual/reference/vaults.md (swamp vault edit section) describes vault edit as editor-only while listing --server; update it, and the model and workflow edit reference entries if they list --server. Also note that renaming a vault through edit breaks references to it by name, and that under managedConfig vault edit works on the datastore config tier.
Closed
No activity in this phase yet.
system commented 9/29/2026, 12:49:02 PM
Classified automatically when this issue was filed.
- Type: Bug
If you feel this classification is incorrect, add a ripple to tell us so.
stack72 commented 9/29/2026, 11:33:54 PM
Docs fix in swamp-club PR 1265 (one PR covering #2626, #2653, #2661, #2679, #2692, #2694, #2701, #2728, #2733, #2740).
stack72 commented 9/29/2026, 11:35:24 PM
Documented in swamp-club PR 1265. vault edit, model edit and workflow edit now describe replacing the YAML via stdin, and state that with --server stdin is the only mode, quoting the error shown when nothing is piped. vault edit also covers: --server needs the vault name; id, createdAt and type are pinned on a stdin update; the managedConfig datastore config tier; and a rename breaking references by name. Also removed the model edit line claiming the definition is validated after the editor exits.
Sign in to post a ripple.