Skip to content

Establish workspace architecture baseline and CI scopes#6758

Open
TheHypnoo wants to merge 6 commits into
mainfrom
chore/workspace-architecture-baseline-phase1
Open

Establish workspace architecture baseline and CI scopes#6758
TheHypnoo wants to merge 6 commits into
mainfrom
chore/workspace-architecture-baseline-phase1

Conversation

@TheHypnoo

@TheHypnoo TheHypnoo commented Jul 22, 2026

Copy link
Copy Markdown
Member

Summary

  • make all 78 effective Cargo workspace members explicit and reduce default-members from 58 packages to the perry product
  • add a reproducible workspace architecture inventory, structural baseline, crate policy, and CI audit guards
  • split Clippy into explicit product and 69-package Linux host-compatible scopes without relying on Cargo defaults
  • centralize Linux platform exclusions across Clippy, cargo-test scope selection, and coverage
  • update contributor architecture and build documentation to match the current crate taxonomy

Architecture baseline

  • workspace members: 78 → 78 (all explicit)
  • explicit default members: 58 → 1
  • default dependency closure: 60 → 18
  • Perry CLI dependency closure: 18 → 18
  • reviewed decisions: 42 keep, 29 externalize, 3 merge, 3 review, 1 remove

Validation

  • python3 scripts/workspace_architecture.py --self-test
  • python3 scripts/workspace_architecture.py --check --print-summary
  • cargo metadata --no-deps --format-version 1
  • cargo fmt --all -- --check
  • cargo check -p perry
  • cargo clippy -p perry --bins
  • host-compatible Clippy scope (69 packages)
  • workflow YAML parse
  • git diff --check

Follow-up

Phase 2 can use this baseline to consolidate shallow internal crates, beginning with the reviewed perry-typesperry-hir merge while preserving the CLI closure and CI coverage.

Summary by CodeRabbit

  • New Features

    • Added the HTTP server crate to the workspace and updated shared dependency wiring.
  • Build & Quality

    • Introduced a policy-driven workspace architecture baseline with automated auditing.
    • Coverage generation and CI clippy/test targeting now derive include/exclude rules from the shared architecture policy instead of hardcoded lists.
  • Documentation

    • Added crate policy guidance and refreshed architecture/build/test contributor docs to match the new workspace structure.
  • Refactor

    • Consolidated shared type definitions into the HIR crate and removed the standalone types crate.

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 85cffd31-71f7-4fcc-b959-1aaea515f10b

📥 Commits

Reviewing files that changed from the base of the PR and between 13f9163 and 8372188.

📒 Files selected for processing (2)
  • crates/perry-codegen/src/stmt/loops.rs
  • crates/perry-codegen/src/stmt/masked_window_region.rs
🚧 Files skipped from review as they are similar to previous changes (1)
  • crates/perry-codegen/src/stmt/loops.rs

📝 Walkthrough

Walkthrough

Adds centralized workspace architecture governance, policy-driven CI scopes, explicit Cargo workspace wiring, removal of perry-types, and migration of compiler type definitions into perry-hir::types.

Changes

Workspace architecture governance

