← Codex AdvisorCONTENT HISTORY

Update to Codex Advisor

Snapshot Oct 28, 2026 · 13:16 UTC · version 1.4.10

WHAT CHANGED

Package or technical metadata updated

Package or technical metadata updated

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Save Codex Advisor and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

These are saved file metadata. Open a changed file to read its text edits.

Package file

Before

Sep 30, 2026 · 23:15 UTC

{"sha256":"ea58c4a9d45cdc20ed9ded61d690d96487004a5f12643f9bb09e53260eabbf6a","size":234585}

After

Oct 28, 2026 · 13:16 UTC

Not present

Package file

Before

Sep 30, 2026 · 23:15 UTC

{"sha256":"ea58c4a9d45cdc20ed9ded61d690d96487004a5f12643f9bb09e53260eabbf6a","size":234585}

After

Oct 28, 2026 · 13:16 UTC

Not present

Package file

Before

Sep 30, 2026 · 23:15 UTC

bd2b05047cb9c0e431191d6dbb7c5f8a6baae2afb5fe52f37ac8fed46588edac

After

Oct 28, 2026 · 13:16 UTC

4ab3069acea26fc5863aaacaf2dadfe0052c9d68fa22eb0211da0440c7ad3d31

Package file

Before

Sep 30, 2026 · 23:15 UTC

2298

After

Oct 28, 2026 · 13:16 UTC

2503

Compare saved observations

Download comparison JSON

scripts/advisor_catalog.py

− removed · + added

