Skip to content

v0.1.7 — Resolver made framework-agnostic (component_reason data-driven, .ts/.tsx fix) + Next.js benchmark

Latest

Choose a tag to compare

@oopsla5xx oopsla5xx released this 18 Aug 10:02
· 1 commit to main since this release

Changed

  • resolver.py: component_reason() no longer hardcodes Rails component descriptions (controller/operation/form/model/serializer) — now derives text from context.yaml's own components.<name>.responsibility/patterns, so a non-Rails component named model (or any of those 5 names) no longer leaks Rails-specific text (ApplicationForm, attr_reader).
  • resolver.py: .ts/.tsx files are no longer misclassified as directories in file inference; the "specific file" check is now based on whether the path has any extension, not a hardcoded .rb/.py/.js allowlist.
  • resolver.py: the directory-search naming hint is now derived from context.yaml's own files.<component>.naming templates instead of a hardcoded .rb hint.
  • __init__.py, cli.py: wording no longer describes the resolver itself as Rails-only (the architecture validate subcommand remains genuinely Rails-only and its help text still says so).

Added

  • examples/nextjs-sample/ — a Next.js App Router / Server Actions reference sample (context.yaml + tests + context-decisions.md), generated via /oc-setup, used to benchmark the resolver on a second framework.
  • docs/nextjs-effectiveness-report.md — coverage/amplification/token-reduction results against the Next.js sample, and the writeup of both bugs fixed in this release.
  • docs/nextjs-real-world-test-report.md — results from testing against an unmodified third-party Next.js repo; surfaces an open finding (not fixed in this release): the resolver's routing threshold requires ≥2 keyword hits, so natural single-concept phrasing can silently fail to route.

Verification

  • pytest tests/test_hook_integration.py -v — 19/19 pass
  • Manual resolve smoke tests against both rails-hmvc-sample and nextjs-sample confirm no regression and no Rails-text leakage