Armazenar, listar e reabrir resultados locais do XLS

Execute uma solicitação XLS nativa para o armazenamento de resultados do projeto, liste os resultados armazenados e reabra um deles pelo ID de conteúdo.

Use o Altifigence CLI 0.1.9 no Linux para guardar resultados XLS nativos em um projeto local. Cada resultado armazenado é verificado reproduzindo na CPU a solicitação incluída nele quando é armazenado, listado e reaberto.

Armazenar um resultado

Use um caminho absoluto para seu projeto local. Este exemplo usa $HOME/alti-projects/demo-project. Salve uma solicitação de operação nativa:

set -euo pipefail
PROJECT="$(cd "$HOME/alti-projects/demo-project" && pwd -P)"
WORK="$(mktemp -d)"
cat > "$WORK/eval.json" <<'JSON'
{
  "schema": "altifigence.xls.operation-request.v1",
  "operation": "eval",
  "input_kind": "dslx",
  "source": "fn compute(x: u8, y: u8) -> u8 { x + y }",
  "top": "compute",
  "backend": "cpu",
  "vectors": [["1", "2"]]
}
JSON
alti xls artifact store --project "$PROJECT" --request "$WORK/eval.json" > "$WORK/ref.json"
jq '{schema, result_schema, replay_verified}' "$WORK/ref.json"
ID="$(jq -r .id "$WORK/ref.json")"

store executa a operação nomeada na solicitação, reproduz o resultado e o salva. Exija o status de saída 0. Os campos de referência selecionados são:

{
  "schema": "altifigence.xls.artifact-ref.v1",
  "result_schema": "altifigence.xls.operation-result.v1",
  "replay_verified": true
}

id e sha256 têm o mesmo valor: o SHA-256 do resultado armazenado, com 64 caracteres hexadecimais em minúsculas. O resultado é salvo como .altifigence/xls/artifacts/<id>.json dentro da pasta indicada por --project. Sem --project, a pasta atual é usada. As solicitações optimize e codegen armazenam resultados altifigence.xls.operation-result.v2 que incluem compilation. Armazenar a mesma solicitação novamente retorna o mesmo id.

Listar resultados armazenados

alti xls artifact list --project "$PROJECT" > "$WORK/list.json"
jq '{schema, limit, replay_verified, ids}' "$WORK/list.json"

ids contém os IDs armazenados em ordem. Antes de listar, cada resultado armazenado é verificado em relação ao seu ID e reproduzido. A lista abrange até 256 entradas. Um projeto sem resultados armazenados retorna um array ids vazio. Os resultados publicados por alti xls run ficam no mesmo armazenamento e aparecem na mesma lista.

Reabrir um resultado

alti xls artifact show --project "$PROJECT" "$ID" > "$WORK/result.json"
jq '{schema, status, outputs}' "$WORK/result.json"

Após o status de saída 0, os campos selecionados são:

{
  "schema": "altifigence.xls.operation-result.v1",
  "status": "succeeded",
  "outputs": [
    "bits[8]:0x3"
  ]
}

show retorna o resultado armazenado completo, incluindo request, source_sha256, request_sha256 e parameters. Primeiro ele verifica se o SHA-256 do arquivo é igual ao ID e se o arquivo está dentro de 65536 bytes; depois, reproduz a solicitação incluída e compara todos os campos.

Resolver erros

Quando o mecanismo XLS rejeita uma operação store, o comando termina com o status de saída 2 e grava um objeto altifigence.xls.error.v1 na saída padrão. Leia o código e a mensagem dele:

alti xls artifact show --project "$PROJECT" "$ID" > "$WORK/show.json" || true
jq -r '.error.code + ": " + .error.message' "$WORK/show.json"

A CLI informa XLS artifact id must be 64 lowercase hexadecimal characters no erro padrão com o prefixo error: e termina com o status de saída 1 antes de executar o mecanismo. Leia essa mensagem no erro padrão. Copie o id de store ou de ids em list sem alterações.

Para artifact-not-found: XLS store does not exist, passe o mesmo --project que você usou com store.

Para artifact-io: cannot access local XLS artifact store vindo de show, execute list com o mesmo --project e use um ID de ids.

Para resource-limit: store listing exceeds 256 entries; use artifact-show with a known id, reabra os resultados com show e os IDs salvos de store.

Verificar, avaliar e gerar RTL com XLS nativo