{"server":"studio.misata/misata","count":8,"changes":[{"tool":"export_dataset","kind":"changed","observed_at":"2026-10-19T18:19:33.146Z","fields":["description"],"description_before":"\n    Export a generated dataset as a file. Returns a `download_url` the person can open (or you can\n    fetch, e.g. with curl) for as long as the dataset is held, about 2 hours. Give the person the link\n    rather than pasting file contents into the chat.\n\n    Args:\n        dataset_id: from a prior generate_dataset call.\n        format:     data: csv, parquet, jsonl, json, avro, xlsx, feather, orc, sqlite, duckdb, sql.\n                    code and docs: dbt, notebook, dictionary, dbml, mermaid, prisma, sqlalchemy,\n                    typescript, jsonschema, expectations, django, openapi, mockapi, demo.\n                    `sql` is schema.sql (DDL with keys) + data.sql (COPY/INSERT) — the way to seed a\n                    real database: run the returned SQL through your own database connection, since\n                    this server never holds a database credential itself.\n        dialect:    for `sql` only: postgres, mysql, sqlite, mssql, oracle, bigquery, snowflake.\n        inline:     also return the file itself as `base64` (only for files under a few MB). Use it\n                    when you must write the file yourself and cannot fetch a URL.\n\n    Returns:\n        filename, content_type, bytes, download_url, expires_at (unix seconds), and `base64` when\n        `inline` and small enough.\n    ","description_after":"\n    Export a generated dataset as a file. Returns a `download_url` the person can open (or you can\n    fetch, e.g. with curl) for as long as the dataset is held, about 2 hours. Give the person the link\n    rather than pasting file contents into the chat.\n\n    Args:\n        dataset_id: from a prior generate_dataset call.\n        format:     data: csv, parquet, jsonl, json, avro, xlsx, feather, orc, sqlite, duckdb, sql.\n                    code and docs: dbt, notebook, dictionary, dbml, mermaid, prisma, sqlalchemy,\n                    typescript, jsonschema, expectations, django, openapi, mockapi.\n                    `sql` is schema.sql (DDL with keys) + data.sql (COPY/INSERT) — the way to seed a\n                    real database: run the returned SQL through your own database connection, since\n                    this server never holds a database credential itself.\n                    `demo` is the handover for a demo or an eval: the database with a one-step loader,\n                    the ER diagram, answer_key.json (every number by month), questions.jsonl and\n                    the proof of each request.\n        dialect:    for `sql`: postgres, mysql, sqlite, mssql, oracle, bigquery, snowflake, clickhouse\n                    (MergeTree tables; above 500k rows, typed Parquet with load.sql). For `demo`:\n                    postgres (psql) or clickhouse (Parquet loaded with clickhouse-client).\n        inline:     also return the file itself as `base64` (only for files under a few MB). Use it\n                    when you must write the file yourself and cannot fetch a URL.\n\n    Returns:\n        filename, content_type, bytes, download_url, expires_at (unix seconds), and `base64` when\n        `inline` and small enough.\n    ","description_similarity":0.809,"before_hash":"ee643d236dee982d67bb29dc0fbe6a3d","after_hash":"7123063c8d32bbaca953cc7d49011cd1"},{"tool":"check_answers","kind":"added","observed_at":"2026-10-19T18:19:33.146Z","fields":[],"description_before":null,"description_after":"\n    The dataset's ground truth: every number it is held to, and the business's standard numbers (MRR, churn, billed\n    revenue, win rate...), by month, worked out when it was made. Use it to test whatever answers questions about the\n    data -- an agent, a dashboard, a cube, a text-to-SQL model -- and to say exactly why a wrong answer is wrong.\n\n    Call it four ways:\n      1. dataset_id alone: the key's numbers (`kpis`: id, title, unit, months) and `questions` to ask, drawn from\n         the key (\"What is MRR at each month's end for 2025-07?\"), each with an id. Their answers are not shown.\n      2. answers={question_id: number}: each answer graded within its tolerance; a wrong one is named as the\n         usual misreading it equals (voided invoices counted, churn over every account), when it is one.\n      3. values with kpi: numbers computed anywhere (ClickHouse, a semantic layer, a BI tile), as one number, a\n         {\"2025-07\": 123.4, ...} series by month, or [[month, value], ...]. Says whether they are that KPI (a tile\n         is read as its latest month, the year to date, ...), and what they are instead when not.\n      4. sql (and kpi): a query over this dataset's own tables (DuckDB, as query_dataset), run here; a wrong one is\n         told which KPI it computes, or the one change after which it returns the key.\n\n    The values are plain numbers, so an answer from any engine is checked the same way; export_dataset(format=\"demo\",\n    dialect=\"clickhouse\") hands over the same data and key to load into ClickHouse.\n    ","description_similarity":null,"before_hash":null,"after_hash":"607d8e06d7cf8e51b85090a4591a0a88"},{"tool":"generate_dataset","kind":"changed","observed_at":"2026-10-19T18:19:33.146Z","fields":["description"],"description_before":"\n    Make a verified relational dataset and wait for it: every foreign key checked, dates correctly\n    ordered, declared aggregates and rates exact, before anything is returned. Deterministic for a seed.\n\n    Use this when you give a `schema` or `ddl` (seconds). For a plain-English `request` the engine\n    designs the tables with a model, which can take several minutes: call start_generation instead and\n    poll get_status, so the call does not sit open and time out.\n\n    Args:\n        request:  Plain-English description (needs an LLM key unless `schema`/`ddl` is also given). With no key,\n                  design it yourself instead: blueprint_guide, then `blueprint` below.\n        schema:   A Misata schema dict for exact structural control. No key needed for structure.\n        ddl:      CREATE TABLE statements. No key needed for structure.\n        seed:     Reproducibility seed — the same request/schema and seed always produce the same rows.\n        research: Ground realistic numbers (prices, growth rates) in real published facts via a web\n                  search. Off by default (an anonymous caller's request should not trigger external\n                  calls unless asked for); needs a key regardless of `schema`/`ddl`.\n        blueprint: The engine's full design language (blueprint_guide has the reference): readings around\n                  a parent's nominal, drift, autocorrelation, cause-and-effect, event windows, exact\n                  aggregates. Use it whenever the data must behave like the real process. No key needed;\n                  run validate_blueprint on it first.\n        story:    A built-in shape held to exact numbers, the way Studio's plan screen states them. No key\n                  needed; built by code in seconds. {\"pack\": \"saas_sales\", \"window\": {\"start\": \"2024-09\",\n                  \"end\": \"2026-08\"}, \"curves\": [{\"lever\": \"mrr_curve\", \"points\": {\"2024-09\": 50000,\n                  \"2026-08\": 200000}}], \"rates\": [{\"lever\": \"monthly_logo_churn\", \"value\": 0.02,\n                  \"events\": [{\"name\": \"Q3 churn spike\", \"start\": \"2025-07-01\", \"end\": \"2025-09-30\",\n                  \"multiplier\": 2.5}]}]}. Shapes: saas_sales, ecommerce, fintech, healthcare. Every\n                  stated number is held exactly and read back in SQL; get_certificate has the answer key.\n\n    Returns:\n        dataset_id:   pass this to get_certificate / query_dataset / export_dataset.\n        passed:       whether every check held. A dataset that did not pass is still returned, with\n                      `certificate.findings` saying what failed — inspect before trusting it.\n        verification: a short, plain-language account of what was checked and what held — show it to the\n                      person as the proof, in place of asking them to take the data on trust.\n        tables:       {name: {columns, preview_rows (first 20), total_rows}} — the preview only; every\n                      row is in the stored dataset, reachable by query_dataset/export_dataset.\n        certificate:  the short form (claims, requirements, findings). get_certificate returns the rest\n                      (patterns, realism scorecard, every proof chart).\n    ","description_after":"\n    Make a verified relational dataset and wait for it: every foreign key checked, dates correctly\n    ordered, declared aggregates and rates exact, before anything is returned. Deterministic for a seed.\n\n    Use this when you give a `schema` or `ddl` (seconds). For a plain-English `request` the engine\n    designs the tables with a model, which can take several minutes: call start_generation instead and\n    poll get_status, so the call does not sit open and time out.\n\n    Args:\n        request:  Plain-English description (needs an LLM key unless `schema`/`ddl` is also given). With no key,\n                  design it yourself instead: blueprint_guide, then `blueprint` below.\n        schema:   A Misata schema dict for exact structural control. No key needed for structure. Its `numbers`\n                  (revenue by month, churn, MRR, shares, averages) are held exactly: see the server instructions.\n                  A column's `moves_with` ({\"column\": \"customers.income\", \"strength\": 0.6}) pairs it with another\n                  number of its row or its parent's, by rank, each keeping its own values.\n        ddl:      CREATE TABLE statements. No key needed for structure. Beside it, schema={\"numbers\": [...],\n                  \"window\": {...}} holds the story's numbers on these tables.\n        seed:     Reproducibility seed — the same request/schema and seed always produce the same rows.\n        research: Ground realistic numbers (prices, growth rates) in real published facts via a web\n                  search. Off by default (an anonymous caller's request should not trigger external\n                  calls unless asked for); needs a key regardless of `schema`/`ddl`.\n        blueprint: The engine's full design language (blueprint_guide has the reference): readings around\n                  a parent's nominal, drift, autocorrelation, cause-and-effect, event windows, exact\n                  aggregates. Use it whenever the data must behave like the real process. No key needed;\n                  run validate_blueprint on it first.\n        story:    A built-in shape held to exact numbers, the way Studio's plan screen states them. No key\n                  needed; built by code in seconds. {\"pack\": \"saas_sales\", \"window\": {\"start\": \"2024-09\",\n                  \"end\": \"2026-08\"}, \"curves\": [{\"lever\": \"mrr_curve\", \"points\": {\"2024-09\": 50000,\n                  \"2026-08\": 200000}}], \"rates\": [{\"lever\": \"monthly_logo_churn\", \"value\": 0.02,\n                  \"events\": [{\"name\": \"Q3 churn spike\", \"start\": \"2025-07-01\", \"end\": \"2025-09-30\",\n                  \"multiplier\": 2.5}]}]}. Shapes: saas_sales, ecommerce, fintech, healthcare. Every\n                  stated number is held exactly and read back in SQL; get_certificate has the answer key.\n                  `numbers` sets plain sizes and shares ({\"customers\": 3000, \"products\": 400, \"return_rate\":\n                  0.06}). With no model key the shape's content is generic (ecommerce sells electronics,\n                  books, toys): write it yourself as `content`, e.g. {\"catalog\": [{\"name\": \"Linen Duvet\n                  Cover\", \"category\": \"Bedding\", \"brand\": \"Fernhill\", \"price\": 89.0}, ...]} (30-100 items\n                  in this business's own categories, at its real prices).\n\n    Returns:\n        dataset_id:   pass this to get_certificate / query_dataset / export_dataset.\n        passed:       whether every check held. A dataset that did not pass is still returned, with\n                      `certificate.findings` saying what failed — inspect before trusting it.\n        verification: a short, plain-language account of what was checked and what held — show it to the\n                      person as the proof, in place of asking them to take the data on trust.\n        tables:       {name: {columns, preview_rows (first 20), total_rows}} — the preview only; every\n                      row is in the stored dataset, reachable by query_dataset/export_dataset.\n        certificate:  the short form (c","description_similarity":0.81,"before_hash":"f67fb7691fa3980092c03a24faf84ca5","after_hash":"e3e04b2afb2856cfd9dcef6186cf8160"},{"tool":"validate_blueprint","kind":"changed","observed_at":"2026-10-19T18:19:33.146Z","fields":["description"],"description_before":"\n    Check a blueprint before generating it: every error said as what to change, the design traps it\n    falls into (a column that will round away, a copy of a value not made yet, a window that counts\n    nothing), its size against your row cap, and a small preview run (a few thousand rows) with the\n    verifier's findings and sample rows, so you can see the data behave before the real call. Free.\n\n    Returns:\n        valid, errors (fix these), warnings (read these), estimated_rows, row_cap,\n        preview: {passed, findings, tables: {name: first rows}} when `preview`.\n    ","description_after":"\n    Check a blueprint before generating it: every error said as what to change, the design traps it\n    falls into (a column that will round away, a copy of a value not made yet, a window that counts\n    nothing), its size against your row cap, and a small preview run (a few thousand rows) with the\n    verifier's findings and sample rows, so you can see the data behave before the real call. Free.\n\n    Returns:\n        valid, errors (fix these), warnings (read these), planned (sizes the stated numbers set; \"keep_size\"\n        on a table keeps its row_count), estimated_rows, row_cap,\n        preview: {passed, findings, tables: {name: first rows}} when `preview`.\n    ","description_similarity":0.878,"before_hash":"74fa2c4c11e626100e0c0b1d3f0bccf8","after_hash":"a8d12cbe7a4ef6399a6ba4d95a7d2a70"},{"tool":"generate_dataset","kind":"changed","observed_at":"2026-10-16T11:13:17.329Z","fields":["description"],"description_before":"\n    Make a verified relational dataset and wait for it: every foreign key checked, dates correctly\n    ordered, declared aggregates and rates exact, before anything is returned. Deterministic for a seed.\n\n    Use this when you give a `schema` or `ddl` (seconds). For a plain-English `request` the engine\n    designs the tables with a model, which can take several minutes: call start_generation instead and\n    poll get_status, so the call does not sit open and time out.\n\n    Args:\n        request:  Plain-English description (needs an LLM key unless `schema`/`ddl` is also given).\n        schema:   A Misata schema dict for exact structural control. No key needed for structure.\n        ddl:      CREATE TABLE statements. No key needed for structure.\n        seed:     Reproducibility seed — the same request/schema and seed always produce the same rows.\n        research: Ground realistic numbers (prices, growth rates) in real published facts via a web\n                  search. Off by default (an anonymous caller's request should not trigger external\n                  calls unless asked for); needs a key regardless of `schema`/`ddl`.\n        blueprint: The engine's full design language (blueprint_guide has the reference): readings around\n                  a parent's nominal, drift, autocorrelation, cause-and-effect, event windows, exact\n                  aggregates. Use it whenever the data must behave like the real process. No key needed;\n                  run validate_blueprint on it first.\n        story:    A built-in shape held to exact numbers, the way Studio's plan screen states them. No key\n                  needed; built by code in seconds. {\"pack\": \"saas_sales\", \"window\": {\"start\": \"2024-09\",\n                  \"end\": \"2026-08\"}, \"curves\": [{\"lever\": \"mrr_curve\", \"points\": {\"2024-09\": 50000,\n                  \"2026-08\": 200000}}], \"rates\": [{\"lever\": \"monthly_logo_churn\", \"value\": 0.02,\n                  \"events\": [{\"name\": \"Q3 churn spike\", \"start\": \"2025-07-01\", \"end\": \"2025-09-30\",\n                  \"multiplier\": 2.5}]}]}. Shapes: saas_sales, ecommerce, fintech, healthcare. Every\n                  stated number is held exactly and read back in SQL; get_certificate has the answer key.\n\n    Returns:\n        dataset_id:   pass this to get_certificate / query_dataset / export_dataset.\n        passed:       whether every check held. A dataset that did not pass is still returned, with\n                      `certificate.findings` saying what failed — inspect before trusting it.\n        verification: a short, plain-language account of what was checked and what held — show it to the\n                      person as the proof, in place of asking them to take the data on trust.\n        tables:       {name: {columns, preview_rows (first 20), total_rows}} — the preview only; every\n                      row is in the stored dataset, reachable by query_dataset/export_dataset.\n        certificate:  the short form (claims, requirements, findings). get_certificate returns the rest\n                      (patterns, realism scorecard, every proof chart).\n    ","description_after":"\n    Make a verified relational dataset and wait for it: every foreign key checked, dates correctly\n    ordered, declared aggregates and rates exact, before anything is returned. Deterministic for a seed.\n\n    Use this when you give a `schema` or `ddl` (seconds). For a plain-English `request` the engine\n    designs the tables with a model, which can take several minutes: call start_generation instead and\n    poll get_status, so the call does not sit open and time out.\n\n    Args:\n        request:  Plain-English description (needs an LLM key unless `schema`/`ddl` is also given). With no key,\n                  design it yourself instead: blueprint_guide, then `blueprint` below.\n        schema:   A Misata schema dict for exact structural control. No key needed for structure.\n        ddl:      CREATE TABLE statements. No key needed for structure.\n        seed:     Reproducibility seed — the same request/schema and seed always produce the same rows.\n        research: Ground realistic numbers (prices, growth rates) in real published facts via a web\n                  search. Off by default (an anonymous caller's request should not trigger external\n                  calls unless asked for); needs a key regardless of `schema`/`ddl`.\n        blueprint: The engine's full design language (blueprint_guide has the reference): readings around\n                  a parent's nominal, drift, autocorrelation, cause-and-effect, event windows, exact\n                  aggregates. Use it whenever the data must behave like the real process. No key needed;\n                  run validate_blueprint on it first.\n        story:    A built-in shape held to exact numbers, the way Studio's plan screen states them. No key\n                  needed; built by code in seconds. {\"pack\": \"saas_sales\", \"window\": {\"start\": \"2024-09\",\n                  \"end\": \"2026-08\"}, \"curves\": [{\"lever\": \"mrr_curve\", \"points\": {\"2024-09\": 50000,\n                  \"2026-08\": 200000}}], \"rates\": [{\"lever\": \"monthly_logo_churn\", \"value\": 0.02,\n                  \"events\": [{\"name\": \"Q3 churn spike\", \"start\": \"2025-07-01\", \"end\": \"2025-09-30\",\n                  \"multiplier\": 2.5}]}]}. Shapes: saas_sales, ecommerce, fintech, healthcare. Every\n                  stated number is held exactly and read back in SQL; get_certificate has the answer key.\n\n    Returns:\n        dataset_id:   pass this to get_certificate / query_dataset / export_dataset.\n        passed:       whether every check held. A dataset that did not pass is still returned, with\n                      `certificate.findings` saying what failed — inspect before trusting it.\n        verification: a short, plain-language account of what was checked and what held — show it to the\n                      person as the proof, in place of asking them to take the data on trust.\n        tables:       {name: {columns, preview_rows (first 20), total_rows}} — the preview only; every\n                      row is in the stored dataset, reachable by query_dataset/export_dataset.\n        certificate:  the short form (claims, requirements, findings). get_certificate returns the rest\n                      (patterns, realism scorecard, every proof chart).\n    ","description_similarity":0.988,"before_hash":"688c870806aec3030f2203bfbb2bc10e","after_hash":"f67fb7691fa3980092c03a24faf84ca5"},{"tool":"blueprint_guide","kind":"changed","observed_at":"2026-10-16T11:13:17.329Z","fields":["description","inputSchema"],"description_before":"\n    The reference for the engine's full design language (the `blueprint` argument of generate_dataset,\n    start_generation and validate_blueprint): roles, distributions, formulas that read parent columns\n    and draw noise, per-group sequences (seq, lag, cumsum, ar1 drift, random walk), aggregates, event\n    windows, cause-and-effect, lifecycles, with patterns. Read it before writing a blueprint.\n    ","description_after":"\n    The reference for the engine's full design language (the `blueprint` argument of generate_dataset,\n    start_generation and validate_blueprint): roles, distributions, formulas that read parent columns\n    and draw noise, per-group sequences (seq, lag, cumsum, ar1 drift, random walk), aggregates, event\n    windows, cause-and-effect, lifecycles, with patterns, and an index of chapters. Read it before\n    writing a blueprint.\n\n    Args:\n        topic: a chapter's id from the index (or several, comma-separated) for that chapter in full, with\n            a world that builds as written: JSON payloads (webhooks, audit trails), threads of messages,\n            one party's duplicate records, running balances, rosters made from demand, a source system's\n            raw drops and schema changes, planted problems for an eval. Empty for the reference.\n    ","description_similarity":0.527,"before_hash":"a5c073d2c9bedc167c9471e44d2ff810","after_hash":"25fccde9cc9b9552900bba496f0c508b"},{"tool":"start_generation","kind":"changed","observed_at":"2026-10-14T12:24:40.783Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"2689aeb721c4e0cacb12a81f148df89b","after_hash":"e1da57351ac82a4ca847188793b34a5b"},{"tool":"generate_dataset","kind":"changed","observed_at":"2026-10-14T12:24:40.783Z","fields":["description","inputSchema"],"description_before":"\n    Make a verified relational dataset and wait for it: every foreign key checked, dates correctly\n    ordered, declared aggregates and rates exact, before anything is returned. Deterministic for a seed.\n\n    Use this when you give a `schema` or `ddl` (seconds). For a plain-English `request` the engine\n    designs the tables with a model, which can take several minutes: call start_generation instead and\n    poll get_status, so the call does not sit open and time out.\n\n    Args:\n        request:  Plain-English description (needs an LLM key unless `schema`/`ddl` is also given).\n        schema:   A Misata schema dict for exact structural control. No key needed for structure.\n        ddl:      CREATE TABLE statements. No key needed for structure.\n        seed:     Reproducibility seed — the same request/schema and seed always produce the same rows.\n        research: Ground realistic numbers (prices, growth rates) in real published facts via a web\n                  search. Off by default (an anonymous caller's request should not trigger external\n                  calls unless asked for); needs a key regardless of `schema`/`ddl`.\n        blueprint: The engine's full design language (blueprint_guide has the reference): readings around\n                  a parent's nominal, drift, autocorrelation, cause-and-effect, event windows, exact\n                  aggregates. Use it whenever the data must behave like the real process. No key needed;\n                  run validate_blueprint on it first.\n\n    Returns:\n        dataset_id:   pass this to get_certificate / query_dataset / export_dataset.\n        passed:       whether every check held. A dataset that did not pass is still returned, with\n                      `certificate.findings` saying what failed — inspect before trusting it.\n        verification: a short, plain-language account of what was checked and what held — show it to the\n                      person as the proof, in place of asking them to take the data on trust.\n        tables:       {name: {columns, preview_rows (first 20), total_rows}} — the preview only; every\n                      row is in the stored dataset, reachable by query_dataset/export_dataset.\n        certificate:  the short form (claims, requirements, findings). get_certificate returns the rest\n                      (patterns, realism scorecard, every proof chart).\n    ","description_after":"\n    Make a verified relational dataset and wait for it: every foreign key checked, dates correctly\n    ordered, declared aggregates and rates exact, before anything is returned. Deterministic for a seed.\n\n    Use this when you give a `schema` or `ddl` (seconds). For a plain-English `request` the engine\n    designs the tables with a model, which can take several minutes: call start_generation instead and\n    poll get_status, so the call does not sit open and time out.\n\n    Args:\n        request:  Plain-English description (needs an LLM key unless `schema`/`ddl` is also given).\n        schema:   A Misata schema dict for exact structural control. No key needed for structure.\n        ddl:      CREATE TABLE statements. No key needed for structure.\n        seed:     Reproducibility seed — the same request/schema and seed always produce the same rows.\n        research: Ground realistic numbers (prices, growth rates) in real published facts via a web\n                  search. Off by default (an anonymous caller's request should not trigger external\n                  calls unless asked for); needs a key regardless of `schema`/`ddl`.\n        blueprint: The engine's full design language (blueprint_guide has the reference): readings around\n                  a parent's nominal, drift, autocorrelation, cause-and-effect, event windows, exact\n                  aggregates. Use it whenever the data must behave like the real process. No key needed;\n                  run validate_blueprint on it first.\n        story:    A built-in shape held to exact numbers, the way Studio's plan screen states them. No key\n                  needed; built by code in seconds. {\"pack\": \"saas_sales\", \"window\": {\"start\": \"2024-09\",\n                  \"end\": \"2026-08\"}, \"curves\": [{\"lever\": \"mrr_curve\", \"points\": {\"2024-09\": 50000,\n                  \"2026-08\": 200000}}], \"rates\": [{\"lever\": \"monthly_logo_churn\", \"value\": 0.02,\n                  \"events\": [{\"name\": \"Q3 churn spike\", \"start\": \"2025-07-01\", \"end\": \"2025-09-30\",\n                  \"multiplier\": 2.5}]}]}. Shapes: saas_sales, ecommerce, fintech, healthcare. Every\n                  stated number is held exactly and read back in SQL; get_certificate has the answer key.\n\n    Returns:\n        dataset_id:   pass this to get_certificate / query_dataset / export_dataset.\n        passed:       whether every check held. A dataset that did not pass is still returned, with\n                      `certificate.findings` saying what failed — inspect before trusting it.\n        verification: a short, plain-language account of what was checked and what held — show it to the\n                      person as the proof, in place of asking them to take the data on trust.\n        tables:       {name: {columns, preview_rows (first 20), total_rows}} — the preview only; every\n                      row is in the stored dataset, reachable by query_dataset/export_dataset.\n        certificate:  the short form (claims, requirements, findings). get_certificate returns the rest\n                      (patterns, realism scorecard, every proof chart).\n    ","description_similarity":0.783,"before_hash":"f26af2e1c1e08d33cd6f70cb3ab8bfa4","after_hash":"688c870806aec3030f2203bfbb2bc10e"}],"next_before":null,"next_actions":[]}