C1 self-describing checks, 2026-10-30 08:51-08:54 (UTC+8). --usage: 41,352 bytes KDL (saved as 03a-usage.kdl.txt). Uses KDL v2 syntax (#true, multi-line """). - kdl-py 1.2.0: parse error at 3:9 — but kdl-py also fails on the minimal KDL v2 doc 'a #true', so it is a v1-only parser (our tooling, not the CLI). - ckdl (KDL v2 parser): parsed OK, 52 top-level nodes. - Top-level cmd nodes: agent analyze auth configure credentials environments files generate image models music transcribe triggers tts video webhooks whoami completion explore help version - README command table: 19/19 present. Env vars named: GEMINI_ACCESS_TOKEN GEMINI_API_KEY GEMINI_API_REVISION GEMINI_API_VERSION GEMINI_NO_KEYRING GEMINI_USER_PROJECT; config file path ~/.config/gemini-api/config.yaml. --schema: generate: rc=0 bytes=91423 sha256=36bf538ad403 image: rc=0 bytes=91423 sha256=36bf538ad403 agent_run: rc=0 bytes=91423 sha256=36bf538ad403 music: rc=0 bytes=91423 sha256=36bf538ad403 video: rc=0 bytes=91423 sha256=36bf538ad403 tts: rc=2 bytes=0 sha256=e3b0c44298fc analyze: rc=2 bytes=0 sha256=e3b0c44298fc (tts/analyze: 'unknown flag: --schema' exit 2 — they take no --body, consistent with the README table.) generate/image/agent run/music/video all print the SAME 91,423-byte schema (one Interaction schema, not per command). check_schema 2020-12: OK; $schema declared: False ; top-level oneOf branches: 2 README hero-image.json errors: 1 ["{'model': 'gemini-nano-banana-2.1', 'input': 'A friendly robot mascot in a sunlit workshop, composed on the right with uncluttered space on the left f"] image_size=3K errors: 1 unknown field errors: 1 KDL parse FAIL ParseError('3:9 parse error: Junk after node, before terminator.') top-level cmds: ['agent', 'analyze', 'auth', 'configure', 'credentials', 'environments', 'files', 'generate', 'image', 'models', 'music', 'transcribe', 'triggers', 'tts', 'video', 'webhooks', 'whoami', 'completion', 'explore', 'help', 'version'] README commands missing from --usage: [] (19/19) env vars in usage: ['GEMINI_ACCESS_TOKEN', 'GEMINI_API_KEY', 'GEMINI_API_REVISION', 'GEMINI_API_VERSION', 'GEMINI_NO_KEYRING', 'GEMINI_USER_PROJECT'] top: oneOf aspect_ratio': '16:9', 'image_size': '2K'}, 'store': False, 'stream': False} is not valid under any of the given schemas branch [0, 'required'] path [] required 'agent' is a required property branch [1, 'required'] path [] required 'created' is a required property branch [1, 'required'] path [] required 'id' is a required property branch [1, 'required'] path [] required 'status' is a required property branch [1, 'required'] path [] required 'steps' is a required property branch [1, 'required'] path [] required 'updated' is a required property branch [0, 'properties', 'response_format'] path ['response_format'] oneOf {'type': 'image', 'aspect_ratio': '16:9', 'image_size': '2K'} is not valid under any of the given schemas branch [1, 'properties', 'response_format'] path ['response_format'] oneOf {'type': 'image', 'aspect_ratio': '16:9', 'image_size': '2K'} is not valid under any of the given schemas [('#/$defs/AgentInteraction', None), ('#/$defs/ModelInteraction', None)] ModelInteraction required: ['created', 'id', 'model', 'status', 'steps', 'updated'] response_format schema: {"description": "Enforces that the generated response is a JSON object that complies with\nthe JSON schema specified in this field.", "oneOf": [{"$ref": "#/$defs/ResponseFormat"}, {"items": {"$ref": "#/$defs/ResponseFormat"}, "title": "ResponseFormatList", "type": "array"}]} [0, 'oneOf'] oneOf {'type': 'image', 'aspect_ratio': '16:9', 'image_size': '2K'} is valid under each of {'additionalProperties': True, 'type': 'object'}, {'$ref': '#/$defs/ImageRe [1, 'type'] type {'type': 'image', 'aspect_ratio': '16:9', 'image_size': '2K'} is not of type 'array' AgentInteraction required: ['agent'] agent readOnly= None | The name of the `Agent` used for generating the interaction. ModelInteraction required: ['created', 'id', 'model', 'status', 'steps', 'updated'] created readOnly= True | Required. Output only. The time at which the response was created in ISO 8601 format (YYYY id readOnly= True | Required. Output only. A unique identifier for the interaction completion. model readOnly= None | The name of the `Model` used for generating the interaction. status readOnly= True | Required. Output only. The status of the interaction. steps readOnly= None | updated readOnly= True | Required. Output only. The time at which the response was last updated in ISO 8601 format ResponseFormat oneOf: ['#/$defs/AudioResponseFormat', '#/$defs/ImageResponseFormat', '#/$defs/TextResponseFormat', '#/$defs/VideoResponseFormat', {'additionalProperties': True, 'type': 'object'}] Reading: the bundled schema is the Interaction RESOURCE schema. ModelInteraction requires created/id/status/updated (each marked readOnly, 'Required. Output only.') plus steps (not readOnly) and model. ResponseFormat is a oneOf of Audio/Image/Text/Video formats PLUS a catch-all {type: object, additionalProperties: true}, so any specific response_format matches two branches and fails oneOf. Result: the README's own hero-image.json (which the CLI accepts, see 04) fails validation with a standard 2020-12 validator (jsonschema 4.26.0). The schema also has no $schema keyword (it does pass the 2020-12 metaschema check).