--- before
+++ after
@@ -0,0 +1,411 @@
+"""Advisor shipped-model and compatibility catalog validation."""
+
+from __future__ import annotations
+
+import json
+import stat
+import time
+from collections.abc import Mapping
+from pathlib import Path
+from typing import Any
+
+from advisor_state import (
+    EFFORTS,
+    MAX_JSON_BYTES,
+    MAX_MODELS,
+    PRESET_RE,
+    SCHEMA_VERSION,
+    TIERS,
+    TRANSPORT_CONTRACT_VERSION,
+    ConfigError,
+    StatePaths,
+    _MISSING,
+    _atomic_write,
+    _duplicate_key,
+    _require_keys,
+    _safe_directory,
+    _validate_effort,
+    _validate_selector,
+    read_json,
+    state_lock,
+    state_paths,
+    validate_pair,
+)
+
+def _validate_candidate(value: Any) -> dict[str, Any]:
+    if not isinstance(value, dict):
+        raise ConfigError("invalid catalog candidate")
+    required = {"id", "model", "display_name", "provenance", "visible"}
+    if not required.issubset(value) or not set(value).issubset(
+        required | {"last_seen_at", "advertised_efforts", "default_effort"}
+    ):
+        raise ConfigError("invalid catalog candidate keys")
+    candidate = {key: value[key] for key in required}
+    candidate["id"] = _validate_selector(candidate["id"], label="candidate id")
+    candidate["model"] = _validate_selector(candidate["model"])
+    if (
+        not isinstance(candidate["display_name"], str)
+        or not candidate["display_name"].strip()
+    ):
+        raise ConfigError("invalid candidate display name")
+    if candidate["provenance"] not in {"manual", "discovery"} or not isinstance(
+        candidate["visible"], bool
+    ):
+        raise ConfigError("invalid catalog candidate")
+    if "last_seen_at" in value:
+        if not isinstance(value["last_seen_at"], str):
+            raise ConfigError("invalid candidate timestamp")
+        candidate["last_seen_at"] = value["last_seen_at"]
+    has_runtime = "advertised_efforts" in value or "default_effort" in value
+    if candidate["provenance"] == "discovery" and not has_runtime:
+        raise ConfigError("discovery candidate lacks runtime efforts")
+    if has_runtime:
+        efforts = value.get("advertised_efforts")
+        if (
+            not isinstance(efforts, list)
+            or not efforts
+            or len(efforts) > len(EFFORTS)
+            or len(set(efforts)) != len(efforts)
+        ):
+            raise ConfigError("invalid advertised efforts")
+        candidate["advertised_efforts"] = [_validate_effort(item) for item in efforts]
+        candidate["default_effort"] = _validate_effort(value.get("default_effort"))
+        if candidate["default_effort"] not in candidate["advertised_efforts"]:
+            raise ConfigError("default effort is not advertised")
+    return candidate
+
+
+def _empty_catalog() -> dict[str, Any]:
+    return {
+        "schema_version": SCHEMA_VERSION,
+        "revision": 0,
+        "candidates": [],
+        "compatibility": [],
+        "last_successful_refresh": None,
+    }
+
+
+def validate_compatibility(value: Any) -> dict[str, str]:
+    value = _require_keys(
+        value,
+        {
+            "model",
+            "effort",
+            "codex_version",
+            "transport_contract_version",
+            "verified_at",
+        },
+        label="compatibility record",
+    )
+    pair = validate_pair({"model": value["model"], "effort": value["effort"]})
+    for name in ("codex_version", "transport_contract_version", "verified_at"):
+        if not isinstance(value[name], str) or not value[name]:
+            raise ConfigError(f"invalid compatibility {name}")
+    return {
+        **pair,
+        **{
+            name: value[name]
+            for name in ("codex_version", "transport_contract_version", "verified_at")
+        },
+    }
+
+
+def validate_catalog(value: Any) -> dict[str, Any]:
+    value = _require_keys(
+        value,
+        {
+            "schema_version",
+            "revision",
+            "candidates",
+            "compatibility",
+            "last_successful_refresh",
+        },
+        label="catalog",
+    )
+    if (
+        value["schema_version"] != SCHEMA_VERSION
+        or not isinstance(value["revision"], int)
+        or isinstance(value["revision"], bool)
+        or value["revision"] < 0
+    ):
+        raise ConfigError("invalid catalog header")
+    if (
+        not isinstance(value["candidates"], list)
+        or len(value["candidates"]) > MAX_MODELS
+    ):
+        raise ConfigError("invalid catalog candidates")
+    candidates = [_validate_candidate(item) for item in value["candidates"]]
+    if len(
+        {(item["id"], item["model"], item["provenance"]) for item in candidates}
+    ) != len(candidates):
+        raise ConfigError("duplicate catalog candidate")
+    if (
+        not isinstance(value["compatibility"], list)
+        or len(value["compatibility"]) > MAX_MODELS
+    ):
+        raise ConfigError("invalid compatibility records")
+    compatibility = [validate_compatibility(item) for item in value["compatibility"]]
+    if value["last_successful_refresh"] is not None and not isinstance(
+        value["last_successful_refresh"], str
+    ):
+        raise ConfigError("invalid catalog refresh timestamp")
+    return {
+        "schema_version": SCHEMA_VERSION,
+        "revision": value["revision"],
+        "candidates": candidates,
+        "compatibility": compatibility,
+        "last_successful_refresh": value["last_successful_refresh"],
+    }
+
+
+def compatibility_is_current(
+    record: Mapping[str, str],
+    *,
+    model: str,
+    effort: str,
+    transport_contract_version: str = TRANSPORT_CONTRACT_VERSION,
+) -> bool:
+    """Return whether an exact canary still proves this transport pair.
+
+    The recorded CLI version is provenance, not an eligibility constraint. A
+    runtime inspection remains the authority for each actual child launch.
+    """
+    return (
+        record.get("model") == model
+        and record.get("effort") == effort
+        and record.get("transport_contract_version") == transport_contract_version
+    )
+
+
+def shipped_default_launch_eligible(
+    *,
+    tier: str,
+    model: str,
+    effort: str,
+    transport_contract_version: str = TRANSPORT_CONTRACT_VERSION,
+) -> bool:
+    """Permit one shipped default pair to be attempted for its own tier.
+
+    This is deliberately not compatibility proof. The real child still has to
+    pass the exact post-run identity and transport inspection before acceptance.
+    """
+    if tier not in TIERS or transport_contract_version != TRANSPORT_CONTRACT_VERSION:
+        return False
+    default = load_shipped_models()["defaults"][tier]
+    return default == {"model": model, "effort": effort}
+
+
+def load_catalog(paths: StatePaths | None = None) -> dict[str, Any]:
+    paths = paths or state_paths()
+    if not paths.root.exists() and not paths.root.is_symlink():
+        return _empty_catalog()
+    _safe_directory(paths.root, create=False)
+    stored = read_json(paths.catalog, missing=_MISSING)
+    return _empty_catalog() if stored is _MISSING else validate_catalog(stored)
+
+
+def load_shipped_models() -> dict[str, Any]:
+    """Load the bounded, immutable catalog shipped beside this helper."""
+    path = Path(__file__).resolve().parent.parent / "models.json"
+    try:
+        info = path.lstat()
+    except FileNotFoundError as exc:
+        raise ConfigError("shipped model catalog is unavailable") from exc
+    if (
+        not stat.S_ISREG(info.st_mode)
+        or stat.S_ISLNK(info.st_mode)
+        or info.st_size > MAX_JSON_BYTES
+    ):
+        raise ConfigError("shipped model catalog is unsafe")
+    try:
+        with path.open("r", encoding="utf-8") as handle:
+            value = json.load(handle, object_pairs_hook=_duplicate_key)
+    except (OSError, UnicodeDecodeError, json.JSONDecodeError, RecursionError) as exc:
+        raise ConfigError("shipped model catalog is invalid") from exc
+    return validate_shipped_models(value)
+
+
+def validate_shipped_models(value: Any) -> dict[str, Any]:
+    """Validate every shipped default and baseline without inferring support."""
+    value = _require_keys(
+        value,
+        {
+            "schema_version",
+            "transport_contract_version",
+            "tested_codex_cli",
+            "defaults",
+            "models",
+        },
+        label="shipped model catalog",
+    )
+    if (
+        value["schema_version"] != SCHEMA_VERSION
+        or value["transport_contract_version"] != TRANSPORT_CONTRACT_VERSION
+        or not isinstance(value["tested_codex_cli"], str)
+        or not value["tested_codex_cli"].strip()
+        or not isinstance(value["models"], list)
+        or not 1 <= len(value["models"]) <= MAX_MODELS
+    ):
+        raise ConfigError("shipped model catalog is invalid")
+    defaults_raw = _require_keys(value["defaults"], set(TIERS), label="shipped defaults")
+    defaults = {tier: validate_pair(defaults_raw[tier]) for tier in TIERS}
+    models: list[dict[str, Any]] = []
+    for item in value["models"]:
+        item = _require_keys(
+            item,
+            {"id", "model", "display_name", "tiers", "compatibility_baseline"},
+            label="shipped model",
+        )
+        if (
+            not isinstance(item["id"], str)
+            or not PRESET_RE.fullmatch(item["id"])
+            or not isinstance(item["display_name"], str)
+            or not item["display_name"].strip()
+            or not isinstance(item["tiers"], list)
+            or any(not isinstance(tier, str) for tier in item["tiers"])
+            or len(set(item["tiers"])) != len(item["tiers"])
+            or any(tier not in TIERS for tier in item["tiers"])
+        ):
+            raise ConfigError("shipped model catalog is invalid")
+        baseline = item["compatibility_baseline"]
+        if baseline is not None:
+            baseline = _require_keys(
+                baseline,
+                {"efforts", "transport_contract_version"},
+                label="shipped compatibility baseline",
+            )
+            if (
+                not item["tiers"]
+                or baseline["transport_contract_version"] != TRANSPORT_CONTRACT_VERSION
+                or not isinstance(baseline["efforts"], list)
+                or not baseline["efforts"]
+                or any(not isinstance(effort, str) for effort in baseline["efforts"])
+                or len(set(baseline["efforts"])) != len(baseline["efforts"])
+            ):
+                raise ConfigError("shipped model catalog is invalid")
+            baseline = {
+                "efforts": [_validate_effort(effort) for effort in baseline["efforts"]],
+                "transport_contract_version": TRANSPORT_CONTRACT_VERSION,
+            }
+        elif item["tiers"]:
+            raise ConfigError("shipped model catalog is invalid")
+        models.append(
+            {
+                "id": item["id"],
+                "model": _validate_selector(item["model"]),
+                "display_name": item["display_name"],
+                "tiers": list(item["tiers"]),
+                "compatibility_baseline": baseline,
+            }
+        )
+    if len({item["id"] for item in models}) != len(models) or len(
+        {item["model"] for item in models}
+    ) != len(models):
+        raise ConfigError("shipped model catalog is invalid")
+    for tier, pair in defaults.items():
+        matching = next(
+            (
+                item
+                for item in models
+                if item["model"] == pair["model"] and tier in item["tiers"]
+            ),
+            None,
+        )
+        if (
+            matching is None
+            or matching["compatibility_baseline"] is None
+            or pair["effort"] not in matching["compatibility_baseline"]["efforts"]
+        ):
+            raise ConfigError("shipped model catalog is invalid")
+    return {
+        "schema_version": SCHEMA_VERSION,
+        "transport_contract_version": TRANSPORT_CONTRACT_VERSION,
+        "tested_codex_cli": value["tested_codex_cli"],
+        "defaults": {tier: defaults[tier] for tier in sorted(TIERS)},
+        "models": models,
+    }
+
+
+def add_manual_candidate(
+    model: str,
+    *,
+    candidate_id: str | None = None,
+    display_name: str | None = None,
+    paths: StatePaths | None = None,
+) -> dict[str, Any]:
+    model = _validate_selector(model)
+    candidate_id = _validate_selector(candidate_id or model, label="candidate id")
+    if (
+        not isinstance(display_name or model, str)
+        or not (display_name or model).strip()
+    ):
+        raise ConfigError("invalid candidate display name")
+    paths = paths or state_paths()
+    with state_lock(paths):
+        catalog = load_catalog(paths)
+        candidate = {
+            "id": candidate_id,
+            "model": model,
+            "display_name": display_name or model,
+            "provenance": "manual",
+            "visible": True,
+        }
+        catalog["candidates"] = [
+            item
+            for item in catalog["candidates"]
+            if not (
+                item["id"] == candidate_id
+                and item["model"] == model
+                and item["provenance"] == "manual"
+            )
+        ] + [candidate]
+        catalog["revision"] += 1
+        _atomic_write(paths.catalog, validate_catalog(catalog))
+        return catalog
+
+
+def _pair_is_compatible(pair: Mapping[str, str], catalog: Mapping[str, Any]) -> bool:
+    """Require a current exact canary for any explicit model/preset route."""
+    return any(
+        compatibility_is_current(item, **pair)
+        for item in catalog["compatibility"]
+    )
+
+
+def _pair_is_listed(pair: Mapping[str, str], catalog: Mapping[str, Any]) -> bool:
+    shipped = load_shipped_models()["models"]
+    for item in shipped:
+        if isinstance(item, dict) and item.get("model") == pair["model"]:
+            return True
+    for item in catalog["candidates"]:
+        if item["model"] != pair["model"]:
+            continue
+        efforts = item.get("advertised_efforts")
+        return efforts is None or pair["effort"] in efforts
+    return False
+
+
+def record_compatibility(
+    pair: Mapping[str, str], *, codex_version: str, paths: StatePaths | None = None
+) -> dict[str, Any]:
+    """Record a successful exact transport canary without selecting the pair."""
+    pair = validate_pair(pair)
+    paths = paths or state_paths()
+    receipt = validate_compatibility(
+        {
+            **pair,
+            "codex_version": codex_version,
+            "transport_contract_version": TRANSPORT_CONTRACT_VERSION,
+            "verified_at": str(int(time.time())),
+        }
+    )
+    with state_lock(paths):
+        catalog = load_catalog(paths)
+        catalog["compatibility"] = [
+            item
+            for item in catalog["compatibility"]
+            if not (item["model"] == pair["model"] and item["effort"] == pair["effort"])
+        ] + [receipt]
+        catalog["revision"] += 1
+        _atomic_write(paths.catalog, validate_catalog(catalog))
+        return catalog
Full technical diff · 47 changed fields

