Skip to content

Commit eeabdbf

Browse files
docs(stdlib): update parity ownership template
1 parent 931b4db commit eeabdbf

5 files changed

Lines changed: 9 additions & 2 deletions

File tree

.beads/issues.jsonl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,7 @@
430430
{"_type":"issue","id":"haxe.elixir-5tm","title":"Fix unused function warnings in TodoLive","description":"UNUSED FUNCTIONS: Three private functions in TodoLive.ex are unused: render_todo_item/2 (line 590), render_tags/1 (line 668), is_optimistically_toggled/2 (line 275). Either: (1) These are dead code - remove from Haxe source, (2) DCE should eliminate them, or (3) They should be called somewhere. Investigate in src_haxe/server/live/TodoLive.hx and fix appropriately.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-03T00:01:15Z","updated_at":"2025-12-08T17:24:29Z","closed_at":"2025-12-08T11:24:29Z","dependency_count":0,"dependent_count":1,"comment_count":0}
431431
{"_type":"issue","id":"haxe.elixir-e0m","title":"Fix app-level unused variables in TodoLive","description":"APP-LEVEL WARNINGS: TodoLive.ex has many unused variables that should be fixed in the Haxe source (src_haxe/server/live/TodoLive.hx): raw_params_completed, raw_params_description, raw_params_due_date, raw_params_priority, raw_params_tags, raw_params_title, raw_params_user_id (in create_todo), broadcast_result, s_optimistic, broadcast, todo_updated, todo_updates (in toggle_todo_status), refreshed_todos, currently_selected (in handle_event). Either use these variables or remove/prefix them in Haxe source.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-03T00:01:08Z","updated_at":"2025-12-08T17:24:29Z","closed_at":"2025-12-08T11:24:29Z","dependency_count":0,"dependent_count":1,"comment_count":0}
432432
{"_type":"issue","id":"haxe.elixir-upq","title":"Fix unused variable warnings - add underscore prefix in compiler","description":"COMPILER ENHANCEMENT: The compiler generates ~50+ unused variable warnings in Elixir. Variables like 'value', 'this1', 'e', 'o', 'c', 't', 'args', 'cl', 'constr', 'index' are declared but never used. Elixir convention requires prefixing unused variables with underscore (_value, _this1, etc). Fix in code generator to detect unused variables and add underscore prefix automatically. This is a systematic fix, not per-variable.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-03T00:00:59Z","updated_at":"2025-12-08T17:24:35Z","closed_at":"2025-12-08T11:24:35Z","dependency_count":0,"dependent_count":1,"comment_count":0}
433+
{"_type":"issue","id":"haxe.elixir.codex-oky","title":"Update stdlib parity roadmap for early source overrides","description":"After the Reflaxe _std layout cleanup, update stale stdlib parity roadmap/template references that describe early overrides as src/haxe/**/*.cross.hx. The current convention is std/elixir/_std for normal std replacements, target-owned std/** APIs, and selected src/haxe/** early overrides with only haxe.Exception using .cross.hx.","notes":"Updated stdlib parity roadmap/templates so future tasks use std/elixir/_std for normal std overrides, target-owned std/** APIs/support modules, and selected src/haxe/** early overrides. Clarified parity-report comments for plain early src/haxe/ds/*.hx modules. Validation: npm run guard:docs-links, npm run guard:stdlib-parity, npm run guard:stdlib-layout, git diff --check. Path scan reported only existing guard/docs examples.","status":"closed","priority":3,"issue_type":"task","owner":"boss@fullofcaffeine.com","created_at":"2026-07-09T11:14:55Z","created_by":"Marcelo Serpa","updated_at":"2026-07-09T11:16:34Z","started_at":"2026-07-09T11:15:08Z","closed_at":"2026-07-09T11:16:34Z","dependency_count":0,"dependent_count":0,"comment_count":0}
433434
{"_type":"issue","id":"haxe.elixir.codex-uvr","title":"Clarify remaining early haxe.Exception cross override","description":"Audit the lone authored src/haxe/Exception.cross.hx after the Reflaxe _std layout cleanup. Determine whether it can follow the plain .hx early override convention or must remain .cross.hx for macro/tooling safety, then document the result and validate no regressions.","notes":"Resolved as docs-only cleanup. Kept src/haxe/Exception.cross.hx in place because upstream haxe.Exception is extern and only Elixir output needs the concrete Reflaxe.Exception base; documented the selected plain src/haxe/ds/*.hx early override set separately. Validation: npm run guard:docs-links, npm run guard:stdlib-layout, npm run test:quick. Path scan reported only existing guard/docs examples.","status":"closed","priority":3,"issue_type":"task","owner":"boss@fullofcaffeine.com","created_at":"2026-07-09T10:26:06Z","created_by":"Marcelo Serpa","updated_at":"2026-07-09T10:35:18Z","started_at":"2026-07-09T10:26:25Z","closed_at":"2026-07-09T10:35:18Z","dependency_count":0,"dependent_count":0,"comment_count":0}
434435
{"_type":"issue","id":"haxe.elixir.codex-dnd","title":"Clean nonessential vendored Reflaxe drift","description":"Remove local vendored Reflaxe differences that the patch audit classified as cleanup-only: debug_function_collection/debug_preprocessor instrumentation in ReflectCompiler, debug_preprocessor instrumentation in ExpressionPreprocessor, and whitespace-only drift in EverythingIsExprSanitizer. Keep all required framework patches intact.","acceptance_criteria":"Required patches documented in vendor/reflaxe/PATCHES.md remain present; vendored debug-only drift is removed; whitespace-only drift is either removed or explicitly retained when matching upstream would violate diff hygiene; package smoke and quick compiler validation pass.","status":"closed","priority":3,"issue_type":"chore","owner":"boss@fullofcaffeine.com","created_at":"2026-07-09T09:30:16Z","created_by":"Marcelo Serpa","updated_at":"2026-07-09T09:41:07Z","started_at":"2026-07-09T09:30:28Z","closed_at":"2026-07-09T09:41:07Z","close_reason":"Removed debug-only vendored Reflaxe drift from ReflectCompiler and ExpressionPreprocessor while preserving the six required local framework patches. Kept the one whitespace-only EverythingIsExprSanitizer delta because matching upstream would add trailing whitespace. Verified npm run test:haxelib-package, npm run test:quick, and npm run guard:hx-format.","labels":["cleanup","maintenance","reflaxe"],"dependency_count":0,"dependent_count":0,"comment_count":0}
435436
{"_type":"issue","id":"haxe.elixir.codex-bct","title":"Audit vendored Reflaxe patches for upstream relevance","description":"Review vendor/reflaxe/PATCHES.md against the current upstream Reflaxe implementation and determine whether each local patch is still required, already upstreamed, or can be removed. This is intentionally separate from the Reflaxe layout cleanup so the compiler keeps using the known patched framework during the directory/package migration.","acceptance_criteria":"Patch-by-patch status recorded; safe removals or upstream PR follow-ups identified; no vendored Reflaxe patch is removed without a passing package smoke and core compiler validation.","status":"closed","priority":3,"issue_type":"chore","owner":"boss@fullofcaffeine.com","created_at":"2026-07-09T05:17:12Z","created_by":"Marcelo Serpa","updated_at":"2026-07-09T08:47:05Z","closed_at":"2026-07-09T08:47:05Z","close_reason":"Audited vendored Reflaxe patches against upstream base 430b4187a6bf4813cf618fc3a73ccf494a2ab9f5 and current upstream main 73a983112e039daad46b37912ab238df6bf0cf53. Recorded six required local patches, identified nonessential cleanup candidates, clarified upstream PR/removal validation paths, and removed stale target-owned EnumIntrospectionCompiler content from PATCHES.md. No vendored code patches removed. Verified npm run test:haxelib-package and npm run test:quick.","labels":["follow-up","maintenance","reflaxe"],"dependency_count":0,"dependent_count":0,"comment_count":0}

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* **reflaxe:** audit vendored framework patches against upstream Reflaxe and document which local fixes remain required before they can be removed or upstreamed.
77
* **reflaxe:** remove debug-only vendored framework drift while preserving required local Reflaxe patches.
88
* **docs:** clarify the remaining early `src/haxe/**` overrides, including why `src/haxe/Exception.cross.hx` intentionally remains the lone source-tree `.cross.hx` file.
9+
* **docs:** update stdlib parity task templates to use the current `_std` / target-owned `std/**` / early `src/haxe/**` ownership model.
910

