Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
b77a8b5
simplify(release): retire unpublished-crate distribution
ScriptedAlchemy Oct 18, 2026
7ad21f2
fix(dashboard): generate settings PATCH contracts
ScriptedAlchemy Oct 18, 2026
f5e226e
fix(ci): resolve export paths in the runner steps
ScriptedAlchemy Oct 18, 2026
a60dc14
Merge branch 'master' into fix/settings-patch-contract
ScriptedAlchemy Oct 18, 2026
e338213
Merge commit '205c83a97f5d73569467fed4a6284fdbe766ecc3' into fix/sett…
ScriptedAlchemy Oct 18, 2026
d242a9e
Merge commit '205c83a97f5d73569467fed4a6284fdbe766ecc3' into simplify…
ScriptedAlchemy Oct 18, 2026
3369047
Merge remote-tracking branch 'origin/master' into simplify/retire-cra…
ScriptedAlchemy Oct 18, 2026
22be79d
Merge commit '81a1d23fb9d5c85292ca57a3d7e32b1d6c5f2cb5' into simplify…
ScriptedAlchemy Oct 18, 2026
a7efc76
Merge commit '81a1d23fb9d5c85292ca57a3d7e32b1d6c5f2cb5' into fix/sett…
ScriptedAlchemy Oct 18, 2026
6fef056
fix: remove the worldwide token counter
ScriptedAlchemy Oct 18, 2026
3367fef
Merge commit 'c16705738ecb5e783995928ee631b7ed4ee77c00' into HEAD
ScriptedAlchemy Oct 18, 2026
7c01641
Merge commit 'c16705738ecb5e783995928ee631b7ed4ee77c00' into HEAD
ScriptedAlchemy Oct 18, 2026
cf66a51
fix(projection): keep the stored cwd when a session names another
ScriptedAlchemy Oct 18, 2026
b9475c6
fix: drop unused mut and Debug-free parse assertion
ScriptedAlchemy Oct 18, 2026
2ca97f4
Merge remote-tracking branch 'origin/master' into fix/3619-remove-wor…
ScriptedAlchemy Oct 18, 2026
abe7e82
Merge commit '4a7b39b273dac52ebc09c21c3e8f47c091de1daf' into HEAD
ScriptedAlchemy Oct 18, 2026
0106b09
Merge commit '4a7b39b273dac52ebc09c21c3e8f47c091de1daf' into HEAD
ScriptedAlchemy Oct 18, 2026
642433a
feat(global-db): add transact_or and JobExit for job bodies
ScriptedAlchemy Oct 18, 2026
156af12
refactor(global-db): run accounting and workflow writes as jobs
ScriptedAlchemy Oct 18, 2026
9111a8f
refactor(global-db): run topology anchor and discovery writes as jobs
ScriptedAlchemy Oct 18, 2026
cca8a2f
refactor(global-db): run stack delivery writes as jobs
ScriptedAlchemy Oct 18, 2026
45baa93
refactor(global-db): run source rewrite writes as jobs
ScriptedAlchemy Oct 18, 2026
6d7ab42
refactor(global-db): run registry and remote deletion writes as jobs
ScriptedAlchemy Oct 18, 2026
68af603
refactor(global-db): run analytics writes as jobs
ScriptedAlchemy Oct 18, 2026
f2f81a2
test(global-db): prove job exits and scope loss roll back
ScriptedAlchemy Oct 18, 2026
9afc4aa
docs(storage): record step 5i-4 global-db job writes
ScriptedAlchemy Oct 18, 2026
d1f0b79
Merge remote-tracking branch 'origin/master' into refactor/storage-gl…
ScriptedAlchemy Oct 18, 2026
6ce5353
chore: regenerate dashboard contracts without upload_enabled
ScriptedAlchemy Oct 18, 2026
95381c8
build(evals): resolve eval binary through the shipping Bazel target
ScriptedAlchemy Oct 18, 2026
e253929
build(dist): apply Bazel asupersync patches to the extracted-crate build
ScriptedAlchemy Oct 18, 2026
0ec2ce5
ci: mark the Windows cargo check as a type-check-only exception
ScriptedAlchemy Oct 18, 2026
095eea3
Merge origin/master into simplify/retire-crate-distribution
ScriptedAlchemy Oct 18, 2026
2518110
Merge simplify/retire-crate-distribution into fix/4206-eval-bazel-cut…
ScriptedAlchemy Oct 18, 2026
d1539a1
fix(projection): settle passes parked on terminal session collisions
ScriptedAlchemy Oct 18, 2026
ceeb628
Merge remote-tracking branch 'origin/master' into fix/4279-codex-proj…
ScriptedAlchemy Oct 18, 2026
5dc09fa
test(session-runtime): cut refresh groups without a wall-clock deadline
ScriptedAlchemy Oct 18, 2026
8fdd7f9
test(sessions): return the user pass outcome directly
ScriptedAlchemy Oct 18, 2026
966dd85
Merge remote-tracking branch 'origin/master' into fix/4279-codex-proj…
ScriptedAlchemy Oct 18, 2026
d0fde25
Merge branch 'master' into fix/4279-codex-project-path-collision
ScriptedAlchemy Oct 18, 2026
6ee4cb0
Merge branch 'master' into fix/3908-timed-refresh-groups
ScriptedAlchemy Oct 18, 2026
e7aaded
Merge branch 'master' into fix/4206-eval-bazel-cutover
ScriptedAlchemy Oct 18, 2026
b9e75b6
Merge branch 'master' into fix/3619-remove-worldwide-counter
ScriptedAlchemy Oct 18, 2026
04c28c1
Merge branch 'master' into refactor/storage-global-db-jobs-2
ScriptedAlchemy Oct 18, 2026
6d6d70a
Merge branch 'master' into fix/settings-patch-contract
ScriptedAlchemy Oct 18, 2026
40c903d
Merge branch 'master' into simplify/retire-crate-distribution
ScriptedAlchemy Oct 18, 2026
5c1c60b
Merge remote-tracking branch 'origin/master' into simplify/retire-cra…
ScriptedAlchemy Oct 18, 2026
73e6ccf
fix(cli): read glibc counters through mallinfo on the 2.31 baseline
ScriptedAlchemy Oct 18, 2026
ee650a8
fix(ci): expose packaged LSP smoke imports to Bazel
ScriptedAlchemy Oct 18, 2026
9fdec8e
test(query): write historical fixtures without runfile permissions
ScriptedAlchemy Oct 18, 2026
64e8b5e
fix(evals): honor consent and platform executable paths
ScriptedAlchemy Oct 18, 2026
353231f
Merge remote-tracking branch 'origin/simplify/retire-crate-distributi…
ScriptedAlchemy Oct 18, 2026
6868c39
Merge branch 'simplify/retire-crate-distribution-update' into fix/420…
ScriptedAlchemy Oct 18, 2026
4517217
fix(dashboard): decode canonical settings settlements
ScriptedAlchemy Oct 18, 2026
a70bf58
build(evals): generate memory benchmark runtime export
ScriptedAlchemy Oct 18, 2026
fb85df8
fix(mcp): preserve live graph request cancellation
ScriptedAlchemy Oct 18, 2026
19dd56d
test(observability): reserve space for every live carrier
ScriptedAlchemy Oct 18, 2026
1022db4
test(dashboard): bound Bazel workers and isolate auth streams
ScriptedAlchemy Oct 18, 2026
f8c42c6
fix(hooks): preserve lifecycle evidence during replay
ScriptedAlchemy Oct 18, 2026
4c0e1fc
fix(sessions): preserve canonical message directory scopes
ScriptedAlchemy Oct 18, 2026
de2fa31
test(dashboard): reserve CPU capacity beyond Vitest workers
ScriptedAlchemy Oct 18, 2026
1ca3f8e
test(cli): preserve fixture modes and typed capacity retries
ScriptedAlchemy Oct 18, 2026
2971cac
test(sessions): distinguish exited zombies during shutdown
ScriptedAlchemy Oct 18, 2026
6914cc8
fix(memory): separate process and cgroup admission budgets
ScriptedAlchemy Oct 18, 2026
18513ff
fix(privacy): preserve UUID directory paths in entropy scans
ScriptedAlchemy Oct 18, 2026
be6a6e2
fix(hooks): honor lifecycle gating during ledger replay
ScriptedAlchemy Oct 18, 2026
79a6779
fix(settings): separate saved commits from reconciliation
ScriptedAlchemy Oct 18, 2026
a14674c
fix(settings): label reconciliation as receipt state
ScriptedAlchemy Oct 18, 2026
8ca9c78
test(storage): use canonical writers and join fixture work
ScriptedAlchemy Oct 18, 2026
017d27a
test(global-db): batch canonical observation fixtures
ScriptedAlchemy Oct 18, 2026
5beaa55
Merge PR #4336: process and shared memory admission
ScriptedAlchemy Oct 18, 2026
c7f5132
Merge PR #4333: live graph cancellation
ScriptedAlchemy Oct 18, 2026
875703f
Merge PR #4337: UUID path privacy
ScriptedAlchemy Oct 18, 2026
11a27bd
Merge PR #4334: bounded dashboard execution
ScriptedAlchemy Oct 18, 2026
b3b4050
Merge PR #4335: lifecycle-safe hook replay
ScriptedAlchemy Oct 18, 2026
c4ffcea
test(api): consume typed configuration refusals
ScriptedAlchemy Oct 18, 2026
e3df8d5
fix(build): share dashboard source copies across consumers
ScriptedAlchemy Oct 19, 2026
0d513f8
test(global-db): batch canonical observation fixtures
ScriptedAlchemy Oct 18, 2026
d7a8cd6
fix(identity): preserve nested checkout scope authority
ScriptedAlchemy Oct 19, 2026
25cc290
test(cli): wait for full project server before counting calls
ScriptedAlchemy Oct 19, 2026
8c8b308
fix(hooks): admit cold file edits before full project open
ScriptedAlchemy Oct 19, 2026
651a822
fix(identity): retain enrolled monorepo package scope
ScriptedAlchemy Oct 19, 2026
98609ed
fix(hooks): require event-specific spool evidence before ledger replay
ScriptedAlchemy Oct 19, 2026
976c957
fix(hooks): guard known-session replay and test per-edit lifecycle
ScriptedAlchemy Oct 19, 2026
1787f22
fix(build): share dashboard source copies across consumers
ScriptedAlchemy Oct 19, 2026
a5896ff
fix(hooks): allow replay after branch label changes in same checkout
ScriptedAlchemy Oct 19, 2026
38e3b22
test(hooks): preserve lifecycle for edits in an existing session
ScriptedAlchemy Oct 19, 2026
8b95aff
test(session-runtime): eliminate CI-sensitive refresh deadline races
ScriptedAlchemy Oct 19, 2026
7d1e61a
style(hooks): apply Rustfmt to lifecycle regression assertions
ScriptedAlchemy Oct 19, 2026
7971c42
style(hooks): apply Rustfmt to lifecycle regression assertions
ScriptedAlchemy Oct 19, 2026
600b671
fix(identity): share indexed scope identities across surfaces
ScriptedAlchemy Oct 19, 2026
87c29d0
fix(db): deduplicate hook-route analytics with indexed lookup
ScriptedAlchemy Oct 19, 2026
4b0e015
fix(hooks): recover intent delivery after completed replay
ScriptedAlchemy Oct 19, 2026
1b6f500
fix(hooks): preserve lifecycle debt and immutable replay order
ScriptedAlchemy Oct 19, 2026
d33a128
fix(hooks): reconcile durable routes and observe queued edits
ScriptedAlchemy Oct 19, 2026
68306ef
fix(hooks): fence source currency until routed edits reach indexing
ScriptedAlchemy Oct 19, 2026
d13fbc8
refactor(mcp): extract durable hook request dispatch
ScriptedAlchemy Oct 19, 2026
3280c3e
Merge remote-tracking branch 'origin/t3/fix-hook-replay-lifecycle-rac…
ScriptedAlchemy Oct 19, 2026
d22446a
refactor(hooks): remove retired mountless admission route
ScriptedAlchemy Oct 19, 2026
c1a6bbf
test(sessions): assert Git reads use the blocking pool
ScriptedAlchemy Oct 19, 2026
439bd29
Merge remote-tracking branch 'origin/t3/fix-hook-replay-lifecycle-rac…
ScriptedAlchemy Oct 19, 2026
5a5cb74
fix(hooks): preserve ordered replay lifecycle evidence
Copilot Oct 19, 2026
5f5a19d
test(sessions): observe wake consumption before worker idleness
ScriptedAlchemy Oct 19, 2026
ab31e96
ci: use Ubuntu sources for the Windows cross-compiler
ScriptedAlchemy Oct 19, 2026
cc061b4
fix(sessions): attach history before waking refresh workers
ScriptedAlchemy Oct 19, 2026
c0412d9
Merge peer idle-observation and cross-compiler CI fixes
ScriptedAlchemy Oct 19, 2026
bfb9aba
fix(hooks): fence replay across ledger and spool
Copilot Oct 19, 2026
4e6d11a
fix(hooks): settle cooperatively superseded producer work
ScriptedAlchemy Oct 19, 2026
fd7c693
test(hooks): isolate replay identities and clarify assertions
ScriptedAlchemy Oct 19, 2026
33e035d
Merge peer hook replay fixes with canonical admission order
ScriptedAlchemy Oct 19, 2026
b40eca6
ci: use Ubuntu sources for the Windows cross-compiler
ScriptedAlchemy Oct 19, 2026
0f189b3
test(hooks): preserve owed work when lifecycle policy fails
ScriptedAlchemy Oct 19, 2026
9ff09b6
Merge peer CI compiler source correction
ScriptedAlchemy Oct 19, 2026
97d4a71
fix(hooks): retain read availability when admission spool fails
ScriptedAlchemy Oct 19, 2026
b721f91
fix(hooks): recover intent delivery while feedback is pending
ScriptedAlchemy Oct 19, 2026
cbcb484
fix(hooks): keep reads available through broker recovery
ScriptedAlchemy Oct 19, 2026
c8ce4d8
fix(hooks): preserve peer broker recovery regression
ScriptedAlchemy Oct 19, 2026
bdbaa9a
test(hooks): import duration for spool recovery regression
ScriptedAlchemy Oct 19, 2026
b88ffd4
fix(hooks): retain intent boundary work through replay
ScriptedAlchemy Oct 19, 2026
bf007b7
Merge remote-tracking branch 'origin/t3/fix-hook-replay-lifecycle-rac…
ScriptedAlchemy Oct 19, 2026
e9e7aa1
fix(hooks): recover committed intent before claim mounting
ScriptedAlchemy Oct 19, 2026
d318f40
fix(ci): integrate baseline repairs into hook replay
ScriptedAlchemy Oct 19, 2026
55488d1
test(sessions): join the replacement worker after rekey
ScriptedAlchemy Oct 19, 2026
c672685
Merge durable hook admission and replay fixes for validation
ScriptedAlchemy Oct 19, 2026
f99b25b
chore(hooks): clarify pending intent diagnostics
ScriptedAlchemy Oct 19, 2026
90b2326
fix(index): retain completed readings at readiness deadline
ScriptedAlchemy Oct 19, 2026
46282f8
Merge bounded readiness diagnostics and verified hook lint fixes
ScriptedAlchemy Oct 19, 2026
acb1575
fix(hooks): combine current intent recovery with baseline repairs
ScriptedAlchemy Oct 19, 2026
dd9a1b2
fix(ci): preserve current hook recovery during baseline integration
ScriptedAlchemy Oct 19, 2026
31667ae
Merge shared dashboard build ancestry
ScriptedAlchemy Oct 19, 2026
89f1c8d
Merge verified refresh fixture ancestry
ScriptedAlchemy Oct 19, 2026
f734536
style(index): format integrated source inputs
ScriptedAlchemy Oct 19, 2026
f395963
test(hooks): retain canonical evidence for hint timeouts
ScriptedAlchemy Oct 19, 2026
26e7e43
fix(hooks): preserve peer baseline integration
ScriptedAlchemy Oct 19, 2026
3449520
Merge canonical hook failure evidence
ScriptedAlchemy Oct 19, 2026
77b0e76
test(observability): leave a queue slot for the live owner claim
ScriptedAlchemy Oct 19, 2026
206248d
fix(hooks): reconcile intent duplicates after host claims
ScriptedAlchemy Oct 19, 2026
b65fe1e
Merge peer observability fixture repair
ScriptedAlchemy Oct 19, 2026
203f2e8
Merge reviewed distribution cleanup
ScriptedAlchemy Oct 19, 2026
253c7f8
Merge reviewed Bazel eval tooling
ScriptedAlchemy Oct 19, 2026
e15b8fd
Merge reviewed registered transaction adapters
ScriptedAlchemy Oct 19, 2026
0200642
Merge reviewed Codex projection repair
ScriptedAlchemy Oct 19, 2026
07ce410
Merge reviewed worldwide counter removal
ScriptedAlchemy Oct 19, 2026
fd0f448
Merge reviewed settings PATCH contracts
ScriptedAlchemy Oct 19, 2026
c5eb738
test(settings): assert typed refusal for the retired counter
ScriptedAlchemy Oct 19, 2026
e223485
test(sessions): distinguish project and worktree selectors
ScriptedAlchemy Oct 19, 2026
1027ce0
fix(index): retain stale owners when source admission is unreadable
ScriptedAlchemy Oct 19, 2026
ee7f675
fix(daemon): join composition rollback before returning errors
ScriptedAlchemy Oct 19, 2026
fd39f9a
test(mcp): verify both canonical deadline terminals
ScriptedAlchemy Oct 19, 2026
985c393
test(hooks): attach receipts to cold admission failures
ScriptedAlchemy Oct 19, 2026
969385d
Merge reviewed selector and immutable-owner corrections
ScriptedAlchemy Oct 19, 2026
14bdcf6
perf(configuration): avoid runtime rebuilds during claim checks
ScriptedAlchemy Oct 19, 2026
d4a2256
fix(privacy): isolate entropy runs in UUID paths
ScriptedAlchemy Oct 19, 2026
9fae045
test(hooks): retain typed spool reset beside independent reads
ScriptedAlchemy Oct 19, 2026
2010a84
fix(privacy): detect sparse token pairs in UUID paths
ScriptedAlchemy Oct 19, 2026
4323288
fix(privacy): preserve ordinary sparse directory pairs
ScriptedAlchemy Oct 19, 2026
667387e
fix(privacy): detect uneven split tokens in UUID paths
ScriptedAlchemy Oct 19, 2026
557f933
fix(privacy): infer split tokens without fragment cutoffs
ScriptedAlchemy Oct 19, 2026
4346e7a
Merge reviewed privacy path coverage
ScriptedAlchemy Oct 19, 2026
73cfc1b
test(privacy): preserve versioned UUID build paths
ScriptedAlchemy Oct 19, 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
2 changes: 1 addition & 1 deletion .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ CXXFLAGS_aarch64_pc_windows_msvc = { value = "-DNDEBUG /utf-8", force = false }
# connections. Nothing reads those statistics or sets a heap limit.
LIBSQLITE3_FLAGS = { value = "-DSQLITE_MAX_WORKER_THREADS=15 -DSQLITE_DEFAULT_MEMSTATUS=0", force = true }