removed /files/.codex-plugin~1assets~1composer-icon.png

BEFORE
{
  "sha256": "ea58c4a9d45cdc20ed9ded61d690d96487004a5f12643f9bb09e53260eabbf6a",
  "size": 234585
}
AFTER
Field is absent

removed /files/.codex-plugin~1assets~1logo.png

BEFORE
{
  "sha256": "ea58c4a9d45cdc20ed9ded61d690d96487004a5f12643f9bb09e53260eabbf6a",
  "size": 234585
}
AFTER
Field is absent

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"bd2b05047cb9c0e431191d6dbb7c5f8a6baae2afb5fe52f37ac8fed46588edac"
AFTER
"4ab3069acea26fc5863aaacaf2dadfe0052c9d68fa22eb0211da0440c7ad3d31"

changed /files/.codex-plugin~1plugin.json/size

BEFORE
2298
AFTER
2503

added /files/LICENSE

BEFORE
Field was absent
AFTER
{
  "sha256": "9bd605a064788e28a3961c76ba61142bed298270bfa96b06028ac450821a5258",
  "size": 1071
}

added /files/NOTICE.md

BEFORE
Field was absent
AFTER
{
  "sha256": "6fbd501f4d2dc5deb6656dbe7571ce7c78c59db8bac92416c41f2f7fd1891316",
  "size": 332
}

