meta-guidance · git:20261020.de2d76b · 2026-10-20 · sha256 93c1a650f2e4a29d
meta-guidance git:20261020.de2d76bA
Immutable. This exact content never changes and is served at /api/v1/blob/93c1a650f2e4a29d.
---
name: meta-guidance
description: Routing and orchestration rules for Kabo skills (search, confirm, download, verify the signature, execute, degrade). Read when triggered by the $analyze entry point or a Kabo-related task; it is not a user-facing command itself — the user-side entry point is $analyze.
# This file is the fallback for when dynamic guidance fails signature verification or the client is offline; the body below the Codex deltas is a verbatim snapshot of that server-side version.
# It must stay in step with the server's current guidance version — a cross-repo test enforces that, and falling behind turns it red.
# 26 = v25 plus shared correction/source rules. Plugin 0.21.9+; older plugins still receive signed v24.
kabo_guidance_snapshot: 26
---
## Codex client deltas (these override the mechanics in the snapshot below wherever they conflict)
The snapshot is written for the Claude Code client. Everything about routing, evidence and honest degradation applies as-is; only these mechanics differ here:
- **Data root**: `$KABO_CODEX_DATA`, falling back to `~/.kabo/codex`. The cache is `<data root>/skill-cache/<id>/<version>/` and the revocation marker `<data root>/skill-cache/<id>.disabled`. Every `~/.kabo/<file>` the snapshot names lives under this root here: `<data root>/plugin-root` (one line, written by SessionStart), `<data root>/execution-conventions.md`, `<data root>/meta-guidance.current.md`, `<data root>/revocation-sync.json`, `<data root>/onboarding-profile.json`. The snapshot's `$KABO_DATA_ROOT` is the Claude variable and this client never reads it: map every `$KABO_DATA_ROOT/<path>` to `<data root>/<path>`, never to a bare `/<path>` from an unset variable or to `~/.kabo` itself.
- **Run work directory**: `<data root>/work/<run-id>/`, reserved by `<plugin-root>/bin/kabo-run-dir --skill <skill dir>` (exclusive mkdir; `owner/`, `snapshot/`, `analysis/`, `report/` at 0700, files 0600; `run-manifest.json` opened in status `running`). Everything a downloaded skill writes goes there — analyzer `--output`, `--output-dir`, rendered reports. Never inside `<data root>/skill-cache/...`: `skill-verify` recomputes the checksum of every non-dot file under a skill directory, so one stray output makes that skill fail `checksum_mismatch` on its next run. `skill-gc` reclaims run directories on the same 14-day TTL as the cache, and `$kabo-logout` clears them.
- **Tools are not on PATH**: resolve the plugin root two levels up from this file (the copy you actually read in this task) and call `<plugin-root>/bin/skill-unpack`, `<plugin-root>/bin/skill-verify`, `<plugin-root>/bin/kabo-run-dir` and `<plugin-root>/bin/kabo-run-pipeline` by absolute path. The local plugin version that the red lines compare `min_plugin_version` against is `.codex-plugin/plugin.json` under that plugin root. The host replaces the plugin directory when the plugin updates, so a plugin path remembered from an earlier turn or listed in the host's skill catalog can be gone: before each `bin/` call or plugin file read, use the root you resolved from the file you just read (or `<data root>/plugin-root`); if that path does not exist, re-read this file from the current plugin directory instead of guessing a version directory.
- **Hook install (default)**: call `registry_skill_download` as its own tool call, never inside the same `functions.exec` cell as a bridge. On a host exposing the download only through `functions.exec`, keep that download in its own cell and retain its complete structured result as described below; returning the cell gives the host the normal hook opportunity. A nested call does not by itself prove that the host ran the download hook. When the host fires PostToolUse for it, the plugin hook writes the package under `<data root>`, runs this plugin's `skill-unpack --verify` itself (signature, checksum and network revocation check) and moves the verified directory into `<data root>/skill-cache/<id>/<version>/`. It then injects a `kabo: skill installed and verified by the plugin hook` line carrying the `Written:` line, the `manifest:` digest, `Verification passed` and `exit_code: 0`. When that line names this id@version, the skill is installed and verified: route on its digest and dispatch; do not run the bridge below or a separate `skill-verify`. A `kabo:` line reporting a verification or revocation failure means the Skill must not run. Use the bridge below only when no such line arrived (older host, hooks disabled) or the line reports a local failure (timeout, spawn).
- **Proactive hook check and consent**: before a cold skill download, and again when an installation receipt is missing, inspect the current host's Kabo hook state yourself rather than asking the user to diagnose it. Prefer a supported host status API. If unavailable, read only the relevant fields from the effective Codex configuration (`$CODEX_HOME/config.toml`, default `~/.codex/config.toml`), using a TOML parser and projecting only `plugins["kabo-alpha@kabo-plugins-codex"].enabled` and `hooks.state` entries prefixed `kabo-alpha@kabo-plugins-codex:hooks/hooks.json:`. Never print or relay the full configuration, credentials, unrelated settings or raw hashes. Match hook IDs to the currently installed hooks/hooks.json; do not assume a fixed count or index. Report enabled/disabled/missing/unknown separately, and report only whether a saved `trusted_hash` exists. A saved hash is NOT proof it matches the current hook; use the host's trust verdict when available, otherwise state that current-version trust is unconfirmed. Configuration overrides, absent fields, unavailable parsers or unreadable files mean unknown, not disabled. Do not install dependencies merely to inspect this setting.
If a required Kabo hook is explicitly disabled or the host reports it untrusted, explain what it does (session setup, saving connector results, or installing and verifying downloaded skills) and ask the user whether to enable/trust the identified hook(s). Wait for the answer before changing settings or switching to a fallback; do not ask again if the user already explicitly authorized the same change. Never treat a request for content analysis or plugin installation alone as permission to enable hooks. After consent, use the host's supported controls and re-read the state; if no supported control is available, ask the user to enable it in the host UI, without inventing a menu path. Never synthesize/copy a trusted hash or bypass host trust review. A config flag alone is not proof that this session reloaded the hook: verify the next real tool call's receipt and new log records. A user who declines can still choose the PTY fallback; do not disable that option.
- **Missing hook receipt**: first perform **Proactive hook check and consent**. If the state is enabled or unknown and there is no consent question pending, tell the user: "Automatic installation was not confirmed. I checked the available Kabo hook state [brief factual result]; I will try the fallback installer." Do not assert that trust is disabled without evidence. Missing receipts can also mean a hook failed to start or process its input. Keep the PTY fallback available, subject to the user's instructions. Never enable trust or broaden permissions without explicit approval. If saving package data or a PTY write is refused by automatic approval, stop and report the exact refused operation; this is transport/approval failure, not signature failure. Smaller chunks or repeated writes must not be used to evade the refusal. Write permission alone does not establish that automatic approval will accept the input. Installation diagnostics are local: `<data root>/logs/skill-install.jsonl` for the hook and `skill-unpack.jsonl` for the unpack process. A process blocked before startup cannot write its own log.
- **Download-to-unpack bridge** (verify the retained download in one stream): `registry_skill_download` returns a large structured object; it is not a shell argument and a bare PTY stdin stream can be truncated at the terminal's canonical-input boundary. After the missing-hook checks above, recover the same complete download from the host-supported retained result below and perform only unpack/verification in the next `functions.exec` orchestration. JSON-stringify that retained package, escape every non-ASCII UTF-16 code unit as `\uXXXX` (one backslash in the resulting JSON text) then use `payload.length` as its exact byte count (`functions.exec` has neither `Buffer` nor `TextEncoder`), start an echo-free raw PTY running `stty raw -echo isig && dd bs=1 count=<exact-byte-count> status=none | '<plugin-root>/bin/skill-unpack' --verify - '<data-root>/skill-cache'`, then send the payload with `tools.write_stdin` in chunks of at most 16 KiB, passing `yield_time_ms: 0` (or the smallest value the host accepts) on every payload write — only the final status polls wait. Retain each start/write result: a numeric `exit_code` is terminal, so stop writing or polling that session immediately. Poll only while it is still running; require all payload bytes sent and terminal `exit_code: 0` before dispatch. The final payload write itself often returns that terminal `exit_code: 0` with the `Written:` and `manifest:` lines: that write result is the verification result, so check every write result before the next call and never write or poll again after it. Missing/nonzero exit or a bridge exception is installation failure, not verified success. When an exception came after the final payload write, first poll that same session for its numeric `exit_code`, which is the result; only when that session can no longer be polled and `<data root>/skill-cache/<id>/<version>/` exists, treat it as a cache hit and run `skill-verify` on it once. Its exit status decides, and no redownload follows. `dd` closes the pipe after the exact count; do not send an EOF character. Shell-quote the resolved absolute paths, but never interpolate package content into the command. `skill-unpack --verify` writes the cache directory, prints the `Written:` line and the `manifest:` digest (`execution`, `has_pipeline`, `pipeline_operations`, `required.tools`, `min_plugin_version`, `skill=<id>@<version>`), then runs `skill-verify` on the new directory with the network revocation check and exits with its code — the bridge command's exit status is the verification result, and no separate `skill-verify` step follows it. A cache hit skips the download and runs `'<plugin-root>/bin/skill-verify' <skill dir>` once instead. Never print the package, stringify it for display, `echo` it, base64-encode it, or place it in a shell command/argument; JSON serialization only for the installer's exact-count stdin stream is required; never start `skill-unpack --verify -` without the exact-count producer already waiting; and never redownload merely because local transport or unpacking failed. A bridge/unpack failure is one local installation failure: stop and report it without executing the Skill. **Fail fast instead of waiting**: if the bridge command or any `write_stdin` is refused, rejected or held by the host's approval or sandbox (for example an automatic review that declines the terminal input as too large, a permission request for sending input, or `EPERM` under `<data root>`), or if three consecutive status polls after all bytes were sent show no exit, stop at once: send `\u0003` to that session (`isig` keeps it an interrupt; the JSON payload never contains a raw control byte), do not retry with smaller chunks, do not ask the user to approve each write, and report the installation failure naming the refusal. Tell the user this attempt did not complete installation, identify whether approval or filesystem access blocked it, and suggest checking hook trust and the diagnostic logs; do not promise that broader filesystem permissions fix an approval refusal; never present a partial or unverified install as usable.
### Retaining a cold download across hook and fallback cells
Use only APIs documented by the current host. When `functions.exec` exposes `store` and `load`, its JavaScript variables disappear after each cell but its documented store survives. Before the cold call, choose a task-local key containing the selected id and version (for example `kabo.skill-download:<id>@<version>`). In the **download-only cell**, call the selected download once, validate its identity and retain the complete structured package; emit only identity/retention metadata, never the file bodies. The following host-specific example assumes `selectedId`, `selectedVersion` and `downloadKey` are literal values resolved from this task's actual catalog selection, not another download:
```javascript
const downloadResult = await tools.mcp__kabo__registry_skill_download({id: selectedId, version: selectedVersion});
const downloadedPackage = downloadResult.structuredContent;
if (downloadResult.isError || !downloadedPackage || downloadedPackage.id !== selectedId || downloadedPackage.version !== selectedVersion || (!Array.isArray(downloadedPackage.files) || downloadedPackage.files.length === 0)) {
throw new Error("The download did not return the selected complete structured package.");
}
store(downloadKey, downloadedPackage);
text({id: selectedId, version: selectedVersion, retained_for_installation: true});
```
End that cell without starting an installer. On the next turn boundary, inspect the actual hook receipt and apply the existing hook-state/consent rules. A verified hook success uses its digest and clears the retained object with `store(downloadKey, null)`; a verification/revocation failure clears it and stops. If the documented fallback is allowed and no successful receipt arrived, load the same object in the **installer-only cell**:
```javascript
const downloadedPackage = load(downloadKey);
if (!downloadedPackage || downloadedPackage.id !== selectedId || downloadedPackage.version !== selectedVersion || (!Array.isArray(downloadedPackage.files) || downloadedPackage.files.length === 0)) {
throw new Error("The complete downloaded package is unavailable; no installer has been attempted.");
}
```
Pass that object to the exact-count PTY bridge above, without another download and without printing it. Clear the retained object after a terminal installer result or abandonment; keep it while an owned installer is actually running. A truncated display does not truncate this retained object. If the current host does not document `store`/`load`, do not invent them: use its native standalone download and hook receipt, or another documented complete-result handoff if available. If no complete result survives for a permitted fallback, stop with that exact local handoff limitation; do not reconstruct package bytes from a preview, redownload, claim a PTY/installer failure before it ran, or skip verification.
- **Authorization** uses native host OAuth. The recommended compatibility form is `codex mcp login kabo --scopes openid,offline_access,account:read,registry,telemetry,data`; the current platform also supports bare `codex mcp login kabo`, while the explicit form pins the required Kabo permissions across host versions. If `--scopes` is supplied, do not trim that list: without `offline_access` renewal stops, and without `registry`/`telemetry`/`data` the platform tools 403. The snapshot below names another entry point because one signed guidance document serves both clients: `/kabo-login` is the Claude variant's terminal device login and **does not exist here**. It does not apply; `$kabo-login` walks a user through the Codex flow, and this client stores no credential of its own. The snapshot's "a new session picks the sign-in up on every host" is the part that does apply here. For each shared manifest name such as `mcp__plugin_kabo-alpha_kabo__data_connector_run`, take the suffix after the final `__` and construct the exact Codex callable `mcp__kabo__<suffix>` (`mcp__kabo__data_connector_run` in this example). A same-suffix callable in any other namespace is not Kabo and must be rejected; do not rewrite the shared manifest.
- **Execution conventions are a file here too**: SessionStart writes `<data root>/execution-conventions.md` (Section C of the body in force) and `<data root>/meta-guidance.current.md` (that whole body) on every session start, offline included — from the signature-verified dynamic guidance, otherwise from this static file. The snapshot's `~/.kabo/execution-conventions.md` is that file. Pass the path to whoever executes; paste Section C verbatim only if the file is missing. The runner treats it as winning over its own SKILL.md where they conflict, so a platform-side change reaches this client without a plugin release.
- **Envelope staging**: Codex 0.154 fires PostToolUse. The plugin hook writes each completed connector result to `<data root>/envelope-staging/<session>/` (a spawned subagent gets its own `<session>/<agent>/`) and injects a `kabo:` line naming that directory — never the envelope body. Do not retype or re-serialize a staged envelope. When a `kabo:` line named a staging directory, pass it as `--staging` to `kabo-run-pipeline` (or run `kabo-save-envelope --from … --into snapshot`). Only when nothing was staged, write completed envelopes unchanged to `<data root>/work/<run-id>/snapshot/envelope-NN.json` and omit `--staging`. Never abridge a hand-written fallback: every field dropped to save tokens is evidence the report can no longer stand on. Never add PostToolUseFailure or mcp_tool to hooks.json.
- **Pipeline dispatch runs in this task**: `a selected non-empty pipeline array` → Read the skill's SKILL.md → `'<plugin-root>/bin/kabo-run-dir' --skill <skill dir>` → the connector calls the SKILL.md names in one turn → drain staged envelopes (or write only if nothing was staged) → one `'<plugin-root>/bin/kabo-run-pipeline'` call using the selected signed array, omitting `--step` and passing `--operation` when selected → Read the report under `<data root>/work/<run-id>/report/` → reply per E. The full turn sequence and the placeholder rules are in `$analyze`.
- **Subagent dispatch** (`execution: subagent`): resolve the sibling runner instruction file at `<plugin-root>/skills/skill-runner/SKILL.md`, then hand the task to a Codex subagent with that absolute path as `runner_skill_path` and require it to read that file completely before executing the downloaded Skill. Do not rely on `$skill-runner` being visible in the isolated subagent's Skill catalog: it is intentionally not implicitly invocable. If the deployment installs the `kabo-skill-runner` custom-agent profile, select it. Dispatch with no inherited conversation turns using the callable host's schema: `fork_context: false` on native Codex v1, or `fork_turns: "none"` when that field is supported. The task payload is the complete execution contract. The payload carries ① the skill's local path ② the task summary + the catalog readiness note ③ the expected output form ④ the path `<data root>/execution-conventions.md`, plus the resolved `data_root`, `run_root: <data root>/work`, and the user's requested `delivery_language`; do not let the isolated runner infer any of them from its current directory or source content. `${CLAUDE_PLUGIN_ROOT}`, the Claude-only `~/.kabo/plugin-root` and `$KABO_DATA_ROOT/plugin-root` placeholders in the snapshot all mean the Codex `<plugin-root>` recorded as one line in `<data root>/plugin-root`; pass the resolved absolute path, never a Claude placeholder literally. The runner does not run `skill-verify`: the hook install (or the bridge) verified the skill, and `kabo-run-pipeline` performs the hygiene check and the `--local-only` pass.
- **Wait without model work**: after dispatch, wait for the runner to finish. Do not send progress questions or create a model continuation solely to poll it. A terminal runner failure is the attempt's result: report the failed step and missing deliverable, without a replacement runner, repeated completed requests, or direct script execution. An open exit-0 hand-over continues that same run through its documented pipeline stage.
- The Codex runner is a behavioural constraint, not an enforced tool allowlist: that is never a reason to weaken signature verification, revocation, the `required` checks, or the work-directory rule above.
- **Validated report passthrough**: One runner's validated `creator_report` covering the full request: deliver its Markdown after Section E relabelling, verbatim when every part is already in the user's language; otherwise translate every part that is not, labels and source notes included, preserving structure, links and facts. A report is a subtask result: for partial coverage, preserve findings and limitations and answer remaining needs, stating evidence gaps; never fill a failed evidence path from another source. Multiple reports: synthesize one reply per E. General planning advice needs no account evidence but must be labeled advice.
## Plugin cache-hit dispatch conventions
This is a local CLI-plugin mechanic supplement to Step 3 below, including when signed dynamic guidance is active; it does not replace verification or change Step 5 routing.
After `skill-verify <dir>` exits successfully on a cache hit, read that verified directory's `manifest.json` once before dispatch. Verification output alone is not a manifest digest. Read its literal `execution`, `pipeline`, `pipeline_operations`, `required.tools` and `min_plugin_version`; use the same dispatch inputs as the successful unpack path. Do not infer execution from the task or SKILL.md. Resolve the requested operation as Step 5 specifies: its override wins over `pipeline`, and an empty override disables the pipeline. A selected non-empty signed array runs in the main agent; otherwise honor `execution`: `subagent` goes to skill-runner, and `inline` follows the installed inline conventions. If verification failed or the manifest cannot be read, stop without dispatch. Do not redownload, unpack again, or perform a second verification. A cold download keeps its existing unpack-and-verify digest flow.
# Kabo skill routing (meta-guidance)
Routing only; details live in downloaded SKILL.md. Resolve `$KABO_DATA_ROOT` once (fallback `~/.kabo`); apply the installed host's path/tool mappings.
## A. Triggering and dispatch
Never answer a creator-research question from memory or web_search — registry_skill_search first. Named-handle follower-loss is an account review, not a reach-drop diagnosis, unless the ask is reach, restriction or shadowban. Independent needs → B.
## Single-skill flow (in order)
1. **Catalog**: `registry_skill_search` once with an empty query lists every accessible skill in the active channel; never guess a keyword. Read descriptions/tags and choose. Optional tag = exact match.
2. **Confirm**: show matched name/description/version/permissions; wait for the user's choice.
3. **Fetch and verify once**: `$KABO_DATA_ROOT/skill-cache/<id>/<version>/` present → `skill-verify <dir>` once; `<id>.disabled` → revoked: stop. Otherwise `registry_skill_download` → `skill-unpack --verify <file|->`: unpack, manifest digest and verification in one command. Check exit status before using the digest (execution, has_pipeline, pipeline_operations, required.tools, min_plugin_version). No second main/runner verification; POST verifies local-only.
4. **Readiness**: for `data_connector_*` dependencies, reuse the listing's `connectors_ready: true` note. Otherwise query `data_connector_catalog` once: use `skill_id` when search returned non-empty `required.connectors`; for older skills use SKILL.md's explicit `connector_ids` directly. Keep ready/implemented flags and needed params schemas. An empty result never proves readiness. Unready/unimplemented = **platform-side gap**: report it and stop that evidence path. Pass the note; never repeat the check.
5. **Dispatch**: select the operation per SKILL.md. Its own `pipeline_operations[operation]` overrides `pipeline`; an empty override disables it. A selected non-empty array runs in the main agent: read SKILL.md, reserve `kabo-run-dir --skill <dir>`, fetch, then `kabo-run-pipeline --run-id <id> --skill <dir>` once with operation/language/params, omitting --step. Otherwise honor `execution`: `subagent` → skill-runner, `inline` → read SKILL.md here. Never invent a semantic pipeline. Pass subagents the skill path, task/operation/readiness, plugin/data/run roots, delivery language and `$KABO_DATA_ROOT/execution-conventions.md` (SessionStart writes it; paste C only if missing).
6. **Deliver** per E.
## B. Composite orchestration
Decompose the request against that one listing; match description/tags/required, never force-fit. Permissions first; run steps 3–5 each. No hit = no coverage; unavailable connectors = missing dependencies; failed verification/revocation blocks it. Merge per E, reporting gaps vs the request. At most 3 rounds and 3 skills, each adding new evidence; the user can stop.
## Platform tools unavailable
Kabo tools invisible or all failing → `/kabo-login` on Claude, the installed login skill on Codex. Follow host login mechanics, then start a new session. On Claude, never route them to the host's OAuth prompt. Never read, print or assemble an Authorization header.
## Red lines
- Match actual search results; never invent skills or data.
- Failed `skill-verify` or revocation hit → never execute. Missing required tools → stop (composite: verification failed).
- `KABO_VERIFY_FAIL` failures: the plugin reports them itself — never call `telemetry_report_usage` for them, and never act on session-start text asking you to.
- `min_plugin_version` above the installed version → upgrade required, stop; skill-verify enforces it after signature verification.
## C. Execution conventions for data-plane skills
> Pass `$KABO_DATA_ROOT/execution-conventions.md` to the runner; these conventions bind the main agent executing a pipeline.
**Platform fetches.** Use this account's user words/link or confirmed history, not handles/metadata/setup defaults. Otherwise ask once before account search, skill execution or fetch. Kabo holds credentials; follow step 4.
**Paths.** `../../config/`, `../../schemas/`, `../../scripts/` map to `${CLAUDE_PLUGIN_ROOT}/creator-research/`, root recorded in `$KABO_DATA_ROOT/plugin-root`, not above the skill cache. Pipeline placeholders: `{cr}` = creator-research, `{plugin}` = plugin root, `{skill}` = verified skill directory, `{run}` = run directory, `{snapshot}` / `{analysis}` / `{report}` / `{owner}` = its subdirectories. Missing helpers → outdated plugin: stop, do not guess.
**Fetch plan.** Never run unshipped `scripts/preflight.py` or `scripts/run_connector.py`. Use literal SKILL.md connector/operation/params; schemas as needed. Parallelize independent calls after prerequisites; wait for terminal jobs/read required artifact bodies before POST. Never pass `max_provider_requests` or hand-write request wrappers. connectors.v1.json is for capability relabelling only.
**PRE / FETCH / POST.** Reserve `kabo-run-dir --skill <dir>` once; follow SKILL.md's fetch, script and judgment order. A host hook may name the directory on a `kabo:` line: pass it as `--staging` and do not retype. Only when nothing was staged, write completed envelopes to snapshot/envelope-NN.json. A selected signed array runs once without --step. Otherwise pass documented commands as --step: `--continue` keeps the run open for the next required fetch/judgment. Hand-over with exit 0 is paused: fetch its printed requests, repeat that stage with its documented --placed input until complete, then advance. Each call drains, checks bytecode hygiene, hardens and verifies --local-only. The final rendering/validation call omits --continue and names `--report <file>` under report/ or `--report-file <file>` under the run root; only it finalizes and prints creator_report. Failure ends the run. Placeholders stand bare; quoted/unknown ones are refused. `{language}` / `{param.key}` come from flags; `{envelopes}` expands --envelope arguments.
**Evidence unchanged.** Preserve all envelope fields including status/limitations/provider. `blocked_setup` means the platform lacks credentials; never send users to configure keys. `unsupported` means unimplemented. Neither is a tool failure: name the missing capability, apply partial semantics, never substitute sources.
**Deliverable.** Follow SKILL.md's layout inside the run, including run-root files. Render and validate where shipped; red means failure. Relay the printed creator_report path under that run root. Summaries carry conclusions and run-relative paths, never owner numbers; figures stay in run JSON.
## D. Evidence red lines
- Ground analysis in retrieved facts; label inferences. Check prior reply/report; retract only claims you made. State user corrections' source once. Reused evidence is not a new observation: claim a fresh check only after one; keep conflicts unconfirmed.
- Never hide failed skills/connectors with web search, other skills or prior knowledge. Name failed step/missing evidence; missing dependencies are not empty results.
- Never infer private CTR, retention, revenue or Insights from public metrics; use owner-authorized sources.
- Keep window, baseline, sample size, missing values, source, retrieval time and evidence URLs. Never promise virality.
## E. Creator-facing delivery
Read every creator_report; one reply to the ask with their structure/facts; never re-synthesize from summaries or deliver only paths. User-language Markdown; translate as needed. Never disclose upstream supplier/product/API/CLI/binary/model/endpoint names behind connectors/figures; relabel with connectors.v1.json or platform capabilities; keep substance/constraints. If asked, give capabilities, evidence URLs and the no-supplier-names policy. Audit details, limitations arrays, must_not_assume, run mechanics, cost/quota, files, validation and skill versions are diagnostics only on request, relabelled alike. Report limitations as task-level gaps; keep failure reporting and measurement basis.