# Global accounting (savings ledger, worldwide-counter flushes) is ON by
# Global accounting (the savings ledger) is ON by
# default for installed binaries, but `cargo test` / `cargo run` would then
# write temp-project rows into the developer's real ~/.tracedecay/global.db.
# Keep cargo-launched processes hermetic; tests that exercise the ledger
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ body:
attributes:
label: Installation method
options:
- cargo install
- Built from source (Bazel)
- Homebrew (brew)
- Scoop
- Built from source
Expand Down
44 changes: 29 additions & 15 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -205,18 +205,11 @@ jobs:
run: |
python3 scripts/test-check-packaged-lsp-bridge.py
python3 scripts/test-build-mcpb.py
python3 scripts/test-resolve-installed-binary.py
python3 scripts/test-check-packaged-mcp-stdio.py
python3 scripts/test-check-distribution-feature-wiring.py
python3 scripts/test-resolve-release-source-profile.py
python3 scripts/test-package-release-archive.py
python3 scripts/test-plan-release-recovery.py
python3 scripts/test-check-release-artifacts.py
python3 scripts/test-update-release-checksums.py
python3 scripts/test-neutralize-release-pr-closing-keywords.py
bash scripts/test-check-distribution-clean-source.sh
bash scripts/test-check-distribution-snapshot.sh
bash scripts/test-check-distribution-reuse.sh
bash tests/macos_stable_codesign_test.sh

