{
  "budget": {
    "asciiOnly": true,
    "byteCount": 3960,
    "maxAsciiBytes": 4000,
    "tokenUpperBound": 3960
  },
  "cardSha256": "deac294e75909101455dbd7434951d83dd6ffbf6f53c6b05cb47920fa6a6bb58",
  "examples": [
    {
      "expected": "42",
      "id": "eval-arithmetic",
      "polarity": "positive",
      "source": "(prim int/add 20 22)"
    },
    {
      "expected": "6",
      "id": "eval-lexical-closure",
      "polarity": "positive",
      "source": "(let ((x 2)) ((fn (y) (prim int/mul x y)) 3))"
    },
    {
      "expected": "EffectProgram",
      "id": "eval-effect-program",
      "polarity": "positive",
      "source": "(core/effect::pure 1)"
    },
    {
      "expected": "Unbound",
      "id": "eval-unbound-symbol",
      "polarity": "negative",
      "source": "missing-symbol"
    },
    {
      "expected": "StepLimit",
      "id": "step-limit",
      "polarity": "negative",
      "source": "(begin 1 2 3 4)"
    },
    {
      "expected": "MemoryLimit",
      "id": "vector-limit",
      "polarity": "negative",
      "source": "[1 2]"
    }
  ],
  "kind": "genesis/gc-agent-core-card-v0.3",
  "manifestIdentitySha256": "56253fc472908e129b0be72225fedcb045b8050fc9f1f9acea78102bf3a63f5f",
  "profileId": "GC-AGENT-v0.3",
  "profileIdentitySha256": "5869875058acbab1e335ae9581d7f86936a6b7ad7f759da6c70299e7f7668ca9",
  "sourceIdentities": {
    "docs/spec/GC_AGENT_PROFILE_v0.3.json": "d68dcb143067afda404e9dce3865e27b1d58e0e039a8f1a622159e467c3f2ada",
    "docs/spec/GC_AGENT_PROFILE_v0.3.schema.json": "559ffafe661d3d95696107717acb159a38c60d7735bbc940ef2ac19f18be6314",
    "policies/gc_agent_core_card_v0.3.json": "1d6a5caff18bd42895fdbdcddcd8b27c88cd05786918879ab1ebbc2bec30f996"
  },
  "symbols": [
    "nil",
    "true",
    "false",
    "integer",
    "string",
    "bytes",
    "symbol",
    "quote",
    "list",
    "vector",
    "map",
    "comment",
    "Nil",
    "Bool",
    "Int",
    "Str",
    "Bytes",
    "Symbol",
    "Pair",
    "Vector",
    "Map",
    "fn",
    "if",
    "begin",
    "let",
    "prim",
    "seal",
    "unseal",
    "def",
    "application",
    "Data",
    "Closure",
    "CompiledClosure",
    "SealToken",
    "Sealed",
    "NativeFn",
    "Contract",
    "EffectProgram",
    "EffectRequest",
    "bytes/concat",
    "bytes/from-hex",
    "bytes/get",
    "bytes/join",
    "bytes/len",
    "bytes/slice",
    "bytes/to-hex",
    "bytes/to-str-utf8",
    "core/eq?",
    "coreform/escape-bytes",
    "coreform/escape-str",
    "crypto/blake3",
    "data/tag",
    "dec/add",
    "dec/eq?",
    "dec/from-int",
    "dec/lt?",
    "dec/mul",
    "dec/parse",
    "dec/sub",
    "dec/to-str",
    "int/add",
    "int/div",
    "int/eq?",
    "int/lt?",
    "int/mod",
    "int/mul",
    "int/sub",
    "int/to-str",
    "list/is-nil?",
    "map/entries",
    "map/from-entries",
    "map/get",
    "map/len",
    "map/merge",
    "map/put",
    "pair/as-proper-list",
    "pair/car",
    "pair/cdr",
    "pair/cons",
    "str/concat",
    "str/grapheme-len",
    "str/grapheme-slice",
    "str/join",
    "str/len",
    "str/nfc",
    "str/repeat",
    "str/scalar-len",
    "str/to-bytes-utf8",
    "sym/eq?",
    "sym/from-str",
    "sym/to-str",
    "utf8/encode-codepoint",
    "vec/get",
    "vec/len",
    "vec/push",
    "vec/set",
    "core/contract::genesis",
    "core/contract::make",
    "core/contract::extend",
    "core/contract::dispatch",
    "core/contract::explain",
    "core/contract::meta",
    "core/contract::proto",
    "core/contract::shape",
    "core/msg::make",
    "core/msg::op",
    "core/msg::payload",
    "::meta",
    ":caps",
    ":exports",
    ":types",
    "module-path::name",
    "core/effect::pure",
    "core/effect::perform",
    "core/effect::bind",
    "core/effect::map",
    "core/effect::then",
    "core/effect::catch",
    "core/effect::catch-payload",
    "caps.toml",
    ".gclog",
    "replay",
    "schema",
    "name",
    "version",
    "modules",
    "dependencies",
    "obligations",
    "tests",
    "property_tests",
    "caps_policy",
    "limits",
    "budgets",
    "property",
    "gfx",
    "BadForm",
    "Unbound",
    "Type",
    "NotCallable",
    "Internal",
    "StepLimit",
    "MemoryLimit",
    "UNHANDLED",
    "EFFECT",
    "ERROR",
    "genesis/error-v0.2",
    "genesis/diagnostics-schema-v1",
    "genesis/diagnostic-catalog-v0.1",
    "genesis/diagnostic/v1",
    "step_limit",
    "allow_unlimited",
    "max_alloc_units",
    "max_live_units",
    "max_pair_cells",
    "max_vec_len",
    "max_map_len",
    "max_bytes_len",
    "max_string_len",
    "max_steps_per_test",
    "max_effect_entries_per_test",
    "max_effect_log_bytes_per_test",
    "max_effect_ops",
    "max_payload_bytes_per_op",
    "max_payload_bytes_per_run",
    "max_response_bytes_per_op",
    "max_response_bytes_per_run",
    "GC-AGENT-v0.3",
    "genesis/language-profile/v0.2",
    "genesis/coreform/v0.2",
    "genesis/hash-profile/gcv0.2-blake3",
    "genesis/value-effect-hash/v0.2",
    "genesis/effect-log/v3",
    "package-schema-1",
    "genesis-lock-v2",
    "gpk-v2",
    "reserved-not-stable"
  ],
  "unsupportedBehavior": [
    {
      "behavior": "Reader macros, dotted-pair source notation, character literals, decimal literal tokens, and every other experimental reader extension",
      "category": "syntax",
      "enforcement": "reject",
      "id": "U-SYNTAX-EXTENSIONS",
      "rationale": "The frozen lexer/parser recognizes only the declared GC-AGENT-v0.3 grammar.",
      "roadmapClass": "experimental-syntax",
      "roadmapTask": null,
      "safeAlternative": "Use the lexical-grammar surface in the frozen profile and represent decimals through dec/parse.",
      "status": "unsupported"
    },
    {
      "behavior": "Mutable variables, objects, collections, or ambient process state in kernel evaluation",
      "category": "semantics",
      "enforcement": "reject",
      "id": "U-MUTATION",
      "rationale": "The kernel is pure and values are immutable.",
      "roadmapClass": "additional-safety-boundary",
      "roadmapTask": null,
      "safeAlternative": "Return a new persistent value and thread it explicitly through pure functions.",
      "status": "unsupported"
    },
    {
      "behavior": "Core floating-point literals or operations, NaN, infinity, signed zero, subnormal or rounding semantics, decimal division, and implicit numeric coercion",
      "category": "numeric",
      "enforcement": "reject",
      "id": "U-CORE-FLOAT-AND-DECIMAL-DIVISION",
      "rationale": "The frozen numeric profile provides arbitrary-precision Int and bounded fixed Dec semantics only; inventing backend-dependent arithmetic would violate cross-tier determinism.",
      "roadmapClass": "additional-safety-boundary",
      "roadmapTask": "R5.1.d",
      "safeAlternative": "Use Int, construct Dec explicitly through dec/from-int or dec/parse, and keep any profile-scoped floating-point payload behind an explicit host boundary.",
      "status": "unsupported"
    },
    {
      "behavior": "Implicit Unicode normalization, locale-sensitive identity or ordering, case-folded map keys, lossy filesystem names, absolute or host-native path payloads, or unversioned Unicode segmentation",
      "category": "text-path",
      "enforcement": "reject",
      "id": "U-IMPLICIT-TEXT-PATH-SEMANTICS",
      "rationale": "The frozen text/path profile requires exact UTF-8 identity, explicit Unicode 17 NFC/grapheme APIs, no ambient locale, and NFC base-relative slash paths at effect boundaries.",
      "roadmapClass": "additional-safety-boundary",
      "roadmapTask": "R5.1.e",
      "safeAlternative": "Use exact Str equality, call str/nfc explicitly when required, choose byte/scalar/grapheme units deliberately, and pass validated base-relative slash paths to filesystem effects.",
      "status": "unsupported"
    },
    {
      "behavior": "Forged or unsealed UNHANDLED, EFFECT, or ERROR protocol values",
      "category": "security",
      "enforcement": "reject",
      "id": "U-UNSEALED-PROTOCOL",
      "rationale": "Protocol recognition requires unforgeable Prelude seal tokens.",
      "roadmapClass": "additional-safety-boundary",
      "roadmapTask": "R7.2.b",
      "safeAlternative": "Construct protocol outcomes only through the sealed Prelude protocol helpers.",
      "status": "unsupported"
    },
    {
      "behavior": "Direct or implicit filesystem, clock, entropy, network, process, GPU, model, or LLM host operations inside source or kernel evaluation",
      "category": "effects",
      "enforcement": "explicit-effect-only",
      "id": "U-IMPLICIT-EFFECTS",
      "rationale": "Host-only operations are outside the pure kernel and require a runner-mediated effect.",
      "roadmapClass": "host-only-operation",
      "roadmapTask": null,
      "safeAlternative": "Emit a declared effect operation, authorize it minimally in caps.toml, and require run/replay equivalence.",
      "status": "unsupported"
    },
    {
      "behavior": "Any capability absent from the negotiated profile or automatically authorized merely because an operation appears in a host index",
      "category": "capabilities",
      "enforcement": "deny-by-default",
      "id": "U-INDEX-AS-AUTHORITY",
      "rationale": "Indices describe availability; selected profiles bound availability; caps.toml alone grants scoped authority.",
      "roadmapClass": "out-of-profile-capability",
      "roadmapTask": null,
      "safeAlternative": "Negotiate a profile that contains the operation and add the minimum explicit caps.toml grant as a separately reviewable policy change.",
      "status": "unsupported"
    },
    {
      "behavior": "Unbounded package evaluation when limits.allow_unlimited is absent or false",
      "category": "resources",
      "enforcement": "bounded-opt-in-only",
      "id": "U-IMPLICIT-UNLIMITED",
      "rationale": "The default package policy rejects disabling the step limit.",
      "roadmapClass": "additional-safety-boundary",
      "roadmapTask": null,
      "safeAlternative": "Declare finite package and effect budgets; use allow_unlimited only in an explicitly reviewed trusted profile.",
      "status": "unsupported"
    },
    {
      "behavior": "A stable or compatibility-authoritative bytecode format",
      "category": "runtime",
      "enforcement": "claim-prohibited",
      "id": "U-BYTECODE",
      "rationale": "The v1 bytecode compatibility reservation is intentionally unbound.",
      "roadmapClass": "additional-safety-boundary",
      "roadmapTask": "R3.1.a",
      "safeAlternative": "Use canonical CoreForm and validated current execution tiers until a versioned bytecode is frozen.",
      "status": "unsupported"
    },
    {
      "behavior": "General source-to-Wasm coverage or undeclared stage2 fallback",
      "category": "runtime",
      "enforcement": "profile-negotiation-required",
      "id": "U-STAGE2-GENERAL",
      "rationale": "Stage2 translation supports only a validated subset and must fail closed outside it.",
      "roadmapClass": "additional-safety-boundary",
      "roadmapTask": "R3.2.a",
      "safeAlternative": "Negotiate the exact stage2 coverage profile or execute through a complete verified lower tier.",
      "status": "unsupported"
    },
    {
      "behavior": "A production JIT or native optimizing backend",
      "category": "runtime",
      "enforcement": "profile-negotiation-required",
      "id": "U-JIT",
      "rationale": "No validated JIT tier exists in the current profile.",
      "roadmapClass": "additional-safety-boundary",
      "roadmapTask": "R3.4.c",
      "safeAlternative": "Use treewalk, compiled AST, or another explicitly validated lower execution tier.",
      "status": "unsupported"
    },
    {
      "behavior": "Native, browser, edge, WASI, iOS, Android, OCI, component, or other build/deploy targets not explicitly marked available by the negotiated target profile",
      "category": "targets",
      "enforcement": "profile-negotiation-required",
      "id": "U-UNAVAILABLE-TARGETS",
      "rationale": "GC-AGENT-v0.3 language membership does not imply that a target runtime, SDK, or production pipeline is available.",
      "roadmapClass": "unavailable-target",
      "roadmapTask": "R6.3.a",
      "safeAlternative": "Select a target profile with verified availability and declared limitations, or remain on the portable local execution profile.",
      "status": "unsupported"
    },
    {
      "behavior": "Ambient wall clock, unrecorded entropy/randomness, unordered scheduling, race-selected outcomes, or replay facts omitted from logs",
      "category": "determinism",
      "enforcement": "explicit-effect-only",
      "id": "U-NONDETERMINISTIC-REPLAY",
      "rationale": "Nondeterministic facilities are not kernel primitives; all observable scheduling and host facts belong in deterministic logs.",
      "roadmapClass": "nondeterministic-facility",
      "roadmapTask": "R5.2.a",
      "safeAlternative": "Use deterministic scheduling or explicit logged effects whose complete facts are checked during replay.",
      "status": "unsupported"
    },
    {
      "behavior": "Unqualified v1 compatibility or production-readiness claims",
      "category": "compatibility",
      "enforcement": "claim-prohibited",
      "id": "U-V1-STABILITY",
      "rationale": "All v1 identifiers are reserved-not-stable until the R9 release freeze.",
      "roadmapClass": "additional-safety-boundary",
      "roadmapTask": "R9.1.a",
      "safeAlternative": "State the exact pre-v1 profile, maturity, target limitations, and evidence level.",
      "status": "unsupported"
    }
  ],
  "unsupportedClasses": [
    "experimental-syntax",
    "host-only-operation",
    "unavailable-target",
    "nondeterministic-facility",
    "out-of-profile-capability"
  ],
  "version": "0.3"
}