1011
## [0.14.20](https://github.com/fullofcaffeine/reflaxe.elixir/compare/v0.14.19...v0.14.20) (2026-07-09)
1112

docs/08-roadmap/stdlib-parity/epic.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,9 @@ For each module/cluster task:
273273
- Classification: upstream fallback vs BEAM-specific override vs unsupported/fail-fast.
274274
- Reference: link to `haxe.compilerdev.reference` source file(s) used.
275275
- Implementation:
276-
- `std/elixir/_std/**/*.hx` vs target-owned plain `std/**/*.hx` vs `src/haxe/**/*.cross.hx` (if early-resolved)
276+
- `std/elixir/_std/**/*.hx` for normal upstream-colliding stdlib overrides
277+
- target-owned plain `std/**/*.hx` for Elixir/Phoenix/Ecto/API support modules
278+
- selected `src/haxe/**` early overrides only when consumer-install ordering or macro/eval timing requires it; `src/haxe/Exception.cross.hx` is the intentional lone source-tree `.cross.hx`
277279
- any compiler transforms required (shape-driven; no app-specific heuristics)
278280
- Tests:
279281
- Snapshot(s) updated/added (list)
@@ -322,6 +324,7 @@ Suggested repomix inputs (edit per module):
322324
- `docs/03-compiler-development/CROSS_FILES_STAGING_MECHANISM.md`
323325
- `src/reflaxe/elixir/CompilerBootstrap.hx`
324326
- `src/reflaxe/elixir/CompilerInit.hx`
325-
- `std/elixir/_std/<Module>.hx` (or `src/haxe/<Module>.cross.hx`)
327+
- `std/elixir/_std/<Module>.hx` for normal stdlib overrides
328+
- `src/haxe/<Module>.hx` for early plain Haxe overrides, or `src/haxe/Exception.cross.hx` for the exception base
326329
- `test/snapshot/**` cases relevant to the module
327330
- `docs/02-user-guide/exunit-testing.md`

scripts/ci/check-stdlib-parity-report.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ def collect_std_modules(std_root: Path, allow_cross: bool, exclude_roots=()):
6868
6969
7070
def collect_prefixed_modules(prefix: str, source_root: Path, allow_cross: bool):
71+
"""Collect early stdlib modules from src/haxe or src/sys style roots."""
7172
modules = set()
7273
if not source_root.exists():
7374
return modules

scripts/stdlib-parity-report.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ def collect_prefixed_modules(prefix: str, root: Path, allow_cross: bool) -> Set[
154154
155155
Example:
156156
root_dir/src/haxe/Exception.cross.hx should be reported as `haxe.Exception`.
157+
root_dir/src/haxe/ds/List.hx should be reported as `haxe.ds.List`.
157158
158159
This is needed because consumer installs always have the library `src/` classpath
159160
immediately, while `std/` is injected later via bootstrap macros.

0 commit comments

Comments
 (0)