changed /files/advisor.toml/sha256

BEFORE
"55b952049fb9ac8b472f700321a5d92eb579605c7147797f41735b221ecab191"
AFTER
"73bbb4b5bad3eb5146af1e17c270517187028266da3c4a3db722e6adf81a71da"

changed /files/advisor.toml/size

BEFORE
595
AFTER
597

changed /files/agents~1advisor-sol.toml/sha256

BEFORE
"517f670937b2174dcd6467e39381b55d3ba133bd97c697c988bf77082dd1531d"
AFTER
"b3d58c2bd9164f0117338e9d620c3c668abf7eba12949bb840704b65d86c9a1f"

changed /files/agents~1advisor-sol.toml/size

BEFORE
1584
AFTER
1586

changed /files/agents~1advisor-terra.toml/sha256

BEFORE
"4b46bd1f354e17d0ed2eaa746fb3f838e2d5bee04ed44524b9557de1820b064e"
AFTER
"97e9beed9a0a571423a580b6d5190d9b6b2d65a31f5dcef694f02c0246dea1ee"

changed /files/models.json/sha256

BEFORE
"06f8c49d7943d56682a40633a6bb072831d087d6f589f25096c2042e8017a252"
AFTER
"7e6fa2bf8998c8c6f55534b15da19bccf6d239db74da517b9bf78d2063e4caa3"

