traverse-framework / traverse-framework/registry

CREATIVE: Publish core.dispute-triage-classify (schema-bound dispute triage)

Open
#503 0 comments 0 reactions 0 assignees View on GitHub
enhancement help wanted no-spec-needed
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.