Layer / File(s) Summary
Architecture policy and audit tooling
workspace-architecture.json, scripts/workspace_architecture.py, docs/src/contributing/crate-policy.md
Defines crate classifications, dependency constraints, CI exclusions, baselines, audit checks, reports, CLI modes, and contributor procedures.
Workspace membership and dependency wiring
Cargo.toml, crates/*/Cargo.toml
Adds the HTTP server workspace crate, removes perry-types membership and dependencies, adjusts default members, and standardizes workspace dependency declarations.
Policy-driven CI scopes
.github/workflows/*, scripts/ci_test_scope.py
Derives test, coverage, and Clippy exclusions from shared policy and runs architecture validation in CI.
HIR-owned compiler types
crates/perry-hir/*, crates/perry-codegen/*, crates/perry-transform/*, crates/perry/src/*
Moves type, identifier, object, function, and parameter representations to perry-hir::types across compiler pipelines, code generators, transforms, caches, and tests.
Contributor documentation and release notes
docs/src/*, docs/po/*, CLAUDE.md, changelog.d/*
Updates architecture, build, testing, localization, and changelog references for the new workspace and type layout.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CI
  participant workspace_architecture.py
  participant CargoMetadata
  participant workspace-architecture.json
  participant Cargo
  CI->>workspace_architecture.py: Run audit or print scoped exclusions
  workspace_architecture.py->>CargoMetadata: Inspect workspace members and dependencies
  workspace_architecture.py->>workspace-architecture.json: Load classifications, exclusions, and baselines
  workspace_architecture.py-->>CI: Return audit status or package scope
  CI->>Cargo: Run scoped Clippy, tests, or coverage
Loading

Possibly related PRs

  • PerryTS/perry#6639 — Both changes modify WASM emitter handling in crates/perry-codegen-wasm/src/emit/compile.rs.
  • PerryTS/perry#6708 — Both changes touch WASM export/function-resolution helpers in crates/perry-codegen-wasm/src/emit/locals.rs.
  • PerryTS/perry#6754 — Both changes modify Clippy workflow logic in .github/workflows/test.yml.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately summarizes the main change: establishing workspace architecture baselines and CI scopes.
Description check ✅ Passed The description covers the main summary, baseline, validation, and follow-up, but omits explicit template sections like Changes and Related issue.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
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 docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/workspace-architecture-baseline-phase1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
scripts/workspace_architecture.py (1)

56-58: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Reject unsupported policy schemas.

schema_version is never checked, so a future v2 policy would silently be interpreted with v1 rules. Validate version 1 before returning the policy.

Proposed fix
 def load_policy():
     with POLICY_PATH.open(encoding="utf-8") as handle:
-        return json.load(handle)
+        policy = json.load(handle)
+    if policy.get("schema_version") != 1:
+        raise ValueError("unsupported workspace architecture schema version")
+    return policy
🤖 Prompt for 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.

In `@scripts/workspace_architecture.py` around lines 56 - 58, Update load_policy
to validate the loaded policy’s schema_version before returning it, accepting
only version 1 and rejecting unsupported or missing versions instead of
interpreting them with v1 rules.
🤖 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 @.github/workflows/coverage.yml:
- Around line 52-67: Update the coverage workflow’s initial `cargo llvm-cov
--workspace` invocation to include `--ignore-run-fail`, ensuring report
generation continues when tests fail. Remove `--no-fail-fast` from both `cargo
llvm-cov report` commands while preserving the existing exclusion arguments and
output formats.

---

Nitpick comments:
In `@scripts/workspace_architecture.py`:
- Around line 56-58: Update load_policy to validate the loaded policy’s
schema_version before returning it, accepting only version 1 and rejecting
unsupported or missing versions instead of interpreting them with v1 rules.
🪄 Autofix (Beta)

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: 7312682e-77dd-45b7-ba8d-8c31ae7ad1b6

📥 Commits

Reviewing files that changed from the base of the PR and between de8b8b4 and 932942c.

📒 Files selected for processing (12)
  • .github/workflows/coverage.yml
  • .github/workflows/test.yml
  • Cargo.toml
  • changelog.d/6758-workspace-architecture.md
  • crates/perry-ext-http/Cargo.toml
  • docs/src/SUMMARY.md
  • docs/src/contributing/architecture.md
  • docs/src/contributing/building.md
  • docs/src/contributing/crate-policy.md
  • scripts/ci_test_scope.py
  • scripts/workspace_architecture.py
  • workspace-architecture.json

Comment thread .github/workflows/coverage.yml Outdated
* refactor(hir): consolidate compiler types

* chore(changelog): add fragment for #6760

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 `@changelog.d/6760-merge-types-into-hir.md`:
- Line 1: Expand the changelog entry to document the root cause of consolidating
compiler type definitions, identify the affected crate or module paths including
perry_hir::types and the removed standalone types crate, and record the
validation performed, including the dependency reduction verification.
🪄 Autofix (Beta)

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: 2b6fae94-b704-4a73-abc4-ff84871485f3

📥 Commits

Reviewing files that changed from the base of the PR and between cf42f1a and 7f33783.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (247)
  • CLAUDE.md
  • Cargo.toml
  • changelog.d/6760-merge-types-into-hir.md
  • crates/perry-codegen-arkts/Cargo.toml
  • crates/perry-codegen-arkts/src/inline.rs
  • crates/perry-codegen-arkts/src/lib.rs
  • crates/perry-codegen-arkts/src/tests.rs
  • crates/perry-codegen-arkts/src/tests/containers.rs
  • crates/perry-codegen-arkts/src/tests/mutations.rs
  • crates/perry-codegen-arkts/src/tests/widgets.rs
  • crates/perry-codegen-arkts/src/types.rs
  • crates/perry-codegen-arkts/src/view_builders.rs
  • crates/perry-codegen-arkts/src/widget_walks.rs
  • crates/perry-codegen-arkts/tests/phase2_full_app_smoke.rs
  • crates/perry-codegen-js/Cargo.toml
  • crates/perry-codegen-js/src/emit/mod.rs
  • crates/perry-codegen-swiftui/Cargo.toml
  • crates/perry-codegen-wasm/Cargo.toml
  • crates/perry-codegen-wasm/src/emit/closures.rs
  • crates/perry-codegen-wasm/src/emit/compile.rs
  • crates/perry-codegen-wasm/src/emit/expr/calls.rs
  • crates/perry-codegen-wasm/src/emit/locals.rs
  • crates/perry-codegen-wasm/src/emit/mod.rs
  • crates/perry-codegen/Cargo.toml
  • crates/perry-codegen/src/boxed_vars.rs
  • crates/perry-codegen/src/codegen/artifacts.rs
  • crates/perry-codegen/src/codegen/boxed_locals.rs
  • crates/perry-codegen/src/codegen/closure.rs
  • crates/perry-codegen/src/codegen/closure_collect.rs
  • crates/perry-codegen/src/codegen/entry.rs
  • crates/perry-codegen/src/codegen/func_registry.rs
  • crates/perry-codegen/src/codegen/function.rs
  • crates/perry-codegen/src/codegen/method.rs
  • crates/perry-codegen/src/codegen/mod.rs
  • crates/perry-codegen/src/codegen/module_globals_emit.rs
  • crates/perry-codegen/src/codegen/opts.rs
  • crates/perry-codegen/src/codegen/typed_abi.rs
  • crates/perry-codegen/src/collectors/clamp_detect.rs
  • crates/perry-codegen/src/collectors/class_accessors.rs
  • crates/perry-codegen/src/collectors/closures.rs
  • crates/perry-codegen/src/collectors/hir_facts.rs
  • crates/perry-codegen/src/collectors/pointer_locals.rs
  • crates/perry-codegen/src/collectors/scalar_method_dispatch.rs
  • crates/perry-codegen/src/collectors/scalar_methods.rs
  • crates/perry-codegen/src/collectors/this_as_value.rs
  • crates/perry-codegen/src/expr/array_methods.rs
  • crates/perry-codegen/src/expr/arrays_finds.rs
  • crates/perry-codegen/src/expr/bigint_set.rs
  • crates/perry-codegen/src/expr/calls/helpers.rs
  • crates/perry-codegen/src/expr/channel.rs
  • crates/perry-codegen/src/expr/compare.rs
  • crates/perry-codegen/src/expr/dyn_extern_i18n.rs
  • crates/perry-codegen/src/expr/env_clones.rs
  • crates/perry-codegen/src/expr/helpers.rs
  • crates/perry-codegen/src/expr/index_get.rs
  • crates/perry-codegen/src/expr/index_set.rs
  • crates/perry-codegen/src/expr/literals_vars.rs
  • crates/perry-codegen/src/expr/logical_collections.rs
  • crates/perry-codegen/src/expr/math_simple.rs
  • crates/perry-codegen/src/expr/mod.rs
  • crates/perry-codegen/src/expr/native_memory.rs
  • crates/perry-codegen/src/expr/new_dynamic.rs
  • crates/perry-codegen/src/expr/object_literal.rs
  • crates/perry-codegen/src/expr/pod_layout_constants.rs
  • crates/perry-codegen/src/expr/property_get.rs
  • crates/perry-codegen/src/expr/property_get/nullish_read_location_tests.rs
  • crates/perry-codegen/src/expr/property_set.rs
  • crates/perry-codegen/src/expr/proxy_reflect.rs
  • crates/perry-codegen/src/expr/shadow_slot.rs
  • crates/perry-codegen/src/expr/static_method.rs
  • crates/perry-codegen/src/lower_call/buffer_intrinsic.rs
  • crates/perry-codegen/src/lower_call/closure_analysis.rs
  • crates/perry-codegen/src/lower_call/console_promise.rs
  • crates/perry-codegen/src/lower_call/early_branches.rs
  • crates/perry-codegen/src/lower_call/extern_func.rs
  • crates/perry-codegen/src/lower_call/func_ref.rs
  • crates/perry-codegen/src/lower_call/native/mod.rs
  • crates/perry-codegen/src/lower_call/new.rs
  • crates/perry-codegen/src/lower_call/new_ctor_args.rs
  • crates/perry-codegen/src/lower_call/options/abort.rs
  • crates/perry-codegen/src/lower_call/property_get.rs
  • crates/perry-codegen/src/lower_call/scalar_method.rs
  • crates/perry-codegen/src/lower_string_method.rs
  • crates/perry-codegen/src/native_value/pod.rs
  • crates/perry-codegen/src/stmt/let_stmt.rs
  • crates/perry-codegen/src/stmt/loops.rs
  • crates/perry-codegen/src/stmt/unused_expr.rs
  • crates/perry-codegen/src/type_analysis.rs
  • crates/perry-codegen/src/type_analysis/numeric.rs
  • crates/perry-codegen/src/type_analysis/numeric/tests.rs
  • crates/perry-codegen/src/type_analysis/pod.rs
  • crates/perry-codegen/src/type_analysis/predicates.rs
  • crates/perry-codegen/src/type_analysis/refine.rs
  • crates/perry-codegen/src/type_analysis/strings.rs
  • crates/perry-codegen/src/type_analysis_class_fields.rs
  • crates/perry-codegen/src/type_analysis_facts.rs
  • crates/perry-codegen/src/type_analysis_net.rs
  • crates/perry-codegen/src/type_analysis_tests.rs
  • crates/perry-codegen/src/typed_shape.rs
  • crates/perry-codegen/tests/app_window_config_options.rs
  • crates/perry-codegen/tests/class_keys_gc_root.rs
  • crates/perry-codegen/tests/constructor_recursion.rs
  • crates/perry-codegen/tests/i64_spec_ternary_recursion.rs
  • crates/perry-codegen/tests/large_object_barriers.rs
  • crates/perry-codegen/tests/native_proof_buffer_views.rs
  • crates/perry-codegen/tests/native_proof_regressions.rs
  • crates/perry-codegen/tests/perry_builtin_name_collision.rs
  • crates/perry-codegen/tests/private_guard_declaring_class.rs
  • crates/perry-codegen/tests/shadow_slot_hygiene.rs
  • crates/perry-codegen/tests/static_symbol_hygiene.rs
  • crates/perry-codegen/tests/typed_feedback.rs
  • crates/perry-codegen/tests/typed_shape_descriptor.rs
  • crates/perry-codegen/tests/typed_shape_descriptors.rs
  • crates/perry-hir/Cargo.toml
  • crates/perry-hir/examples/stable_hash_cross_process.rs
  • crates/perry-hir/src/analysis.rs
  • crates/perry-hir/src/analysis/value_types.rs
  • crates/perry-hir/src/analysis/value_types_tests.rs
  • crates/perry-hir/src/destructuring/mod.rs
  • crates/perry-hir/src/destructuring/var_decl/alias_tracking.rs
  • crates/perry-hir/src/destructuring/var_decl/native_fetch.rs
  • crates/perry-hir/src/destructuring/var_decl/type_infer.rs
  • crates/perry-hir/src/dynamic_import.rs
  • crates/perry-hir/src/dynamic_import/tests.rs
  • crates/perry-hir/src/ir/decl.rs
  • crates/perry-hir/src/ir/expr.rs
  • crates/perry-hir/src/ir/module.rs
  • crates/perry-hir/src/ir/stmt.rs
  • crates/perry-hir/src/js_transform/cross_module_natives.rs
  • crates/perry-hir/src/js_transform/imports.rs
  • crates/perry-hir/src/js_transform/local_natives.rs
  • crates/perry-hir/src/jsx.rs
  • crates/perry-hir/src/lib.rs
  • crates/perry-hir/src/lower/closure_analysis.rs
  • crates/perry-hir/src/lower/const_fold_fn.rs
  • crates/perry-hir/src/lower/context.rs
  • crates/perry-hir/src/lower/decorators.rs
  • crates/perry-hir/src/lower/eval_super_scan.rs
  • crates/perry-hir/src/lower/expr_assign.rs
  • crates/perry-hir/src/lower/expr_call/array_only_methods.rs
  • crates/perry-hir/src/lower/expr_call/imported_array_methods.rs
  • crates/perry-hir/src/lower/expr_call/intrinsics/apply_call.rs
  • crates/perry-hir/src/lower/expr_call/intrinsics/eval_strict.rs
  • crates/perry-hir/src/lower/expr_call/intrinsics/native_arena.rs
  • crates/perry-hir/src/lower/expr_call/local_array_methods.rs
  • crates/perry-hir/src/lower/expr_call/module_class_static.rs
  • crates/perry-hir/src/lower/expr_call/module_static.rs
  • crates/perry-hir/src/lower/expr_call/native_module.rs
  • crates/perry-hir/src/lower/expr_call/post_args_dispatch.rs
  • crates/perry-hir/src/lower/expr_call/regex_string.rs
  • crates/perry-hir/src/lower/expr_call/static_receiver.rs
  • crates/perry-hir/src/lower/expr_call/textencoder.rs
  • crates/perry-hir/src/lower/expr_call/url_date_instance.rs
  • crates/perry-hir/src/lower/expr_function.rs
  • crates/perry-hir/src/lower/expr_member.rs
  • crates/perry-hir/src/lower/expr_member/member_tail.rs
  • crates/perry-hir/src/lower/expr_misc.rs
  • crates/perry-hir/src/lower/expr_new.rs
  • crates/perry-hir/src/lower/expr_new/helpers.rs
  • crates/perry-hir/src/lower/expr_new/member.rs
  • crates/perry-hir/src/lower/expr_new/non_ident.rs
  • crates/perry-hir/src/lower/expr_object.rs
  • crates/perry-hir/src/lower/for_head.rs
  • crates/perry-hir/src/lower/locals.rs
  • crates/perry-hir/src/lower/lower_expr/arm_ident.rs
  • crates/perry-hir/src/lower/lower_expr/arm_unary.rs
  • crates/perry-hir/src/lower/lower_expr/helpers.rs
  • crates/perry-hir/src/lower/lower_expr/reactive_text.rs
  • crates/perry-hir/src/lower/lower_module_fn.rs
  • crates/perry-hir/src/lower/lowering_context.rs
  • crates/perry-hir/src/lower/misc.rs
  • crates/perry-hir/src/lower/module_decl.rs
  • crates/perry-hir/src/lower/module_decl/namespace.rs
  • crates/perry-hir/src/lower/shared_mutable_capture.rs
  • crates/perry-hir/src/lower/stmt.rs
  • crates/perry-hir/src/lower/stmt_loops.rs
  • crates/perry-hir/src/lower/tests.rs
  • crates/perry-hir/src/lower/type_widening.rs
  • crates/perry-hir/src/lower/typed_parse.rs
  • crates/perry-hir/src/lower/widget_decl/reactive_animate.rs
  • crates/perry-hir/src/lower_decl/block.rs
  • crates/perry-hir/src/lower_decl/body_stmt.rs
  • crates/perry-hir/src/lower_decl/class_captures.rs
  • crates/perry-hir/src/lower_decl/class_computed.rs
  • crates/perry-hir/src/lower_decl/class_decl.rs
  • crates/perry-hir/src/lower_decl/class_members.rs
  • crates/perry-hir/src/lower_decl/fn_decl.rs
  • crates/perry-hir/src/lower_decl/helpers.rs
  • crates/perry-hir/src/lower_decl/interface_decl.rs
  • crates/perry-hir/src/lower_decl/private_members.rs
  • crates/perry-hir/src/lower_decl/typeof_narrow.rs
  • crates/perry-hir/src/lower_patterns.rs
  • crates/perry-hir/src/lower_types.rs
  • crates/perry-hir/src/lower_types/extract.rs
  • crates/perry-hir/src/monomorph/inference_lookup.rs
  • crates/perry-hir/src/monomorph/mod.rs
  • crates/perry-hir/src/monomorph/substitute_type.rs
  • crates/perry-hir/src/monomorph/tests.rs
  • crates/perry-hir/src/stable_hash/mod.rs
  • crates/perry-hir/src/stable_hash/tests.rs
  • crates/perry-hir/src/stable_hash/types.rs
  • crates/perry-hir/src/types.rs
  • crates/perry-hir/tests/c262_parity.rs
  • crates/perry-hir/tests/cheerio_call_rewrite.rs
  • crates/perry-hir/tests/native_arena.rs
  • crates/perry-hir/tests/shape_inference.rs
  • crates/perry-transform/Cargo.toml
  • crates/perry-transform/src/async_to_generator.rs
  • crates/perry-transform/src/deforest/mod.rs
  • crates/perry-transform/src/finally_inline.rs
  • crates/perry-transform/src/generator/id_scan.rs
  • crates/perry-transform/src/generator/mod.rs
  • crates/perry-transform/src/generator/per_iteration.rs
  • crates/perry-transform/src/inline/analysis.rs
  • crates/perry-transform/src/inline/call_inliner.rs
  • crates/perry-transform/src/inline/closure_analysis.rs
  • crates/perry-transform/src/inline/exact_receivers.rs
  • crates/perry-transform/src/inline/factory_specialize.rs
  • crates/perry-transform/src/inline/imul.rs
  • crates/perry-transform/src/inline/mod.rs
  • crates/perry-transform/src/inline/substitute.rs
  • crates/perry-transform/src/state_desugar.rs
  • crates/perry-transform/src/unroll/escape_analysis.rs
  • crates/perry-transform/src/unroll/mod.rs
  • crates/perry-types/Cargo.toml
  • crates/perry/Cargo.toml
  • crates/perry/src/commands/compile/bootstrap.rs
  • crates/perry/src/commands/compile/collect_modules.rs
  • crates/perry/src/commands/compile/object_cache.rs
  • crates/perry/src/commands/compile/object_cache/object_cache_tests.rs
  • crates/perry/src/commands/compile/run_pipeline.rs
  • crates/perry/src/commands/compile/types.rs
  • crates/perry/src/commands/typecheck.rs
  • docs/po/de.po
  • docs/po/es.po
  • docs/po/fr.po
  • docs/po/id.po
  • docs/po/it.po
  • docs/po/ja.po
  • docs/po/ko.po
  • docs/po/messages.pot
  • docs/po/th.po
  • docs/po/vi.po
  • docs/po/zh-CN.po
  • docs/src/contributing/architecture.md
  • docs/src/contributing/building.md
  • workspace-architecture.json
💤 Files with no reviewable changes (10)
  • crates/perry-codegen/Cargo.toml
  • crates/perry-codegen-swiftui/Cargo.toml
  • crates/perry-codegen-arkts/Cargo.toml
  • crates/perry-codegen-js/Cargo.toml
  • crates/perry/Cargo.toml
  • crates/perry-codegen-wasm/Cargo.toml
  • crates/perry-transform/Cargo.toml
  • crates/perry-hir/Cargo.toml
  • crates/perry-types/Cargo.toml
  • Cargo.toml
🚧 Files skipped from review as they are similar to previous changes (2)
  • docs/src/contributing/architecture.md
  • docs/src/contributing/building.md

@@ -0,0 +1 @@
**Compiler architecture:** move the shared compiler type definitions into `perry_hir::types`, remove the standalone types crate, and reduce the Perry dependency closure from 18 crates to 17 crates.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Expand the changeset with root cause, affected paths, and validation notes.

As per coding guidelines, changelog fragments must contain the long-form root cause, relevant file paths, and validation performed; this one-line summary is insufficient for release notes.

🤖 Prompt for 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.

In `@changelog.d/6760-merge-types-into-hir.md` at line 1, Expand the changelog
entry to document the root cause of consolidating compiler type definitions,
identify the affected crate or module paths including perry_hir::types and the
removed standalone types crate, and record the validation performed, including
the dependency reduction verification.

Source: Coding guidelines

TheHypnoo and others added 2 commits July 23, 2026 15:17
The perry-types -> perry-hir merge moved `Type` to
crates/perry-hir/src/types.rs and dropped the crate, but two files in
perry-codegen still referred to it by fully-qualified path. Because the
crate name never appears in a `use` line there, nothing that scans
imports could see them, so the build broke with 8 x E0433:

  crates/perry-codegen/src/stmt/loops.rs:2408
  crates/perry-codegen/src/stmt/masked_window_region.rs:164,365,433,457

api-docs-drift was just the first job to compile perry-codegen and
report it; cargo-test and Clippy fail the same way.

Mechanical rename, no semantic change: `Type` kept its variants and its
definition line in the move. Verified with `cargo check -p perry-codegen`
(exit 0) and a repo-wide sweep confirming no perry_types / perry-types
reference survives outside git history.
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