Scope
Files to port from main: the whole malay/ package (__init__.py, code_switching.py, cultural_context.py, dialects.py, generator.py, loanwords.py, models.py, optimizer.py, processor.py, router.py, terminology.py) and data/malay_indonesian_islamic_terms.json.
Tests: tests/test_malay.py (also tests/test_multilingual_benchmark.py if it exercises Malay).
Wiring: register malay/router.py's APIRouter in main.py.
Background
During the last campaign, dnb-ai's main and dev branches diverged and bounty PRs landed on both. We are consolidating on dev as the single source of truth. This issue ports one self-contained module that currently exists only on main over to dev, together with its tests, so dev becomes the complete app.
Rules (must follow for the PR to be payable)
- Branch from
dev; your PR must target dev (not main).
- Copy the reference implementation from
main — do not rewrite it.
- Bring the module file(s) and its test(s).
pytest for the module must pass and flake8 must be clean.
- If the module exposes a FastAPI router, register it in
dev's main.py exactly as main does — this is the only change permitted to a shared/core file, and it must be minimal.
- Do NOT modify any reconciliation-reserved core file:
orchestration.py, main.py (beyond the single router include), tafsir.py, citations.py, cross_reference.py, confidence.py, review.py, verifier.py, model_router.py, query_optimizer.py, history.py, faraid.py, thematic_quran.py, prompts/registry.py.
Acceptance criteria
Scope
Files to port from
main: the wholemalay/package (__init__.py,code_switching.py,cultural_context.py,dialects.py,generator.py,loanwords.py,models.py,optimizer.py,processor.py,router.py,terminology.py) anddata/malay_indonesian_islamic_terms.json.Tests:
tests/test_malay.py(alsotests/test_multilingual_benchmark.pyif it exercises Malay).Wiring: register
malay/router.py's APIRouter inmain.py.Background
During the last campaign, dnb-ai's
mainanddevbranches diverged and bounty PRs landed on both. We are consolidating ondevas the single source of truth. This issue ports one self-contained module that currently exists only onmainover todev, together with its tests, sodevbecomes the complete app.Rules (must follow for the PR to be payable)
dev; your PR must targetdev(notmain).main— do not rewrite it.pytestfor the module must pass andflake8must be clean.dev'smain.pyexactly asmaindoes — this is the only change permitted to a shared/core file, and it must be minimal.orchestration.py,main.py(beyond the single router include),tafsir.py,citations.py,cross_reference.py,confidence.py,review.py,verifier.py,model_router.py,query_optimizer.py,history.py,faraid.py,thematic_quran.py,prompts/registry.py.Acceptance criteria
maintodevunchanged in behaviorpytestflake8cleanmain.pyand endpoint reachabledev, no changes to reserved core files