docs: the rules stop asserting things that are no longer true - #1853
Conversation
|
Warning Review limit reached
Next review available in: 7 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe change updates consumer-directory policy, removes an issue-based rollout step, removes the polyglot rules document, and aligns agent and architecture guidance with hand-written serde wire types and RHI references. ChangesOperating Guidance Cleanup
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
60eacd6 to
6eaeeca
Compare
6eaeeca to
cae2e51
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/architecture/adapter-authoring.md`:
- Line 485: Update the adapter coverage requirements in the documentation
section containing “subprocesses” to reflect the current policy: new adapters
use helper processes in Python only, do not use Deno or polyglot subprocess
machinery, and use hand-written serialization without schemas or
packages/escalate/schemas/. Remove stale references to polyglot.md and
related-document guidance while preserving the surrounding coverage guidance.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: b6c38621-97d4-40e4-bce2-b6ca74f192e6
📒 Files selected for processing (6)
.claude/agents/linux-media-expert.md.claude/agents/polyglot-ipc-expert.md.claude/rules/polyglot.mddocs/architecture/adapter-authoring.mddocs/architecture/adapter-runtime-integration.mddocs/architecture/subprocess-rhi-parity.md
💤 Files with no reviewable changes (2)
- .claude/rules/polyglot.md
- docs/architecture/subprocess-rhi-parity.md
Three claims a session reads as current fact and acts on. CLAUDE.md and the rule files load as instruction rather than as claims to verify, so nothing prompts a session to check them — a stale line there is worse than a stale line in a doc. **The move.** `packages/` and `examples/` were slated to move to `tatolab/streamlib-packages` (#1672). That ticket predates the Python-forward pivot, which superseded the intent — the owner closed it having done what they wanted from it, and the trees stay. Four places still said otherwise, and I sequenced the consumer port behind a move that is not coming. **The reference.** CLAUDE.md called the consumer trees reference material for parity — "how processors are actually written". True before the pivot, the opposite of true now: each is written against the deleted identity grammar, the deleted schema layer, `streamlib.yaml` manifests and the package-as-distributable shape the wheel replaced. What survives in them is logic, not form — how a codec was wired to the RHI, not how to declare a processor. The bullet now says that. **The polyglot rule.** Deleted whole. Every bullet was dead or duplicated: hosting-is-STOP-WORK is `placement.md`'s, Python-is-the-sole-runtime is ARCHITECTURE's §Language SDKs & parity, and the helper-process Vulkan carve-out is already `rhi.md`'s last bullet verbatim. The fourth — "a schema edit is followed by `cargo xtask generate-schemas`" — names a subcommand that does not exist; it died with the schema layer, so a session obeying the rule gets an error and has to work out why. Its five inbound links repoint to `rhi.md`, which is where the surviving constraint lives. `polyglot-ipc-expert` carried the same dead recipe. Replaced with what the tree actually does: the escalate wire types are hand-written serde structs in `subprocess_escalate_wire_types/`, the helper builds the same documents as plain Python dicts, so serde's encoding *is* the agreement, and `escalate_wire_encoding_tests.rs` holds the vectors. No codegen, no schema file. Nothing is replaced with a new prediction. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Acted on the The
That last row is why this belonged in this PR rather than a follow-up: line 502 read "per Not fixed, and deliberately: the rot is wider than that section. |
cae2e51 to
5cbe05e
Compare
Summary
Three claims that a session reads as current fact and acts on.
CLAUDE.mdand the rule files load as instruction rather than as claims to verify — nothing prompts a session to check them, which makes a stale line there worse than a stale line in a doc. All three were caught by acting on them and hitting the wall.1. The move
packages/andexamples/were slated to move totatolab/streamlib-packages(#1672). That ticket predates the Python-forward pivot, which superseded the intent — it closed having served its purpose, and the trees stay.CLAUDE.md:99tatolab/streamlib-packages(#1672)"docs/plan/OPERATING-MODEL.md:296.claude/scripts/ship-change-removed-gate.sh:43.claude/scripts/tests/ship-change-removed-gate.test.sh:190I sequenced the consumer port behind that move before finding out it wasn't coming.
2. The reference
CLAUDE.mdcalled the consumer trees reference material for parity — "how processors are actually written, which API surfaces real code exercises." True before the pivot, the opposite of true now: each is written against the deleted identity grammar, the deleted schema layer,streamlib.yamlmanifests, and the package-as-distributable shape the wheel replaced.A session reading
packages/camerato learn how a processor is declared learns the model #1839 / #1840 / #1851 just finished deleting. What survives is logic, not form — you'd readpackages/h264to see how H.264 was wired to the RHI, never to see how to declare a processor.3. The polyglot rule — deleted whole
Every bullet in
.claude/rules/polyglot.mdwas dead or already owned elsewhere:placement.mdowns itARCHITECTURE.md§Language SDKs & parityrhi.md's last bullet, verbatimcargo xtask generate-schemasThe fourth is the one that would bite:
generate-schemasdied with the schema layer, so a session obeying the rule gets an error and has to work out why. Its five inbound links (subprocess-rhi-parity.md,adapter-authoring.md×2,adapter-runtime-integration.md×2) all cited it for the import-side carve-out and now point atrhi.md, where that constraint actually lives — four of them already listedrhi.mdon the adjacent line.polyglot-ipc-expertcarried the same dead recipe. Replaced with what the tree does: the escalate wire types are hand-written serde structs insubprocess_escalate_wire_types/, the helper builds the same documents as plain Python dicts, so serde's encoding is the agreement between the halves, andescalate_wire_encoding_tests.rsholds the round-trip vectors. No codegen, no schema file.Nothing is replaced with a new prediction.
Test plan
bash .claude/scripts/tests/ship-change-removed-gate.test.sh— 37/37 pass.grep -rn "rules/polyglot"across the repo — no dangling references.grep -rn "xtask generate-schemas"outsidedocs/plan/changes/archive/— none.streamlib-packages/out-of-repo/moving outacrossCLAUDE.md,.claude/anddocs/— none.Docs, rules and shell comments only — no code, no gate behaviour change.
Notes for owner
1.
.claude/rules/flow.mdsays a session never edits the rules it is itself using.polyglot.mdwas loaded in this session (it is path-scoped to the wheel and ipc-types). Deleting it was your explicit instruction, so recording the exception rather than pretending the rule didn't apply.2. Pre-existing rot I did not rewrite.
docs/architecture/adapter-authoring.md:483+describes making adapters reachable from "Python and Deno subprocesses" viastreamlib-python-native/streamlib-deno-nativecdylibs. Those cdylibs and the Deno SDK were deleted by #1715 — adapters are statically linked into the wheel now. I removed the dead link but left the passage: a correct rewrite needs the current adapter-distribution story, which is more than a link fix.3.
packages/escalate/schemas/*.yamlandpackages/core/schemas/*.yamlhave no reader. 9 YAML files describing the deleted schema layer. Left alone —packages/edits are deny-ruled and their disposition isn't ruled yet.4. The
polyglot-ipc-expertagent keeps its name. Its subject — helper-process IPC, escalate ops, the parent↔helper bridge, iceoryx2 — is entirely live; only the word is stale. Renaming an agent is its own PR underflow.md.5. One adjacent CLAUDE.md line untouched. It still says a broken consumer "is upgrade backlog for a later consumer-upgrade session run inside that consumer," which presumes an in-place fix. For
packages/cameraandpackages/displayit isn't —media-builtinsalready supersedes them and the wheel ships them asrt.add(CameraSource). Their disposition is deletion. Left alone because the per-package dispositions aren't ruled.🤖 Generated with Claude Code
Summary by CodeRabbit