FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

fix(repo): prevent daemon write replay after ack loss by KooshaPari · Pull Request #3843 · tailcallhq/forgecode · GitHub

fix(repo): prevent daemon write replay after ack loss - #3843

Open
KooshaPari wants to merge 417 commits into
tailcallhq:mainfrom
KooshaPari:safety/daemon-ack-loss-20260813
Open

fix(repo): prevent daemon write replay after ack loss#3843
KooshaPari wants to merge 417 commits into
tailcallhq:mainfrom
KooshaPari:safety/daemon-ack-loss-20260813

Conversation

Copy link
Copy Markdown

Summary

  • distinguish daemon unavailability before a request from indeterminate post-send outcomes
  • return an explicit error instead of replaying post-send failures through the direct repository
  • cover a daemon-recorded request whose ACK is lost

Safety contract

Direct fallback remains available only after initial connect/spawn failure. DbClient::send transport failures, Response::Error, and unexpected responses are explicit indeterminate errors, preventing duplicate writes.

Verification

  • cargo test -p forge_repo
  • cargo clippy --all-targets --all-features -- -D warnings
  • cargo +1.96 fmt --check
  • git diff --check

KooshaPari and others added 30 commits July 23, 2026 01:09
Co-Authored-By: ForgeCode <noreply@forgecode.dev>
Co-Authored-By: ForgeCode <noreply@forgecode.dev>
Co-Authored-By: ForgeCode <noreply@forgecode.dev>
Co-Authored-By: ForgeCode <noreply@forgecode.dev>
Detects is_terminal at SpinnerManager construction. When stderr is not
a TTY (piped, redirected, or -p prompt mode), the spinner thread is
never started and write_ln/ewrite_ln emit plain text only.

Fixes tailcallhq#3615.
Configurable compression levels with importance-based pruning for
conversation history. AI-driven semantic analysis to identify and
compress low-value exchanges while preserving critical context.
KooshaPari and others added 15 commits August 17, 2026 01:24
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Pulled forge.exe + helioslite.exe Windows x86_64 assets directly from the
CI-built draft release v2.13.21-h.0.1.1 at KooshaPari/forgecode (sha256
matches the published checksum). Built forge_dbd locally with the same
APP_VERSION since CI doesn't ship that binary.

Installed binaries report v2.13.21-h.0.1.1 (fork scheme); forge_dbd
intentionally reports v2.13.21 (workspace version, not a release
artifact). Live verified with installed binaries: conversation list
returns real sessions, heliosdoctor reports version=v2.13.21-h.0.1.1,
FORGE_DBD_ENABLED=1 still spawns the daemon cleanly.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
The repo's .rustfmt.toml declares nightly-only options (imports_granularity,
group_imports, wrap_comments, comment_width), but CI runs stable rustfmt which
silently ignores them, so the declared style drifted across 30 files. Reformat
with cargo +nightly fmt --all.

Exception: crates/forge_main/src/info.rs line 75 (blank line inside a ```text
doc-code-fence). Modern nightly normalizes it to "/// " (trailing space), which
stable rustfmt strips back to "///" — the two cannot agree. Kept stable's form
so CI's stable fmt check stays green; nightly check flags exactly this one
line, matching the pre-existing baseline.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
…ions

forge.exe / helioslite.exe running on this machine are the user`s live
chats, not background processes. Killing them drops an in-flight
conversation. The rule documents how to handle binary upgrades when the
live process is holding a file lock (rename aside, copy new in, ask the
user to relaunch -- never Stop-Process). forge_dbd remains the only
forge-owned process for which a graceful shutdown is acceptable, with notice.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
…ard, sprint tracking, quality gates, branch cleanup
…ust deny.toml

h2 had unbounded empty DATA frames (patched in 0.4.16, low severity).
- Bump h2 0.4.13 (via aws-smithy-http-client) to 0.4.16 in Cargo.lock;
  0.3.27 via dev-only rocket->hyper 0.14 has no 0.3.x fix and is
  ignored in deny.toml (dev-only, no safe upgrade until hyper 0.14 /
  rocket moves to hyper 1).
- Fix deny.toml for cargo-deny 0.19.8: version filter not supported,
  use plain id ignore (0.4.16 is now patched so ignore only hits 0.3).

CI cargo-deny was red on this advisory; now advisories ok, licenses
and sources ok.

Co-Authored-By: ForgeCode <noreply@forgecode.dev>
…g 0.22, libsqlite3-sys 0.38) + h2 0.4.16

Merge upstream/main 6ed5d37 (34 commits: 16 Rust crate bumps
including libsqlite3-sys 0.38.0, diesel 2.3.9, two-face 0.5.2, clap
4.6.6, etc. + 17 JS/TS dep bumps). Resolve Cargo.lock conflict by
taking upstream and re-applying fork security fix h2 0.4.13->0.4.16
(RUSTSEC-2026-0258) and aligning rusqlite 0.39.0->0.40.0 in
crates/forge_dbd to use libsqlite3-sys 0.38 (was 0.37) — single
links=sqlite3 now consistent. Also posthog-rs 0.21->0.22 from
upstream Cargo.toml.

Co-Authored-By: ForgeCode <noreply@forgecode.dev>
…-reader descriptions, contrast checking, and semantic validation
… wrap)

Fixes CI test failure forge_config::schema generate_workflow_schema after upstream sync (34 commits).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
- ConfigReader::forge_base_path() + is_helioslite_binary() gating
- ForgeAPI background task polls ~/.forge/.forge.db every 5s (FORGE_SYNC_INTERVAL_SECS, FORGE_SYNC_DISABLED kill-switch), mtime-gated idempotent import via import_forge_db (skips existing)
- Only runs as helioslite when homes distinct; forge remains write-owner, helioslite copies into its own home
- Scope h2 0.3.27 ignore to version range, bump 0.4.13→0.4.16, wrap_comments schema fix

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
KooshaPari force-pushed the safety/daemon-ack-loss-20260813 branch from dc80ed5 to 8c217b6 Compare August 19, 2026 17:43
KooshaPari and others added 2 commits August 19, 2026 10:45
Regenerate ci.yml and release-drafter.yml via forge_ci.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Remove version filter (unsupported key) — cargo-deny 0.19 expects only id+reason

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
KooshaPari force-pushed the safety/daemon-ack-loss-20260813 branch from 8c217b6 to c46c895 Compare August 19, 2026 18:30
KooshaPari and others added 3 commits August 19, 2026 12:54
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: KooshaPari <koosha@example.com>
Co-authored-by: ForgeCode <noreply@forgecode.dev>
KooshaPari force-pushed the safety/daemon-ack-loss-20260813 branch from c46c895 to e55d250 Compare August 19, 2026 20:20
KooshaPari and others added 5 commits August 19, 2026 13:21
Co-Authored-By: ForgeCode <noreply@forgecode.dev>
Co-Authored-By: ForgeCode <noreply@forgecode.dev>
Fixes missing field errors after protocol added workspace_id
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
KooshaPari force-pushed the safety/daemon-ack-loss-20260813 branch from ef7ab44 to 5fb9cbc Compare August 20, 2026 00:39
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: fix Iterations on existing features or infrastructure. type: provider Updates provider.json configuration.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants


Back | FazBrowse Home | New Git URL