trades-runtime
MCP local de sombra para HVAC, encanamento, elétrica e esgoto. Porta pública somente leitura. Não é um sistema operacional empresarial hospedado.
Servidor MCP hospedado
npx add-mcp 'https://trades-runtime.vibelock.workers.dev/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
Trades-Runtime
Runtime TypeScript privado para um sistema operacional de IA shadow-first / camada de inteligência operacional da empresa. Áreas de atuação: HVAC, encanamento, elétrica, esgoto e multi-áreas.
Autor / identidade: somente Aziel Eliab. Consulte IDENTITY.md. Nenhum nome legal, residência ou condado nas exportações.
Versão: 1.0.0-local (Local Softwares 1.0, instalável)
Função: trades-runtime
Licença: Apache-2.0
Lançamento: software livre (Apache-2.0). Clone e execute o shadow local na sua máquina. Aziel Eliab é o autor, não o operador, e não está executando um piloto de empresa.
Worker público (se implantado): https://trades-runtime.vibelock.workers.dev
Experimente no Glama (listagem pretendida): https://glama.ai/mcp/servers/AzielEliab/trades-runtime — o pacote está no repositório (glama.json, Dockerfile, cli/mcp-stdio.mjs). Não trate o Install Server como LIVE apenas a partir desta árvore git. Verificado em 2026-10-02: Glama Latest/releaseVersion é 1.0.0-local. O selo corresponde à dica de citação do Softwares. Local Softwares 1.0. Essa correspondência não é uma alegação de Field 1.0 e não é Office Softwares 1.0. Este corte não faz Release. Consulte docs/GLAMA.md.
Status: 1.0.0-local instalável Local Softwares 1.0 (portão Track L; piloto não iniciado; live_backends false; não é uma alegação de Field 1.0) — 0.4.12 comandos familiares (help, softwares, version, health) para que uma pessoa descubra o produto sem ler o README inteiro; recursos do desk permanecem congelados (piloto não iniciado) — 0.4.11 UI humana gratuita no VibeLock Worker (navegador / PWA) sem baixar primeiro; pacote contado opcional; desk do operador ainda local (piloto não iniciado) — 0.4.10 rastreamento de tempo local, interruptores de cobertura de serviço e sugestões de tecnologia certa no desk de Monitoramento (piloto não iniciado) — 0.4.9 relatório de qualidade de entrada local para fragmentos do ServiceTitan e ProBooks, stubs de alerta-para-ação com recusa de write-back e um painel de preparação do portão de início da Opção C (piloto não iniciado) — 0.4.8 milhas dirigidas locais e desempenho de direção, um quadro classificado de desempenho de funcionários e departamentos, sugestões de trabalho conjunto entre departamentos e uma taxa de atrito de funcionários ao lado desse quadro (piloto não iniciado) — 0.4.7 custo de peça com adaptação de mercado regional, trainingNeeded por técnico, sinalizadores de bom e mau comportamento de departamento e contagens locais de caminhões (piloto não iniciado) — 0.4.6 motivos de classificação por chamada, filtros de callback / garantia / não classificado, um resumo de loopback da taxa semanal de callback e uma reunião matinal do técnico (piloto não iniciado) — 0.4.5 contagens locais de callback e garantia, exportação de resumo de alertas, explicações de pontuação e recibo de bloco de agendamento (piloto não iniciado) — 0.4.4 polimento local do desk do operador (tema, visualização de faixa, instantâneo imprimível; piloto não iniciado) — 0.4.3 preparação do piloto BYO da Opção C (runbook local + npm run pilot:prep; piloto não iniciado) — 0.4.2 regras de alerta locais no desk do operador — 0.4.1 perfis nomeados de fornecedores de aplicativos de área no drop-in universal 0.4.0 — lockstep com Property Intelligence v1.0 na árvore — núcleo puro live + stubs honestos — BYO entrada local do ServiceTitan + ProBooks + aplicativos de área — sem gravações ao vivo, dados de locatário, write-back ST/ProBooks, phone-home, DOIs, uploader hospedado ou alegação de produção de company-OS — Opção C código-pronto / piloto não iniciado — Opção D não iniciada
O produto é o software em src/. docs/ é um catálogo/UI local fino. GitHub Pages está intencionalmente desabilitado (live_backends: false). Não há workflow de Pages. PDFs nunca são publicados. Especificações do implementador estão na raiz do repositório specs/ (não sob docs/).
Regra permanente: todo PDF que Aziel envia é uma especificação para implementar como software codificado.
Trilha de papel: TR-1.0-GATE-2026-09-28 (portão Track L Local Softwares 1.0; piloto não iniciado) · TR-COMMANDS-2026-09-27 (ajuda de comandos CLI comuns, softwares, version, health; desk congelado; piloto não iniciado) · TR-OPS-2026-09-27 (rastreamento de tempo local, interruptores de cobertura, sugestões de tecnologia certa; piloto não iniciado) · TR-DESK-VIEW-2026-09-27 (caixas de seleção locais de mostrar/ocultar; grades de cartões do Softwares inalteradas; piloto não iniciado) · TR-MOBILE-DESK-2026-09-27 (desk local em largura de telefone; cartões do Softwares inalterados; piloto não iniciado) · TR-QUALITY-2026-09-27 (qualidade de entrada, stubs de alerta-ação, portão de início da Opção C; piloto não iniciado) · TR-DRIVE-2026-09-27 (milhas dirigidas, desempenho de direção, quadro classificado de funcionários e departamentos; piloto não iniciado) · TR-SOFTWARES-2026-09-27 (custo de peça e adaptação de mercado, trainingNeeded, sinalizadores de comportamento de departamento, contagens locais de caminhões; piloto não iniciado) · TR-HUDDLE-2026-09-26 (motivo de classificação por chamada, filtros de chamada, taxa semanal de callback, reunião matinal; piloto não iniciado) · TR-CALLS-2026-09-26 (contagens de callback e garantia, resumo de alertas, porquê da pontuação, recibo de bloco de agendamento; piloto não iniciado) · TR-DESK-POLISH-2026-09-25 (polimento local do desk; piloto não iniciado) · TR-OPTION-C-PILOT-RUNBOOK-2026-10-02 (caminho de início humano da Opção C; piloto de catálogo não iniciado) · TR-PILOT-START-2026-10-02 (pilot:start --branch explícito no isolado do operador; não é Field 1.0; não é Office Softwares 1.0) · TR-OPTION-C-PREP-2026-09-25 (preparação da caixa da Opção C; piloto não iniciado) · TR-ALERTS-2026-09-25 (regras de alerta locais) · TR-VENDOR-2026-09-25 (perfis nomeados de fornecedores) · TR-DESK-2026-09-25 (drop-in universal + desk humano local) · TR-AUDIT-2026-09-18C · TR-AUDIT-2026-09-18B · TR-AUDIT-2026-09-18 · TR-AUDIT-2026-09-17 · TR-CUT-2026-09-17 · TR-BOT-2026-09-17 (brief permanente) · TR-BYO-2026-09-17 (altera TR-BOT §9 e TR-CUT R2–R3).
Experimente na sua máquina
Mesclar este repositório não inicia um piloto. Aziel Eliab escreveu o software. Ele não é o operador, não é um cliente e não está executando uma oficina neste repositório. live_backends permanece false. Não há write-back. Um clone novo não precisa de locatário ServiceTitan ou ProBooks e não precisa de segredos.
git clone https://github.com/AzielEliab/trades-runtime.git
cd trades-runtime
npm install
npm test
npm run demo
npm run shadow:office
npm run shadow:field
npm run desk
O que você verá:
npm run demoimprime um dia shadow sintético no terminal. É uma fixture. Não é um resultado de empresa e não imprime uma porcentagem de precisão.npm run shadow:officeexecuta o shadow do escritório no branch de amostra chamadosample-shop. As fixtures já estão emtest/fixtures/sample-branch/office/. O recibo dizoffice_softwares_1_0: false,pilot_started: falseelive_backends: false. Você verá trabalhos de amostra admitidos, uma contagem de reunião, qualidade de entrada como uma lista de verificação e stubs de alerta que recusam write-back. Esse comando não carrega sinalizadores de campo.npm run shadow:fieldexecuta o shadow de campo no mesmo branch de amostra, detest/fixtures/sample-branch/field/. Você verá sinalizadores locais (needsParts,safetyHold,vanDowne uma linha que nomeia um rótulo sem van, que não inventa uma van), um cartão de ponto, lugares de cobertura e uma sugestão de tecnologia certa.field_softwares_1_0é false. Não é um feed GPS ao vivo e não é Field 1.0. É um comando separado do shadow do escritório.npm run deskabre o desk local em http://127.0.0.1:4174/. Com pastas de entrada vazias, a página é rotulada como demo sintética. Não é sua empresa e não é um locatário ao vivo. Colocar suas próprias exportações emdata/inbound/é opcional e permanece na sua máquina.
Quando você tiver um branch real na sua própria máquina, e somente então:
npm run pilot:prep
npm run pilot:start -- --branch <branchId>
Esse é o único caminho de software que define pilot_started como true, e o faz apenas no seu isolado. Ele recusa um branch ausente ou ruim, preparação que não está pronta e --claim-company quando a entrada está vazia ou apenas sintética. O catálogo enviado permanece pilot_started false. O modo permanece SHADOW-SEALED. Gravações permanecem recusadas. O recibo não é um company OS ao vivo, não é Office Softwares 1.0 e não é Field 1.0.
Instalar, testar, demonstrar
npm install
npm test
npm run typecheck
npx tsx src/cli.ts help
npx tsx src/cli.ts softwares
npx tsx src/cli.ts version
npx tsx src/cli.ts health
npm run demo
npm run byo:admit-demo
npm run drop-in:demo
npm run desk
npm run shadow:office
npm run shadow:field
npm run pilot:prep
npm run pilot:start -- --branch <branchId>
npm run health:local
npm run shadow:sealed-demo
npm run manifest
npm run mcp
help imprime a lista de comandos (--help e -h fazem o mesmo). softwares lista o slug, status e uma linha em linguagem simples de cada módulo (Softwares corresponde em qualquer caixa de letras). version imprime o nome do produto e a versão, depois uma linha de honestidade: live_backends false, pilot_started false (--version e -V fazem o mesmo). health é o mesmo cartão de honestidade local que health-local. Um comando desconhecido imprime que é desconhecido, depois o texto de ajuda e sai com código não zero. Nenhum comando ainda imprime ajuda e sai com zero.
npm test executa testes de regras constitucionais incluindo Autoridade Humana, confiança≠verdade, roteamento secundário somente CrossTrade, reconhecimento v0.2 / bloqueio de pricebook / quadro de missão / economia de localização, o spine de execução 0.3.3 (entrada FragGate, recibos duráveis, runAction), replay de reinício de recibos JSONL somente anexação (data/receipts.jsonl ou {tmpdir}/tr-replay-*/receipts.jsonl), a demo sintética de admissão BYO, a demo de drop-in universal, o desk local do operador, o scaffolding selado-sombra da Opção C (sem auto-promoção, queda de engajamento, campos de liquidação obrigatórios) e a preparação do piloto da Opção C (verificações de máquina, admissão sintética, inicialização do desk, pilot_started: false).
CI (.github/workflows/ci.yml) executa npm ci, npm run typecheck e npm test em pull requests e pushes para main. GitHub Pages está intencionalmente desabilitado — não trate uma URL github.io como um portão de teste.
npm run demo executa um dia shadow sintético: Call-Fit, contrafactual selado, override humano, recibos encadeados por hash, rebase de trajetória.
Mapa de software
| Área | Caminho | Status |
|---|---|---|
| IDs canônicos / eventos / modos | src/core/ | live-pure |
| Confiança ≠ verdade | src/core/confidence.ts | live-pure |
| Cadeias A/B/C/D | src/core/chains.ts | live-pure |
| Autoridade Humana | src/core/human-authority.ts | live-pure |
| TradesCoherence, EvidencePacket, DecisionGate, ReceiptLedger, Shadow, Trajectory | src/inherited/ | live-pure |
| Call-Fit, economia, CrossTrade, Cadeia D, força de trabalho, Decision Fabric, analytics | src/domain/ | live-pure |
| Comunicações (canais de event-stream) | src/domain/communications.ts | live-pure |
| Reconhecimento (com gate de qualidade) | src/domain/recognition.ts | live-pure |
| Quadro de missões diárias | src/domain/mission-board.ts | live-pure |
| Rótulos de callback e garantia | src/domain/call-class.ts | live-pure |
| Morning huddle + trainingNeeded | src/domain/huddle-board.ts | live-pure |
| Milhas percorridas e desempenho de direção | src/domain/drive-miles.ts | live-pure |
| Quadro ranqueado de funcionários e departamentos | src/domain/performance-board.ts | live-pure |
| Trabalho em equipe e sugestões entre departamentos | src/domain/work-together.ts | live-pure |
| Taxa de atrito de funcionários | src/domain/friction.ts | live-pure |
| Relatório de qualidade de entrada | src/domain/inbound-quality.ts | live-pure |
| Stubs de ação de alertas | src/desk/alert-actions.ts | live-pure |
| Gate de início da Opção C | src/spine/option-c-start-gate.ts | live-pure |
| Posições locais e visualização de monitoramento | src/domain/local-positions.ts | live-pure |
| Pricebook (sombra ST + custo atual/último + LOCK) | src/domain/pricebook.ts | live-pure |
| Contagens de estoque do caminhão / fulfillment | src/domain/truck-stock.ts | live-pure |
| Clima / demanda / lunar (experimental) | src/domain/weather-demand.ts | live-pure |
| Roteamento de manutenção (demanda primeiro) | src/domain/maintenance-routing.ts | live-pure |
| Property Intelligence v1.0 | src/domain/property-*.ts, neighborhood-*.ts, regional-recalibration.ts | live-pure |
| Entrada FragGate | src/spine/fraggate-inbound.ts | live-pure |
| Recibos duráveis | src/spine/durable-receipts.ts | live-pure |
Espinha dorsal runAction() | src/spine/run-action.ts | live-pure |
| Registro de atores / autoridades | src/core/actor-registry.ts | live-pure |
| Modos shadow | src/core/shadow-modes.ts | live-pure |
| Regras de engajamento (não uma ordem) | src/core/engagement-rules.ts | live-pure |
| Configuração shadow de filial única | src/core/shadow-branch.ts | live-pure |
| Harness de liquidação | src/core/settlement-harness.ts | live-pure |
| Sombra ServiceTitan (somente leitura) | src/spine/servicetitan-shadow.ts | live-pure |
| Sombra ProBooks (somente leitura, entrada peer) | src/spine/probooks-shadow.ts | live-pure |
| Layout de entrada BYO local | src/spine/inbound-layout.ts | live-pure |
| Configuração de entrada local (sem conta na nuvem) | src/spine/local-inbound-config.ts | live-pure |
| Drop-in universal de trades-app | src/spine/drop-in.ts | live-pure |
| Sombra Trades-app (somente leitura) | src/spine/trades-app-shadow.ts | live-pure |
| Mesa de operador humano local | src/desk/ | live-pure |
| Demonstração sintética drop-in | src/demo/drop-in.ts | live-pure |
| Isolamento de runtime (recibos por instância) | src/spine/runtime-isolate.ts | live-pure |
| Demonstração sintética de admissão BYO | src/demo/byo-admit.ts | live-pure |
| Demonstração sintética sealed-shadow | src/demo/shadow-sealed.ts | live-pure |
| Preparação do piloto da Opção C | src/spine/option-c-prep.ts | live-pure |
| Cartão de saúde local | src/spine/health-local.ts | live-pure |
| Máquina de estados de fulfillment | src/domain/fulfillment-machine.ts | live-pure |
| Relógio do quadro de missões | src/domain/mission-board.ts | live-pure |
| PI conectado a trabalhos | src/domain/property-jobs.ts | live-pure |
| Congelamento §18 + regras governantes v0.2 | src/rules/constitution.ts | live-pure |
| Gravações ao vivo ServiceTitan / ProBooks | — | recusado |
Entrada BYO (TR-BYO-2026-09-17)
Cada usuário incorpora seu próprio ServiceTitan e seu próprio ProBooks no seu runtime local. O nó de autoria / GitHub não é um custodiante de dados. Sem dump central. Sem uploader hospedado. Sem phone-home.
Entrada local nessa máquina (conteúdo ignorado pelo git):
data/inbound/servicetitan/— exportação ST ou pull somente leitura que o usuário colocadata/inbound/probooks/— arquivos de livros / itens / custos / fornecedores ProBooks que o usuário colocadata/inbound/trades-app/— outras exportações de field-service / trabalho / pricebook / cliente / compromisso. Perfis nomeados: Jobber, Housecall Pro, Service Fusion, livros no formato QuickBooks, ServiceM8, AccuLynx, SuccessWare, Xero, FieldEdge, ServiceTrade. JSON/CSV genérico quando nenhuma impressão digital corresponde.data/runtime/<instanceId>/receipts.jsonleledger.jsonl— isolar por instância de runtime
Não é data/tenants/ (essa palavra implica um serviço hospedado multi-tenant). A configuração local opcional lista caminhos ou dicas de endpoint de leitura apenas — sem conta na nuvem, e o runtime não chama essas dicas. Os tokens permanecem na máquina do usuário ou em seu cofre selado.
Valores sourceKind de primeira classe do FragGate: servicetitan (MEDIUM, com hash, live:false write:false), probooks (mesmo), trades-app (mesmo, classe genérica), operator-file (LOW até a origem ser marcada como servicetitan, probooks, ou trades-app; ainda não é verdade), human (correção de gerente na Cadeia C com id de ator). Wrapper ≠ verificado. Scrape, dump central, upload hospedado e promoção silenciosa para VERIFIED são recusados.
Drop-in universal (TR-DESK-2026-09-25)
ServiceTitan e ProBooks permanecem como classes peer nomeadas. Uma terceira classe de entrada, trades-app, admite a mesma família de exportações sem um novo papel para cada fornecedor. O drop-in detecta a forma JSON/CSV e aplica um perfil de mapeamento. 0.4.1 prefere um perfil nomeado quando chaves, cabeçalhos ou o nome do arquivo correspondem: Jobber, Housecall Pro, Service Fusion, QuickBooks Online, QuickBooks Desktop, ServiceM8, AccuLynx, SuccessWare, Xero, FieldEdge e ServiceTrade. Caso contrário, usa JSON genérico ou CSV genérico. Um arquivo que ainda parece ServiceTitan ou ProBooks permanece nessa classe peer. Veja TR-VENDOR-2026-09-25.
npm run drop-in:demo
Essa demonstração copia fixtures sintéticos de test/fixtures/byo/ para uma árvore de entrada temporária, admite-os através do FragGate, aplica hash nos pacotes, escreve recibos de isolamento temporários e prova que gravações ainda lançam erro. Não é um dump de cliente.
Exportações reais permanecem nas pastas de drop ignoradas pelo git. data/inbound/local.json (copiado de local.json.example) pode nomear caminhos e dicas de endpoint de leitura. As dicas são documentação para o operador. Este processo não as busca.
Mesa de operador humano
A mesa é a superfície humana. O Agent MCP permanece uma ponte somente leitura sem esse chrome.
npm run desk
# http://127.0.0.1:4174/
npm run shadow:field e npm run shadow:office imprimem uma leitura shadow local do mesmo snapshot da mesa. Ambos os comandos, e a página da mesa, leem data/runtime/<instanceId>/field-events.jsonl (Clock in, Clock out, Start Meal, End Meal, Drive time home) e o registro de preço do trabalho em data/runtime/<instanceId>/job-prices.json (custo de peça tipado, mão de obra, taxas de tarefa, margem, desconto bloqueado). Eles não mantêm um segundo log de eventos. live_backends permanece falso. pilot_started permanece falso. Isso não é uma reivindicação Field 1.0 e não é Office Softwares 1.0. ServiceTitan, Jobber e outros perfis bring-your-own permanecem somente leitura. Gravações permanecem recusadas. Um preço SupplyHouse está presente apenas quando a planilha armazenada já tem um. Esta leitura não inventa um preço e não adiciona um caminho de pedido. Fatos de listagem de propriedade permanecem vazios até que uma fonte permitida exista.
Ele vincula-se apenas a 127.0.0.1. A página mostra gráficos de trabalho/conclusão, um gráfico de capacidade, um quadro de missões e um quadro de técnicos, um morning huddle, progresso de fulfillment, alertas e pontuações. Chamadas de callback, chamadas de garantia e um balde não classificado ficam nas métricas e no quadro de missões. Cada linha de chamada carrega o motivo da classificação quando a exportação nomeou um rótulo, e diz não classificado quando a exportação é silenciosa. Os filtros são ?calls=callback, ?calls=warranty e ?calls=not-classified na página, /api/snapshot, /api/view, /api/receipt e o stream SSE. /api/calls/week.json é a taxa de callback da semana anterior por lane de ofício. /api/huddle imprime o morning huddle e /api/huddle.json é o mesmo quadro como JSON. O huddle nomeia trainingNeeded (severidade e motivo) a partir de observações de procedimento. Não é uma pontuação de habilidade. Custo de peça, comportamento do departamento e contagens de caminhão estão na mesma página. /api/stock lê contagens no van e no armazém. Milhas percorridas e desempenho de direção ficam ao lado de um quadro ranqueado de desempenho de funcionários e departamentos. /api/drive e /api/performance são o JSON de loopback para esses quadros. Um arquivo de milhas opcional é data/runtime/<instanceId>/drive-miles.json ou data/inbound/drive-miles.json. Um arquivo ausente permanece desconhecido uma vez que uma exportação local é admitida. A mesa de pasta vazia rotula uma demonstração sintética. Essa demonstração não é uma exportação de empresa e não é um feed de telemática. O ranking não é uma pontuação de habilidade e não define trainingNeeded. Nenhum fornecedor de GPS é reivindicado. Work together lista colaboração positiva da Cadeia D, cross-trade e flags de reconhecimento e nomeia quem ou qual lane deve parear ou fazer handoff para técnicos de serviço quando necessário e para instalação. /api/work-together é esse quadro. A taxa de atrito de funcionários fica no mesmo quadro de desempenho e em /api/friction. Ela conta falhas de handoff, flags de coordenação, callbacks explícitos e handoffs atrasados nesta máquina. Uma exportação silenciosa permanece desconhecida. Atrito rank 1 é o maior atrito conhecido, não o melhor desempenho. Não é um sistema de RH hospedado e não define trainingNeeded. Essas rotas permanecem nesta máquina. Cada pontuação e faixa de ritmo inclui um breve porquê. Acertos atuais de regras de alerta exportam como JSON ou CSV de /api/alerts/digest.json e /api/alerts/digest.csv nesta máquina. /api/receipt imprime o que bloqueou o agendamento quando um bloqueio está presente, e diz quando nada está bloqueando. TR-DESK-POLISH-2026-09-25 adiciona espaçamento e tipo, um tema claro/escuro armazenado neste navegador (trades-desk-theme), uma visualização de lane e um snapshot imprimível em /api/receipt. A lane é uma contagem de slots, ou um token de ofício conhecido quando a exportação nomeia um (hvac, plumbing, electrical, sewer, cross-trades). Um nome de cidade não é uma lane. Nenhum mapa é desenhado. O snapshot é HTML que o operador pode imprimir ou salvar como PDF. Ele cita identificadores de recibos locais e não inclui corpos de recibos. Nada nessa página faz phone-home. Pontuações usam ritmo de missão, a faixa de confiança de evidência, verificação (UNVERIFIED) e recommendBlock. Confiança de previsão permanece retida em um drop BYO. A confiança registrada do shadow-day sintético aparece apenas na demonstração sintética, rotulada como fixture. Uma pasta de entrada vazia mostra essa demonstração sintética. Soltar um arquivo atualiza o próximo tick SSE (cerca de 2s) e o rótulo muda para BYO-admitido, ou BYO-admitido drill sintético quando todos os arquivos declaram synthetic: true.
Regras de alerta locais (TR-ALERTS-2026-09-25)
As mesmas pontuações dirigem limites locais: capacidade (slots abertos, apenas quando uma lane existe), trabalhos atrasados (linhas não concluídas contra o relógio de missão), faixa de confiança (piso de confiança de evidência ou um drop lembrado nesta máquina), bloqueio de agendamento (recommendBlock) e parada de verificação (a pontuação de verificação permanece UNVERIFIED ou CONFLICTED por N minutos a partir da observação mais antiga). Nenhum percentual de precisão é calculado. Um relógio ausente não inventa uma parada. Slots abertos em branco em uma mesa BYO não inventam um percentual de utilização.
Copie data/runtime/alerts.json.example para data/runtime/<instanceId>/alerts.json (ignorado pelo git). data/inbound/local.json pode definir alertsPath ou um objeto alerts. O banner da mesa mostra regras não reconhecidas. O painel de alertas mostra regras ativas, histórico e reconhecimento. Reconhecimento é um POST local em 127.0.0.1 e escreve apenas alert-state.json. Hooks opcionais anexam um arquivo JSONL local ou fazem POST para loopback (127.0.0.1, localhost, ::1). Qualquer outro host de webhook é recusado. Sem phone-home.
Qualidade de entrada, stubs de alerta e gate de início da Opção C (TR-QUALITY-2026-09-27)
/api/inbound-quality e /api/inbound-quality.txt pontuam fragmentos ServiceTitan e ProBooks já nesta máquina. A mesa gráfica volume por sourceKind, distribuição de pontuação de checklist e principais classes de defeito desse relatório local. Pastas vazias usam um fixture sintético rotulado. O checklist não é um percentual de precisão e não é um pull de tenant ao vivo. Arquivos chegam em data/runtime/<instanceId>/inbound-quality.json, .txt e .jsonl.
/api/alert-actions retorna apenas stubs. Um alerta de disparo expande para um rótulo, uma justificativa, a autoridade humana exigida e refused: write-back. A Regra de Autoridade Humana está no painel. Stubs não chamam ServiceTitan nem ProBooks.
/api/option-c-start-gate lista as condições de início. Cada portão permanece bloqueado-até. A Opção C permanece em preparação até que um operador humano inicie um piloto real. A Opção D está fora do escopo. Não há cutover. O catálogo enviado mantém pilot_started falso. live_backends permanece falso. O painel não inicia o piloto.
/api/monitoring é uma visão de mesa: pins locais ou de demonstração de técnicos e caminhões, cartões de ponto, um mapa ao vivo de cobertura, sugestões de técnico certo, cartões de pontuação de direção, cartões de pontuação de técnicos, um quadro de chamadas estilo despacho e gráficos de KPI. Os pins vêm de data/runtime/<instanceId>/positions.json, data/inbound/positions.json ou coordenadas copiadas de um arquivo local de milhas. Copie data/runtime/positions.json.example. Uma pasta vazia usa uma demonstração sintética rotulada. Um arquivo recusado não é substituído por essa demonstração. Os totais de milhas ainda ignoram coordenadas. O mapa de endereços permanece não desenhado. Isso não é um feed GPS ao vivo e não é um fornecedor de telemática. A visão é recalculada quando arquivos locais mudam. Somente monitoramento. A Regra de Autoridade Humana permanece no painel. Nada é gravado de volta no ServiceTitan ou ProBooks.
/api/time-tracking é o quadro de tempo local: tempo registrado na chamada atual, decorrido, estimativa restante e segmentos ociosos ou de viagem. Copie data/runtime/time-cards.json.example para data/runtime/<instanceId>/time-cards.json ou data/inbound/time-cards.json. A mesa grava time-tracking.json e time-tracking.jsonl sob data/runtime/<instanceId>/. Um arquivo ausente permanece vazio depois que uma exportação local é admitida. A mesa de pasta vazia rotula uma demonstração sintética. Essa demonstração não é um relógio de ponto da empresa nem um feed GPS.
/api/coverage são CEPs, condados, cidades e estradas ou rodovias, com interruptores liga/desliga. Copie data/runtime/coverage.json.example para data/runtime/<instanceId>/coverage.json ou data/inbound/coverage.json. Os interruptores persistem em coverage-layers.json nesta máquina (POST /api/coverage/layers). As contagens são locais, empregos e técnicos desse arquivo local. Não é um fornecedor ao vivo de mapas de tiles. O mapa de endereços permanece não desenhado.
/api/right-tech (e /api/tech-fit) classifica técnicos para um trabalho aberto ou agendado com base em geolocalização, tempo estimado restante e adequação de habilidades. ?job= opcional. Somente sugestões. Sem despacho automático. Sem gravação de volta. Atrito e minutos locais pesados de direção são sinalizadores. Geografia não é o único fator.
O operador pode ligar ou desligar quadros, métricas, KPIs, técnicos, pontuações, gráficos, faixas, alertas, colunas de chamadas e medidas de missão. Cada caixa começa ligada. A escolha é armazenada neste navegador sob trades-desk-view e não é enviada para fora da máquina. TR-DESK-VIEW-2026-09-27.
A mesma página é utilizável a cerca de 375px. Uma navegação de domínio fixa salta para cada quadro. Links de cabeçalho, gráficos de monitoramento e tabelas largas rolam dentro da página em vez de alargá-la. Tema, filtros, reconhecimento, divulgação de stub, impressão e qualquer input, select ou textarea têm pelo menos 44px de altura, com padding de área segura. As grades de cartões Softwares de janela larga permanecem como estão. Ainda não há formulário de entrada de dados do locatário. TR-MOBILE-DESK-2026-09-27. Os cartões públicos do Worker não fazem parte deste corte.
O Worker público pode citar npx tsx src/cli.ts desk e /local-desk como notas de instalação. Ele não hospeda a mesa, os hooks de alerta ou as métricas do locatário. Este repositório não implanta o Worker.
npm run byo:admit-demo é prova de software do operador com fixtures sintéticas sob test/fixtures/byo/. Ele copia essas fixtures para um diretório temporário de entrada, admite via FragGate como servicetitan + probooks, gera hash de pacotes, grava recibos de isolamento sob um data/runtime/<id>/ temporário, imprime hashes e prova que wrapper ≠ VERIFIED enquanto gravações ST/ProBooks ainda lançam erro. Não é um dump de cliente. O nó de autoria não é um custodiante de dados.
Exportações reais de usuários pertencem somente à máquina desse usuário sob data/inbound/{servicetitan,probooks,trades-app}/ (gitignored exceto .gitkeep).
Nomes herdados vêm somente de specs/aziel-runtime-inheritance.txt. Isso não é uma cópia integral do aziel-runtime Softwares.
Escada (honesta)
| Opção | Significado | Estado |
|---|---|---|
| A | Somente merge | concluído |
| B | Espinha local | concluído em software |
| C | Sombra de um ramo | código pronto / piloto não iniciado |
| D | Piloto advise-lock | não iniciado |
O software para a Opção C existe (ramo nomeado, regras de engajamento, harness de liquidação selado, demonstração sintética). Isso não é um piloto de empresa ou de campo. Não diga a um GM que o sistema operacional da empresa está ao vivo. Não finja a Opção C como um piloto de empresa ao vivo. A Opção D ainda é NÃO.
TR-OPTION-C-PREP-2026-09-25 é a lista de verificação da caixa do operador: instalação local, pastas de drop de entrada, configuração de exemplo, admissão sintética, mesa e alertas, expectativas SHADOW-SEALED, prova de recusa de gravação e o que não fazer. npm run pilot:prep executa essas verificações e imprime um recibo. ready: true significa que a máquina passou. Esse recibo mantém pilot_started falso. O comando não abre um dia selado contra dados reais da empresa e não grava no ServiceTitan, ProBooks ou um aplicativo de comércio.
TR-OPTION-C-PILOT-RUNBOOK-2026-10-02 é como um operador inicia um piloto real com o comando enviado. Após a preparação estar verde, uma pessoa na caixa do operador executa npm run pilot:start -- --branch <branchId> (CLI pilot-start). Um ramo nomeado é obrigatório. O comando reutiliza as verificações de preparação. Ele recusa um ramo ausente ou ruim, preparação não pronta e --claim-company quando a entrada está vazia ou apenas sintética. O sucesso grava data/runtime/<instanceId>/pilot.json e uma linha em receipts.jsonl somente para aquele isolado. O catálogo enviado, a saúde padrão, glama.json e o pin do Worker de brinde permanecem 1.0.0-local com pilot_started falso. O modo permanece SHADOW-SEALED. live_backends permanece falso. Gravações permanecem recusadas. Uma mudança explícita de modo não inicia o piloto. O recibo diz que isso não é um sistema operacional de empresa ao vivo, não é Field 1.0 e não é Office Softwares 1.0. Mesclar esta documentação não inicia um piloto. Um humano deve executar o comando em um ramo real pronto para preparação. TR-PILOT-START-2026-10-02 é o corte que enviou o comando. Este repositório não implanta o Worker e não faz Make Release.
Ainda somente humano/operador: um caminho real do ServiceTitan na caixa deles, um GM nomeado e dias selados contra os dados reais deles. O nó de autoria não mantém esse dump. Um recibo de preparação não é esse piloto.
Worker público de brinde
Superfície pública autorizada pelo operador é um Cloudflare Worker:
https://trades-runtime.vibelock.workers.dev
Nome do script do Worker: trades-runtime (mesmo padrão de conta vibelock workers.dev que aziel-runtime.vibelock.workers.dev). Fonte: workers/giveaway/.
O que é:
- UI humana de brinde neste host VibeLock (navegador / PWA): honestidade, citação, MCP, habilidade e estatísticas, utilizável sem baixar primeiro
- Tarball Apache-2.0 opcional contado em
GET /download(incrementa somente após um gzip 200 verificado) /local-deskcita a instalação local denpx tsx src/cli.ts desk. Não hospeda métricas de locatário nem um quadro de empresa ao vivo/openapi.jsonePOST /mcpfinos somente leitura para clientes de IA (saúde / estatísticas / citação / habilidade apenas)- Superfícies de rastreamento Growth-ON:
/robots.txt(Allow completo + Content-Signal),/sitemap.xml,/ai.txt,/humans.txt,/.well-known/mcp.json,/person.jsonld,/graph.jsonld - Ponte MCP stdio para Glama / Claude Desktop / Cursor:
npm run mcp→cli/mcp-stdio.mjs(encaminha para o WorkerPOST /mcp) - Contadores honestos de Workers KV (
COUNTS):viewsedownloadscomeçam em 0; incrementam somente em respostas 200 bem-sucedidas; sem amostragem, sem semente, sem inflação
Implantação (operador / caixa com autenticação wrangler)
Este repositório não implanta o Worker. Primeira vez na conta vibelock:
npm ci
npm test
cd workers/giveaway
npm ci
npx wrangler kv namespace create COUNTS
# paste the printed id into wrangler.jsonc kv_namespaces[0].id
npm run pack
npx wrangler deploy
Implantações posteriores a partir da raiz do repositório:
npm run giveaway:pack
cd workers/giveaway && npx wrangler deploy
Smoke local (Miniflare KV, sem autenticação Cloudflare necessária):
npm run giveaway:pack
cd workers/giveaway
npx wrangler dev
# GET http://127.0.0.1:8787/ /download /v1/health /v1/stats /robots.txt /sitemap.xml /ai.txt
Contadores: veja workers/giveaway/README.md.
Glama (pacote Install Server)
Listagem pretendida: Try on Glama
A URL da listagem é documentada para que agentes e humanos possam encontrá-la. O pacote Git (glama.json + Dockerfile + cli/mcp-stdio.mjs) é o que o Glama precisa para indexar e hospedar um processo stdio. Install Server não é reivindicado como LIVE somente a partir desta árvore git. Etapas: docs/GLAMA.md.
Não invente pontuações TDQS do Glama. A listagem Latest corresponde à dica de citação do Softwares. Essa correspondência não é Field 1.0 e não é Office Softwares 1.0.
Verificado em 2026-10-02: Glama Latest/releaseVersion é 1.0.0-local (latestRelease.version em https://glama.ai/mcp/servers/@AzielEliab/trades-runtime). O badge corresponde à dica de citação do Softwares. Softwares local 1.0. Essa correspondência não é uma reivindicação de Field 1.0 e não é Office Softwares 1.0. A versão glama.json é o arquivo de reivindicação no repositório (1.0.0-local) e corresponde a esse badge. A fonte do Worker neste repositório é 1.0.0-local. O pin de versão do Worker de brinde é 1.0.0-local. Verificado em 2026-09-28: o Worker já em execução ainda é 0.4.12. Este corte não implanta e não faz Make Release. pilot_started falso. live_backends falso.
Local / Docker:
npm run mcp
# or
node cli/mcp-stdio.mjs
docker build -t trades-runtime-mcp .
docker run --rm -i trades-runtime-mcp
Pages (intencionalmente desabilitado)
GitHub Pages está intencionalmente desabilitado. Não há .github/workflows/pages.yml. Não adicione um workflow de deploy do Pages. Não habilite Pages no repositório. Não trate uma URL github.io como uma superfície de produto ao vivo.
O software é livre para clonar. GitHub Pages permanece desligado. Não habilite Pages. Não adicione PDFs sob docs/. Uma UI de navegador, se um Worker já estiver implantado, é https://trades-runtime.vibelock.workers.dev.. Este repositório não implanta esse Worker. O tarball contado é opcional.
Pré-visualização de UI local (Pages permanece desligado):
python3 -m http.server 4173 --directory docs
Catálogo de máquinas: docs/v1/runtime.json. UI de módulo: /modules/.
O que isso não é (§1.2)
Não é um otimizador simples de despacho. Não é um ranking de receita como habilidade. Não é um planejador fixo de rota matinal. Não é uma caixa preta autônoma que sobrepõe silenciosamente humanos. Não é foto como prova de má conduta. Não é combustível-primeiro. Não é uma penalidade automática de callback de 30 dias. Não é um portal de PDF.
Licença
Apache License 2.0. Veja LICENSE.