Documentação

Kev-0.8B

Resumo do modelo

O Kev-0.8B é um modelo de decisão. Ele lê um documento (o estado) e um conjunto de perguntas tipadas sobre ele, e devolve uma distribuição de probabilidade calibrada sobre as opções fornecidas com cada pergunta, em uma única passada direta e sem gerar texto. Ele implementa a API pública System One da TypeSafe (POST /v1/systemone), de modo que o SDK da TypeSafe funciona contra ele sem alterações. É o menor Kev: um adaptador LoRA e uma cabeça de ponteiro sobre o Qwen3.5-0.8B-Base, que roda em um laptop ou em uma GPU de 4 GB. Ele é indicado onde a memória ou o custo descartam os tamanhos maiores e a tarefa se parece com aquilo em que ele foi treinado; fora do domínio ele é bem menos acurado que o Kev-4B. Esta ficha descreve o checkpoint no Kev 1.0, publicado pela primeira vez em 2026-09-24.

Detalhes do modelo

Desenvolvedor Jared Palmer (github.com/jaredpalmer/kev)
Tipo de modelo Modelo de decisão: um backbone de modelo de linguagem causal executado somente-prefill, com uma cabeça de ponteiro sobre as opções
Backbone Qwen/Qwen3.5-0.8B-Base (revisão dc7cdfe2): 24 camadas, 18 Gated DeltaNet (atenção linear) e 6 de atenção plena; congelado
Adaptador LoRA, rank 16, α 32, nas projeções de atenção, MLP e DeltaNet (11.3M parâmetros)
Cabeça Cabeça de ponteiro: duas projeções pontuam o token de fechamento de cada opção contra o token final da pergunta; um softmax dá as probabilidades
Precisão Treinado com autocast bf16 sobre pesos fp32; servido em bf16 (o adaptador é mesclado na base no carregamento); avaliado em fp32
Contexto Estados de até 65,536 tokens são servidos, mais pelo menos 8,192 tokens por pergunta. Os estados de treinamento tinham no máximo 7,552 tokens.
Comprimento de contexto validado 8,192 tokens (veja Documentos longos)
Calibração Uma temperatura, T = 2.35, armazenada em head.pt e aplicada no carregamento
Idiomas Inglês
Licença Apache-2.0 (adaptador e cabeça); o modelo base é Apache-2.0
Versão Kev 1.0: main de jaredpalmer/kev-0.8b, revisão 9a45d25e (publicado em 2026-09-24)
Versões anteriores Tags do Hub night2-du-release e v7-base

Entrada. Um estado (texto, ou um objeto ou array JSON renderizado como texto rotulado) e qualquer número de perguntas nomeadas, cada uma de um dos três tipos:

Tipo Opções Saída
choice 1–255 opções nomeadas, cada uma com uma descrição opcional uma probabilidade por opção, a opção mais provável e uma confiança
score 1–255 níveis ordenados uma probabilidade por nível e o índice do nível esperado
noul sim / não, com descrições opcionais a probabilidade de sim

Cada pergunta é respondida como a sua própria linha, que continua a partir do estado compartilhado, então as perguntas não podem influenciar umas às outras; o estado é calculado uma vez e armazenado em cache.

Usos pretendidos

  • Decisões tipadas próximas das suas famílias de treinamento (classificação de documentos, roteamento, verificação de políticas sobre regras declaradas) em hardware pequeno demais para o Kev-4B: um laptop, uma L4 ou uma GPU de 4 GB.
  • Um ponto de partida para ajuste fino nos rótulos do próprio usuário onde o custo de treinamento importa (kev.train --init_from jaredpalmer/kev-0.8b).
  • Prototipagem contra a API System One antes de migrar para um Kev maior.

Usos fora de escopo

  • Geração de texto, chat, sumarização ou respostas a perguntas abertas. O modelo apenas pontua as opções que recebe.
  • Roteamento de chamadas de ferramenta (se deve chamar uma ferramenta, pedir um parâmetro ausente ou recusar): sua acurácia no When2Call fica abaixo do acaso (veja Limitações).
  • Decisões totalmente automatizadas com consequências legais, médicas, financeiras, trabalhistas ou semelhantes para pessoas, sem revisão humana.
  • Perguntas com muito conhecimento, aritmética de datas, estados maiores que 65,536 tokens e idiomas diferentes do inglês.

Como usar

Sirva-o com o repositório do Kev. Em CUDA ele roda em bf16 com kernels DeltaNet fundidos e CUDA graphs (uma L4 basta); no Apple Silicon o mesmo comando o serve através do MLX, escolhido automaticamente.

git clone https://github.com/jaredpalmer/kev.git && cd kev && uv sync --extra serve
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-0.8b --port 8008        # Kev 1.0 (this card)
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-0.8b@v1.0 --port 8008   # the same weights, pinned
from typesafe_sdk import Choice, Noul, TypeSafeClient

client = TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8008", model="kev-latest")
response = client.system_one(
    state="I was charged twice for order 1182. Please refund one of the charges.",
    questions={
        "team": Choice(instructions="Which team should handle this?",
                       criteria={"billing": "Charges and refunds", "shipping": "Deliveries", "returns": "Exchanges"}),
        "urgent": Noul(instructions="Does this need a reply today?"),
    },
)
print(response.choices["team"].choice, response.nouls["urgent"].noul)

A temperatura calibrada é aplicada por padrão; KEV_TEMPERATURE=1.0 devolve as probabilidades brutas. KEV_DTYPE=fp32 seleciona o caminho exato usado na avaliação. Um estado acima de 65,536 tokens é recusado com um 422 que informa a sua contagem de tokens.

Dados de treinamento

Estágio Registros Conteúdo e rótulos
Receita base (decision-v7) 12,576 10,000 registros de dez conjuntos de dados públicos de classificação (1,000 cada, listados nos metadados desta ficha) com seus rótulos nativos; 896 pares mínimos de política gerados em nove famílias de template; 1,680 registros de 60 estruturas de regra geradas aleatoriamente em quatro renderizações; rótulos calculados por código
Datas e evidência ausente 1,425 Gerados: 900 casos de política com datas (simples, com uma frase de contagem de dias, ou com um campo date_facts); 255 casos com a frase decisiva removida e um alvo uniforme, mais 270 controles intactos
Documentos e habilidades, um estágio 16,539 documents-v1 train: 5,219 narrativas de reclamações de consumidores nos EUA (CFPB, até cerca de 7k tokens) com 7,488 perguntas, rótulos mantidos onde dois professores de pesos abertos concordaram com o próprio registro do consumidor. hard-v1 train: 6,000 registros rotulados programaticamente em sete famílias de habilidade (políticas longas, trade-offs, probabilidade, multi-hop, datas e aritmética, julgar uma resposta proposta, abstenção por fato ausente), templates 0–3. devtools-v1 train: 5,320 registros de CodeReviewer, CommitPackFT, FlakeFlagger e Aegis, com os rótulos próprios de cada conjunto

Os dois estágios de ajuste fino repetem 2,000 e 6,000 registros do decision-v7. Nenhuma saída de Jev (o modelo de decisão hospedado da TypeSafe) foi usada. CodeReviewer e FlakeFlagger vêm do Zenodo; as narrativas do CFPB são obras do governo dos EUA; licenças e revisões por fonte são registradas nos manifestos das suítes. As suítes apenas de avaliação abaixo (breadth-v1, tasksource-heldout-v1, transfer-v4, longdoc-v1, e as fontes When2Call e de injeção de prompt do devtools-v1) nunca entram no treinamento.

Procedimento de treinamento

  1. Receita base. Duas épocas no decision-v7 a partir da base: LoRA rank 16, α 32; taxa de aprendizado 1e-4, agenda one-cycle; lote 8; autocast bf16; semente 2. A perda é entropia cruzada sobre as opções de cada pergunta. A ordem das opções é embaralhada, opções “nenhuma das opções acima” e distratores são inseridos aleatoriamente, e um quarto dos registros de choice também gera um par mínimo (a pergunta com uma opção “nenhuma das opções acima”, uma vez com a opção correta presente e uma vez com ela removida).
  2. Datas e evidência ausente. Uma época a partir do estágio 1 com taxa de aprendizado 4e-5 e 2,000 registros repetidos.
  3. Documentos e habilidades. Uma época a partir do estágio 2 nos três conjuntos de treinamento juntos, com taxa de aprendizado 2e-5 e 6,000 registros repetidos; lote 4 × 2 de acúmulo; estados de no máximo 7,552 tokens; gradient checkpointing; semente 1; 2,818 passos do otimizador.
  4. Calibração. Uma única temperatura, T = 2.35, minimizando a log-verossimilhança negativa nas linhas de desenvolvimento do decision-v7 do trial do estágio 3 (1,264 perguntas). Estes são itens reservados de um corpus de treinamento. Um reajuste em conjuntos de dados reservados foi avaliado e não adotado (veja Calibração).

Avaliação

Metodologia. Todo número é o caminho de avaliação em fp32 na temperatura de entrega, salvo indicação em contrário. Partições de desenvolvimento foram usadas para seleção; partições de teste foram lidas uma vez para este checkpoint; o teste do transfer-v4 é bloqueado (lido uma vez por candidato) e foi julgado contra uma régua fixada de antemão. Os intervalos pareados são bootstraps de 95% que reamostram registros inteiros (2,000 reamostragens), então perguntas que compartilham um estado se movem juntas. As diferenças estão em pontos percentuais (pp). O Jev (o modelo hospedado da TypeSafe, consultado pelo Vercel AI Gateway) é mostrado onde ele foi lido nos mesmos itens. As suítes:

  • breadth-v1: 14 conjuntos de dados públicos reservados em cinco áreas (conhecimento, linguagem, recuperação, ferramentas, artes), nunca treinados.
  • tasksource-heldout-v1: 24 famílias de tarefa inteiras de uma coleção pública multitarefa, nunca treinadas (nomes das famílias privados).
  • transfer-v4: decisões fora do domínio de seis fontes públicas nunca treinadas (QNLI, SciQ, TweetEval-offensive, PAWS, MMLU, Emotion) mais políticas e estruturas de regra reservadas.
  • hard-v1: as famílias de habilidade acima; a partição de teste reserva templates de geradores treinados.
  • devtools-v1: decisões de ferramentas de desenvolvimento de seis fontes com licença verificada (quatro treinadas, duas apenas de avaliação).
  • documents-v1 / documents-v2: narrativas de reclamação do CFPB; a v2 é um conjunto de teste reservado privado.
  • longdoc-v1: contratos comerciais CUAD e pacotes de acordo gerados, com estados de 4k a 64k tokens.

Os painéis principais marcados como “audited” excluem itens que uma auditoria de rótulos considerou insólidos¹; cada exclusão remove as mesmas linhas dos dois lados de uma comparação.

Dados reservados (nunca treinados).

Painel (perguntas) Kev-0.8B Jev
Conjuntos de dados públicos reservados, breadth-v1 development, auditado, 10 conjuntos (2,475) 0.653 –
breadth-v1 development, todos os 14 conjuntos (3,075) 0.597 0.757
breadth-v1 test, todos os 14 conjuntos (3,089) 0.586 0.757
breadth-v1 test, índice corrigido pelo acaso² [IC 95%] 23.3 [21.2, 25.9] 54.0 [51.2, 57.0]
Famílias de tarefa reservadas, tasksource-heldout-v1 development, auditado, 17 famílias (1,993) 0.515 –
tasksource-heldout-v1 development, todas as 24 famílias (2,788) 0.513 –
Fora do domínio, transfer-v4 development (656): acurácia / Brier 0.648 / 0.430 0.857 / 0.211
Fora do domínio, transfer-v4 locked test (656): acurácia / Brier 0.697 / 0.397 –
transfer-v4 locked test: ECE / cobertura com ≤ 5% de erro 0.045 / 0.274 –
MMLU-Pro, 10 opções (transfer-v9 development) 0.230 0.840
Itens impossíveis de responder respondidos com p ≥ 0.9 (menor é melhor) 0.00 0.09

Famílias treinadas (itens e templates reservados).

Painel (perguntas) Kev-0.8B Jev
documents-v1 development (920) / test (936) 0.842 / 0.851 0.868 / –
documents-v2, teste reservado privado (953) 0.848 –
hard-v1 development (1,083) / test (1,088) 0.594 / 0.665 0.777 / –
devtools-v1 development, fontes auditadas (772) 0.633 –
devtools-v1 development (1,072) / test (1,071), todas as fontes 0.602 / 0.637 0.713 / –
decision-v7 development (1,264) / locked test (1,200) 0.827 / 0.838 0.845 / –
Domínios reservados de decisões geradas, ood-v2 (4,988) 0.661 –

O número do Jev para devtools-v1 cobre todas as 1,074 perguntas de desenvolvimento; as linhas do Kev descartam um id do CodeReviewer que o construtor da suíte reutilizou para dois registros (2 perguntas).

Contra a versão anterior (tag night2-du-release, na própria temperatura 2.41; critérios registrados, cada teste lido uma vez):

Painel Δ [IC 95%]
documents-v1 test +24.4 [+21.3, +27.6]
documents-v2 +23.2 [+19.9, +26.4]
hard-v1 test +26.9 [+23.4, +30.4]
devtools-v1 test +16.4 [+13.1, +19.4]
hard-v1 + devtools-v1 test, agrupados +21.7 [+19.5, +24.0]
transfer-v4 locked test +1.2 [−1.1, +3.7]

Documentos longos.

  • Comprimento de contexto validado: 8,192 tokens, o comprimento treinado. O bucket de 16k está fora da tolerância: seu limite inferior é −8.5 pp, abaixo de −3 pp, então nenhum comprimento maior é validado.
  • Regra, fixada antes da leitura: o comprimento validado é o tamanho nominal do maior bucket a partir de 16,384 tokens tal que ele, e todo bucket entre ele e 8,192, esteja dentro da tolerância. “Dentro da tolerância” significa que a diferença de acurácia CUAD em relação ao bucket de 8k (estados de 6,553–7,618 tokens, o comprimento treinado), pareada no mesmo contrato, repetição e pergunta, tem um limite inferior de 95% de pelo menos −3 pp, e todo registro foi respondido. Se o bucket de 16k falha, o comprimento validado é 8,192 tokens.

Acurácia CUAD, ECE e a diferença pareada em relação ao bucket de 8k por comprimento nominal do estado (longdoc-v1 development):

Comprimento nominal do estado Perguntas CUAD Acurácia ECE Δ vs 8k, pp [IC 95%]
4k 443 0.779 0.128 –
8k 453 0.711 0.066 referência
16k 452 0.659 0.047 −5.2 [−8.5, −2.1]
32k 454 0.663 0.055 −6.0 [−9.5, −2.5]
64k 452 0.637 0.038 −7.9 [−11.8, −4.2]

ECE na T de entrega = 2.35. Δ é pareado nas 445–447 perguntas feitas sobre os mesmos contratos nos dois comprimentos. O bucket de 4k contém contratos diferentes e não é uma referência para a regra. Fonte: runs/r28-readout/context.json (o read-out registrado da rodada 28, runs/r28-08b-r15-longdoc).

Calibração (erro de calibração esperado, ECE, na T de entrega = 2.35; menor é melhor):

Painel ECE
breadth-v1 development, auditado / todos os 14 conjuntos 0.022 / 0.032
breadth-v1 test, todos os 14 conjuntos 0.042
tasksource-heldout-v1 development, auditado 0.096
transfer-v4 development / locked test 0.049 / 0.045
hard-v1 development / test 0.112 / 0.125
devtools-v1 development, auditado 0.092
documents-v1 development / test 0.059 / 0.071
decision-v7 development (as linhas de ajuste) 0.033
ood-v2 0.123

A temperatura de entrega foi ajustada em itens reservados de um corpus de treinamento, o que as regras do projeto não permitem mais para um novo release. Um reajuste registrado em 648 perguntas de conjuntos de dados reservados (a partição de calibração do transfer-r3, oito fontes, e 200 perguntas de MMLU-Pro) dá T = 2.52 (intervalo bootstrap de 90% [2.19, 2.83]). Nas 4,468 perguntas de desenvolvimento auditadas do breadth-v1 e do tasksource-heldout-v1 ele é melhor calibrado: ECE 0.037 contra 0.048, Brier menor em 0.0020 [0.0014, 0.0025]. Ele é pior nas famílias treinadas, cada uma por mais que a tolerância registrada de 0.005: hard-v1 ECE 0.124 contra 0.112, devtools-v1 (auditado) 0.099 contra 0.092, documents-v1 0.078 contra 0.059. O reajuste, portanto, não se qualificou, e T = 2.35 permanece. Usuários cuja carga de trabalho se parece mais com conjuntos de dados públicos reservados do que com as famílias de treinamento do Kev podem servi-lo no valor do reajuste com KEV_TEMPERATURE=2.52; as respostas não dependem de T.

Outros resultados.

Suíte Kev-0.8B Jev
Aritmética de datas, política deadline (transfer-v9 development) 0.35 0.95
MMLU, 4 opções (transfer-v9 development) 0.425 0.90
Estruturas de política reservadas, ambos os irmãos do par mínimo corretos (transfer-v4 development) 0.422 –
When2Call, development / test (fonte apenas de avaliação) 0.167 / 0.133 –
Injeção de prompt, development (fonte apenas de avaliação) 0.547 0.893
SemIf (144 decisões autorais; perto da saturação para modelos maiores, apenas reportado) 0.722 0.965
Itens públicos do JevBench, todos os 231 / nível difícil 111 (ECE) 0.636 / 0.360 (0.181) –

Serviço. CUDA, bf16 com kernels fundidos e CUDA graphs, em uma L4; tempo de modelo por requisição (mediana de 20) para um estado novo / repetido: 22.7 / 16.1 ms para seis perguntas sobre um estado curto, 108.6 / 32.3 ms para cinco perguntas sobre um estado de 2,200 tokens; 62.8 requisições/s com 64 clientes. A memória residente da GPU é 3.8 GB. As probabilidades servidas ficam dentro de 0.017 do caminho de avaliação em fp32 em 280 perguntas, com 1 resposta alterada.

Apple Silicon (MLX, bf16, M5 com 32 GB; três perguntas, uma sobre um fato plantado a 60% de profundidade; o estado é preenchido em blocos de 1,024 tokens):

Tokens do estado Estado novo Estado em cache Pico do MLX (1.5 GB de pesos) Ocupação do processo Fato plantado (p)
8,192 1.4 s 74 ms 2.7 GB 5.3 GB correto (0.68)
16,384 3.2 s 94 ms 3.0 GB 6.1 GB correto (0.68)
32,768 8.0 s 134 ms 3.1 GB 6.3 GB correto (0.70)
65,000 21.2 s 202 ms 3.8 GB 5.4 GB correto (0.62)

Contra o PyTorch fp32 na CPU nas mesmas requisições, as respostas do MLX diferem em no máximo 0.0076 em 8k e 0.0052 em 16k tokens, sem respostas alteradas. Em 100 perguntas de estado curto, o caminho MLX fica dentro de 0.020 do caminho de avaliação em fp32, com 1 resposta alterada.

¹ Excluídos dos painéis auditados: quatro conjuntos do breadth-v1 (routerbench, cujos estados não contêm a informação pedida; cfcolor e humicroedit, no nível do acaso para todo sistema; chessbench, no piso para todo sistema); sete famílias do tasksource-heldout-v1 com rótulos inválidos ou irrecuperáveis (nomes privados); duas tarefas do devtools-v1 cujos rótulos o estado não determina (flakeflagger, tipo de mudança do commit).

² O índice corrigido pelo acaso do Decision Index 0.2 da comunidade: por conjunto de dados, (score − acaso) / (1 − acaso), com média dentro de cada área, depois 100 × a média das cinco áreas. O índice do Jev vem de uma leitura separada dos mesmos itens de teste.

Limitações e trade-offs

  • É um modelo abaixo de 1B fora do domínio. Ele fica 21 pontos atrás do Jev no desenvolvimento do transfer-v4 e 31 pontos no índice do breadth-v1; conhecimento (MMLU-Pro 0.230) e paráfrase ficam perto da base não treinada. Use o Kev-4B onde a acurácia importa.
  • Seus ganhos estão dentro da distribuição. As partições de treinamento do documents-v1, do hard-v1 e do devtools-v1 estão nos seus dados de treinamento; no nível difícil público do JevBench, uma checagem fora da distribuição, o estágio de documentos e habilidades o moveu +2.7 pp [−1.8, +7.2], indistinguível de zero.
  • O roteamento de chamadas de ferramenta piorou. O When2Call, uma fonte apenas de avaliação, caiu de 0.260 para 0.167 no desenvolvimento e de 0.233 para 0.133 no teste, abaixo da taxa de um em quatro de acerto ao acaso entre as suas quatro opções. Não o use para roteamento de chamadas de ferramenta.
  • Um resultado do devtools-v1 não tem explicação. O FlakeFlagger passou de 0.500 → 0.520 no desenvolvimento, mas de 0.507 → 0.813 no teste, em 150 perguntas por partição; trate-o como inexplicado, não como uma habilidade.
  • A aritmética de datas é a sua família mais fraca: 0.35 nas perguntas da política deadline contra 0.95 do Jev; o pré-processador KEV_DATE_FACTS=1 ajuda os modelos maiores mais do que este.
  • A composição de regras é fraca: ambos os irmãos de um par mínimo de política reservado estão certos em 0.422 das vezes.
  • A calibração é uma única temperatura dentro da distribuição (veja Calibração). Ela não consegue reordenar confianças: a cobertura com ≤ 5% de erro fora do domínio é 0.145 no desenvolvimento contra 0.70 do Jev, então poucas decisões podem ser automatizadas com um orçamento de erro estrito.
  • Comprimentos não treinados. Os estados de treinamento tinham no máximo 7,552 tokens. Estados mais longos são servidos até 65,536 tokens; até onde a acurácia se mantém é o comprimento de contexto validado acima.
  • A ordem das opções pode mudar uma resposta; o isolamento de pergunta não impede isso.

Viés, riscos e considerações éticas

  • Probabilidades calibradas podem criar uma confiança infundada. A temperatura foi ajustada em linhas de desenvolvimento da distribuição de treinamento e não transfere para toda carga de trabalho; meça a acurácia e a calibração em uma amostra rotulada dos seus próprios dados, e reajuste a temperatura ali (python -m kev.calibrate), antes de definir limiares.
  • A acurácia e a calibração mudam sob mudança de domínio, e mais neste tamanho do que nos maiores. Monitore as taxas de erro em produção em vez de confiar nos números acima.
  • Não o use para decisões automatizadas consequentes sobre pessoas sem revisão humana. Os vieses do modelo base e dos dados de treinamento (incluindo rótulos produzidos por outros modelos) não são medidos.
  • Os estados podem conter dados pessoais ou confidenciais. A auto-hospedagem mantém as entradas no seu próprio hardware; o servidor é aberto a menos que KEV_API_KEY esteja definida, então aplique o seu próprio controle de acesso e política de tratamento de dados.

Computação

  • Receita base: cerca de 20 minutos em uma NVIDIA H100. Estágio de datas: 9 minutos.
  • Estágio de documentos e habilidades: 52 minutos em uma NVIDIA H200 (pico 23.9 GB).
  • Avaliação e checagens de serviço: GPUs únicas H100 / H200 / L4 no Modal; medições MLX em um Apple M5.

Procedência e reprodutibilidade

  • Código, suítes e relatórios de avaliação: github.com/jaredpalmer/kev. Números do release: runs/release/kev-08b-r15.json (scripts/release_numbers.py --release kev-08b-r15), a leitura bloqueada runs/locked/kev-08b-r15-ungated/, as leituras da família de 2026-09-30 runs/fam-08b-breadth/, runs/fam-08b-breadthtest/ e runs/fam-breadth-test-report/, o reajuste de calibração runs/r28-readout/round28.json, serviço runs/serve-08b-l4/, runs/mlx-long-states/, runs/mlx-full-0.8b/.
  • Estágios: trial da base q35-08b/02-trial-2 (tag v7-base); datas night2-08b-du2/00-trial-0 (tag night2-du-release); documentos e habilidades rodada 15 r15-08b/00-trial-0 (experiments/round15/joint.json, regra experiments/rounds/r15.json). Reajuste de calibração: braço 08b-r15 da rodada 28 (experiments/rounds/r28.json).
  • Pesos publicados: revisão do Hub 9a45d25e; sha256 do adaptador 9b908623…, sha256 do head.pt f400bd12… (T = 2.3511).
  • Histórico de release: publicado em 2026-09-24 como o candidato confirmado da rodada 15; incluído sem alterações no Kev 1.0. O registro de como ele foi selecionado, incluindo suítes desde então aposentadas por insólidas (scienthoon, WANLI-v2, TypeSafe), é o README na revisão 9a45d25e do Hub e o PLAN.md na tag git research-archive-2026-09-24.

Citação

@misc{palmer2026kev08b,
  title        = {Kev-0.8B: a calibrated decision model on Qwen3.5-0.8B},
  author       = {Palmer, Jared},
  year         = {2026},
  howpublished = {\url{https://huggingface.co/jaredpalmer/kev-0.8b}},
  note         = {Kev 1.0}
}

Contato

Perguntas e problemas: github.com/jaredpalmer/kev/issues.