Adopt hyalo project best practices (iter-23)#28
Conversation
Quality-and-consistency pass aligning hoppy with the sibling ../hyalo project's settled patterns. No new bunny.net API surface. - Hyalo schema: rich .hyalo.toml with type schemas (iteration, research, backlog, docs, decision) + saved views (planned, stale-in-progress, completed-with-todos, missing-status, missing-type, open-tasks, orphans). - Cargo workspace: hoist shared deps to [workspace.dependencies], add [workspace.package], switch to resolver = "3", add optimised [profile.release] (lto + codegen-units=1 + panic=abort + strip), forbid unsafe_code at the workspace level. Pedantic clippy deferred. - AI_NOTICE at repo root + Unreleased section in CHANGELOG. - Dogfooding playbook + cleanup-script skeleton (hoppy-test- prefix convention). - CLI command-tree audit doc + LLM-friendly help-text style guide. - decision-log entries: bunny-api-* naming rationale, verb conventions (create/add/update/delete/remove/list/get), workspace hygiene, and pedantic-deferred decision. - CLAUDE.md: Agents directive, expanded hyalo CLI usage, Dogfooding section, streaming/perf hint, cross-platform note, fixed task-checkbox spec to "- [ ] Task". - Backlog seeds: drill-down-hints (hyalo iter-107 pattern), lean README. - Drive-by fix: bunny-api-containers Protocol enum accepts both PascalCase and lowercase (API is inconsistent on response casing). Deferred to follow-ups: rename pass with aliases, --dry-run audit, help-text template applied across the long tail, /review-rust audit, crates/hoppy-cli move (iter-25 pre-req), live dogfooding session. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Free Run ID: 📒 Files selected for processing (7)
📝 WalkthroughWalkthroughThis PR centralizes Cargo workspace package/dependency configuration, converts crate manifests to workspace-managed references, adds a Hyalo-compatible knowledgebase schema and multiple CLI/documentation/dogfooding artifacts, and adjusts bunny-api-containers Protocol serde deserialization with a unit test. ChangesCargo workspace centralization and Rust enhancement
Knowledgebase schema and project governance
🎯 3 (Moderate) | ⏱️ ~20 minutes
Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
There was a problem hiding this comment.
Pull request overview
Aligns hoppy’s repository hygiene, workspace configuration, and knowledgebase conventions with the sibling hyalo project’s established patterns, while also addressing a real API inconsistency in bunny-api-containers enum casing.
Changes:
- Adopt Cargo workspace “best practices”:
[workspace.package],[workspace.dependencies],resolver = "3", workspace rust lints, and an optimized release profile. - Introduce a richer Hyalo knowledgebase schema (
.hyalo.toml) plus substantial KB documentation (dogfooding playbook, CLI help-text style guide, command tree, iteration/backlog notes). - Make
bunny-api-containers::Protocoldeserialize both PascalCase and lowercase variants, with added unit tests.
Reviewed changes
Copilot reviewed 26 out of 26 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
Cargo.toml |
Converts to workspace-oriented configuration (deps/package inheritance, resolver v3, lints, release profile). |
CHANGELOG.md |
Expands Unreleased section and aligns with Keep-a-Changelog conventions/links. |
AI_NOTICE |
Adds AI-generated code disclosure notice. |
CLAUDE.md |
Updates contributor/agent workflow guidance and adds dogfooding + help-text guidance. |
.hyalo.toml |
Adds Hyalo schemas (iteration/research/backlog/docs/decision) and saved views for KB hygiene. |
xtask/Cargo.toml |
Switches to workspace-inherited package metadata and deps. |
crates/bunny-api-core/Cargo.toml |
Inherits version/edition/license/repository and workspace deps. |
crates/bunny-api-compute/Cargo.toml |
Inherits version/edition/license/repository and workspace deps. |
crates/bunny-api-containers/Cargo.toml |
Inherits version/edition/license/repository and workspace deps. |
crates/bunny-api-database/Cargo.toml |
Inherits version/edition/license/repository and workspace deps. |
crates/bunny-api-recording/Cargo.toml |
Inherits version/edition/license/repository and workspace deps. |
crates/bunny-api-shield/Cargo.toml |
Inherits version/edition/license/repository and workspace deps. |
crates/bunny-api-storage/Cargo.toml |
Inherits version/edition/license/repository and workspace deps. |
crates/bunny-api-stream/Cargo.toml |
Inherits version/edition/license/repository and workspace deps. |
crates/bunny-api-containers/src/types.rs |
Adds serde aliases + tests so Protocol accepts inconsistent API response casing. |
hoppy-knowledgebase/decision-log.md |
Records decisions about crate naming, CLI verbs, lint strategy, and workspace hoisting. |
hoppy-knowledgebase/cli/help-text-style.md |
Adds an LLM-friendly help-text template/style guide. |
hoppy-knowledgebase/cli/command-tree.md |
Adds a generated CLI command surface map for audits/prompts. |
hoppy-knowledgebase/dogfooding/dogfooding-playbook.md |
Adds a safe real-API dogfooding loop and conventions. |
hoppy-knowledgebase/dogfooding/cleanup.sh |
Adds a (currently placeholder) cleanup script scaffold for prefixed resources. |
hoppy-knowledgebase/iterations/iteration-23-hyalo-best-practices.md |
Adds the iteration plan/write-up for this hygiene pass. |
hoppy-knowledgebase/iterations/iteration-24-container-logs-tunnel.md |
Adds a planned iteration spec for container logs via syslog+tunnel. |
hoppy-knowledgebase/iterations/iteration-25-publish.md |
Adds a planned iteration spec for publishing/release pipeline upgrades. |
hoppy-knowledgebase/backlog/drill-down-hints.md |
Backlog item for “drill-down hints” output pattern. |
hoppy-knowledgebase/backlog/lean-readme.md |
Backlog item for converting README into a lean landing page. |
hoppy-knowledgebase/notes/ralph-loop-false-failed-exits.md |
Adds an investigation note about false failure signals in background iteration runs. |
| `hoppy-knowledgebase/dogfooding/cleanup.sh` is the single tool that walks every API surface, lists resources matching `hoppy-test-`, and deletes them. It is **idempotent** — safe to run before AND after a session. It must: | ||
|
|
||
| - list-and-skip anything not matching the prefix (defence in depth — never delete an unprefixed resource even if requested) | ||
| - print what it is about to delete and require `--yes` to proceed (default is dry-run) | ||
| - exit non-zero if any deletion fails so CI can catch leaks | ||
|
|
||
| The script is intentionally a shell script (not Rust) so anyone can read and audit it. It's the only polyglot tool in the repo and lives only in the knowledgebase, not the build. |
| DRY_RUN=1 | ||
| for arg in "$@"; do | ||
| case "$arg" in | ||
| --yes|-y) DRY_RUN=0 ;; | ||
| --prefix=*) PREFIX="${arg#--prefix=}" ;; | ||
| *) echo "unknown arg: $arg" >&2; exit 2 ;; | ||
| esac | ||
| done |
| - No `.unwrap()` / `.expect()` outside of tests — use `anyhow::Context` with `?` | ||
| - No `clone()` unless the borrow checker demands it — try references first | ||
| - No unnecessary `pub` on struct fields | ||
| - All code stays in Rust — no polyglot tooling (no Bun, Node, Python scripts) |
| bunny-api-compute = { path = "crates/bunny-api-compute", version = "0.1.0" } | ||
| bunny-api-containers = { path = "crates/bunny-api-containers", version = "0.1.0" } | ||
| bunny-api-core = { path = "crates/bunny-api-core", version = "0.1.0" } | ||
| bunny-api-database = { path = "crates/bunny-api-database", version = "0.1.0" } | ||
| bunny-api-recording = { path = "crates/bunny-api-recording", version = "0.1.0" } | ||
| bunny-api-shield = { path = "crates/bunny-api-shield", version = "0.1.0" } | ||
| bunny-api-storage = { path = "crates/bunny-api-storage", version = "0.1.0" } | ||
| bunny-api-stream = { path = "crates/bunny-api-stream", version = "0.1.0" } | ||
| hoppy = { path = ".", version = "0.1.0" } |
Resolve Copilot and CodeRabbit findings on PR #28: - cleanup.sh: refuse --yes since deletion is unimplemented; add DRY_RUN-respecting comment template - dogfooding-playbook.md: relabel cleanup script as a skeleton with manual fallback steps; replace .invalid TLD example with a real example.com note - CLAUDE.md: clarify Rust-only rule applies to build/runtime, not knowledgebase helper scripts - Cargo.toml: drop redundant version field on internal workspace path deps so workspace.package version bumps stay single-edit - backlog/drill-down-hints.md: switch wikilink to Obsidian-style absolute path - iteration-25-publish.md: fix duplicated "0.1.0 vs 0.1.0" alternative to "0.1.0 vs 1.0.0" Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Status flipped to `completed`. The Notes section already enumerates what landed vs. what was deferred to backlog/follow-up iterations; checkbox state matches the merged diff so no per-item ticks were needed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Quality-and-consistency pass aligning hoppy with the sibling
../hyaloproject's settled patterns. No new bunny.net API surface..hyalo.tomlwith type schemas (iteration,research,backlog,docs,decision) + 7 saved views.[workspace.dependencies], add[workspace.package],resolver = "3", optimised[profile.release](lto,codegen-units = 1,panic = "abort",strip),unsafe_code = "forbid"at the workspace level. Pedantic clippy deferred (separate flood-and-fix iteration).AI_NOTICE,CHANGELOG.mdUnreleased section, dogfooding playbook + cleanup-script skeleton (withhoppy-test-prefix convention), CLI command-tree audit, LLM-friendly help-text style guide, decision-log entries codifying verb conventions and naming rationale.- [ ] Taskcheckbox spec.bunny-api-containersProtocolenum now accepts both PascalCase and lowercase (API is inconsistent on response casing); +5 unit tests.Deferred to follow-ups (filed in
hoppy-knowledgebase/backlog/or noted in the iteration plan): rename pass withalias = "<old>",--dry-runaudit across destructive commands, help-text template applied across the long tail,/review-rust allaudit,crates/hoppy-cli/move (iter-25 pre-req), live dogfooding session, drill-down hints (hyalo iter-107 pattern), lean README pass.Test plan
cargo fmtcargo clippy --workspace --all-targets -- -D warningscargo test --workspace --quiethyalo lint hoppy-knowledgebase/iterations/iteration-23-hyalo-best-practices.md— cleantarget/release/hoppy --helpexercises all top-level commands (used to generatecli/command-tree.md)🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Bug Fixes
Documentation
Chores