Skip to content

fix(gateway-registry): add description and repository to manifest - #133

Merged
getappz merged 1 commit into
masterfrom
fix/gateway-registry-manifest
Jul 11, 2026
Merged

fix(gateway-registry): add description and repository to manifest#133
getappz merged 1 commit into
masterfrom
fix/gateway-registry-manifest

Conversation

@getappz

@getappz getappz commented Jul 11, 2026

Copy link
Copy Markdown
Owner

crates.io rejects publishes without a description; sibling crates
already carry both fields.

Summary by CodeRabbit

  • Documentation
    • Added package description and repository information to improve project metadata visibility.

crates.io rejects publishes without a description; sibling crates
already carry both fields.
@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: e4204376-f0f5-4404-914d-9fb8c762b3e6

📥 Commits

Reviewing files that changed from the base of the PR and between e5064fd and 5a55cfd.

📒 Files selected for processing (1)
  • crates/gateway-registry/Cargo.toml

📝 Walkthrough

Walkthrough

The gateway-registry package manifest now includes a description and repository URL, while retaining its MIT license metadata.

Changes

Gateway Registry Metadata

Layer / File(s) Summary
Package manifest metadata
crates/gateway-registry/Cargo.toml
Adds package description and repository fields alongside the existing MIT license.

Estimated code review effort: 1 (Trivial) | ~2 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description is too minimal and omits the required Summary, Test plan, and Notes for reviewers sections. Expand it to the template with a Summary, a concrete test plan, and reviewer notes including risks and backwards compatibility.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly names the main change: adding manifest description and repository metadata.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/gateway-registry-manifest

Comment @coderabbitai help to get the list of available commands.

@getappz
getappz merged commit 6d1b85f into master Jul 11, 2026
10 checks passed
@getappz
getappz deleted the fix/gateway-registry-manifest branch July 11, 2026 06:42
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
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
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
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant