{
  "_id": "6acac39bfe5cc25786e8be55",
  "Package": "trama",
  "Title": "Interactive Node-Graph Computation with Live Previews",
  "Version": "0.5.16",
  "Authors@R": "c(\nperson(\"Pedro\", \"Mambelli Fernandes\", , \"pedromambelli@gmail.com\",\nrole = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0009-0001-1695-279X\")),\nperson(\"João Paulo Assis\", \"Bonifácio\", , \"jpab.27@hotmail.com\",\nrole = \"aut\",\ncomment = c(ORCID = \"0009-0009-2335-8391\"))\n)",
  "Description": "Build and run computation graphs interactively. Nodes are\ntyped R functions with declared ports and parameters; a flow is\na plain JSON document; execution is pull-based,\ncontent-addressed and incremental, so editing a parameter\nrecomputes only what depends on it. Every node renders its own\nresult in the canvas with a registered renderer, making each\nstep of a pipeline visible rather than implied. Domain\nknowledge lives entirely in registrable collections, never in\nthe core, so new domains are added without modifying the\npackage.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/uaipedro/trama",
  "BugReports": "https://github.com/uaipedro/trama/issues",
  "Copyright": "file inst/COPYRIGHTS",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "Config/testthat/edition": "3",
  "Config/roxygen2/version": "8.0.0",
  "Config/pak/sysreqs": "cmake make libuv1-dev libssl-dev zlib1g-dev",
  "Repository": "https://uaipedro.r-universe.dev",
  "Date/Publication": "2026-10-09 16:23:25 UTC",
  "RemoteUrl": "https://github.com/uaipedro/trama",
  "RemoteRef": "HEAD",
  "RemoteSha": "1bdeb4f693df836f77e762f2642cc18a3956f8b1",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-10 22:51:13 UTC",
    "User": "root"
  },
  "Author": "Pedro Mambelli Fernandes [aut, cre] (ORCID:\n<https://orcid.org/0009-0001-1695-279X>),\nJoão Paulo Assis Bonifácio [aut] (ORCID:\n<https://orcid.org/0009-0009-2335-8391>)",
  "Maintainer": "Pedro Mambelli Fernandes <pedromambelli@gmail.com>",
  "_user": "uaipedro",
  "_type": "src",
  "_file": "trama_0.5.16.tar.gz",
  "_fileid": "https://r2.ropensci.org/e87e967c15b39a3a42a82b91f74656faf566a5a42413618d45e10dd19ae058c5",
  "_filesize": 1659423,
  "_sha256": "e87e967c15b39a3a42a82b91f74656faf566a5a42413618d45e10dd19ae058c5",
  "_expires": "2027-01-18T23:00:40.000Z",
  "_created": "2026-10-10T22:51:13.000Z",
  "_published": "2026-10-10T23:00:42.989Z",
  "_buildurl": "https://github.com/r-universe/uaipedro/actions/runs/38092775140",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 114333016251,
      "time": 158,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "11684419053"
    },
    {
      "job": 114333016325,
      "time": 161,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "11684319200"
    },
    {
      "job": 114333016245,
      "time": 150,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "11685101116"
    },
    {
      "job": 114333016266,
      "time": 131,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "11685131308"
    },
    {
      "job": 114332498227,
      "time": 177,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11685105742"
    },
    {
      "job": 114333016200,
      "time": 102,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11684951013"
    },
    {
      "job": 114333016259,
      "time": 155,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "11684184450"
    },
    {
      "job": 114333016278,
      "time": 164,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "11684309109"
    },
    {
      "job": 114333016270,
      "time": 148,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "11684658650"
    }
  ],
  "_upstream": "https://github.com/uaipedro/trama",
  "_commit": {
    "id": "1bdeb4f693df836f77e762f2642cc18a3956f8b1",
    "author": "uaipedro <pedromambelli@gmail.com>",
    "committer": "uaipedro <pedromambelli@gmail.com>",
    "message": "feat(models): normalidade dos resíduos quantílicos do GLM com p mediano calibrado\n\nmodels/shapiro_residuals (versão 2) testa os resíduos quantílicos randomizados\nno GLM: p mediano do Shapiro-Wilk em 'sorteios' realizações como estatística,\np-valor por Monte Carlo com 'reamostras' respostas simuladas do ajuste. Tipo I\nmedido: 4,5 a 5,5% (o p mediano cru dava 0 a 2%). Resíduo quantílico finito na\ncauda de cima. trama.models 0.6.9.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>\n",
    "time": 1791563005
  },
  "_maintainer": {
    "name": "Pedro Mambelli Fernandes",
    "email": "pedromambelli@gmail.com",
    "login": "uaipedro",
    "description": "Estudante de Estatística (UFLA) com background em desenvolvimento e gestão.",
    "uuid": 44395968,
    "orcid": "0009-0001-1695-279X"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1",
      "role": "Depends"
    },
    {
      "package": "dplyr",
      "role": "Depends"
    },
    {
      "package": "lubridate",
      "role": "Depends"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "htmltools",
      "role": "Imports"
    },
    {
      "package": "shiny",
      "role": "Imports"
    },
    {
      "package": "later",
      "role": "Imports"
    },
    {
      "package": "curl",
      "role": "Imports"
    },
    {
      "package": "httpuv",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    },
    {
      "package": "mirai",
      "role": "Suggests"
    },
    {
      "package": "pkgload",
      "role": "Suggests"
    }
  ],
  "_owner": "uaipedro",
  "_selfowned": true,
  "_usedby": 10,
  "_updates": [
    {
      "week": "2026-38",
      "n": 144
    },
    {
      "week": "2026-39",
      "n": 225
    },
    {
      "week": "2026-40",
      "n": 46
    },
    {
      "week": "2026-41",
      "n": 71
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2026-09-15"
    },
    {
      "name": "launcher-v0.1.0",
      "date": "2026-09-18"
    },
    {
      "name": "launcher-v0.1.1",
      "date": "2026-09-18"
    },
    {
      "name": "launcher-v0.1.2",
      "date": "2026-09-18"
    },
    {
      "name": "launcher-v0.1.3",
      "date": "2026-09-18"
    },
    {
      "name": "launcher-v0.1.4",
      "date": "2026-09-18"
    },
    {
      "name": "launcher-v0.1.6",
      "date": "2026-09-19"
    },
    {
      "name": "trama-2026.10",
      "date": "2026-09-24"
    },
    {
      "name": "v0.1.1",
      "date": "2026-09-24"
    },
    {
      "name": "v0.1.2",
      "date": "2026-09-26"
    },
    {
      "name": "v0.1.3",
      "date": "2026-09-27"
    },
    {
      "name": "v0.1.10",
      "date": "2026-10-08"
    },
    {
      "name": "v0.1.8",
      "date": "2026-10-08"
    },
    {
      "name": "v0.1.9",
      "date": "2026-10-08"
    },
    {
      "name": "v0.1.11",
      "date": "2026-10-09"
    },
    {
      "name": "v0.1.12",
      "date": "2026-10-09"
    },
    {
      "name": "v0.1.13",
      "date": "2026-10-09"
    }
  ],
  "_stars": 1,
  "_contributors": [
    {
      "user": "uaipedro",
      "count": 837,
      "uuid": 44395968
    },
    {
      "user": "bonijoao",
      "count": 18,
      "uuid": 87396526
    }
  ],
  "_userbio": {
    "uuid": 44395968,
    "type": "user",
    "name": "Pedro Mambelli Fernandes",
    "followers": 5,
    "description": "Estudante de Estatística (UFLA) com background em desenvolvimento e gestão."
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/trama"
  },
  "_devurl": "https://github.com/uaipedro/trama",
  "_searchresults": 190,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/trama.html",
    "LICENSE"
  ],
  "_cranurl": false,
  "_exports": [
    "tr_adapter",
    "tr_adapter_for",
    "tr_add",
    "tr_app",
    "tr_bust",
    "tr_catalog",
    "tr_catalog_json",
    "tr_category",
    "tr_cli",
    "tr_collection",
    "tr_compatible",
    "tr_dataset",
    "tr_dataset_load",
    "tr_datasets",
    "tr_dependency_core",
    "tr_dependency_importmap",
    "tr_doc",
    "tr_doc_apply",
    "tr_doc_json",
    "tr_doc_migrate",
    "tr_doc_parse",
    "tr_doc_read",
    "tr_doc_subset",
    "tr_doc_terminals",
    "tr_doc_validate",
    "tr_doc_write",
    "tr_errors",
    "tr_executor_pool",
    "tr_executor_sequential",
    "tr_export_code",
    "tr_flow",
    "tr_flow_code",
    "tr_flow_doc",
    "tr_fn",
    "tr_galeria_captura",
    "tr_galeria_itens",
    "tr_galeria_sincronizar",
    "tr_get_node",
    "tr_get_type",
    "tr_handle_failed",
    "tr_help_test_card",
    "tr_icon",
    "tr_is_template",
    "tr_link",
    "tr_mcp",
    "tr_node",
    "tr_node_raiox",
    "tr_op_semantic",
    "tr_param",
    "tr_param_bool",
    "tr_param_col",
    "tr_param_enum",
    "tr_param_int",
    "tr_param_num",
    "tr_param_text",
    "tr_param_theme",
    "tr_plan",
    "tr_plan_blocked",
    "tr_plan_keys",
    "tr_plan_pending",
    "tr_port",
    "tr_port_default",
    "tr_port_free",
    "tr_pressuposto",
    "tr_preview",
    "tr_progress",
    "tr_project",
    "tr_project_at",
    "tr_project_flow",
    "tr_project_gc",
    "tr_project_new",
    "tr_project_save",
    "tr_project_set_galeria",
    "tr_project_set_marca",
    "tr_project_set_sugestoes",
    "tr_project_set_themes",
    "tr_provenance",
    "tr_ref",
    "tr_registry",
    "tr_registry_for",
    "tr_replay",
    "tr_retry",
    "tr_run",
    "tr_run_logger",
    "tr_run_plan",
    "tr_runs",
    "tr_scheduler",
    "tr_server",
    "tr_set",
    "tr_store",
    "tr_store_gc",
    "tr_store_get",
    "tr_store_handle",
    "tr_store_has",
    "tr_store_path",
    "tr_store_put",
    "tr_store_put_error",
    "tr_stream_command",
    "tr_submit",
    "tr_template",
    "tr_template_dir",
    "tr_template_json",
    "tr_template_list",
    "tr_template_op",
    "tr_template_parse",
    "tr_template_read",
    "tr_template_save",
    "tr_test",
    "tr_test_table",
    "tr_test_type",
    "tr_text",
    "tr_theme",
    "tr_theme_names",
    "tr_transitions_read",
    "tr_type",
    "tr_ui",
    "tr_use",
    "tr_value",
    "tr_when",
    "tr_when_padrao"
  ],
  "_help": [
    {
      "page": "dot-tr_presentation_ops",
      "title": "Ops que mexem SÓ em apresentação. Todo o resto é semântico.",
      "topics": [
        ".tr_presentation_ops"
      ]
    },
    {
      "page": "tr_adapter",
      "title": "Adaptador de tipo: conversão registrada entre dois tipos.",
      "topics": [
        "tr_adapter"
      ]
    },
    {
      "page": "tr_adapter_for",
      "title": "Busca o adaptador 'from_type -> to_type', ou 'NULL' se não houver (tipos iguais não precisam de adaptador).",
      "topics": [
        "tr_adapter_for"
      ]
    },
    {
      "page": "tr_add",
      "title": "Acrescenta um nó. '...' são params (nomeados). 'from' liga a saída de um ou mais nós existentes às portas de entrada obrigatórias ainda livres deste, na ordem declarada — o caso comum de \"encadeia\" sem precisar nomear porta.",
      "topics": [
        "tr_add"
      ]
    },
    {
      "page": "tr_app",
      "title": "Sobe o editor.",
      "topics": [
        "tr_app"
      ]
    },
    {
      "page": "tr_bust",
      "title": "Invalida por prefixo de coleção — válvula para o gap de dependência externa.",
      "topics": [
        "tr_bust"
      ]
    },
    {
      "page": "tr_catalog",
      "title": "Catálogo do registro em forma serializável: tipos, categorias, nós e adaptadores — o que o front usa pra desenhar a paleta e validar conexões sem round-trip.",
      "topics": [
        "tr_catalog"
      ]
    },
    {
      "page": "tr_catalog_json",
      "title": "'tr_catalog()' como JSON.",
      "topics": [
        "tr_catalog_json"
      ]
    },
    {
      "page": "tr_category",
      "title": "Categoria: agrupamento na paleta e cor do cabeçalho dos cards.",
      "topics": [
        "tr_category"
      ]
    },
    {
      "page": "tr_cli",
      "title": "Linha de comando do canal de controle.",
      "topics": [
        "tr_cli"
      ]
    },
    {
      "page": "tr_collection",
      "title": "Agrupa tipos, nós, adaptadores e categorias de um domínio.",
      "topics": [
        "tr_collection"
      ]
    },
    {
      "page": "tr_compatible",
      "title": "Compatibilidade de porta — CONSULTADA NUM LUGAR SÓ.",
      "topics": [
        "tr_compatible"
      ]
    },
    {
      "page": "tr_dataset",
      "title": "Base de dados pública que uma coleção oferece no catálogo de bases.",
      "topics": [
        "tr_dataset"
      ]
    },
    {
      "page": "tr_dataset_load",
      "title": "Carrega uma base rodando o bloco que a declara.",
      "topics": [
        "tr_dataset_load"
      ]
    },
    {
      "page": "tr_datasets",
      "title": "Bases de todas as coleções do registro, com o estado de instalação.",
      "topics": [
        "tr_datasets"
      ]
    },
    {
      "page": "tr_dependency_collection",
      "title": "JS e CSS de uma coleção — o mecanismo que permite visualização nova sem tocar no núcleo. O JS carrega DEPOIS do runtime e ANTES do editor; o CSS, depois do 'trama.css' do núcleo (a ordem vem de 'tr_ui()').",
      "topics": [
        "tr_dependency_collection"
      ]
    },
    {
      "page": "tr_dependency_core",
      "title": "Dependência Shiny com os assets do núcleo (CSS do core e do xyflow, 'runtime.js', 'editor.js').",
      "topics": [
        "tr_dependency_core"
      ]
    },
    {
      "page": "tr_dependency_importmap",
      "title": "Dependência Shiny que injeta o importmap e a captura de erro de boot, antes de qualquer módulo.",
      "topics": [
        "tr_dependency_importmap"
      ]
    },
    {
      "page": "tr_doc",
      "title": "Documento: o grafo que o usuário montou.",
      "topics": [
        "tr_doc"
      ]
    },
    {
      "page": "tr_doc_apply",
      "title": "Conveniência (console, testes, replay). A superfície do transporte é 'tr_submit()' — ela é que carrega a proteção de revisão. Chamar isto direto a partir do servidor reintroduziria a corrida do insumo.",
      "topics": [
        "tr_doc_apply"
      ]
    },
    {
      "page": "tr_doc_json",
      "title": "Documento como JSON canônico — a forma que trafega pro front e vai pro disco.",
      "topics": [
        "tr_doc_json"
      ]
    },
    {
      "page": "tr_doc_migrate",
      "title": "Leva um documento salvo ao formato do registro atual.",
      "topics": [
        "tr_doc_migrate"
      ]
    },
    {
      "page": "tr_doc_parse",
      "title": "Lê um documento a partir de texto JSON, validando o formato e reconstituindo vetores achatados pelo parse.",
      "topics": [
        "tr_doc_parse"
      ]
    },
    {
      "page": "tr_doc_read",
      "title": "Lê um documento de um arquivo '.json'.",
      "topics": [
        "tr_doc_read"
      ]
    },
    {
      "page": "tr_doc_subset",
      "title": "Recorte do documento com os nós/frames/notas de 'ids' e só as arestas internas.",
      "topics": [
        "tr_doc_subset"
      ]
    },
    {
      "page": "tr_doc_terminals",
      "title": "Nós sem aresta de saída — os alvos default de execução.",
      "topics": [
        "tr_doc_terminals"
      ]
    },
    {
      "page": "tr_doc_validate",
      "title": "Revalida um documento inteiro contra um registro.",
      "topics": [
        "tr_doc_validate"
      ]
    },
    {
      "page": "tr_doc_write",
      "title": "Grava o documento em 'path' como JSON.",
      "topics": [
        "tr_doc_write"
      ]
    },
    {
      "page": "tr_errors",
      "title": "Classes de erro do trama.",
      "topics": [
        "tr_errors"
      ]
    },
    {
      "page": "tr_executor_pool",
      "title": "Executor com pool de daemons ('mirai').",
      "topics": [
        "tr_executor_pool"
      ]
    },
    {
      "page": "tr_executor_sequential",
      "title": "Executores: a mesma interface, duas estratégias.",
      "topics": [
        "tr_executor_sequential"
      ]
    },
    {
      "page": "tr_export_code",
      "title": "Exporta um fluxo como código R independente do Trama.",
      "topics": [
        "tr_export_code"
      ]
    },
    {
      "page": "tr_flow",
      "title": "Superfície R para escrever um fluxo — açúcar sobre as ops, nada mais.",
      "topics": [
        "tr_flow"
      ]
    },
    {
      "page": "tr_flow_code",
      "title": "Gera o código R (DSL) que reconstrói o documento. É a outra metade da promessa \"diagrama e código são a mesma coisa\": o que se monta na interface se lê como R, e o que se escreve em R aparece na interface.",
      "topics": [
        "tr_flow_code"
      ]
    },
    {
      "page": "tr_flow_doc",
      "title": "O 'tr_doc' por trás de um 'tr_flow' — a saída pronta pra 'tr_run()', 'tr_doc_write()' etc.",
      "topics": [
        "tr_flow_doc"
      ]
    },
    {
      "page": "tr_fn",
      "title": "Nível 1 da API: a função do nó, chamável direto.",
      "topics": [
        "tr_fn"
      ]
    },
    {
      "page": "tr_galeria_captura",
      "title": "Grava o PNG de uma captura de navegador como item da galeria.",
      "topics": [
        "tr_galeria_captura"
      ]
    },
    {
      "page": "tr_galeria_itens",
      "title": "Itens da galeria, em ordem de fluxo, sem exportar nada.",
      "topics": [
        "tr_galeria_itens"
      ]
    },
    {
      "page": "tr_galeria_sincronizar",
      "title": "Sincroniza a pasta da galeria com o projeto.",
      "topics": [
        "tr_galeria_sincronizar"
      ]
    },
    {
      "page": "tr_get_node",
      "title": "Busca um 'tr_node' pelo id qualificado ('colecao/nome'); erro alto se não registrado.",
      "topics": [
        "tr_get_node"
      ]
    },
    {
      "page": "tr_get_type",
      "title": "Busca um 'tr_type' pelo id qualificado; erro alto se não registrado.",
      "topics": [
        "tr_get_type"
      ]
    },
    {
      "page": "tr_handle_failed",
      "title": "Um handle representa erro (não valor) quando carrega $error.",
      "topics": [
        "tr_handle_failed"
      ]
    },
    {
      "page": "tr_help_test_card",
      "title": "A seção de ajuda que explica o card de teste de hipótese.",
      "topics": [
        "tr_help_test_card"
      ]
    },
    {
      "page": "tr_icon",
      "title": "Declara o ícone de um bloco: um nome do conjunto Lucide, ou um SVG próprio.",
      "topics": [
        "tr_icon"
      ]
    },
    {
      "page": "tr_is_template",
      "title": "O texto é um template do trama? Nunca falha: JSON inválido é só \"não\".",
      "topics": [
        "tr_is_template"
      ]
    },
    {
      "page": "tr_link",
      "title": "Liga 'from' a 'to'. Porta omitida = primeira saída / primeira entrada.",
      "topics": [
        "tr_link"
      ]
    },
    {
      "page": "tr_mcp",
      "title": "Servidor MCP do canal de controle.",
      "topics": [
        "tr_mcp"
      ]
    },
    {
      "page": "tr_node",
      "title": "Declara um node type.",
      "topics": [
        "tr_node"
      ]
    },
    {
      "page": "tr_node_raiox",
      "title": "Raio-x de um bloco: onde a conta de fato acontece.",
      "topics": [
        "tr_node_raiox"
      ]
    },
    {
      "page": "tr_op_semantic",
      "title": "Uma op é SEMÂNTICA se não for puramente de apresentação — só ops semânticas disparam re-execução. Um 'batch' é semântico se qualquer op dentro dele for.",
      "topics": [
        "tr_op_semantic"
      ]
    },
    {
      "page": "tr_param",
      "title": "Declara um parâmetro de nó.",
      "topics": [
        "tr_param"
      ]
    },
    {
      "page": "tr_param_bool",
      "title": "Param booleano.",
      "topics": [
        "tr_param_bool"
      ]
    },
    {
      "page": "tr_param_col",
      "title": "Param de coluna(s) da tabela que chega por uma entrada.",
      "topics": [
        "tr_param_col"
      ]
    },
    {
      "page": "tr_param_enum",
      "title": "Param de escolha única entre 'choices'.",
      "topics": [
        "tr_param_enum"
      ]
    },
    {
      "page": "tr_param_int",
      "title": "Param inteiro.",
      "topics": [
        "tr_param_int"
      ]
    },
    {
      "page": "tr_param_num",
      "title": "Param numérico (ponto flutuante).",
      "topics": [
        "tr_param_num"
      ]
    },
    {
      "page": "tr_param_text",
      "title": "Param de texto livre.",
      "topics": [
        "tr_param_text"
      ]
    },
    {
      "page": "tr_param_theme",
      "title": "Param de tema de gráfico.",
      "topics": [
        "tr_param_theme"
      ]
    },
    {
      "page": "tr_plan",
      "title": "Plano de execução: fecho transitivo dos alvos, em ordem topológica, com a chave de conteúdo de cada unidade já resolvida.",
      "topics": [
        "tr_plan"
      ]
    },
    {
      "page": "tr_plan_blocked",
      "title": "Unidades que não podem rodar: falharam, dependem de quem falhou, ou têm porta obrigatória solta.",
      "topics": [
        "tr_plan_blocked"
      ]
    },
    {
      "page": "tr_plan_keys",
      "title": "Todas as chaves de artefato alcançáveis — o conjunto 'keep' do 'tr_store_gc()'.",
      "topics": [
        "tr_plan_keys"
      ]
    },
    {
      "page": "tr_plan_pending",
      "title": "O que de fato precisa rodar.",
      "topics": [
        "tr_plan_pending"
      ]
    },
    {
      "page": "tr_port",
      "title": "Declara uma porta.",
      "topics": [
        "tr_port"
      ]
    },
    {
      "page": "tr_port_default",
      "title": "Porta padrão do editor: 8726, que é \"TRAM\" no teclado do telefone.",
      "topics": [
        "tr_port_default"
      ]
    },
    {
      "page": "tr_port_free",
      "title": "Primeira porta livre a partir de 'port'.",
      "topics": [
        "tr_port_free"
      ]
    },
    {
      "page": "tr_pressuposto",
      "title": "Pressuposto de um bloco estatístico.",
      "topics": [
        "tr_pressuposto"
      ]
    },
    {
      "page": "tr_preview",
      "title": "Artefato de preview: o que o worker grava e o front desenha.",
      "topics": [
        "tr_preview"
      ]
    },
    {
      "page": "tr_progress",
      "title": "Lê o progresso publicado por '.ctx$progress()'/'.ctx$partial()'/'.ctx$partial_node()' pra uma chave, ou 'NULL' se a unidade não publicou nada (ou já terminou — o scheduler limpa ao concluir).",
      "topics": [
        "tr_progress"
      ]
    },
    {
      "page": "tr_project",
      "title": "Projeto: a pasta que reúne documento, store e manifesto de coleções.",
      "topics": [
        "tr_project"
      ]
    },
    {
      "page": "tr_project_at",
      "title": "Abre um projeto REUSANDO um registry já carregado.",
      "topics": [
        "tr_project_at"
      ]
    },
    {
      "page": "tr_project_flow",
      "title": "Lê o flow 'name' do projeto; documento vazio se o arquivo ainda não existe.",
      "topics": [
        "tr_project_flow"
      ]
    },
    {
      "page": "tr_project_gc",
      "title": "GC do projeto: preserva tudo que QUALQUER flow do projeto alcança. 'tr_store_gc' recebia 'keep' de um documento só; com dois flows no mesmo projeto, coletar pelo primeiro apagaria o cache do segundo. Falha de leitura de um flow não impede o GC dos outros, mas aborta a coleta — melhor não coletar do que apagar o que um flow ilegível alcançava. Os 'settings' do projeto entram no plano pelo mesmo motivo: sem eles a chave de quem usa tema do projeto seria outra, e o cache vivo pareceria órfão.",
      "topics": [
        "tr_project_gc"
      ]
    },
    {
      "page": "tr_project_new",
      "title": "Cria um projeto novo: as pastas e o manifesto.",
      "topics": [
        "tr_project_new"
      ]
    },
    {
      "page": "tr_project_save",
      "title": "Grava o flow 'name' do projeto em flows/<name>.json.",
      "topics": [
        "tr_project_save"
      ]
    },
    {
      "page": "tr_project_set_galeria",
      "title": "Grava a configuração da galeria ('galeria' em 'trama.json').",
      "topics": [
        "tr_project_set_galeria"
      ]
    },
    {
      "page": "tr_project_set_marca",
      "title": "Liga ou desliga a marca d'água dos frames exportados.",
      "topics": [
        "tr_project_set_marca"
      ]
    },
    {
      "page": "tr_project_set_sugestoes",
      "title": "Liga ou desliga as sugestões automáticas de params de coluna.",
      "topics": [
        "tr_project_set_sugestoes"
      ]
    },
    {
      "page": "tr_project_set_themes",
      "title": "Grava os temas no manifesto — o único verbo que escreve 'temas'.",
      "topics": [
        "tr_project_set_themes"
      ]
    },
    {
      "page": "tr_provenance",
      "title": "Proveniência dos resultados em cache de um fluxo.",
      "topics": [
        "tr_provenance"
      ]
    },
    {
      "page": "tr_ref",
      "title": "Referência de um bloco.",
      "topics": [
        "tr_ref"
      ]
    },
    {
      "page": "tr_registry",
      "title": "Registro: onde tipos, nós e adaptadores vivem depois de carregados.",
      "topics": [
        "tr_registry"
      ]
    },
    {
      "page": "tr_registry_for",
      "title": "Reconstrói um registro a partir dos NOMES DE PACOTE — como o worker recupera o catálogo sem receber funções pela fronteira.",
      "topics": [
        "tr_registry_for"
      ]
    },
    {
      "page": "tr_replay",
      "title": "Reaplica um log de ops sobre 'doc' — a base do undo.",
      "topics": [
        "tr_replay"
      ]
    },
    {
      "page": "tr_retry",
      "title": "Comando: limpa SÓ o(s) handle(s) de erro de um nó, preservando o checkpoint.",
      "topics": [
        "tr_retry"
      ]
    },
    {
      "page": "tr_run",
      "title": "Coordenador: monta o plano, despacha o que falta, emite eventos.",
      "topics": [
        "tr_run"
      ]
    },
    {
      "page": "tr_run_logger",
      "title": "Log de execução: uma linha JSON por evento, um arquivo por run.",
      "topics": [
        "tr_run_logger"
      ]
    },
    {
      "page": "tr_run_plan",
      "title": "Executa um plano já montado — separado de 'tr_run()' porque o coordenador interativo (E5) monta o plano a cada edição pra decidir o que cancelar, e só então manda executar.",
      "topics": [
        "tr_run_plan"
      ]
    },
    {
      "page": "tr_runs",
      "title": "Lê todos os runs de um projeto como data.frame (um evento por linha).",
      "topics": [
        "tr_runs"
      ]
    },
    {
      "page": "tr_scheduler",
      "title": "Scheduler: a execução como máquina de passos.",
      "topics": [
        "tr_scheduler"
      ]
    },
    {
      "page": "tr_server",
      "title": "Transporte: UM canal pra cima, UM pra baixo.",
      "topics": [
        "tr_server"
      ]
    },
    {
      "page": "tr_set",
      "title": "Aplica 'set_param' para cada '...' nomeado, um por um.",
      "topics": [
        "tr_set"
      ]
    },
    {
      "page": "tr_store",
      "title": "Store endereçado por conteúdo — o protocolo, não um cache.",
      "topics": [
        "tr_store"
      ]
    },
    {
      "page": "tr_store_gc",
      "title": "Coleta de lixo: o store cresce sem limite por construção (cada edição de param cria uma chave nova). 'keep' são as chaves alcançáveis do documento atual; o resto sai por idade.",
      "topics": [
        "tr_store_gc"
      ]
    },
    {
      "page": "tr_store_get",
      "title": "Lê o valor sob 'key', restaurado pelo 'tr_type'; erro alto se a chave estiver ausente ou guardar um erro.",
      "topics": [
        "tr_store_get"
      ]
    },
    {
      "page": "tr_store_handle",
      "title": "Handle ilegível conta como ausente, nunca como exceção.",
      "topics": [
        "tr_store_handle"
      ]
    },
    {
      "page": "tr_store_has",
      "title": "Uma chave só \"existe\" se handle E objeto existem. Handle órfão (remoção externa, GC interrompido) faria o plano marcar 'cached = TRUE' e a unidade ser pulada — e o consumidor a jusante explodiria com erro nu de conexão.",
      "topics": [
        "tr_store_has"
      ]
    },
    {
      "page": "tr_store_path",
      "title": "Resolve um caminho relativo contra a raiz do projeto. Absoluto passa direto; sem raiz conhecida (store solto em teste), cai no cwd — que é o que acontecia antes, só que agora explícito.",
      "topics": [
        "tr_store_path"
      ]
    },
    {
      "page": "tr_store_put",
      "title": "Grava valor + handle (+ preview). O handle é escrito POR ÚLTIMO: é ele que marca a chave como presente ('tr_store_has'), então um worker morto no meio deixa no máximo um objeto órfão — nunca um handle apontando pra nada.",
      "topics": [
        "tr_store_put"
      ]
    },
    {
      "page": "tr_store_put_error",
      "title": "Erro é VALOR, não exceção que some.",
      "topics": [
        "tr_store_put_error"
      ]
    },
    {
      "page": "tr_stream_command",
      "title": "Manda um comando para a região que roda sob 'key' (a chave da UNIDADE, que é a que vem nos eventos do run).",
      "topics": [
        "tr_stream_command"
      ]
    },
    {
      "page": "tr_submit",
      "title": "Protocolo de op: {seq, base_rev, op}.",
      "topics": [
        "tr_submit"
      ]
    },
    {
      "page": "tr_template",
      "title": "Envelope de template a partir de um documento.",
      "topics": [
        "tr_template"
      ]
    },
    {
      "page": "tr_template_dir",
      "title": "Pasta de templates por escopo.",
      "topics": [
        "tr_template_dir"
      ]
    },
    {
      "page": "tr_template_json",
      "title": "Template como JSON (envelope + documento canônico).",
      "topics": [
        "tr_template_json"
      ]
    },
    {
      "page": "tr_template_list",
      "title": "Templates disponíveis: coleções carregadas, biblioteca pessoal, projeto.",
      "topics": [
        "tr_template_list"
      ]
    },
    {
      "page": "tr_template_op",
      "title": "Uma op 'batch' que insere o template com o canto em 'origin', ids novos.",
      "topics": [
        "tr_template_op"
      ]
    },
    {
      "page": "tr_template_parse",
      "title": "Lê um template a partir de texto JSON.",
      "topics": [
        "tr_template_parse"
      ]
    },
    {
      "page": "tr_template_read",
      "title": "Lê um template de um arquivo '.json'.",
      "topics": [
        "tr_template_read"
      ]
    },
    {
      "page": "tr_template_save",
      "title": "Grava o template em 'dir'; nome de arquivo derivado do nome do template.",
      "topics": [
        "tr_template_save"
      ]
    },
    {
      "page": "tr_test",
      "title": "O registro de um teste de hipótese, na forma que o card 'trama/test' desenha.",
      "topics": [
        "tr_test"
      ]
    },
    {
      "page": "tr_test_table",
      "title": "Teste -> UMA linha de data.frame, com colunas FIXAS.",
      "topics": [
        "tr_test_table"
      ]
    },
    {
      "page": "tr_test_type",
      "title": "O tipo do teste, com store, restore e preview no card 'trama/test'.",
      "topics": [
        "tr_test_type"
      ]
    },
    {
      "page": "tr_text",
      "title": "Texto \"i18n-pronto\": string única ou lista nomeada por idioma.",
      "topics": [
        "tr_text"
      ]
    },
    {
      "page": "tr_theme",
      "title": "Resolve um tema pelo nome, fora de um projeto.",
      "topics": [
        "tr_theme"
      ]
    },
    {
      "page": "tr_theme_names",
      "title": "Nomes dos temas disponíveis.",
      "topics": [
        "tr_theme_names"
      ]
    },
    {
      "page": "tr_transitions_read",
      "title": "Lê as transições mineradas que uma coleção guarda no próprio pacote.",
      "topics": [
        "tr_transitions_read"
      ]
    },
    {
      "page": "tr_type",
      "title": "Declara um tipo de dado (o que trafega numa porta).",
      "topics": [
        "tr_type"
      ]
    },
    {
      "page": "tr_ui",
      "title": "Monta a UI Shiny do editor: importmap, dependências e o <div> onde o React monta.",
      "topics": [
        "tr_ui"
      ]
    },
    {
      "page": "tr_use",
      "title": "Carrega uma coleção num registro.",
      "topics": [
        "tr_use"
      ]
    },
    {
      "page": "tr_value",
      "title": "Valor de qualquer nó do grafo, no console.",
      "topics": [
        "tr_value"
      ]
    },
    {
      "page": "tr_when",
      "title": "Mostra o param só sob condição sobre outros params do mesmo nó.",
      "topics": [
        "tr_when"
      ]
    },
    {
      "page": "tr_when_padrao",
      "title": "Condição de 'tr_when()' por padrão de texto: o param aparece quando o valor do outro casa com a expressão regular (sem diferenciar maiúsculas). Serve para o que uma lista de valores não expressa, como \"o caminho é um link\": 'tr_when(p, path = tr_when_padrao(\"^https?://\"))'.",
      "topics": [
        "tr_when_padrao"
      ]
    }
  ],
  "_pkglogo": "https://github.com/uaipedro/trama/raw/HEAD/man/figures/logo.svg",
  "_readme": "https://github.com/uaipedro/trama/raw/HEAD/README.md",
  "_rundeps": [
    "base64enc",
    "bslib",
    "cachem",
    "cli",
    "commonmark",
    "cpp11",
    "curl",
    "digest",
    "dplyr",
    "fastmap",
    "fontawesome",
    "fs",
    "generics",
    "glue",
    "htmltools",
    "httpuv",
    "jquerylib",
    "jsonlite",
    "later",
    "lifecycle",
    "lubridate",
    "magrittr",
    "memoise",
    "mime",
    "otel",
    "pillar",
    "pkgconfig",
    "promises",
    "R6",
    "rappdirs",
    "Rcpp",
    "rlang",
    "sass",
    "shiny",
    "sourcetools",
    "tibble",
    "tidyselect",
    "timechange",
    "utf8",
    "vctrs",
    "withr",
    "xtable"
  ],
  "_score": 5.056904851336473,
  "_indexed": true,
  "_nocasepkg": "trama",
  "_universes": [
    "uaipedro"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.5.16",
      "date": "2026-10-10T22:53:15.000Z",
      "distro": "resolute",
      "commit": "1bdeb4f693df836f77e762f2642cc18a3956f8b1",
      "fileid": "https://r2.ropensci.org/0d1d96bb39ab7d631ad0292c33a3098b48ff2aa54cfcc9f9d5c61ddcf128d772",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/uaipedro/actions/runs/38092775140"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.5.16",
      "date": "2026-10-10T22:53:24.000Z",
      "distro": "resolute",
      "commit": "1bdeb4f693df836f77e762f2642cc18a3956f8b1",
      "fileid": "https://r2.ropensci.org/87dcf3ff820978cf80e9dd0f81e11d522ec0ad871d4e863871d57d05d9075e6c",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/uaipedro/actions/runs/38092775140"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.5.16",
      "date": "2026-10-10T22:54:59.000Z",
      "commit": "1bdeb4f693df836f77e762f2642cc18a3956f8b1",
      "fileid": "https://r2.ropensci.org/914e22e220c8c2b758d3aa209c4b7a7f1d6870f27edf8aa8433679bda296fc4a",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/uaipedro/actions/runs/38092775140"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.5.16",
      "date": "2026-10-10T22:59:37.000Z",
      "commit": "1bdeb4f693df836f77e762f2642cc18a3956f8b1",
      "fileid": "https://r2.ropensci.org/9984d3735c58d2560cd7b3839c0cd7651dc738cf462bc80680fbdb19526da9d5",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/uaipedro/actions/runs/38092775140"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.5.16",
      "date": "2026-10-10T22:53:16.000Z",
      "commit": "1bdeb4f693df836f77e762f2642cc18a3956f8b1",
      "fileid": "https://r2.ropensci.org/40262fde45e0be5c69c44715cf854f4cad85e58eab63eb8370d15e1cdea9fb53",
      "status": "success",
      "buildurl": "https://github.com/r-universe/uaipedro/actions/runs/38092775140"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.5.16",
      "date": "2026-10-10T22:52:33.000Z",
      "commit": "1bdeb4f693df836f77e762f2642cc18a3956f8b1",
      "fileid": "https://r2.ropensci.org/ca35ade4b05238ef47be346ec321bb554e9adf70da1d0cfb21659a4da91d196e",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/uaipedro/actions/runs/38092775140"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.5.16",
      "date": "2026-10-10T22:52:36.000Z",
      "commit": "1bdeb4f693df836f77e762f2642cc18a3956f8b1",
      "fileid": "https://r2.ropensci.org/56cd8cde39427f9c45bab0c58a02983e2608c129205ecb108fe42e6ccb067be5",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/uaipedro/actions/runs/38092775140"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.5.16",
      "date": "2026-10-10T22:52:28.000Z",
      "commit": "1bdeb4f693df836f77e762f2642cc18a3956f8b1",
      "fileid": "https://r2.ropensci.org/6fbde890a1645c98a4b1b551ffdc72e5bd66494cd66e2aa084cbf5efe313d712",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/uaipedro/actions/runs/38092775140"
    }
  ]
}