Conversation
CLAUDE.md was 810 lines of mixed reference, procedural guidance, and project meta. Auto-loading that into every session burns context for material that's already in docs/docs/ (Docusaurus). Reframed CLAUDE.md as a 147-line index that points into docs and skills, keeping only project meta and safety-critical one-liners inline. - concurrency-model.md: appended "Why no framework-level request deduplication" — the TOCTOU/semantic-overloading/no-TTL reasoning that previously only existed in CLAUDE.md. - error-handling.md: appended a Debugging section covering LOG_LEVEL, lifecycle event subscriptions, and query_array/query_streams introspection. - guides/contributing-new-package.md (new, sidebar-wired): captures the seed-tag gotcha and the file-update checklist for adding a new @rotorsoft/act-* package. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…103) ACT-103 surface — `libs/act/bench/reaction-latency.bench.ts` measures single-process commit→reaction latency at three steady-state rates (idle / 100 per sec / 1000 per sec) on InMemoryStore. Reports p50/p95/p99 with a regression bound (idle p99 < 50 ms). Numbers feed the new "Reaction latency" section in `libs/act/PERFORMANCE.md`. Workspace bench unification — three coexisting benchmark shapes now have explicit homes and consistent run commands: Shape A (microbench, `bench()` blocks) → libs/<pkg>/bench/ Shape B (research script, `tsx` standalone) → libs/<pkg>/scripts/ Shape C (scenario bench, `it()` + assertions) → libs/<pkg>/bench/ Files migrated from `libs/<pkg>/test/` and `libs/act-pg/test/` to the new directories. tsconfig.build.json excludes `bench` so it doesn't land in dist. New per-package `bench:micro` (vitest bench) and `bench:scenarios` (vitest run --config vitest.bench.config.ts) scripts; workspace-level `pnpm bench:micro` / `pnpm bench:scenarios` fan-out across packages. CI: bench:scenarios runs on every PR (Shape C built-in regression assertions catch order-of-magnitude perf regressions). Captured stdout appends to $GITHUB_STEP_SUMMARY so reviewers see the numbers without scrolling logs. Microbenches (Shape A, too noisy) and research scripts (Shape B, no bounds) stay manual-invocation only. Coveralls upload marked `continue-on-error` — outages have blocked master merges before. We keep the coverage badge when coveralls is up; we keep merging releases when it's down. Plus: new `BENCH.md` at the repo root indexes every benchmark with its shape, run command, what it measures, and links to the deeper writeup. Coverage: 100% across the board (1025 tests). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The InMemory bench shipped earlier in the PR but the ticket explicitly asked for both adapters. This adds the same three steady-state scenarios (idle / 100 per sec / 1000 per sec) on PostgresStore so the docs cover both sides. PG numbers (single run, docker PG, no other load): idle p50 4 ms p95 20 ms p99 ~500 ms (single outlier) low (100/s) p50 10 ms p95 22 ms p99 70 ms high (1000/s) p50 ~125ms p95 ~1.2 s p99 ~1.5 s (saturating) Per-source warm-up pre-pays connection setup + dynamic-resolver subscribe so the timed window starts from steady state. Regression bound asserts on p50 (stable) instead of p99 (single-outlier-prone with the small idle sample size); tail variance lives in the reported table. PERFORMANCE.md gets the PG result table alongside InMemory and drops the now-stale "out of scope" note. BENCH.md updated. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
# Conflicts: # CLAUDE.md # libs/act-pg/vitest.bench.config.ts
The merge-resolution earlier in this PR took master's 846-line CLAUDE.md, undoing the docs split optimization that lived on ACT-103 (commit 0b8a0fe — "split CLAUDE.md into Docusaurus reference and slim index"). The slim version (147 lines) is the right shape: deep reference moved to docs/docs/, the file stays an index. Re-applied the slim version and added one new pointer line for priority-lanes (since ACT-102 landed `docs/docs/architecture/priority-lanes.md` on master). All other ACT-102 doc additions (priority sections in the act and act-pg READMEs, the scaffold-act-app skill update, priority-lanes.md itself, sidebars entry) stay — those were correctly merged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
🎉 This PR is included in version @rotorsoft/act-patch-v1.2.0 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version @rotorsoft/act-v0.35.0 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version @rotorsoft/act-pg-v0.20.0 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
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
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #674.
ACT-103 surface — new
libs/act/bench/reaction-latency.bench.tsmeasures single-process commit→reaction latency onInMemoryStoreat three steady-state rates (idle / 100 per sec / 1000 per sec). Reports p50/p95/p99 with a regression bound (idle p99 < 50 ms). Numbers populate a new "Reaction latency" section inlibs/act/PERFORMANCE.mdand the README links to it.Workspace bench unification — three benchmark shapes coexisted on master with inconsistent locations and run commands. They now have explicit homes:
bench())libs/<pkg>/bench/pnpm bench:microtsxstandalone)libs/<pkg>/scripts/npx tsx libs/<pkg>/scripts/<file>.bench.tsit()+ assertions)libs/<pkg>/bench/pnpm bench:scenarios13 bench files migrated from
test/to the new directories.tsconfig.build.jsonexcludesbench/so dist doesn't pull them in. Per-packagebench:microandbench:scenariosscripts plus workspace-level fan-out (pnpm bench:micro/pnpm bench:scenarios).CI integration —
bench:scenariosnow runs on every PR. Built-in regression assertions in each Shape C bench catch order-of-magnitude perf regressions. Captured stdout appends to$GITHUB_STEP_SUMMARYso reviewers see the numbers at the top of the workflow page. Microbenches (too noisy on shared runners) and research scripts (no regression bounds) stay manual-only.Coveralls best-effort — added
continue-on-error: trueto the coveralls upload step. The previous PR got stuck on a coveralls outage; we'd rather lose a coverage badge than block a release.BENCH.md— new repo-root index. Every benchmark, what it measures, run command, current numbers, and a link to the deeper writeup.Coverage
100% statements / branches / functions / lines workspace-wide. 1025 tests.
Test plan
pnpm test) — 1025/1025pnpm lint)pnpm build)pnpm bench:scenariosworks for both libs (act + act-pg) under workspace fan-outpnpm bench:microworks for all three (act + act-pg + act-patch)scripts/still runnable vianpx tsx🤖 Generated with Claude Code