Skip to content

feat(onboarding): metadata-filter vocab as per-client config + guided-review worksheet - #136

Merged
arunjoyt merged 1 commit into
mainfrom
phase-135-lightweight-onboarding
Aug 30, 2026
Merged

arunjoyt merged 1 commit into
mainfrom
phase-135-lightweight-onboarding

Conversation

@arunjoyt

Copy link
Copy Markdown
Owner

Summary

  • The lightweight per-client onboarding path — split from eval: per-client pipeline validation workflow (onboarding step) #127 (the heavy RAGAS-benchmark add-on). Both client docs describe a guided review + one per-client config knob; this fills the two gaps.
  • Metadata-filter vocabulary is now env-overridable config, not hardcoded source; a filled-in guided-review worksheet is the Phase 5 acceptance artifact.

Steps completed

  • pipeline/constants.py — METADATA_FILTER_DOCTYPE_KEYWORDS / METADATA_FILTER_STATUS_KEYWORDS as JSON env vars via _json_env() (fails fast on bad JSON). Status form is a {keyword: status-value} map, so a client can map "expired" → "Inactive". Defaults reproduce the previous hardcoded behaviour exactly.
  • pipeline/query_pipeline.py — _extract_filters() reads the config; the _DOCTYPE_KEYWORDS / _STATUS_KEYWORDS module constants are gone
  • docs/templates/guided_review.md — the Phase 5 worksheet: rubric, per-question answer/citation verdicts, metadata-filter check, knob-change log, decision block
  • docs/CLIENT_DEPLOYMENT_RUNBOOK.md Phase 5 → lightweight-path checklist pointing at the worksheet; two new env vars in the Environment reference + .env.example
  • docs/PIPELINE_TUNING.md § Per-client, docs/ARCHITECTURE.md, CLAUDE.md — name the config instead of "edit the source"; evaluation/client/README.md lists the worksheet as the default artifact

Closes / Refs

Closes #135
Refs #127

Test plan

  • pytest tests/ — 223 passed / 67 skipped, no network
  • ruff check . passes
  • tests/test_pipeline_constants.py — _json_env default / blank / override / bad-JSON / behaviour-preserving-defaults
  • tests/test_query_pipeline.py — per-client doctype + status vocab overrides via monkeypatch
  • shipped defaults verified byte-identical to the old hardcoded vocab

🤖 Generated with Claude Code

…-review worksheet

The lightweight per-client onboarding path (split from #127, which is the heavy
RAGAS-benchmark add-on). Two gaps the client docs describe but don't provide.

- Metadata-filter vocabulary moves from hardcoded module constants in
  query_pipeline.py to env-overridable JSON in pipeline/constants.py:
  METADATA_FILTER_DOCTYPE_KEYWORDS and METADATA_FILTER_STATUS_KEYWORDS. The
  status form is a {keyword: status-value} map (not a list + .capitalize()), so a
  client can point e.g. "expired" -> "Inactive". Defaults reproduce the shipped
  behaviour exactly. Bad JSON fails fast at import.
- docs/templates/guided_review.md — the Phase 5 acceptance worksheet: per-question
  answer/citation verdicts against a rubric, the metadata-filter check, a
  knob-change log, and a decision block that becomes the client's validation
  summary.
- CLIENT_DEPLOYMENT_RUNBOOK.md Phase 5 tightened into a lightweight-path checklist
  pointing at the worksheet; the two new env vars documented in .env.example and
  the Environment reference. PIPELINE_TUNING.md / ARCHITECTURE.md / CLAUDE.md
  updated to name the config instead of "edit the source". evaluation/client/
  README.md lists the worksheet as the default artifact.

Tests: tests/test_pipeline_constants.py (_json_env: default / blank / override /
bad-JSON / behaviour-preserving defaults); per-client vocab override cases in
test_query_pipeline.py.

Closes #135

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Pcofh3BK8CAoHXcfEZoQj
@arunjoyt arunjoyt mentioned this pull request Aug 30, 2026
@arunjoyt
arunjoyt merged commit dd7310e into main Aug 30, 2026
2 checks passed
@arunjoyt
arunjoyt deleted the phase-135-lightweight-onboarding branch August 30, 2026 13:41
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.

onboarding: lightweight per-client path — metadata-filter vocab as config + guided-review worksheet

1 participant