# Exercise the release guard scripts when admitting proposed changes.
Expand Down Expand Up @@ -604,12 +597,17 @@ jobs:
- name: Run blocking Clippy policy
run: bazel build --config=ci --config=clippy //...

# Master pushes run no Windows lane, so `cfg(windows)` code otherwise
# first compiles in the release build. Bazel has no MSVC toolchain on
# Linux, so this cross-target type check stays on Cargo: `cargo check`
# needs no linker, and mingw supplies the C compiler the native build
# scripts run. macOS has no equivalent: its build scripts need the Apple
# SDK headers.
# The one deliberate Cargo step left in CI, and only because Bazel cannot
# replace it yet. Master pushes and ordinary PRs run no Windows lane
# (`windows-test` is dispatch-only), so `cfg(windows)` code otherwise
# first compiles in the release build. The workspace registers no
# Windows target toolchain for Linux, so this cross-target type check
# stays on Cargo: `cargo check` needs no linker, and mingw supplies the
# C compiler the native build scripts run. It type-checks only and
# produces no executable, so no eval, test, or release consumes its
# output and it cannot diverge a shipped runtime. Remove it when Bazel
# grows a Linux-hosted Windows target. macOS has no equivalent: its
# build scripts need the Apple SDK headers.
- name: Install pinned toolchain and Windows check target
run: |
rustup toolchain install
Expand All @@ -619,8 +617,14 @@ jobs:

