fix(gateway-registry): add description and repository to manifest - #133
Merged
Conversation
crates.io rejects publishes without a description; sibling crates already carry both fields.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe gateway-registry package manifest now includes a description and repository URL, while retaining its MIT license metadata. ChangesGateway Registry Metadata
Estimated code review effort: 1 (Trivial) | ~2 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
getappz
added a commit
that referenced
this pull request
Jul 16, 2026
…ions (#214) * worktree: fix review gaps for #133 CARGO_TARGET_DIR isolation Document that ambient CARGO_TARGET_DIR env var outranks the per-worktree .cargo/config.toml (Cargo precedence CLI > env > config), so #133's ambient-env case remains open. Also warn on the re-claim fast path. * refactor: rename ponytail/caveman to optimize/flare-code across CLI, init, components, MCP, and auth_runner * AGENTS.md: enforce lean-ctx for all code intelligence * fix: correct opencode.json LSP config schema Key: rust (not rust-analyzer). Built-in server, no custom command/extensions needed. Settings go in initialization options. * fix: add command to built-in rust LSP override Built-in servers need command when overridden in config * feat(item): add groom action for one-call backlog grooming Adds item action=\groom\: returns a priority+recency-ranked shortlist with full description plus server-computed stale/unassigned/blocked_by/ depended_on_by_count/possible_duplicates/size/unestimated signals and a pull_next list, in one MCP round trip instead of list + N x get. - dependencies_for_items(): bulk dependency-edge query for the shortlist - UpdateItem/item(update) now accepts metadata, so size:S|M|L can be set on existing items (was create-only) - also fixes a latent param_idx bug in item::update where sort_order never advanced the placeholder index, silently reusing it for any field added after it - groom parses metadata.size instead of regexing description prose - /pm:groom, /pm:plan, and the read-recipe/rubric skill docs now call groom directly instead of the old list+get+hand-scoring path - benchmark test (ignored by default) comparing groom vs list+15xget * fix(item): tolerate double-encoded metadata in groom size parsing Dogfooding item(create) with metadata={"size":"S"} via a live MCP call stored a JSON string containing JSON instead of the object itself, so groom's parsed_size() silently reported these items as unestimated. parsed_size() now unwraps one extra string-encoding layer before giving up. Regression test reproduces the exact stored shape. * feat(item): add capacity-based Now/Next/Later bucketing to groom Extends item action="groom" with an optional `capacity` param that additionally buckets the shortlist into now/next/later/needs_estimation, reusing the rank/blocked_by/unestimated signals groom already computes. Omitted from the response when capacity is unset (backward compatible). Extracted priority_rank/parsed_size/dependency_signals/near_duplicates/ capacity_buckets into named module-level functions in item.rs - the handler was accreting cognitive complexity with every addition and this keeps it as an orchestration function. /pm:plan now calls groom(capacity=N) directly instead of re-bucketing groom's shortlist itself. * feat(item): add standup action for server-side daily digest bucketing Adds item action="standup": returns done (completed within cutoff_hours, default 24)/in_progress (grouped by assignee, "unassigned" as its own group)/stuck (in-progress older than staleness_days, default 7) computed server-side from one state-filtered read, instead of the caller bucketing a flat list result by hand. /pm:standup and the read-recipe skill doc now call it directly. * feat(item): add health action for velocity/WIP/stuck scorecard Adds item action="health": trailing weekly velocity series (oldest to newest) with an up/down/flat trend, WIP list+count, stuck items (WIP older than staleness_days, default 7), and a bottlenecks field. Velocity is a live scan over list_by_project, not a precomputed/event- populated rollup table: events::emit (agentflare-backend/src/events.rs) turned out to be outbound webhook delivery only, not a persisted log, and there's no handoff-history table either - handoff is assign + asset version + comment, not a separate audit log. Building either is real new migration work; at this project's actual scale a live scan is sub-millisecond (see the groom benchmark), so that infrastructure would be speculative today. bottlenecks is therefore always empty, with bottleneck_note explaining why, matching the skill's own documented "if none available, print no handoff history" fallback. /pm:health now calls the action directly instead of hand-computing the weekly buckets. * docs(pm): document sizing methodology as a deliberate read-only exception * fix: rustfmt + update stale caveman_cli.rs test to the renamed CLI path - cargo fmt --all: wraps a few lines the local dev-profile check didn't flag (CI's fmt job uses --check with no width override) - tests/caveman_cli.rs called the pre-rename `agentflare caveman compress` subcommand, which no longer exists after the ponytail/caveman -> optimize/flare-code rename; updated to `agentflare optimize output compress` (FlareAction::Output { action: OutputAction::Compress }, src/cli/optimize.rs) and renamed the test function to match Verified with the exact CI command set locally: - cargo fmt --all --check: clean - cargo clippy --locked --workspace --all-targets --all-features -- -D warnings -A unsafe_code -A clippy::pedantic: clean - cargo test --workspace: 543 passed, 1 ignored, 0 failed (plus all other workspace crates' test suites, all passing) * fix: address CodeRabbit findings on groom/standup/health - dependency_edges_for_items (was dependencies_for_items) now joins the dependency target's true state_group in SQL, instead of looking it up via a shortlist-scoped linear scan. Fixes a real bug: a completed dependency that fell outside the default state_group filter (e.g. "backlog,unstarted" excludes "completed") read back as "" from the old lookup and was treated as still-open, falsely blocking its dependent. - dependency_fanin_for_items counts dependents project-wide instead of only within the shortlist, fixing an undercounted depended_on_by_count when a dependent fell outside the shortlist/limit window. - standup's "done" filter and health's velocity bucketing now key off completed_at instead of updated_at. Editing an already-completed item (e.g. fixing a typo) bumps updated_at without re-completing it; using updated_at made old work spuriously reappear as "just done" or shift which week it counted toward. - window_weeks (health) and limit (groom) are now clamped (52, 200) instead of unbounded - an unbounded window_weeks drove a Vec allocation of that literal size while holding the backend DB lock. - Fixed two doc inaccuracies: read-recipe.md claimed item(get) returns labels (it doesn't - separate join table); staleness_days' schema description only mentioned groom's default, not standup/health's. 6 new regression tests, one per fix. cargo test --workspace: 548 passed, 1 ignored, 0 failed. cargo clippy --locked --workspace --all-targets --all-features: clean. cargo fmt --all --check: clean.
getappz
added a commit
that referenced
this pull request
Jul 16, 2026
* worktree: fix review gaps for #133 CARGO_TARGET_DIR isolation Document that ambient CARGO_TARGET_DIR env var outranks the per-worktree .cargo/config.toml (Cargo precedence CLI > env > config), so #133's ambient-env case remains open. Also warn on the re-claim fast path. * refactor: rename ponytail/caveman to optimize/flare-code across CLI, init, components, MCP, and auth_runner * AGENTS.md: enforce lean-ctx for all code intelligence * fix: correct opencode.json LSP config schema Key: rust (not rust-analyzer). Built-in server, no custom command/extensions needed. Settings go in initialization options. * fix: add command to built-in rust LSP override Built-in servers need command when overridden in config * feat(item): add groom action for one-call backlog grooming Adds item action=\groom\: returns a priority+recency-ranked shortlist with full description plus server-computed stale/unassigned/blocked_by/ depended_on_by_count/possible_duplicates/size/unestimated signals and a pull_next list, in one MCP round trip instead of list + N x get. - dependencies_for_items(): bulk dependency-edge query for the shortlist - UpdateItem/item(update) now accepts metadata, so size:S|M|L can be set on existing items (was create-only) - also fixes a latent param_idx bug in item::update where sort_order never advanced the placeholder index, silently reusing it for any field added after it - groom parses metadata.size instead of regexing description prose - /pm:groom, /pm:plan, and the read-recipe/rubric skill docs now call groom directly instead of the old list+get+hand-scoring path - benchmark test (ignored by default) comparing groom vs list+15xget * fix(item): tolerate double-encoded metadata in groom size parsing Dogfooding item(create) with metadata={"size":"S"} via a live MCP call stored a JSON string containing JSON instead of the object itself, so groom's parsed_size() silently reported these items as unestimated. parsed_size() now unwraps one extra string-encoding layer before giving up. Regression test reproduces the exact stored shape. * feat(item): add capacity-based Now/Next/Later bucketing to groom Extends item action="groom" with an optional `capacity` param that additionally buckets the shortlist into now/next/later/needs_estimation, reusing the rank/blocked_by/unestimated signals groom already computes. Omitted from the response when capacity is unset (backward compatible). Extracted priority_rank/parsed_size/dependency_signals/near_duplicates/ capacity_buckets into named module-level functions in item.rs - the handler was accreting cognitive complexity with every addition and this keeps it as an orchestration function. /pm:plan now calls groom(capacity=N) directly instead of re-bucketing groom's shortlist itself. * feat(item): add standup action for server-side daily digest bucketing Adds item action="standup": returns done (completed within cutoff_hours, default 24)/in_progress (grouped by assignee, "unassigned" as its own group)/stuck (in-progress older than staleness_days, default 7) computed server-side from one state-filtered read, instead of the caller bucketing a flat list result by hand. /pm:standup and the read-recipe skill doc now call it directly. * feat(item): add health action for velocity/WIP/stuck scorecard Adds item action="health": trailing weekly velocity series (oldest to newest) with an up/down/flat trend, WIP list+count, stuck items (WIP older than staleness_days, default 7), and a bottlenecks field. Velocity is a live scan over list_by_project, not a precomputed/event- populated rollup table: events::emit (agentflare-backend/src/events.rs) turned out to be outbound webhook delivery only, not a persisted log, and there's no handoff-history table either - handoff is assign + asset version + comment, not a separate audit log. Building either is real new migration work; at this project's actual scale a live scan is sub-millisecond (see the groom benchmark), so that infrastructure would be speculative today. bottlenecks is therefore always empty, with bottleneck_note explaining why, matching the skill's own documented "if none available, print no handoff history" fallback. /pm:health now calls the action directly instead of hand-computing the weekly buckets. * docs(pm): document sizing methodology as a deliberate read-only exception * fix: rustfmt + update stale caveman_cli.rs test to the renamed CLI path - cargo fmt --all: wraps a few lines the local dev-profile check didn't flag (CI's fmt job uses --check with no width override) - tests/caveman_cli.rs called the pre-rename `agentflare caveman compress` subcommand, which no longer exists after the ponytail/caveman -> optimize/flare-code rename; updated to `agentflare optimize output compress` (FlareAction::Output { action: OutputAction::Compress }, src/cli/optimize.rs) and renamed the test function to match Verified with the exact CI command set locally: - cargo fmt --all --check: clean - cargo clippy --locked --workspace --all-targets --all-features -- -D warnings -A unsafe_code -A clippy::pedantic: clean - cargo test --workspace: 543 passed, 1 ignored, 0 failed (plus all other workspace crates' test suites, all passing) * fix: address CodeRabbit findings on groom/standup/health - dependency_edges_for_items (was dependencies_for_items) now joins the dependency target's true state_group in SQL, instead of looking it up via a shortlist-scoped linear scan. Fixes a real bug: a completed dependency that fell outside the default state_group filter (e.g. "backlog,unstarted" excludes "completed") read back as "" from the old lookup and was treated as still-open, falsely blocking its dependent. - dependency_fanin_for_items counts dependents project-wide instead of only within the shortlist, fixing an undercounted depended_on_by_count when a dependent fell outside the shortlist/limit window. - standup's "done" filter and health's velocity bucketing now key off completed_at instead of updated_at. Editing an already-completed item (e.g. fixing a typo) bumps updated_at without re-completing it; using updated_at made old work spuriously reappear as "just done" or shift which week it counted toward. - window_weeks (health) and limit (groom) are now clamped (52, 200) instead of unbounded - an unbounded window_weeks drove a Vec allocation of that literal size while holding the backend DB lock. - Fixed two doc inaccuracies: read-recipe.md claimed item(get) returns labels (it doesn't - separate join table); staleness_days' schema description only mentioned groom's default, not standup/health's. 6 new regression tests, one per fix. cargo test --workspace: 548 passed, 1 ignored, 0 failed. cargo clippy --locked --workspace --all-targets --all-features: clean. cargo fmt --all --check: clean. * gitignore: exclude machine-local opencode.json and docs/ opencode.json carries per-machine MCP server paths and command overrides on top of the shared LSP config; untrack it so local additions stop showing as uncommitted repo changes. docs/ is machine-local doc-generation output, not project content. * gitignore: ignore /domain-research/, drop duplicate .worktrees/ entry
5 tasks
getappz
added a commit
that referenced
this pull request
Jul 17, 2026
…217) * worktree: close ambient CARGO_TARGET_DIR gap for agent builds and CI Per-worktree .cargo/config.toml isolation (item #133) never covered an ambient CARGO_TARGET_DIR env var, since Cargo's precedence always lets the env var override the config file. Strip CARGO_TARGET_DIR from the child env of every agent launched via run_launch_env/run_headless (agent_launch.rs), and add a CI job that fails the build if the var is ever set project-wide. * test(agent_launch): use printf instead of echo -n for portability macOS's /bin/sh doesn't treat -n as a flag (that's a bash builtin behavior), so echo -n printed the literal "-n" into the marker file and failed the new CARGO_TARGET_DIR-stripping regression test on CI's macos-latest runner. * ci: re-pin dtolnay/rust-toolchain to current stable SHA dtolnay/rust-toolchain force-pushes its stable branch on every Rust release rather than tagging, so a SHA pinned to it eventually falls off the branch's history. zizmor's impostor-commit audit was flagging the stale pin (pre-existing on master since 2026-07-07, unrelated to this PR) as a supply-chain risk. Re-pinned all three occurrences (ci.yml clippy/fmt jobs, ppa-publish.yml) to stable's current HEAD. * fix(ci,launch): guard vars.CARGO_TARGET_DIR, keep env overrides from reintroducing it, serialize env-mutating test
This was referenced Jul 21, 2026
getappz
added a commit
that referenced
this pull request
Jul 22, 2026
…299) * feat(worktree): share sccache across worktrees when available (#133) Wires rustc-wrapper=sccache + SCCACHE_BASEDIRS into each worktree's isolated .cargo/config.toml (soft skip when sccache isn't on PATH), so registry-dep compiles still hit cache across sibling worktrees even though local-crate target dirs stay isolated. Documents the build-isolation setup and the remaining ambient-env gap in AGENTS.md. Agentflare-Agent: claude-code_2-1-216_agent Agentflare-Branch: HEAD * fix(worktree): escape SCCACHE_BASEDIRS as a TOML basic string; dedupe AGENTS.md section TOML literal strings ('...') can't escape a single quote, so a worktree path containing one (e.g. a Windows username like John's) produced invalid .cargo/config.toml. Switch to a basic string with backslashes and double quotes escaped. Also merges the new sccache doc sentence into the existing 'Cargo target-dir isolation' AGENTS.md section instead of duplicating it. Agentflare-Agent: claude-code_2-1-216_agent Agentflare-Branch: task/133 Agentflare-Item: 133
5 tasks
getappz
added a commit
that referenced
this pull request
Jul 25, 2026
…#322) remove_worktree_dir's existing retry loop and cmd /c rmdir fallback both only clear a transient in-use lock (e.g. item #302's rust-analyzer case). Neither touches a genuine ACL denial, which is item #267's actual failure mode: cargo's own target/*/.fingerprint/* files can end up ACL-restricted, not merely open, and no amount of retrying clears that. Adds one more fallback before giving up: icacls /grant <user>:F /T resets ownership access recursively, then one final remove_dir_all attempt. No-op (and thus never destructive) when the real problem was actually an in-use lock the earlier retries already cleared. Considered switching to git-parsec's shared_cache symlink strategy instead (share target/ across worktrees so there's nothing per-worktree to get ACL-locked in the first place) -- rejected: this codebase already hit and fixed the exact correctness bug that would reintroduce (item #139, cargo #12516/#14053/#7740 -- a shared CARGO_TARGET_DIR's fingerprint hash omits the worktree path, so two worktrees of different branches silently reuse each other's stale local crate artifacts). isolate_worktree_target_dir's per-worktree isolation is deliberate, not an oversight; sccache (item #133) already covers the safe part of cross-worktree cache sharing (registry deps, hash-keyed). Agentflare-Agent: claude-code_2-1-219_agent Agentflare-Branch: task/267 Agentflare-Item: 267
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.
crates.io rejects publishes without a description; sibling crates
already carry both fields.
Summary by CodeRabbit