changed /files/models.json/size

BEFORE
899
AFTER
903

changed /files/scripts~1advisor-config.sh/sha256

BEFORE
"41fe054137a6530e6d14c7a4811c857c131a95d81eae6a95080f0cf45d151e28"
AFTER
"3889220b9198ca419a3deece0a0d8f212965b5d9b95e62effa2b27df49abdd70"

changed /files/scripts~1advisor-config.sh/size

BEFORE
325
AFTER
692

added /files/scripts~1advisor_canary.py

BEFORE
Field was absent
AFTER
{
  "sha256": "39c912ee039e087bb1abc614a6fa7eee56057084991cf66230528f4e1c1f7a5e",
  "size": 10505
}

added /files/scripts~1advisor_catalog.py

BEFORE
Field was absent
AFTER
{
  "sha256": "c78f3898475acb922432cc0c78c70cd67b3c61e5072ec7b77a76789f7a51a01f",
  "size": 14818
}

changed /files/scripts~1advisor_config.py/sha256

BEFORE
"f5feee3e230f98a988b305f916eb4684282ca4597eebfa11286ab4acb1aa4c8d"
AFTER
"e7539d73a9317b4c39e3c222052fdabfa165ea274f43706b2f922523877e73bf"

changed /files/scripts~1advisor_config.py/size

BEFORE
90558
AFTER
16411

added /files/scripts~1advisor_discovery.py

BEFORE
Field was absent
AFTER
{
  "sha256": "03b4df7bf8fc58b7ac3ed3576831ba128a616fd8817be4abe9faf3b97cb464d9",
  "size": 9135
}

added /files/scripts~1advisor_doctor.py

BEFORE
Field was absent
AFTER
{
  "sha256": "0cd8973ace6fee18fab8400725090d919e73e3cde20a3bd8033029a1d529d603",
  "size": 9041
}

added /files/scripts~1advisor_journal.py

BEFORE
Field was absent
AFTER
{
  "sha256": "6a2a994097b01fa8c956dcd73763565169e7ee5fca2cb05ee1fbca8bad852c88",
  "size": 9681
}

added /files/scripts~1advisor_settings.py

BEFORE
Field was absent
AFTER
{
  "sha256": "8a3f89f0983534ed726cc1bb1dc8f7dcf14d0443e08dba655fa1d4692756be9d",
  "size": 13440
}

added /files/scripts~1advisor_state.py