- name: Install the Windows C cross-compiler
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends gcc-mingw-w64-x86-64
# This compiler comes from Ubuntu, independently of third-party feeds
# preconfigured on the hosted image.
ubuntu_sources=(
-o Dir::Etc::sourcelist=sources.list.d/ubuntu.sources
-o Dir::Etc::sourceparts=-
)
sudo apt-get "${ubuntu_sources[@]}" update
sudo apt-get "${ubuntu_sources[@]}" install -y --no-install-recommends gcc-mingw-w64-x86-64

- name: Check the Windows target
run: >-
Expand Down Expand Up @@ -702,6 +706,16 @@ jobs:
archive: tar.gz
epoch: ${{ steps.packaging.outputs.epoch }}

- name: Exercise shipped MCP and LSP transports
shell: bash
run: |
set -euo pipefail
binary="$GITHUB_WORKSPACE/target/x86_64-unknown-linux-gnu/release/tracedecay"
smoke_work="$(mktemp -d)"
trap 'rm -rf -- "$smoke_work"' EXIT
TRACEDECAY_BIN="$binary" bazel run //scripts:mcp-conformance-smoke.sh
bazel run //scripts:packaged_lsp_bridge -- "$binary" "$smoke_work/lsp"

# Frontend checks require no Rust compilation and must also validate drafts.
# Do not serialize them behind repository-wide Rust formatting and gates.
dashboard:
Expand Down
105 changes: 0 additions & 105 deletions .github/workflows/distribution-acceptance.yml

This file was deleted.

3 changes: 1 addition & 2 deletions .github/workflows/hawk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
# softening -D warnings.
name: Hawk

# On demand only; see distribution-acceptance.yml for why nothing runs on a
# timer here.
# On demand only; an optional diagnostic should run when someone will read it.
on:
workflow_dispatch:

Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/hermetic-evals.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@ on:
paths:
- "evals/hermetic/**"
- "evals/agent_adoption/**"
- "scripts/build-eval-binary.sh"
- ".github/workflows/hermetic-evals.yml"
push:
branches: [master]
paths:
- "evals/hermetic/**"
- "evals/agent_adoption/**"
- "scripts/build-eval-binary.sh"
- ".github/workflows/hermetic-evals.yml"

permissions:
Expand All @@ -34,11 +36,13 @@ jobs:
run: |
bash -n evals/hermetic/run.sh
bash -n evals/agent_adoption/run.sh
bash -n scripts/build-eval-binary.sh
- name: Run scorer and shell-runner regressions
run: >-
bazel test
//evals/hermetic:score_test
//evals/hermetic:run_test
//evals/hermetic:scorecard_test
//evals/agent_adoption:selftest
//scripts:build_eval_binary_test
--test_output=errors
1 change: 1 addition & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ npm_link_all_packages(name = "node_modules")
exports_files(
[
".github/release-targets.json",
"MODULE.bazel",
"version.txt",
"Cargo.toml",
"clippy.toml",
Expand Down
1 change: 1 addition & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ module(name = "tracedecay", version = "0.0.0")

bazel_dep(name = "platforms", version = "1.1.0")
bazel_dep(name = "bazel_skylib", version = "1.9.2")
bazel_dep(name = "bazel_lib", version = "3.7.0")
bazel_dep(name = "rules_python", version = "2.4.2")
bazel_dep(name = "rules_rust", version = "0.74.0")
# Rustc adds every dependency search directory to PATH on Windows; large
Expand Down
39 changes: 13 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -195,8 +195,6 @@ authorized, sanitized, classified records under their remote policy.

Network-capable effects are separate from core retrieval:

- Worldwide counter: when opted in, sends the pending aggregate token-savings
amount, and `tracedecay doctor` reads the public total to check reachability.
- GitHub release checks and updates: contact GitHub release endpoints. An
explicitly configured private GitHub review source can use a read-only
credential from the operating-system keyring; missing, ambiguous,
Expand All @@ -212,19 +210,13 @@ Network-capable effects are separate from core retrieval:
path fails closed with typed `unavailable`, `denied`, or `stale-peer` state.

These services receive normal transport metadata, including the connection's
source address, in addition to any request payload. The counter request is an
aggregate amount, not repository content, but it is not an anonymity guarantee.
Use a network policy or firewall if a command must make no outbound connection.
An opt-out, denial, timeout, or unavailable remote service must remain visible
as that state; it is not evidence of a zero counter, an up-to-date release, or
current pricing. See [Security](SECURITY.md#network-access) for the complete
outbound-access and credential boundary.

Disable the worldwide counter with:

```bash
tracedecay disable-upload-counter
```
source address, in addition to any request payload. Use a network policy or
firewall if a command must make no outbound connection. A denial, timeout, or
unavailable remote service must remain visible as that state; it is not
evidence of an up-to-date release or current pricing. TraceDecay no longer has
a worldwide token counter: token savings and costs stay local. See
[Security](SECURITY.md#network-access) for the complete outbound-access and
credential boundary.

## Troubleshooting

Expand Down Expand Up @@ -269,9 +261,9 @@ bazel build //...
bazel test //... --test_output=errors
```

Use Cargo when you need to validate Cargo packaging, a feature combination that
has no Bazel target, or a platform-specific workflow. The release workflows
continue to build the published Cargo artifact.
Bazel owns workspace builds, tests, checks, and code generation. Release
workflows package its production CLI as binary archives and MCP bundles;
Rust workspace crates are private and are not published to crates.io.

On macOS `tracedecay` is ad-hoc signed as `dev.tracedecay.cli` with
designated requirement `identifier "dev.tracedecay.cli"`. macOS TCC keys
Expand All @@ -280,14 +272,9 @@ requirement is the binary's cdhash, so an Allow does not survive the next
rebuild; the linker default identifier (`tracedecay-<hash>`) changes every
build as well, and the daemon blocks in `open()` until the prompt is
answered. A release build strips after linking, which mints that identifier
again from the deps filename. Export
`CARGO_BUILD_RUSTC_WORKSPACE_WRAPPER="$PWD/scripts/macos-rustc-wrapper.sh"`
from the checkout root (the macOS CI and release jobs do) and the wrapper
signs the product once rustc has finished, so `cargo build --release` and
`cargo install --path crates/tracedecay-cli` keep the stable identity on
the binary cargo copies into place. The committed Cargo config cannot set
it, because Cargo has no per-target wrapper and Windows cannot run the
script. `install.sh` and `tracedecay update`
again from the deps filename. The shared release build action applies
`scripts/macos-stable-codesign.sh` to the Bazel-built binary before packaging.
`install.sh` and `tracedecay update`
apply the same identity to the installed file after the archive checksum
check when the binary is unsigned or ad-hoc signed, including an ad-hoc
signature whose identifier already matches but whose requirement is still
Expand Down
2 changes: 0 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ Outbound capabilities include:
| Configured remote sources and authorities | Policy-authorized retrieval and remote operations | Configured peer authentication and disclosure policy | Admission or authorization failures are reported; review each peer before enabling |
| `github.com` | Download binary during `tracedecay upgrade` | None (public releases) | Error shown to user |
| `huggingface.co` and Hugging Face artifact hosts | Download missing, revision-pinned semantic-model artifacts when semantic auto-download is enabled | None | Semantic retrieval reports model acquisition state or failure; exact, lexical, and graph retrieval remain available |
| `tracedecay-counter.enzinol.workers.dev` | Aggregate token-savings counter | None | Silently ignored |

Provider usage and pricing do not add an outbound connection. `tracedecay cost`
reads immutable provider-native usage observations and the deterministic bundled
Expand Down Expand Up @@ -169,7 +168,6 @@ an old count of unsafe sites is not a security guarantee.

The following are **not** security issues:

- The aggregate token counter sending a count to the public Cloudflare Worker endpoint (this is documented behavior and contains no identifying information beyond an approximate country derived from IP by Cloudflare)
- The database containing symbol names or file paths from your project (this is core functionality)
- The MCP edit tools modifying files (this is opt-in functionality your AI agent invokes through its own tool-approval flow)
- `tracedecay_run_affected_tests` compiling and running your project's own test suite (this is the tool's documented purpose)
4 changes: 4 additions & 0 deletions benchmark_data/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,8 @@ filegroup(
exports_files(["session-temporal/workload-v1.json"],
visibility = ["//visibility:public"],
)

exports_files(["run_benchmarks.py"],
visibility = ["//evals/memory:__pkg__"],
)
# END generated by scripts/bazel/gen_builds.py
Loading
Loading