addedOutput schema / properties / $schema
Added value: +{
+ "description": "Exact dated canonical manifest schema URL. Omitted for legacy apps.",
+ "enum": [
+ "https://charm.ing/schema/app-manifest/2026-07-31.json",
+ "https://charm.ing/schema/app-manifest/2026-09-05.json"
+ ],
+ "type": "string"
+}
addedOutput schema / properties / advisories
Added value: +{
+ "description": "Structured non-fatal advisories, including authoring issues and unread staff feedback responses. Each advisory.summary is also appended to the text content for the LLM path.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "data": {
+ "additionalProperties": {},
+ "description": "Kind-specific structured payload. Shape varies per advisory kind.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "doc_url": {
+ "description": "Optional docs pointer for this advisory kind.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Stable advisory identifier (e.g. \"legacy-bridge\").",
+ "type": "string"
+ },
+ "severity": {
+ "description": "Severity; omitted advisories are treated as 'info'.",
+ "enum": [
+ "info",
+ "warn"
+ ],
+ "type": "string"
+ },
+ "summary": {
+ "description": "Agent-facing summary. Self-sufficient; no extra context required.",
+ "type": "string"
+ },
+ "userSummary": {
+ "description": "End-user-facing summary. Set when the advisory should render in-app.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "summary"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
changedOutput schema / properties / api / description
Previous value: -"Full API surface — same shape as `_meta.buildy.api`, but model-facing."New value: +"Full API surface — same shape as `_meta.charming.api`, but model-facing."
changedOutput schema / properties / api / properties / operations / items / properties / input / description
Previous value: -"JSON Schema for the field. Same shape passed to `route.input`/`route.output`."New value: +"JSON Schema for the field. Canonical source declares it as `route.inputSchema` or `route.outputSchema`."
removedOutput schema / properties / api / properties / operations / items / properties / name
Removed value: -{
- "description": "Back-compat alias of `op`. Read either; prefer `op` for new consumers.",
- "type": "string"
-}
changedOutput schema / properties / api / properties / operations / items / properties / output / description
Previous value: -"JSON Schema for the field. Same shape passed to `route.input`/`route.output`."New value: +"JSON Schema for the field. Canonical source declares it as `route.inputSchema` or `route.outputSchema`."
removedOutput schema / properties / appName / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / appName / type
Added value: +[
+ "string",
+ "null"
+]
changedOutput schema / properties / appVersion / description
Previous value: -"Author-declared version string for the app (whatever the manifest source set as `manifest.version`, e.g. \"0.0.1\"). Distinct from the concurrency `version` int and from `manifestVersion` (Charming contract date)."New value: +"Canonical apps return decimal String(revision). Legacy apps return their stored effective SemVer."
removedOutput schema / properties / description / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / description / type
Added value: +[
+ "string",
+ "null"
+]
changedOutput schema / properties / manifestVersion / description
Previous value: -"Charming manifest contract date (`YYYY-MM-DD`) the app is pinned to. The runtime branches on this value to pick contract-specific behaviour."New value: +"Deprecated public contract marker. Canonical apps return null; legacy apps return their stored contract date."
changedOutput schema / properties / manifestVersion / type
Previous value: -"string"New value: +[
+ "string",
+ "null"
+]
changedOutput schema / properties / recentIssues / description
Previous value: -"Runtime failures recorded against the current app version since it was published (#1133): contract misses, runtime JS errors, CSP violations, and failed API calls. Present only when the current version has at least one such event — absence means a clean render. The same summary is appended to the text content. Fetch full detail with GET /app/:id/activity."New value: +"Runtime failures recorded against the current app revision since it was published (#1133): contract misses, runtime JS errors, CSP violations, and failed API calls. Present only when the current revision has at least one such event — absence means a clean render. The same summary is appended to the text content. Fetch full detail with GET /app/:id/activity."
addedOutput schema / properties / recentIssues / properties / counts / properties / externalResourceFailures
Added value: +{
+ "description": "Failed external image requests, including failures caught by app code.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+}
changedOutput schema / properties / recentIssues / properties / counts / required
Previous value: -[
- "contractMisses",
- "runtimeErrors",
- "cspViolations",
- "apiFailures",
- "appLoadErrors"
-]New value: +[
+ "contractMisses",
+ "runtimeErrors",
+ "cspViolations",
+ "apiFailures",
+ "externalResourceFailures",
+ "appLoadErrors"
+]
changedOutput schema / properties / recentIssues / properties / examples / items / properties / category / enum
Previous value: -[
- "contractMisses",
- "runtimeErrors",
- "cspViolations",
- "apiFailures",
- "appLoadErrors"
-]New value: +[
+ "contractMisses",
+ "runtimeErrors",
+ "cspViolations",
+ "apiFailures",
+ "appLoadErrors",
+ "externalResourceFailures"
+]
changedOutput schema / properties / recentIssues / properties / examples / items / properties / kind / description
Previous value: -"Underlying durable event kind: `diag_report` (runtime errors and CSP violations, distinguished by category), `contract_validation` (contract misses), `api_proxy_result` (API failures), or `app_load_error` (caught load failures)."New value: +"Underlying durable event kind: `diag_report` (runtime errors and CSP violations, distinguished by category), `contract_validation` (contract misses), `api_proxy_result` (API failures), `app_load_error` (caught load failures), or `image_proxy_result` (external image failures)."
addedOutput schema / properties / recentIssues / properties / sinceRevision
Added value: +{
+ "description": "The app revision the issues are attributed to (the current revision at call time). Legacy nulls normalize to 0.",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+}
removedOutput schema / properties / recentIssues / properties / sinceVersion
Removed value: -{
- "anyOf": [
- {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "description": "The app version the issues are attributed to (the current version at call time). Null on legacy rows that predate versioning."
-}
changedOutput schema / properties / recentIssues / properties / total / description
Previous value: -"Issue events counted for the current version, capped at 500 — a value of 500 means 500 or more. Use GET /app/:id/activity for the exact, paginated list."New value: +"Issue events counted for the current revision, capped at 500 — a value of 500 means 500 or more. Use GET /app/:id/activity for the exact, paginated list."
changedOutput schema / properties / recentIssues / required
Previous value: -[
- "sinceVersion",
- "total",
- "counts",
- "examples"
-]New value: +[
+ "sinceRevision",
+ "total",
+ "counts",
+ "examples"
+]
addedOutput schema / properties / revision
Added value: +{
+ "description": "Server-owned app source revision. Historical null counters read as 0; new apps start at 1; each successful source write advances it once. Pass this value through `expected_revision` when guarding update_app.",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+}
removedOutput schema / properties / version
Removed value: -{
- "description": "Monotonic int version of the app. 0 on truly-legacy rows that predate versioning (still editable — pass `expected_version: 0`); otherwise a positive int bumped on every successful update_app/PUT. Pass back as `expected_version` on edits-aware update_app and as `If-Match: \"v<N>\"` on PATCH /app/:id/source.",
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
-}
changedOutput schema / required
Previous value: -[
- "ok",
- "id",
- "url",
- "shareUrl",
- "displayName",
- "description",
- "manifestId",
- "version",
- "appVersion",
- "manifestVersion",
- "api"
-]New value: +[
+ "ok",
+ "id",
+ "url",
+ "shareUrl",
+ "displayName",
+ "description",
+ "manifestId",
+ "revision",
+ "appVersion",
+ "manifestVersion",
+ "api"
+]