BEFORE
Field was absent
AFTER
{
  "sha256": "e788e9b64d2cdb21c52ca76e6a7b68b5d7695e449f66d80f440da0319118b56e",
  "size": 12326
}

changed /files/scripts~1evaluate-triggers.sh/sha256

BEFORE
"ead7570ec2086ed726820b56251596120107f8e7bc07caa028d6ee89342dd8fe"
AFTER
"e2a5d537e51a2c9c1cd31c0a8060e9fbdc7d9eecad3ccdbcc9c3baddf4f238c9"

changed /files/scripts~1evaluate-triggers.sh/size

BEFORE
25580
AFTER
25586

changed /files/scripts~1install-agents.sh/sha256

BEFORE
"59ac0e3cadae49cd6228d592a0e665aef80a0f03cd46e00f639c3c792753285f"
AFTER
"c8bcb94735ae0bdb276a05e68e69bba293155fe3644545bff0cd920208ebd83b"

changed /files/scripts~1install-agents.sh/size

BEFORE
16432
AFTER
18620

changed /files/scripts~1run-advisor.sh/sha256

BEFORE
"e93d33441b827c3b6cb87ea75cee87dd4e7d7c8381fdb1c676b8421f30e83131"
AFTER
"c31b5f6af99f5d577748260e63ea0cebc17ef55a7c20e93917358e2bf1afb4ab"

changed /files/scripts~1run-advisor.sh/size

BEFORE
27596
AFTER
27506

changed /files/scripts~1verify.sh/sha256

BEFORE
"06a5b9bceda7dfb693353744e75fb371e335f815be25e5dd0fe4b5c941f52566"
AFTER
"dde2181752a614b3b914b48dd62f29798185b6dbe3e5d57ddcbe068ef8ef0d62"

changed /files/scripts~1verify.sh/size

BEFORE
129023
AFTER
4700

removed /files/settings.schema.json

BEFORE
{
  "sha256": "2b38841cbc898b9da626845e23b6db002d71755a1ff16114e67fb2ad9b1a9cb5",
  "size": 1200
}
AFTER
Field is absent

changed /files/skills~1consultation~1SKILL.md/sha256

BEFORE
"8314e737292358a8731034058946cf53a534082e5d098f1d03ec5b4a24517dd5"
AFTER
"fc07af46962e0ddcdc0d4fadd53c959d7938580e624fcb959820105d92f5cc9f"

changed /files/skills~1consultation~1SKILL.md/size

BEFORE
17484
AFTER
17488

changed /files/skills~1consultation~1references~1operations.md/sha256

BEFORE
"3d82d8689478200f19ac76aa02375512a8c8bd096959b8c78f73d81b5c548004"
AFTER
"41f6790b742bf146e9f58ae2b7d5fc710e07f19b4ed2fe282cdd63475f621047"

changed /files/skills~1consultation~1references~1operations.md/size

BEFORE
22558
AFTER
22564

added /files/tests~1advisor_transport_support.py

BEFORE
Field was absent
AFTER
{
  "sha256": "ab4d43ce97049e90f3902947c9251c087b681e5a2f6b963085b85b5c0b54ffd2",
  "size": 11089
}

changed /files/tests~1test_advisor_cli.py/sha256

BEFORE
"b1b2ad9415e560da63ff6f8f8cfb76233b828de6fb459f306e3a6b58b3100f64"
AFTER
"0edfa5b16f1d35ebb714b177ab4b6c12ad3f4647ab965e290e1c19415058540b"

changed /files/tests~1test_advisor_cli.py/size

BEFORE
17635
AFTER
27646

changed /files/tests~1test_advisor_config.py/sha256

BEFORE
"169b5aa46700a4f09c6ee0dbadf3d02b1b6c91465a356de38804d5ebdc8ed9dc"
AFTER
"aa52b9fadef51b8121f4da4038914058952c1268aac23b68e1d8c7dcddd9a677"

changed /files/tests~1test_advisor_config.py/size

BEFORE
25728
AFTER
28147

added /files/tests~1test_advisor_setup.py

BEFORE
Field was absent
AFTER
{
  "sha256": "88f7545477e62f2a3d4317e32410eecdd92ea907679fc64206eddbd824d12ed9",
  "size": 10603
}

