traverse-framework / traverse-framework/registry
CREATIVE: Publish core.dispute-triage-classify (schema-bound dispute triage)
- Dominant language
- Rust
- Stars
- 1
- Forks
- 1
- Avg merge
- 1h 17m
- Merged PRs (30d)
- 217
Description
## Why (creative vignette)
Payment/support orgs triage disputes into bounded categories (fraud, product_not_received, duplicate_charge, friendly_fraud_suspect, other) before humans act. A creative but governed capability: **classify a structured dispute packet into a closed taxonomy** with confidence/uncertainty — not a chat wrapper.
## Guardrails (required)
- Must ship a machine-readable contract (inputs/outputs/errors)
- Must be deterministic OR fail-closed with explicit uncertainty — **no silent LLM invent**
- Must include tests + publish checklist like other caps
- Must NOT be a thin "call an LLM and return string" wrapper
- Must NOT be a generic text/json utility
- Domain must stay business/agent-governance relevant
## One-PR ask
Publish **`core.dispute-triage-classify@1.0.0`**:
**Suggested contract (you may tighten, not widen into free-form):**
- Inputs: `dispute` with id/amount/currency/reason_codes/optional narrative/structured signals; `taxonomy` closed string enum list; `policy_version`
- Outputs: `label` (from taxonomy or null), `uncertainty` (`none|low|high`), `reason_codes`, `ok`, `decision_basis` (structured, not prose essay)
- If narrative is used: either heuristic keyword/rule scoring **or** model-backed with `ai` declaration — but final label must be in taxonomy or fail closed (`label: null`, high uncertainty)
Creative freedom: choose the exact taxonomy and signal set within these guardrails.
Follow [`CONTRIBUTING.md`](https://github.com/traverse-framework/registry/blob/main/CONTRIBUTING.md) and [`capabilities/README.md`](https://github.com/traverse-framework/registry/blob/main/capabilities/README.md) publish checklist.
- Include `capability-src/` with real Rust tests meeting registry coverage gates (`functions` 100%, lines/regions ≥ 95%)
- Use `traverse-cli capability publish` (or the documented scaffold) so `artifact.digest` / `artifact.url` survive
- Declare `authoring.method` (`human` or `llm-assisted`)
- Ensure every `use_cases[].persona_ref` resolves (scaffold personas if needed)
- Run `bash scripts/ci/pre_pr_check.sh ` before opening
- One capability per PR; branch from `origin/main`, not another `publish/*` branch
**Apps are not ready — publish the capability only.** No app wiring, no demo product surface.
## Out of scope
- Full chargeback case management apps
- Free-form LLM advice letters
- Generic classifiers with unbounded labels
## Done when
- CI green; published in next index
- Tests include fail-closed path when signals insufficient
- Guardrails above satisfied in contract text
## Host / deps notes
Prefer **pure deterministic rules** on structured `signals` + optional keyword hits. If model-backed, declare `ai` and keep network forbidden unless an existing in-WASM/model pattern is reused — document honestly.
## Labels
`help wanted` · `enhancement` · `no-spec-needed`
Contributor guide
Research direction
Read CONTRIBUTING.md and capabilities/README.md first, then inspect the documented scaffold and existing capability-src/ examples. Define the closed taxonomy and deterministic fail-closed behavior within the stated contract, add real Rust tests including insufficient-signal handling, and run bash scripts/ci/pre_pr_check.sh before publishing with traverse-cli capability publish.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust, wasm
- Domain
- backend-api-design, build-system
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100