Skip to content

Commit fd9aaa3

Browse files
docs(reflaxe): refresh framework patch audit
1 parent 5dcc25b commit fd9aaa3

3 files changed

Lines changed: 56 additions & 5 deletions

File tree

.beads/issues.jsonl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@
432432
{"_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}
433433
{"_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}
434434
{"_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}
435-
{"_type":"issue","id":"haxe.elixir.codex-2r2","title":"Audit Reflaxe framework patches after layout cleanup","description":"Review local Reflaxe framework patches and overrides after the Reflaxe layout/package cleanup to confirm they are still needed, current, and documented. Compare against ../haxe.compilerdev.reference and nearby converted compilers such as ../haxe.rust and ../haxe.ocaml. This is a follow-up audit only; do not change Reflaxe.Elixir target semantics as part of the audit unless a separate implementation task is created.","acceptance_criteria":"Document which local Reflaxe patches remain necessary, which can be dropped or upstreamed, and which need a separate implementation task; confirm no Elixir AST pipeline or semantic pass changes are made as part of the audit itself.","status":"open","priority":3,"issue_type":"task","owner":"boss@fullofcaffeine.com","created_at":"2026-07-09T17:32:58Z","created_by":"Marcelo Serpa","updated_at":"2026-07-09T17:32:58Z","labels":["follow-up","reflaxe"],"dependency_count":0,"dependent_count":0,"comment_count":0}
435+
{"_type":"issue","id":"haxe.elixir.codex-2r2","title":"Audit Reflaxe framework patches after layout cleanup","description":"Review local Reflaxe framework patches and overrides after the Reflaxe layout/package cleanup to confirm they are still needed, current, and documented. Compare against ../haxe.compilerdev.reference and nearby converted compilers such as ../haxe.rust and ../haxe.ocaml. This is a follow-up audit only; do not change Reflaxe.Elixir target semantics as part of the audit unless a separate implementation task is created.","acceptance_criteria":"Document which local Reflaxe patches remain necessary, which can be dropped or upstreamed, and which need a separate implementation task; confirm no Elixir AST pipeline or semantic pass changes are made as part of the audit itself.","status":"closed","priority":3,"issue_type":"task","assignee":"Marcelo Serpa","owner":"boss@fullofcaffeine.com","created_at":"2026-07-09T17:32:58Z","created_by":"Marcelo Serpa","updated_at":"2026-07-09T18:08:10Z","started_at":"2026-07-09T18:03:35Z","closed_at":"2026-07-09T18:08:10Z","close_reason":"Audited vendored Reflaxe patches against the reference checkout plus haxe.rust and haxe.ocaml, refreshed vendor/reflaxe/PATCHES.md with required local patches, upstream candidates, removable drift, and separate framework-sync work, updated the changelog, confirmed no Elixir AST pipeline or semantic pass changes, and validated git diff --check, docs link guard, path hygiene, and haxelib package smoke.","labels":["follow-up","reflaxe"],"dependency_count":0,"dependent_count":0,"comment_count":0}
436436
{"_type":"issue","id":"haxe.elixir.codex-0st","title":"Guard source-tree cross-file convention","description":"Extend the stdlib/source layout guard so source checkouts cannot accumulate checked-in src/**/*.cross.hx files outside the documented early haxe.Exception override. This keeps Reflaxe _std/package-flattening conventions explicit without changing compiler semantics.","acceptance_criteria":"guard:stdlib-layout fails on unexpected tracked src/**/*.cross.hx files, still allows src/haxe/Exception.cross.hx, docs/changelog mention the convention, and package/source layout validation passes.","status":"closed","priority":3,"issue_type":"task","owner":"boss@fullofcaffeine.com","created_at":"2026-07-09T15:19:27Z","created_by":"Marcelo Serpa","updated_at":"2026-07-09T15:21:36Z","started_at":"2026-07-09T15:19:40Z","closed_at":"2026-07-09T15:21:36Z","close_reason":"Extended guard:stdlib-layout to allow only src/haxe/Exception.cross.hx under tracked src/**/*.cross.hx, documented the enforcement, and verified guard:stdlib-layout, docs links, diff whitespace, path scan, and haxelib package smoke.","labels":["cleanup","packaging","reflaxe"],"dependency_count":0,"dependent_count":0,"comment_count":0}
437437
{"_type":"issue","id":"haxe.elixir.codex-et5","title":"Align extraParams null-safety macro with Reflaxe conventions","description":"Add the Reflaxe skeleton-style package-scoped nullSafety macro to Reflaxe.Elixir entrypoint HXML files. This should apply to compiler package code only, before bootstrap/init, without changing target/user semantics.","acceptance_criteria":"extraParams.hxml and repo-local haxe_libraries/reflaxe.elixir.hxml run nullSafety(\"reflaxe.elixir\") before CompilerBootstrap/CompilerInit; docs/changelog mention the convention; package smoke and representative repo-local builds pass; no user/app semantics are changed.","status":"closed","priority":3,"issue_type":"task","owner":"boss@fullofcaffeine.com","created_at":"2026-07-09T14:08:02Z","created_by":"Marcelo Serpa","updated_at":"2026-07-09T14:40:40Z","started_at":"2026-07-09T14:08:11Z","closed_at":"2026-07-09T14:40:40Z","close_reason":"Aligned entrypoint HXML with package-scoped nullSafety before bootstrap/init, documented the convention, made HaxeThrow.value nullable to satisfy the compiler-package null-safety contract, and verified package smoke, quick snapshots, examples compile/output/WAE/runtime, mix-fast, and todo-app sentinel+Playwright.","labels":["cleanup","packaging","reflaxe"],"dependency_count":0,"dependent_count":0,"comment_count":0}
438438
{"_type":"issue","id":"haxe.elixir.codex-4vd","title":"Move remaining Haxe std replacements into _std","description":"Move the remaining upstream-colliding Haxe stdlib replacement modules that still live under plain std/haxe/** into std/elixir/_std/**. Keep target-owned local additions under plain std/**. This aligns the source tree with the Reflaxe _std ownership convention without changing compiler semantics.","acceptance_criteria":"Upstream reference modules no longer live as plain std/haxe/** files unless there is a documented exception; target-owned local additions remain under std/**; guard:stdlib-layout and guard:stdlib-parity pass; affected snapshots/examples are updated only for intentional source-map/path drift; package smoke still proves Reflaxe build emits packaged .cross.hx files.","status":"closed","priority":3,"issue_type":"task","owner":"boss@fullofcaffeine.com","created_at":"2026-07-09T12:50:24Z","created_by":"Marcelo Serpa","updated_at":"2026-07-09T13:25:20Z","started_at":"2026-07-09T12:51:52Z","closed_at":"2026-07-09T13:25:20Z","close_reason":"Moved the remaining upstream-colliding plain std/haxe/** modules into std/elixir/_std/** while leaving target-owned support surfaces under std/haxe/**. Added a guard allowlist for remaining plain std/haxe/** support modules, updated docs/changelog, and refreshed generated test source maps for intentional _std path drift. Validation: npm run guard:stdlib-layout; npm run guard:stdlib-parity; npm run guard:docs-links; git diff --check; npm run test:quick; scripts/test-chunks.sh --parallel 8 --chunk-deadline 900 --timeout 120 --categories phoenix,liveview,ecto,otp,exunit,bootstrap; npm run test:haxelib-package; npm run test:examples; npm run test:examples-output; npm run test:examples-elixir; npm run test:examples-runtime; npm run test:haxe-exunit-stdlib; npm run guard:upstream-unitstd; npm run guard:hx-format; npm run test:mix-fast; todo-app async QA sentinel with Playwright e2e/smoke/*.spec.ts (5/5 passed). Path scan found only existing guard/docs examples.","labels":["cleanup","reflaxe","stdlib"],"dependency_count":0,"dependent_count":0,"comment_count":0}
@@ -468,6 +468,7 @@
468468
{"_type":"issue","id":"haxe.elixir-vfo","title":"Post-1.0: Fix non-critical Elixir warnings","description":"Deferred from 1.0: Fix unused params in handle_event clauses, unused pattern variables in nested cases. Requires compiler transforms to add underscore prefixes. PRD: docs/08-roadmap/PRD-1.0-RELEASE-FINAL-2025-12-08.md","notes":"Reopened (was closed by mistake; pending work + verification).","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-08T17:21:51Z","updated_at":"2025-12-27T13:29:25Z","closed_at":"2025-12-27T07:29:25Z","labels":["compiler","post-1.0","warnings"],"dependencies":[{"issue_id":"haxe.elixir-vfo","depends_on_id":"haxe.elixir-z52","type":"parent-child","created_at":"2025-12-14T20:18:41Z","created_by":"Marcelo Serpa","metadata":"{}"}],"comments":[{"id":"b77f2d79-12bd-4cbb-b910-6fefbbcdb463","issue_id":"haxe.elixir-vfo","author":"fullofcaffeine","text":"Verified Elixir warnings are resolved in examples:\n- scripts/with-timeout.sh --secs 600 --cwd examples/todo-app -- mix compile --warnings-as-errors\n- scripts/with-timeout.sh --secs 600 --cwd examples/03-phoenix-app -- mix compile --warnings-as-errors\nNo unused-param / shadowing warnings observed; safe to close.","created_at":"2025-12-27T13:29:19Z"}],"dependency_count":0,"dependent_count":0,"comment_count":1}
469469
{"_type":"issue","id":"haxe.elixir-pr5","title":"Phase 5.1: Add CI hard gate - fail build on any Elixir warning","notes":"Reopened (was closed by mistake; pending work + verification).","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-03T06:01:57Z","updated_at":"2025-12-27T13:34:35Z","closed_at":"2025-12-27T07:34:35Z","labels":["1.0-roadmap","ci","post-1.0"],"dependencies":[{"issue_id":"haxe.elixir-pr5","depends_on_id":"haxe.elixir-5u9","type":"blocks","created_at":"2025-12-03T00:02:16Z","created_by":"Marcelo Serpa","metadata":"{}"},{"issue_id":"haxe.elixir-pr5","depends_on_id":"haxe.elixir-7rv","type":"blocks","created_at":"2025-12-03T00:02:16Z","created_by":"Marcelo Serpa","metadata":"{}"},{"issue_id":"haxe.elixir-pr5","depends_on_id":"haxe.elixir-b1i","type":"blocks","created_at":"2025-12-03T11:47:00Z","created_by":"Marcelo Serpa","metadata":"{}"},{"issue_id":"haxe.elixir-pr5","depends_on_id":"haxe.elixir-ib1","type":"blocks","created_at":"2025-12-03T11:47:00Z","created_by":"Marcelo Serpa","metadata":"{}"}],"comments":[{"id":"1e6223b1-419a-426f-894e-df567852f31c","issue_id":"haxe.elixir-pr5","author":"fullofcaffeine","text":"Implemented WAE hard gate in QA sentinel:\n- scripts/qa-sentinel.sh Step 3 now runs: mix compile --warnings-as-errors --no-deps-check (retry with WAE)\nVerified via async sentinel run:\n- scripts/qa-sentinel.sh --app examples/todo-app --port 4001 --async --deadline 600 --verbose (RUN_ID=1766842283)","created_at":"2025-12-27T13:34:26Z"}],"dependency_count":4,"dependent_count":1,"comment_count":1}
470470
{"_type":"issue","id":"haxe.elixir-19z","title":"Fix @import module attribute never used warning","description":"UNUSED ATTRIBUTE: lib/string_tools.ex:2 has '@import :Bitwise' module attribute that is set but never used. Either use it or remove. This is in the StringTools module generated from std. Check std/_std source for the Haxe origin.","notes":"Not reproducible: no '@import Bitwise'/'@import :Bitwise' found anywhere in repo as of 2025-12-17. Closing.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-03T00:01:50Z","updated_at":"2025-12-18T02:27:03Z","closed_at":"2025-12-17T20:27:03Z","dependency_count":0,"dependent_count":1,"comment_count":0}
471+
{"_type":"issue","id":"haxe.elixir.codex-xr7","title":"Evaluate upstream Reflaxe framework sync drift","description":"Follow up on the patch audit's upstream drift findings before refreshing vendor/reflaxe: upstream/reference Reflaxe has RemovePureExpressions in ExpressionPreprocessor and RemovePureExpressionsImpl.hx, while Reflaxe.Elixir's vendored copy does not. Also decide whether to remove inactive debug_output_manager trace blocks from OutputManager.hx as diff-reduction. This task is separate from layout cleanup because importing upstream preprocessor behavior can affect generated output.","acceptance_criteria":"Compare vendor/reflaxe against the chosen upstream Reflaxe baseline; decide whether to import RemovePureExpressions, keep the current vendored baseline, or update the baseline wholesale; if code changes are made, validate package smoke and snapshot suites; document any retained local patches in vendor/reflaxe/PATCHES.md.","status":"open","priority":4,"issue_type":"task","owner":"boss@fullofcaffeine.com","created_at":"2026-07-09T18:07:07Z","created_by":"Marcelo Serpa","updated_at":"2026-07-09T18:07:07Z","labels":["follow-up","reflaxe"],"dependency_count":0,"dependent_count":0,"comment_count":0}
471472
{"_type":"issue","id":"haxe.elixir.codex-yj2","title":"Re-audit vendored Reflaxe patches after upstream movement","description":"Revisit vendor/reflaxe/PATCHES.md after upstream Reflaxe moves or before the next framework dependency bump. Check each required local patch against upstream SomeRanDev/reflaxe, decide whether it is still needed, upstreamed, removable, or ready for an upstream PR, and update PATCHES.md with exact upstream commit/release evidence.","acceptance_criteria":"Each required patch in vendor/reflaxe/PATCHES.md has refreshed status against current upstream; any removed patch runs its documented validation checklist plus npm run test:haxelib-package; no patch is removed solely because it looks old; PATCHES.md records the new audit date and upstream commit.","status":"deferred","priority":4,"issue_type":"chore","owner":"boss@fullofcaffeine.com","created_at":"2026-07-09T11:54:58Z","created_by":"Marcelo Serpa","updated_at":"2026-07-09T11:55:49Z","defer_until":"2026-08-08T05:55:48Z","labels":["follow-up","maintenance","reflaxe"],"dependency_count":0,"dependent_count":0,"comment_count":0}
472473
{"_type":"issue","id":"haxe.elixir.codex-9gs","title":"R\u0026D: general RailsHx-to-PhoenixHx migration compiler","description":"Research a future general RailsHx-to-PhoenixHx migration compiler and coexistence planner. This must be separate from Reflaxe.Elixir compiler feature modes and separate from the todo-app example. The todo app may be a fixture/oracle only, not the architecture. GPT 5.5 Pro recommended an Evidence IR -\u003e deterministic rules -\u003e decision requests -\u003e approved migration plan -\u003e PhoenixHx Haxe generator/coexistence topology -\u003e verification receipts pipeline.","acceptance_criteria":"- Produce an architecture/RFC document before implementation.\\n- Define deterministic tooling responsibilities versus agent/human decision responsibilities.\\n- Define typed Haxe IR layers: Evidence IR, semantic/capability IR, Decision/Migration Plan IR, and Runtime/Coexistence IR.\\n- Define MigrationUnit granularity for endpoint, route group, resource/context, component/island, background job, event/topic, external integration, data boundary, and whole runtime/service.\\n- Define explicit ownership rules: every runtime boundary has exactly one active owner; ambiguous constructs stop generation.\\n- Define optional Cafetra/CML projection only after an approved coexistence plan; CML must not be the migration IR or a Haxe.Elixir dependency.\\n- Define first MVP narrowly: one read-only JSON route, Phoenix controller/context/Ecto target, explicit route ownership, contract tests, and no auth/writes/Turbo/HTML/jobs.\\n- Document anti-goals: no Rails compatibility mode in Haxe.Elixir, no todo-specific heuristics, no implicit backend switch, no direct Elixir generation bypassing Haxe, no adapter unless explicit and granular.\\n- Include repo/file inspection priorities for haxe.ruby fact surfaces, route parity/adoption, PhoenixHx target seams, todo fixtures, Cafetra/CML, and Genes only after server-side MVP.","notes":"RFC artifact added: docs/08-roadmap/railshx-to-phoenixhx-migration-compiler.md captures the separate migration compiler architecture, decision plane, typed IR layers, partial migration boundaries, CML projection boundary, MVP scope, anti-goals, and inspection priorities. Parent remains open for future implementation/R\u0026D.\nDeferred after RailsHx todo closeout: do not start the translation-layer R\u0026D next. First return to Phoenix/Haxe.Elixir compiler and API-surface work, especially haxe.elixir-944.2.7, haxe.elixir-944.2.8, and the type/API-focused todo-app review haxe.elixir-944.2.6.\nDeferred as intentionally future R\u0026D: RFC child is complete, and the issue notes explicitly say not to start translation-layer work next; future implementation should return as scoped child beads after higher-priority Phoenix/Haxe.Elixir compiler/API-surface work.","status":"deferred","priority":4,"issue_type":"task","owner":"boss@fullofcaffeine.com","created_at":"2026-06-23T07:58:16Z","created_by":"Marcelo Serpa","updated_at":"2026-07-07T14:51:07Z","labels":["architecture","cml","migration","phoenixhx","railshx","rd"],"dependency_count":0,"dependent_count":0,"comment_count":0}
473474
{"_type":"issue","id":"haxe.elixir-960","title":"Optional advisory linting for portable vs Elixir-first module intent","description":"Add diagnostic-only profile intent metadata if a real app demonstrates that warnings would prevent mistakes without changing code generation. This must not become a backend switch.","acceptance_criteria":"Optional metadata/define design is documented; diagnostics are warning-only; tests prove generated Elixir semantics are unchanged with and without the declaration; docs make clear that portable and Elixir-first remain authoring profiles, not compiler backends.","notes":"Deferred intentionally: this should only be implemented after a real app demonstrates that warning-only profile intent metadata prevents mistakes without noise. Current docs explicitly recommend source-shape intent over profile declarations.\nDeferred intentionally: current docs prefer source-shape intent over profile declarations, and this diagnostic-only metadata should wait until a real app demonstrates useful low-noise warnings without changing code generation.","status":"deferred","priority":4,"issue_type":"task","owner":"boss@fullofcaffeine.com","created_at":"2026-06-19T06:11:31Z","created_by":"Marcelo Serpa","updated_at":"2026-07-07T14:51:07Z","labels":["architecture","lint","profiles"],"dependencies":[{"issue_id":"haxe.elixir-960","depends_on_id":"haxe.elixir-955","type":"discovered-from","created_at":"2026-06-22T06:19:13Z","created_by":"Marcelo Serpa","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}

0 commit comments

Comments
 (0)