changed /files/tests~1test_advisor_transport.py/sha256

BEFORE
"aa566e1057819c5c1385b8659ddb51eb1f7e55ec8551e2acdb52a1feadb9067f"
AFTER
"d5318adabba6b6c1d2d5b7c9d41d48f91ac6b61352f897e5368afbf1bcacc4b9"

changed /files/tests~1test_advisor_transport.py/size

BEFORE
26202
AFTER
21224

changed /files/tests~1test_advisor_usage.py/sha256

BEFORE
"d5a5d1ecf82c9a2254e3565d24d7854ef05442cbacc1725432503138f153f70b"
AFTER
"3cfe33013652669e3756f5945248ac33776ce7f03ab53435aca794ca50f53d68"

changed /files/tests~1test_advisor_usage.py/size

BEFORE
24681
AFTER
24870
Full snapshot data
{
  "files": {
    ".codex-plugin/plugin.json": {
      "sha256": "4ab3069acea26fc5863aaacaf2dadfe0052c9d68fa22eb0211da0440c7ad3d31",
      "size": 2503
    },
    "LICENSE": {
      "sha256": "9bd605a064788e28a3961c76ba61142bed298270bfa96b06028ac450821a5258",
      "size": 1071
    },
    "NOTICE.md": {
      "sha256": "6fbd501f4d2dc5deb6656dbe7571ce7c78c59db8bac92416c41f2f7fd1891316",
      "size": 332
    },
    "advisor-response.schema.json": {
      "sha256": "01019be4a32a8257d852d50ec791184e6edbfbaa39cafd61a575e990c9933c40",
      "size": 666
    },
    "advisor.toml": {
      "sha256": "73bbb4b5bad3eb5146af1e17c270517187028266da3c4a3db722e6adf81a71da",
      "size": 597
    },
    "agents/advisor-astra.toml": {
      "sha256": "355b6e0286a15900f64e8bf6a5e743b26eb4a9fdf7e282ef70c7adb61352f754",
      "size": 1582
    },
    "agents/advisor-sol.toml": {
      "sha256": "b3d58c2bd9164f0117338e9d620c3c668abf7eba12949bb840704b65d86c9a1f",
      "size": 1586
    },
    "agents/advisor-terra.toml": {
      "sha256": "97e9beed9a0a571423a580b6d5190d9b6b2d65a31f5dcef694f02c0246dea1ee",
      "size": 1597
    },
    "assets/advisor-composer-icon.png": {
      "sha256": "ea58c4a9d45cdc20ed9ded61d690d96487004a5f12643f9bb09e53260eabbf6a",
      "size": 234585
    },
    "assets/advisor-logo.png": {
      "sha256": "ea58c4a9d45cdc20ed9ded61d690d96487004a5f12643f9bb09e53260eabbf6a",
      "size": 234585
    },
    "evals/trigger-cases.json": {
      "sha256": "68aa2b683073c632d16f146c55598ff906044248ad85998aaac3f9074278cfc1",
      "size": 2943
    },
    "models.json": {
      "sha256": "7e6fa2bf8998c8c6f55534b15da19bccf6d239db74da517b9bf78d2063e4caa3",
      "size": 903
    },
    "scripts/advisor-audit.sh": {
      "sha256": "c8e905fbf62f620b273ff839f574a0f1a0367b46e6b839426f0c05721a886bc8",
      "size": 37485
    },
    "scripts/advisor-config.sh": {
      "sha256": "3889220b9198ca419a3deece0a0d8f212965b5d9b95e62effa2b27df49abdd70",
      "size": 692
    },
    "scripts/advisor_canary.py": {
      "sha256": "39c912ee039e087bb1abc614a6fa7eee56057084991cf66230528f4e1c1f7a5e",
      "size": 10505
    },
    "scripts/advisor_catalog.py": {
      "sha256": "c78f3898475acb922432cc0c78c70cd67b3c61e5072ec7b77a76789f7a51a01f",
      "size": 14818
    },
    "scripts/advisor_config.py": {
      "sha256": "e7539d73a9317b4c39e3c222052fdabfa165ea274f43706b2f922523877e73bf",
      "size": 16411
    },
    "scripts/advisor_discovery.py": {
      "sha256": "03b4df7bf8fc58b7ac3ed3576831ba128a616fd8817be4abe9faf3b97cb464d9",
      "size": 9135
    },
    "scripts/advisor_doctor.py": {
      "sha256": "0cd8973ace6fee18fab8400725090d919e73e3cde20a3bd8033029a1d529d603",
      "size": 9041
    },
    "scripts/advisor_journal.py": {
      "sha256": "6a2a994097b01fa8c956dcd73763565169e7ee5fca2cb05ee1fbca8bad852c88",
      "size": 9681
    },
    "scripts/advisor_process.py": {
      "sha256": "841274eebb90ef5d0a99fe26ab5f2ff30e86883dcb3d20bce112206625953c04",
      "size": 17793
    },
    "scripts/advisor_settings.py": {
      "sha256": "8a3f89f0983534ed726cc1bb1dc8f7dcf14d0443e08dba655fa1d4692756be9d",
      "size": 13440
    },
    "scripts/advisor_state.py": {
      "sha256": "e788e9b64d2cdb21c52ca76e6a7b68b5d7695e449f66d80f440da0319118b56e",
      "size": 12326
    },
    "scripts/evaluate-triggers.sh": {
      "sha256": "e2a5d537e51a2c9c1cd31c0a8060e9fbdc7d9eecad3ccdbcc9c3baddf4f238c9",
      "size": 25586
    },
    "scripts/inspect-agent-runtime.sh": {
      "sha256": "bb5d7d3011529e73899c76474527d8106486f67017ea09bccb107b36bc4e8831",
      "size": 4560
    },
    "scripts/inspect-parent-runtime.sh": {
      "sha256": "b647eb7ea5d00c2fe297840e7a4ad8a2e13e9ddedcd679cf89da3865f41080bd",
      "size": 2224
    },
    "scripts/install-agents.sh": {
      "sha256": "c8bcb94735ae0bdb276a05e68e69bba293155fe3644545bff0cd920208ebd83b",
      "size": 18620
    },
    "scripts/run-advisor.sh": {
      "sha256": "c31b5f6af99f5d577748260e63ea0cebc17ef55a7c20e93917358e2bf1afb4ab",
      "size": 27506
    },
    "scripts/verify.sh": {
      "sha256": "dde2181752a614b3b914b48dd62f29798185b6dbe3e5d57ddcbe068ef8ef0d62",
      "size": 4700
    },
    "skills/consultation/SKILL.md": {
      "sha256": "fc07af46962e0ddcdc0d4fadd53c959d7938580e624fcb959820105d92f5cc9f",
      "size": 17488
    },
    "skills/consultation/agents/openai.yaml": {
      "sha256": "3a9c1d3552e1d5aa94812fea0bc6af189a5bde271596ca8de7b3ea979e01a73f",
      "size": 312
    },
    "skills/consultation/references/operations.md": {
      "sha256": "41f6790b742bf146e9f58ae2b7d5fc710e07f19b4ed2fe282cdd63475f621047",
      "size": 22564
    },
    "tests/advisor_transport_support.py": {
      "sha256": "ab4d43ce97049e90f3902947c9251c087b681e5a2f6b963085b85b5c0b54ffd2",
      "size": 11089
    },
    "tests/test_advisor_cli.py": {
      "sha256": "0edfa5b16f1d35ebb714b177ab4b6c12ad3f4647ab965e290e1c19415058540b",
      "size": 27646
    },
    "tests/test_advisor_config.py": {
      "sha256": "aa52b9fadef51b8121f4da4038914058952c1268aac23b68e1d8c7dcddd9a677",
      "size": 28147
    },
    "tests/test_advisor_setup.py": {
      "sha256": "88f7545477e62f2a3d4317e32410eecdd92ea907679fc64206eddbd824d12ed9",
      "size": 10603
    },
    "tests/test_advisor_transport.py": {
      "sha256": "d5318adabba6b6c1d2d5b7c9d41d48f91ac6b61352f897e5368afbf1bcacc4b9",
      "size": 21224
    },
    "tests/test_advisor_usage.py": {
      "sha256": "3cfe33013652669e3756f5945248ac33776ce7f03ab53435aca794ca50f53d68",
      "size": 24870
    }
  }
}

SHA-256 of public snapshot: a367e114a58cede454294847a55b600b337e44eb1140d8192311a44c4c2da40e