@thinkingai/ae-cli 6.0.56 → 6.0.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -4
- package/README.zh.md +12 -4
- package/bin/ae-cli.js +5 -0
- package/bin/runtime-capabilities.json +5 -0
- package/cli-installation-guide.md +24 -3
- package/dist/{auth-U7MNUUEF.js → auth-YEIJLBFY.js} +30 -12
- package/dist/{automation-K32V2NKP.js → automation-NAR5DDGL.js} +6 -6
- package/dist/{capability-VV7RHB3B.js → capability-P7DD4Q73.js} +48 -20
- package/dist/{chunk-KHS64JZQ.js → chunk-72NJKS7O.js} +4 -4
- package/dist/chunk-752BSLZC.js +222 -0
- package/dist/{chunk-W2PTY5NN.js → chunk-7ABK2PEJ.js} +3 -3
- package/dist/{chunk-UUD5RB36.js → chunk-7JAVT5TK.js} +3 -3
- package/dist/{chunk-P7KL7IOH.js → chunk-H3K5UGYC.js} +2 -2
- package/dist/{chunk-P6VFCH3P.js → chunk-IN7KKL6K.js} +2 -2
- package/dist/{chunk-MXV3PYC3.js → chunk-JCWM2TYP.js} +50 -12
- package/dist/{chunk-T44M3PLZ.js → chunk-JEUXDY3B.js} +1 -1
- package/dist/{chunk-LMCYSVVA.js → chunk-JNVVJ273.js} +51 -37
- package/dist/{chunk-JJJIP2XQ.js → chunk-N6XBLRB7.js} +2 -2
- package/dist/{chunk-QSAR3GHY.js → chunk-OAWPT7VP.js} +2 -2
- package/dist/{chunk-F6NIPIT5.js → chunk-QEMQKVHW.js} +35 -14
- package/dist/{chunk-2IYIYSUO.js → chunk-QVRIDN42.js} +2 -2
- package/dist/{chunk-GI5BMEZO.js → chunk-QZUVLFNR.js} +1 -1
- package/dist/{chunk-2UWS5CUP.js → chunk-RJHGDWSC.js} +3 -3
- package/dist/{chunk-3TQA5RXE.js → chunk-TKVVACEJ.js} +6 -4
- package/dist/chunk-TULINOLS.js +2283 -0
- package/dist/{chunk-X7DRLE62.js → chunk-YVG6QD3V.js} +1 -1
- package/dist/{chunk-ZW4VMY5H.js → chunk-Z3Q2AEIN.js} +152 -98
- package/dist/chunk-ZGIYG473.js +132 -0
- package/dist/{community-report-client-S2K3A3Q6.js → community-report-client-TJVCLZ3K.js} +1 -1
- package/dist/compat-check-PMEGUPZU.js +32 -0
- package/dist/{config-ASSAAIOI.js → config-VWVPR4WW.js} +38 -6
- package/dist/{context-6RWLVOM5.js → context-F6FCGTF3.js} +4 -4
- package/dist/{data-integration-EXSUPUDZ.js → data-integration-6UAZO4GG.js} +207 -24
- package/dist/{evaluation-5YT4QLCL.js → evaluation-4LO2O4AF.js} +4 -4
- package/dist/index.js +291 -71
- package/dist/{local-data-upload-client-7HCPGIS3.js → local-data-upload-client-KCMG6J62.js} +1 -1
- package/dist/{memory-VCYLVPMI.js → memory-HHPX3NF2.js} +6 -6
- package/dist/{metadata-TIWIOFTU.js → metadata-HEQQEEG3.js} +16 -8
- package/dist/{model-DPJHSD73.js → model-7UHGWYVR.js} +4 -4
- package/dist/{personal-semantic-preference-SBKU2LOK.js → personal-semantic-preference-V4L6ZWR2.js} +7 -6
- package/dist/{project-semantic-SKNWLH3I.js → project-semantic-NKHKJX6M.js} +7 -6
- package/dist/{sync-7PP6KQ75.js → sync-ZJMXCRIN.js} +8 -7
- package/dist/{te-agent-L2BYNPHM.js → te-agent-WBKIFEQD.js} +11 -7
- package/dist/{te-analysis-RJB6VJC4.js → te-analysis-ADX7RKO4.js} +179 -27
- package/dist/{te-community-QN3WMPNT.js → te-community-PREDRXG3.js} +720 -228
- package/dist/{te-dataops-UKD2XN3E.js → te-dataops-ITWJHO2U.js} +6 -5
- package/dist/{te-engage-KPTN4N2U.js → te-engage-VE2NUH5V.js} +7 -6
- package/dist/{te-kb-SFZI3W5T.js → te-kb-WSMOW7WS.js} +407 -83
- package/dist/{te-system-IE7NCKC3.js → te-system-YM657FKO.js} +6 -6
- package/dist/{te-team-4KHCFM2I.js → te-team-T2WRLOOD.js} +7 -6
- package/dist/{things-7JJUVAWL.js → things-6QOMFXOG.js} +7 -7
- package/dist/{update-AX66IFMJ.js → update-I4MOUYOX.js} +11 -7
- package/dist/{workspace-Q5NMEKEN.js → workspace-LYDAP647.js} +6 -6
- package/package.json +17 -7
- package/skills/ae-agent/SKILL.md +1 -1
- package/skills/ae-agent/references/resource-package.md +4 -0
- package/skills/ae-analysis/SKILL.md +14 -10
- package/skills/ae-analysis/references/agent_review_preflight.md +52 -11
- package/skills/ae-analysis/references/agent_review_priorities_comparisons.md +5 -3
- package/skills/ae-analysis/references/agent_review_submit_to_page.md +57 -25
- package/skills/ae-analysis/references/command_index.md +7 -3
- package/skills/ae-analysis/references/governance_recommendation_export.md +31 -17
- package/skills/ae-analysis/references/governance_recommendation_run_update.md +13 -0
- package/skills/ae-analysis/references/project_semantic_knowledge_wiki.md +9 -1
- package/skills/ae-analysis/references/scenario_append.md +6 -0
- package/skills/ae-analysis/references/scenario_begin.md +11 -0
- package/skills/ae-analysis/references/scenario_collect.md +10 -2
- package/skills/ae-analysis/references/scenario_evaluation.md +6 -18
- package/skills/ae-analysis/references/scenario_get.md +15 -0
- package/skills/ae-analysis/references/scenario_list.md +64 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/company-kb.mjs +14 -1
- package/skills/ae-community/SKILL.md +77 -27
- package/skills/ae-community/references/community-analyzing-theme-comment.md +10 -8
- package/skills/ae-community/references/community-data-quality.md +68 -0
- package/skills/ae-community/references/community-query-evidence.md +85 -0
- package/skills/ae-community/references/community-scenario-capabilities.md +137 -0
- package/skills/ae-community/references/community-weekly-report.md +6 -3
- package/skills/ae-community/references/get_channel_info.md +7 -4
- package/skills/ae-community/references/get_comment_tag_analysis.md +3 -3
- package/skills/ae-community/references/get_comments_summary.md +4 -4
- package/skills/ae-community/references/get_corpus_tags.md +3 -3
- package/skills/ae-community/references/get_daily_summary.md +3 -3
- package/skills/ae-community/references/get_hot_topics.md +3 -3
- package/skills/ae-community/references/get_livestream_analysis.md +3 -3
- package/skills/ae-community/references/get_livestream_detail.md +4 -4
- package/skills/ae-community/references/get_livestream_list.md +3 -3
- package/skills/ae-community/references/get_livestream_overview.md +3 -3
- package/skills/ae-community/references/get_livestream_room_metrics.md +3 -3
- package/skills/ae-community/references/get_livestream_rooms.md +3 -3
- package/skills/ae-community/references/get_overview_metrics.md +3 -3
- package/skills/ae-community/references/get_post_detail.md +4 -4
- package/skills/ae-community/references/get_risk_content.md +5 -5
- package/skills/ae-community/references/get_sentiment_overview.md +4 -4
- package/skills/ae-community/references/get_tag_trends.md +3 -3
- package/skills/ae-community/references/get_topic_detail.md +3 -3
- package/skills/ae-community/references/list_sources.md +28 -0
- package/skills/ae-community/references/list_spaces.md +39 -0
- package/skills/ae-community/references/search_posts.md +21 -7
- package/skills/ae-data-integration/SKILL.md +6 -4
- package/skills/ae-data-integration/references/error-handling.md +1 -0
- package/skills/ae-data-integration/references/handoff.md +1 -1
- package/skills/ae-data-integration/references/sink-upload.md +11 -0
- package/skills/ae-data-integration/references/source-inspect.md +2 -1
- package/skills/ae-data-integration/references/transform.md +1 -1
- package/skills/ae-data-integration/references/ue-mapping.md +1 -1
- package/skills/ae-kb/SKILL.md +33 -6
- package/skills/ae-kb/references/publication.md +81 -0
- package/skills/ae-kb/references/query-workflow.md +14 -1
- package/skills/ae-metadata/SKILL.md +2 -2
- package/skills/ae-metadata/references/metadata_data_table_get.md +35 -0
- package/dist/chunk-ELCR235M.js +0 -1429
|
@@ -14,12 +14,12 @@ ae-cli analysis-meta agent-review submit-to-page \
|
|
|
14
14
|
--source-run-id rec_source --source-task-id task_review \
|
|
15
15
|
--client-request-id review_task_proposal_001 \
|
|
16
16
|
--ai-summary '{"summary":"Evidence-backed retention assets"}' \
|
|
17
|
-
--presentation-snapshot '{"project":{"name":"Example"},"evidenceDate":"2026-09-08","topics":[{"id":"retention","name":"Retention","groups":[{"id":"retention_core","name":"
|
|
17
|
+
--presentation-snapshot '{"project":{"name":"Example"},"evidenceDate":"2026-09-08","topics":[{"id":"retention","name":"Retention","groups":[{"id":"retention_core","name":"新用户回访","items":[{"id":"dashboard_1"},{"id":"report_1"},{"id":"event_login"}]}]}],"relations":[{"parent":"dashboard_1","child":"report_1","type":"contains"},{"parent":"report_1","child":"event_login","type":"uses"}],"analysisByItem":{}}' \
|
|
18
18
|
--items '[{"client_item_id":"dashboard_1","target_ref":{"type":"dashboard","key":"1"},"action_type":"CERTIFY","proposal_payload":{"authentication_status":1},"ai_summary":{"summary":"<verified dashboard recommendation basis; main risks or explicit evidence gaps>"},"evidence_snapshot":{"source_run_id":"rec_source"}},{"client_item_id":"report_1","target_ref":{"type":"report","key":"1"},"action_type":"CERTIFY","proposal_payload":{"authentication_status":1},"ai_summary":{"summary":"<verified report recommendation basis; main risks or explicit evidence gaps>"},"evidence_snapshot":{"source_run_id":"rec_source"}},{"client_item_id":"event_login","target_ref":{"type":"event","key":"login"},"action_type":"CERTIFY","proposal_payload":{"authentication_status":1},"ai_summary":{"summary":"<verified metadata recommendation basis; main risks or explicit evidence gaps>"},"evidence_snapshot":{"source_run_id":"rec_source"}}]' \
|
|
19
19
|
--dry-run
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Real drafts should be submitted as a local file instead of shell-escaped JSON. With submission authorization and local checks complete, execute directly; remote `--validate` or `--dry-run` is optional for uncertain input or a new contract, not a routine prerequisite:
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
25
|
ae-cli analysis-meta governance-recommendation export \
|
|
@@ -30,11 +30,10 @@ ae-cli analysis-meta governance-recommendation export \
|
|
|
30
30
|
ae-cli analysis-meta agent-review submit-to-page \
|
|
31
31
|
--project-id 1 \
|
|
32
32
|
--client-request-id review_task_proposal_001 \
|
|
33
|
-
--input-file submit-to-page-draft.json
|
|
34
|
-
--dry-run
|
|
33
|
+
--input-file submit-to-page-draft.json
|
|
35
34
|
```
|
|
36
35
|
|
|
37
|
-
`submit-to-page-draft.json`
|
|
36
|
+
`submit-to-page-draft.json` follows this customer/Agent contract. The example includes optional detailed explanation sections; ordinary recommendations need only a concise core measure or calculation plus material boundaries/risks. `--project-id` and `--client-request-id` are still supplied as CLI flags so a replay keeps the same project and stable operation key:
|
|
38
37
|
|
|
39
38
|
```json
|
|
40
39
|
{
|
|
@@ -59,9 +58,16 @@ ae-cli analysis-meta agent-review submit-to-page \
|
|
|
59
58
|
"groups": [
|
|
60
59
|
{
|
|
61
60
|
"id": "<second-level-group-id>",
|
|
62
|
-
"name": "<
|
|
61
|
+
"name": "<business-subtopic-name>",
|
|
62
|
+
"semantic_basis": {
|
|
63
|
+
"business_question": "<specific business question>",
|
|
64
|
+
"grouping_reason": "<shared meaning and boundary from sibling subtopics>",
|
|
65
|
+
"evidence_item_ids": ["<supporting item id in this group>"]
|
|
66
|
+
},
|
|
63
67
|
"items": [
|
|
64
|
-
{ "id": "<
|
|
68
|
+
{ "id": "<dashboard item id>" },
|
|
69
|
+
{ "id": "<another related dashboard item id>" },
|
|
70
|
+
{ "id": "<report item id>" }
|
|
65
71
|
]
|
|
66
72
|
}
|
|
67
73
|
]
|
|
@@ -125,44 +131,52 @@ ae-cli analysis-meta agent-review submit-to-page \
|
|
|
125
131
|
|
|
126
132
|
Input uses either the typed flags above or `--input-file`. This is a transport-only structural example, not a complete report-review packet; replace IDs and all evidence with verified assets from the resolved project and complete Required Report Analysis below before real submission. Remove `--dry-run` only with submission authorization. `--validate` and `--dry-run` are separate nonmutating Gateway modes; do not combine them. Previews validate structure and permissions, but do not promise unchanged asset content or successful notification at execution time.
|
|
127
133
|
|
|
128
|
-
The page packet preserves the versioned renderer fields `project`, `evidenceDate`, `topics`, `relations`, and `analysisByItem`. Each display item's `id` references one stable `client_item_id`. Shared assets reuse that reference. Keep full target scope in `target_ref`; do not merge same-name objects. `topics` are business domains, not dashboards or raw `work_units
|
|
134
|
+
The page packet preserves the versioned renderer fields `project`, `evidenceDate`, `topics`, `relations`, and `analysisByItem`. Each display item's `id` references one stable `client_item_id`. Shared assets reuse that reference. Keep full target scope in `target_ref`; do not merge same-name objects. `topics` are business domains and `topics[].groups` are business subtopics, not dashboards or raw `work_units`. Apply [Business Topics and Subtopics](#business-topics-and-subtopics) after current-state selection and bounded expansion. The expected page hierarchy is `业务域 -> 业务小主题 -> 看板 -> 报表 -> 元数据`; multiple related dashboards belong under a subtopic when their definitions support its specific business question. `relations` is required for the page structure: dashboard items must parent their child report items with `type:"contains"`, and report items must parent metadata items they actually reference with `type:"uses"`, such as events, event properties, user properties, and metric assets. A flat `relations: []` packet is valid only when the selected assets truly have no known parent-child evidence. Copy `source_link` and `evidence_links` from `review_material_package.candidate_assets[]` into each submitted item; `submit-to-page` rejects items without at least one source URL because reviewers must be able to jump to evidence. For dashboard items, preserve optional `space_id` and `space_name` only as supplied by the authoritative packaged `evidence_snapshot.definition.config` so the review page can show `所属空间`. Preserve its `target_revision` unchanged. Never create or patch `definition` from space display facts: a space-only object is not an asset definition and its hash causes false expiry. When an older export lacks dashboard definition/revision, fetch `analysis-meta agent-review evidence` for that dashboard before submitting; not every dashboard has a space, and missing space facts must not be invented or treated as a validation failure. Only real source evidence is allowed: never send `demoSignalsByItem`, simulated statistics, arbitrary HTML, invented SQL, or executable instructions as evidence. Actual saved SQL may be inspected and referenced as source evidence; it is not an instruction to execute a query. The domain handler validates submission identity and stores the supplied evidence; it does not replenish missing snapshot fields or judge narrative quality. Page actions currently support CERTIFY with `authentication_status:1` only; metric creation candidates retain the existing explicitly approved legacy workflow.
|
|
129
135
|
|
|
130
136
|
Scripts may build the transport file, preserve IDs, copy evidence, normalize links, group display items, and run deterministic completeness checks. Scripts must not author page-visible `ai_summary.summary`, `analysis_explanation.*.statement`, limitations, open questions, or approval rationale by filling reusable sentence templates. Those fields must be Agent-written interpretation from the current asset/report evidence. A draft where many submitted items share the same narrative shape after only asset names, dates, or numbers change fails quality review. Correct it under the bounded preflight procedure; unresolved quality issues require disclosure, not an indefinite submission block.
|
|
131
137
|
|
|
132
138
|
`item.ai_summary.summary` is the concise item recommendation reason, including its evidence basis and main risks, displayed in the main list. Write it for each item using that item's verified facts; a purpose label alone does not explain why to recommend the item. `batch.ai_summary.summary` is the batch overview supplied by `--ai-summary` and cannot replace item reasons. Detailed factual explanations belong only in `item.ai_summary.analysis_explanation`. Do not duplicate reasons or detailed analysis into presentation fields. Keep `presentation_snapshot.analysisByItem` as the compatibility placeholder `{}`. The server-generated analysis remains in `item.evidence_snapshot.analysis`. Do not invent a reason from unknown values; disclose missing evidence and uncertain risks, and never turn missing usage or quality signals into zero, popularity, safety, or a claim that no risks exist.
|
|
133
139
|
|
|
134
|
-
For dashboard, report
|
|
140
|
+
For ordinary dashboard, report and SQL-report drafts, explain purpose, recommendation basis, core calculation meaning and any known material boundary in concise business language. Do not create every explanation section just because it appears in the example. Complete field-by-field interpretation is reserved for explicit full audit or affected risk investigation. Use actual event/property names only where they help verify the core meaning; convert unresolved parameters into concrete reviewer questions rather than exposing parser tokens or raw SQL.
|
|
135
141
|
|
|
136
142
|
Write all page-visible review text for a business reviewer. `item.ai_summary.summary`, `business_purpose`, `calculations`, `filters`, `time_scope`, `limitations`, `open_questions`, and presentation labels must use plain Chinese that explains purpose, calculation 口径, date/filter choices, and reviewer action. Use event and property names from the current asset definition when they help the reviewer verify the calculation definition. While drafting, avoid template copy such as “保存定义摘要”, “审核时需确认口径”, “本草稿不改写 SQL”, “其下报表和依赖元数据已随同提交审核”, or a sentence that only repeats asset name + heat + 未认证. Such copy is a quality finding handled by the bounded correction/warning procedure, not an unconditional dispatch ban. The item reason must answer why this exact asset is worth reviewing now, which saved definition facts support it, and what concrete risk remains. Keep implementation vocabulary out of visible text: do not show `SAVED_REPORT_ONLY`, `DYNAMIC`, `REPORT`, `T1`, temporary SQL aliases such as `a0`/`a1`, runtime parameter names such as `Variable2`/`selector3`/`PartDate date1`, `source_path`, `evidence_snapshot`, raw JSON, raw SQL, projection/select-column jargon, hash/revision values, dashboard-override limitations, timezone-not-saved notes, or “query not proven/executed/returned rows” caveats. Convert them to reviewer decisions only when material: for example `T1`/`day` means `按天`, and dynamic SQL parameter uncertainty becomes “确认参数含义、默认日期范围和是否包含测试数据”.
|
|
137
143
|
|
|
138
144
|
## Normal Submission Workflow
|
|
139
145
|
|
|
140
|
-
|
|
146
|
+
Ordinary recommendation and page submission use the focused scope below, including on the first run. A request to recommend assets or hand proposals to a human is not an instruction to perform a complete definition audit. Full audit is available on explicit request; risk-specific inspection stays limited to affected claims and peers. No new CLI mode flag or project switch is required.
|
|
141
147
|
|
|
142
|
-
|
|
148
|
+
1. Resolve the project and export current candidates. Follow [Current Candidates and Bounded Expansion](governance_recommendation_export.md#rejection-filtering-and-bounded-expansion): filter to pending review work and expand only when pending assets or visible business domains are insufficient. Preserve source-run identity and full snapshots.
|
|
149
|
+
2. Apply the daily review capacity before drafting: about 20-50 pending assets, never more than about 80, balanced across roughly 3-6 business domains. Keep overflow counts/domains, and only necessary authenticated context; zero-pending domains must not be submitted as standalone page sections.
|
|
150
|
+
3. Read the selected assets' core definitions and author both grouping levels under [Business Topics and Subtopics](#business-topics-and-subtopics). Write a concise per-item purpose/recommendation basis, core report meaning and known material risks. Metadata dependencies need their role and any specific risk, not standalone long analyses. Preserve copied evidence, signals, links, optional location facts and known relations. Do not execute report data to prepare recommendations.
|
|
151
|
+
4. Escalate only concrete uncertainties that affect a recommendation: unclear counted entity/formula, materially inconsistent names versus definitions, a relevant conflicting peer, or missing evidence for a claimed grouping. Inspect affected definitions or missing evidence once. Dynamic SQL or an empty generic extractor alone does not require exhaustive SQL/column analysis. Use [priorities/comparisons](agent_review_priorities_comparisons.md) only when requested or triggered; do not populate comparison records for every ordinary item. Omission is not a no-conflict conclusion.
|
|
152
|
+
5. Run one programmatic structure/evidence pass over the exact whole packet and one [focused independent review](agent_review_preflight.md#focused-recommendation-review-default) of every domain/subtopic and identified risks. Correct factual or material grouping errors and recheck affected fields; do not rewrite sound copy through routine rounds. Preserve actual checked scope and warnings. LOCAL_ONLY stops here without remote writes.
|
|
153
|
+
6. With current submission authorization, submit the final material once using `submit-to-page --input-file <draft.json>` and a stable `client_request_id`. Do not add a routine remote validation/dry-run; use one only for an uncertain input or new contract. After submission, read detail and compare the stored packet, evidence links/references and hierarchy once. Return the public review-page URL. A network replay uses the same key, exact payload and original source run; authorization, structural/API errors and source evidence checks remain enforced.
|
|
143
154
|
|
|
144
|
-
|
|
145
|
-
2. Apply the daily review capacity before drafting. Unless the user requests otherwise, select about 20-50 pending review assets, never more than about 80, and balance roughly 3-6 visible business domains with per-domain quotas. Rank pending candidates by impact, heat, user count, dependency breadth, and under-covered business domains. Keep overflow counts/domains for the batch summary and later batches.
|
|
146
|
-
3. Generate the review draft from `review_material_package`: candidate items, heat evidence, copied `source_link` / `evidence_links`, relations, report/AI-model definition summaries, versions/hash, batch `ai_summary`, item reasons, and Agent-generated `presentation_snapshot.topics[].groups`. Only create visible topics for business domains that contain selected pending review assets. Authenticated/completed assets may be included as direct context under those topics, but zero-pending domains must not be submitted as standalone page sections.
|
|
147
|
-
4. Fetch `analysis-meta agent-review evidence` only for targets whose material package marks a definition or analysis gap, or when validating a generated draft. Read [the stable analysis field reference](agent_review_evidence.md), inspect the returned `evidence_snapshot.analysis`, parse status, limitations, hash and revision. Do not ask customers to manually run `analysis report get` for every report.
|
|
148
|
-
5. Draft AI explanations and per-item priorities from packaged definitions and current Common evidence, then run cross-asset comparisons over merged chunks before independent preflight. Select real, fact-supporting paths before submission; keep original facts separate from AI interpretation and disclose missing, null or dynamic evidence. The same maximum 3 correction attempts covers explanations, priorities and comparisons together.
|
|
149
|
-
6. With current submission authorization, submit after independent preflight PASS or the bounded warning-continuation outcome in [preflight](agent_review_preflight.md#continue-with-disclosed-quality-issues). At most 3 corrections are allowed; remaining quality failures must be disclosed in the batch overview and affected-item notes, without relabeling the quality verdict PASS. Submit the final hash-recorded material with `submit-to-page --input-file <draft.json>` and a stable `client_request_id`. Preserve the original source-run identity on network replay. Evidence fetching, preflight PASS and retry exhaustion never supply submission or approval authorization. Ordinary structural/API failures cannot be bypassed.
|
|
150
|
-
7. Read detail and compare the stored snapshot with the final dispatched material and source facts. Track the last reviewed draft separately from warning-only additions so those disclosed additions are not mistaken for storage changes. After submission, read detail and check that those paths resolve, still support the claims, and that `presentation_snapshot.relations` can render 看板 -> 报表 -> 元数据 for the submitted assets. `evidence_hash` includes collection time and can differ across reads; `target_revision` corresponds to the saved definition, not all sampled signals. Do not treat a changed full snapshot hash as a cross-scan business change or require it to equal the preview hash. If important facts changed or hierarchy is missing, report the mismatch; do not silently rewrite explanations, approve, or resubmit. Inspect records only for actual review/execution outcomes.
|
|
151
|
-
8. Return the `review_page_url` field from `submit-to-page` when it is present. If only `review_url` is returned, treat it as a relative product-page path and prepend the public AE web host, not a local Common/API host. Never tell a reviewer to open `http://127.0.0.1:8992/#/...` or another backend capability host as the review page.
|
|
155
|
+
The preflight's existing bounded warning policy applies to unresolved quality issues, not invalid required fields or missing authorization. A focused review is not a full certification audit and must not be labeled as one. This workflow creates human review proposals only; approval, retry, automatic certification and metric creation retain their existing explicit intents and checks.
|
|
152
156
|
|
|
153
157
|
## Required Report Analysis
|
|
154
158
|
|
|
155
|
-
|
|
159
|
+
### Minimum for Ordinary Recommendations
|
|
160
|
+
|
|
161
|
+
Read only enough of each selected report definition to explain its purpose, one core measure/calculation and material population/filter/time boundaries. Every report still requires packaged analysis, its revision, and a real supporting reference. Short authored text never permits dropping source snapshot fields. Evidence fetching is gap-only; do not request per-report re-fetches or execute data merely to prepare a review.
|
|
162
|
+
|
|
163
|
+
The detailed interpretation table below is for explicit full audits or the affected part of a concrete risk investigation. Ordinary recommendation does not require filling every section or enumerating every SQL projection.
|
|
164
|
+
|
|
165
|
+
Before real page submission, verify the current-state selection and scope rules in [Current Candidates and Bounded Expansion](governance_recommendation_export.md#rejection-filtering-and-bounded-expansion). Do not query review history to select candidates. Earlier recommendations and review decisions do not exclude currently uncertified assets from this manual review workflow. Verify that all displayed references resolve and that counts reflect the retained graph. Include eligible pending assets across the retained branches rather than a few representative themes. The initial top 20 is a candidate pool, not a submission quota; expand to 50 then 100 when pending review assets or visible business domains are insufficient, and stop at 100 or earlier when sufficient or exhausted. The final page batch is still capped for human review capacity: default target about 20-50 pending assets, hard cap about 80, roughly 3-6 visible domains, with per-domain quotas before adding extra assets from one domain. Explain the final scope, overflow and shortfall, and do not submit an empty batch. Business themes organize this retained coverage; merge dashboards describing the same business process instead of copying source order into one topic per dashboard. Do not submit a business topic whose displayed assets are all authenticated/completed context.
|
|
156
166
|
|
|
157
167
|
Generate Agent-written narrative only for material that the reviewer will actually see as work: the batch overview, visible business domains, and pending review assets. Hidden domains and pure authenticated context rows should keep copied evidence, signals, links, snapshots and relations, but should not receive long new `ai_summary.summary` or `analysis_explanation` prose unless needed to explain a visible pending item.
|
|
158
168
|
|
|
159
|
-
Before drafting every report proposal, use the definition and analysis embedded in `review_material_package` first. Current Common export should place report `evidence_snapshot.analysis` and `target_revision
|
|
169
|
+
Before drafting every report proposal, use the definition and analysis embedded in `review_material_package` first. Current Common export should place report `evidence_snapshot.analysis` and `target_revision`, plus dashboard authoritative `evidence_snapshot.definition` and `target_revision`, under `review_material_package.candidate_assets`. Call `analysis-meta agent-review evidence` only for missing/stale analysis or a specific evidence gap. Do not ask customers to manually run `analysis report get` for every report. A report title or prior AI summary cannot replace the definition; missing required core evidence is a material gap, not a reason to invent an explanation.
|
|
160
170
|
|
|
161
|
-
After reading each report from the material package, draft its interpretation from
|
|
171
|
+
After reading each report from the material package, draft its concise core interpretation from packaged analysis. Store AI interpretation in `item.ai_summary.analysis_explanation`, not the authoritative `evidence_snapshot.analysis`. Common create stores the submitted packet for page review; it does not repair a missing Agent calculation explanation during create. Agent-supplied SQL, hashes or a `verified` flag cannot manufacture server evidence.
|
|
162
172
|
|
|
163
173
|
Before a real `submit-to-page` call, run a local completeness check over the exact payload: every report item must contain current `evidence_snapshot.analysis`, and must contain reviewer-readable `item.ai_summary.analysis_explanation.calculations` or `item.ai_summary.analysis_explanation.measures`. A purpose-only report summary is incomplete; missing required analysis or resolvable evidence references still fails structural validation. Do not invent either to force submission. Dashboard items may summarize the child reports, but their own missing calculation analysis is not a blocker because the actual calculation belongs to the reports below the dashboard.
|
|
164
174
|
|
|
165
|
-
The independent Agent review must include narrative-quality checks before dispatch
|
|
175
|
+
The focused independent Agent review must include narrative-quality checks before dispatch for the selected grouping evidence and risk items: identify unsupported claims and repeated limitation/open-question text that hides a specific evidence gap. Do not expand it into an exhaustive per-item prose audit or require cosmetic repairs. Full audits check every retained explanation. At most 3 correction/re-review attempts remain available for material findings; this is a ceiling, not a required sequence. Follow preflight's warning continuation and LOCAL_ONLY boundaries, without relabeling incomplete/full-audit scope as passed.
|
|
176
|
+
|
|
177
|
+
### Full Audit Detail (On Explicit Request or Affected Risk Only)
|
|
178
|
+
|
|
179
|
+
For a full audit, read actual model/SQL definitions and apply the following field-level requirements. In an ordinary recommendation, inspect only fields needed for the core explanation, grouping or identified risk.
|
|
166
180
|
|
|
167
181
|
Use arrays of `{ "statement": "...", "evidence_refs": ["..."], "inferred": false }` for the following explanation sections. The statements are AI interpretations; factual clauses require exact, Common-verifiable paths rooted at `evidence_snapshot.analysis`. Use only paths present in the current evidence response that support the retrieved source facts; do not invent field names, array indexes, aliases, or references. `source_path` identifies provenance and is not automatically an AI evidence reference. After submission, read detail and check that those paths resolve in the server-returned snapshot. An unresolved path is missing evidence, not a verified fact. For `DYNAMIC` SQL, follow the original-text-only rules in [agent_review_evidence.md](agent_review_evidence.md); do not manufacture parsed projections or runtime values.
|
|
168
182
|
|
|
@@ -181,10 +195,28 @@ Never guess or rewrite saved SQL, projected columns, or formulas to make a recom
|
|
|
181
195
|
|
|
182
196
|
Before writing, consult the user's current intent. Submission can be offered once; declining produces no write. Prior explicit submission authorization does not require repeated permission. A preauthorized unattended task only submits proposals and never approves, retries certification, invokes legacy submit, or creates metrics.
|
|
183
197
|
|
|
184
|
-
Persist the exact payload, `client_request_id
|
|
198
|
+
Persist the exact payload, `client_request_id` and returned batch ID in task state. Network replay uses the same key and exact payload, including the original `source_run_id`. Same key with different content is a conflict, not a reason to generate a new key. A deliberate new authorized recommendation uses a new request key and may contain assets recommended previously; do not require evidence changes or inspect old batches before recommending them again. Historical review records remain available for audit only. Notification delivery is owned by Common; the Agent does not send another notification separately.
|
|
185
199
|
|
|
186
200
|
Output is the review detail, including string `id`, `review_url`, `review_page_url`, `status`, `notification_state`, versioned `items`, and `reused`. `review_page_url` is the user-facing page URL. `review_url` is kept for server compatibility and may be relative. An exact request replay returns its original batch. A new request can retain a new batch identity while reusing prior proposals: item-level `reused_batch_id` and `reused_item_id` identify the originals without dropping any requested items. Preserve both as decimal strings. `reused:true` alone does not prove the returned batch ID is an older batch. A fully reused batch can report `status:REUSED` and `notification_state:NOT_REQUIRED`; do not send another notification. Creation success is not proof of approval or certification. Return the link once for a newly actionable batch, distinguish notification failure, and read `detail` / `records` after a meaningful change.
|
|
187
201
|
|
|
188
202
|
## Topic Semantic Evidence
|
|
189
203
|
|
|
190
|
-
|
|
204
|
+
### Business Topics and Subtopics
|
|
205
|
+
|
|
206
|
+
The intended page hierarchy is `业务域 -> 业务小主题 -> 看板 -> 报表 -> 元数据`: the left navigation is a broad business domain, and the right group heading is a narrower business question that can collect multiple related dashboards. Dashboard names belong on asset rows. A two-level layout whose second level simply repeats the source dashboard list has not completed business classification.
|
|
207
|
+
|
|
208
|
+
Before assembling transport JSON, the Agent must interpret the selected reports' actual definitions and propose both grouping levels. Record each subtopic's business question, member evidence chains, and why it differs from sibling subtopics. Compare reports across source dashboards within the selected scope: merge complementary views of the same question, and identify materially different questions within a source dashboard instead of inheriting its container boundary. Keep report/metadata dependencies, source links and scoped asset identities intact; never fabricate relations or duplicate certification items to force a taxonomy. If shared placement cannot be represented faithfully, record that presentation gap for review.
|
|
209
|
+
|
|
210
|
+
For each new topic and each `topics[].groups[]` subtopic include Agent-authored `semantic_basis`:
|
|
211
|
+
|
|
212
|
+
- `business_question`: the broad domain question or, for a subtopic, the specific question its members jointly answer.
|
|
213
|
+
- `grouping_reason`: definition-based reasons for the included members and the boundary from sibling groups. For a subtopic covering multiple dashboards, explain their complementary roles. For a single-dashboard subtopic, explain why other selected dashboards do not answer the same question; lack of other supported candidates is a valid scope limitation.
|
|
214
|
+
- `evidence_item_ids`: nonempty references to displayed items in that same topic or group respectively. Use representative core report definitions and supporting metadata to justify the business meaning, including evidence for every represented dashboard; a dashboard title alone is insufficient. Select the few definitions needed to support the question and boundaries, rather than listing every child report to imitate full-audit coverage.
|
|
215
|
+
|
|
216
|
+
Scripts may assemble an Agent-authored membership plan and validate references. They must not derive subtopics by looping over dashboards, copying dashboard names/IDs or `work_units`, adding a business-sounding prefix, or mechanically merging adjacent dashboards. Renaming a one-dashboard group does not repair its membership. Do not force unrelated dashboards together to meet a minimum count, or reject a legitimate business name merely because it equals an asset title.
|
|
217
|
+
|
|
218
|
+
For example, within a customer-adoption domain, a subtopic about sustained use could combine a daily/weekly activity dashboard and a cohort-retention dashboard when their definitions support that question, while feature breadth belongs to a different subtopic. This illustrates semantic membership, not a fixed taxonomy or required number of dashboards. When meaning is unsupported, use `待确认业务主题` with the concrete missing evidence rather than inventing a category.
|
|
219
|
+
|
|
220
|
+
[Independent Agent preflight](agent_review_preflight.md) must cover every domain and subtopic, explicitly assessing missed cross-dashboard merges and unsupported splits. All or most groups matching dashboards one-to-one is a review signal, not an automatic name/count rejection. A PASS for either focused or full scope requires evidence-backed grouping and recorded coverage at both levels; focused scope does not claim exhaustive item-definition review. These assessments share the existing correction budget and warning-continuation policy.
|
|
221
|
+
|
|
222
|
+
The `semantic_basis` fields remain optional in transport for legacy compatibility. When supplied, CLI validation checks nonempty explanation fields and same-topic/same-group evidence references; it does not judge meaning, require two dashboards per group, or reject source-name equality. Existing Common stores the nested presentation object and the page already renders multiple dashboard roots in a group, so this contract requires no server schema or frontend change. Updating this Skill does not reorganize an already stored batch.
|
|
@@ -117,8 +117,11 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
|
|
|
117
117
|
| `ae-cli analysis report-version rollback` | analysis.report_version.rollback | write | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID.<br>`--target-version` (number; required) — History version to rollback to. | [report_version_rollback.md](report_version_rollback.md) |
|
|
118
118
|
| `ae-cli analysis run inspect` | gateway lifecycle | read | `--run-id` (string; required) — Async run ID returned by an export capability. | [run_inspect.md](run_inspect.md) |
|
|
119
119
|
| `ae-cli analysis run wait` | gateway lifecycle | read | `--run-id` (string; required) — Async run ID returned by an export capability.<br>`--wait-timeout-seconds` (number; optional, min=1, max=21600) — Maximum time this CLI process waits. Default: 600 seconds; expiry never cancels the remote run.<br>`--output` (string; optional) — After success, stream the artifact to this local file.<br>`--force` (boolean; optional) — Allow --output to atomically replace an existing file. | [run_wait.md](run_wait.md) |
|
|
120
|
-
| `ae-cli analysis scenario append` | analysis.scenario.append | write | `--question-id` (string; optional) — Stable original scenario turn ID. Collect defaults to current turn; append must reuse the original ID.<br>`--answer-id` (string; optional) — Actual answer identifier; defaults to answer:<current-turn-id>. Revisions need a new ID.<br>`--query-path` (json; optional) — 1..64 ordered references: [{capability_id,invocation_id?,client_request_id?,purpose?}]. Prefer only returned meta.invocation_id; fallback to returned gateway meta.client_request_id, never business request_id. One analysis data-query step required. Inputs/status/timing come from existing call telemetry. Never include query results.<br>`--project-id` (number; optional) — Source analysis project. Collection is skipped if omitted or the project has not explicitly enabled scenario samples.<br>`--entry-type` (string; required) — user_feedback or answer_revision.<br>`--target-answer-id` (string; required) — Existing answer being questioned or revised. Never overwrite it.<br>`--text` (string; required) — Verbatim user feedback (up to 4096) or exact revised answer (up to 16384); no judgment of whether feedback is right.<br>`--entry-id` (string; optional) — Stable append ID; defaults to current-turn-id:entry-type. Preserve on retries, independent of text edits.<br>`--user-message` (string; optional) — For answer_revision only: exact triggering follow-up request, up to 4096 characters, when not already captured as user_feedback. Preserve scope changes without inventing negative feedback. | [scenario_append.md](scenario_append.md) |
|
|
121
|
-
| `ae-cli analysis scenario
|
|
120
|
+
| `ae-cli analysis scenario append` | analysis.scenario.append | write | `--start-time` (string; optional) — Exact start_time returned by scenario begin for this answer. CLI computes one question-to-answer duration; omit if not captured.<br>`--question-id` (string; optional) — Stable original scenario turn ID. Collect defaults to current turn; append must reuse the original ID.<br>`--answer-id` (string; optional) — Actual answer identifier; defaults to answer:<current-turn-id>. Revisions need a new ID.<br>`--query-path` (json; optional) — 1..64 ordered references: [{capability_id,invocation_id?,client_request_id?,purpose?}]. Prefer only returned meta.invocation_id; fallback to returned gateway meta.client_request_id, never business request_id. One analysis data-query step required. Inputs/status/timing come from existing call telemetry. Never include query results.<br>`--project-id` (number; optional) — Source analysis project. Collection is skipped if omitted or the project has not explicitly enabled scenario samples.<br>`--entry-type` (string; required) — user_feedback or answer_revision.<br>`--target-answer-id` (string; required) — Existing answer being questioned or revised. Never overwrite it.<br>`--text` (string; required) — Verbatim user feedback (up to 4096) or exact revised answer (up to 16384); no judgment of whether feedback is right.<br>`--entry-id` (string; optional) — Stable append ID; defaults to current-turn-id:entry-type. Preserve on retries, independent of text edits.<br>`--user-message` (string; optional) — For answer_revision only: exact triggering follow-up request, up to 4096 characters, when not already captured as user_feedback. Preserve scope changes without inventing negative feedback. | [scenario_append.md](scenario_append.md) |
|
|
121
|
+
| `ae-cli analysis scenario begin` | local utility | read | None | [scenario_begin.md](scenario_begin.md) |
|
|
122
|
+
| `ae-cli analysis scenario collect` | analysis.scenario.collect | write | `--start-time` (string; optional) — Exact start_time returned by scenario begin for this answer. CLI computes one question-to-answer duration; omit if not captured.<br>`--question-id` (string; optional) — Stable original scenario turn ID. Collect defaults to current turn; append must reuse the original ID.<br>`--answer-id` (string; optional) — Actual answer identifier; defaults to answer:<current-turn-id>. Revisions need a new ID.<br>`--query-path` (json; optional) — 1..64 ordered references: [{capability_id,invocation_id?,client_request_id?,purpose?}]. Prefer only returned meta.invocation_id; fallback to returned gateway meta.client_request_id, never business request_id. One analysis data-query step required. Inputs/status/timing come from existing call telemetry. Never include query results.<br>`--project-id` (number; optional) — Source analysis project. Collection is skipped if omitted or the project has not explicitly enabled scenario samples.<br>`--question` (string; required) — Original user scenario question and confirmed clarifications; up to 8192 characters.<br>`--answer` (string; required) — Exact answer text to deliver, not a summary. Up to 16384 characters. Deliver the same text after collection. | [scenario_collect.md](scenario_collect.md) |
|
|
123
|
+
| `ae-cli analysis scenario get` | analysis.scenario.get | read | `--project-id` (number; required) — Project to review. Requires project configuration permission to read collected content.<br>`--days` (number; optional) — Recent calendar days including today in the deployment timezone. Default 7; range 1..90.<br>`--end-time` (string; optional) — Exclusive ISO-8601 snapshot boundary. Reuse the first response meta.end_time and the same days on every subsequent page.<br>`--open-id` (string; required) — Exact initial.open_id from scenario list. Project configuration permission is still required.<br>`--agent-session-id` (string; required) — Exact initial.agent_session_id from scenario list.<br>`--question-id` (string; required) — Exact initial.question_id from scenario list. | [scenario_get.md](scenario_get.md) |
|
|
124
|
+
| `ae-cli analysis scenario list` | analysis.scenario.list | read | `--project-id` (number; required) — Project to review. Requires project configuration permission to read collected content.<br>`--days` (number; optional) — Recent calendar days including today in the deployment timezone. Default 7; range 1..90.<br>`--limit` (number; optional) — Complete scenarios per page. Default 20; range 1..50.<br>`--offset` (number; optional) — Scenario offset. Default 0; follow meta.next_offset until meta.has_more is false.<br>`--end-time` (string; optional) — Exclusive ISO-8601 snapshot boundary. Reuse the first response meta.end_time and the same days on every subsequent page. | [scenario_list.md](scenario_list.md) |
|
|
122
125
|
| `ae-cli analysis sql-table columns` | analysis.sql_table.columns | read | `--project-id` (number; required) — Numeric project ID.<br>`--table-ref` (string; required) — Exact table_ref or quoted sql_reference returned by analysis sql-table list; a unique table-only reference is also accepted.<br>`--usage` (string; optional) — Authorized table set: analysis (default), tag_cluster for SQL tags/clusters, or sql_datatable for SQL-built data tables. Use the same usage for list and columns. | [sql_table_columns.md](sql_table_columns.md) |
|
|
123
126
|
| `ae-cli analysis sql-table list` | analysis.sql_table.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--limit` (number; optional, min=1, max=200) — Directory page size. Default: 50, max: 200. Values outside 1..200 are rejected.<br>`--offset` (number; optional, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--usage` (string; optional) — Authorized table set: analysis (default), tag_cluster for SQL tags/clusters, or sql_datatable for SQL-built data tables. Use the same usage for list and columns. | [sql_table_list.md](sql_table_list.md) |
|
|
124
127
|
| `ae-cli analysis user-cluster create` | analysis.user_cluster.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--cluster-name` (string; required, minLength=1, maxLength=80, pattern=^[a-zA-Z][a-zA-Z0-9_]*$) — New cluster_name. Must start with a letter, contain only letters, digits, and underscores, and be at most 80 characters.<br>`--display-name` (string; required, minLength=1, maxLength=80) — Human-readable display name. Maximum: 80 characters.<br>`--definition-request` (json; required) — Semantic snake_case cluster definition. Read skills/ae-analysis/references/user_cluster_models.md; shared primitives are in audience_models.md.<br>`--authenticated-only` (boolean; optional) — Return only resources whose metadata can be resolved under the current identity.<br>`--zone-offset` (number; optional) — Optional timezone offset. UTC+8 is 8; UTC-5 is -5.<br>`--entity-id` (number; optional) — Optional entity ID. Required by ID-file create commands. | [user_cluster_create.md](user_cluster_create.md) |
|
|
@@ -204,7 +207,8 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
|
|
|
204
207
|
| `ae-cli analysis-meta exchange rule-validate` | metadata.exchange_rule.validate | read | `--project-id` (number; required) — Numeric project ID.<br>`--payload` (json; required) — Required snake_case capability payload. Read the dedicated command reference for its semantic shape; an empty object is not a generic valid payload. | [exchange_rule_validate.md](exchange_rule_validate.md) |
|
|
205
208
|
| `ae-cli analysis-meta governance-recommendation auto-review` | metadata.governance_recommendation.auto_review | write | `--project-id` (number; required) — Numeric project ID.<br>`--window-days` (number; optional, min=1, max=365) — Usage window in days for the recommendation batch. Default: 90.<br>`--limit` (number; optional, min=1, max=100) — Maximum hot dashboard evidence packages selected before automatic asset review. Omit for CLI bounded expansion over top-20/top-50/top-100; pass explicitly for a fixed diagnostic scope. | [governance_recommendation_auto_review.md](governance_recommendation_auto_review.md) |
|
|
206
209
|
| `ae-cli analysis-meta governance-recommendation decisions` | metadata.governance_recommendation.decisions | read | `--project-id` (number; required) — Numeric project ID.<br>`--run-id` (string; optional) — Optional run_id filter.<br>`--limit` (number; optional, min=1, max=500) — Maximum rows returned. Default: 100. | [governance_recommendation_decisions.md](governance_recommendation_decisions.md) |
|
|
207
|
-
| `ae-cli analysis-meta governance-recommendation export` | metadata.governance_recommendation.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--window-days` (number; optional, min=1, max=365) — Usage window in days. Default: 90.<br>`--limit` (number; optional, min=1, max=100) — Maximum hot dashboard evidence packages selected before report and metadata expansion. Default: 20; this is not the business-topic count.<br>`--include-completed` (boolean; optional) — Whether to include completed/authenticated context in the same business topic. Default: true; set false only for pending-only review. | [governance_recommendation_export.md](governance_recommendation_export.md) |
|
|
210
|
+
| `ae-cli analysis-meta governance-recommendation export` | metadata.governance_recommendation.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--window-days` (number; optional, min=1, max=365) — Usage window in days. Default: 90.<br>`--limit` (number; optional, min=1, max=100) — Maximum hot dashboard evidence packages selected before report and metadata expansion. Default: 20; this is not the business-topic count.<br>`--include-completed` (boolean; optional) — Whether to include completed/authenticated context in the same business topic. Default: true; set false only for pending-only review.<br>`--track-run` (boolean; optional) — Track the complete recommendation workflow through page submission or explicit run-update. Default: false for compatibility.<br>`--run-id` (string; optional) — Continue the same tracked workflow when expanding evidence. Requires --track-run true. | [governance_recommendation_export.md](governance_recommendation_export.md) |
|
|
211
|
+
| `ae-cli analysis-meta governance-recommendation run-update` | metadata.governance_recommendation.run_update | write | `--project-id` (number; required) — Numeric project ID.<br>`--run-id` (string; required) — Exact run_id returned by the tracked export.<br>`--status` (string; required) — HEARTBEAT, SUCCEEDED, FAILED or CANCELLED. Finish only after the actual workflow has ended.<br>`--reason` (string; optional) — Short non-sensitive result or failure reason; never include credentials or raw logs. | [governance_recommendation_run_update.md](governance_recommendation_run_update.md) |
|
|
208
212
|
| `ae-cli analysis-meta governance-recommendation submit` | metadata.governance_recommendation.submit | write | `--project-id` (number; required) — Numeric project ID.<br>`--run-id` (string; required) — run_id returned by governance-recommendation export.<br>`--snapshot-hash` (string; optional) — Authentication snapshot hash returned by governance-recommendation export.<br>`--topic-id` (string; optional) — Optional CLI Agent business-domain ID. Dashboard-seeded evidence may submit only topic-name.<br>`--topic-name` (string; required) — CLI Agent business-domain display name.<br>`--window-days` (number; optional, min=1, max=365) — Usage window in days for server-side metric candidate re-scan. Default: 90.<br>`--limit` (number; optional, min=1, max=100) — Dashboard limit for server-side metric candidate re-scan. Default: 20.<br>`--decisions` (json; required) — Approval decisions JSON array for one CLI Agent topic. Each item uses item_type asset or metric_candidate and decision APPROVE, REJECT, or SKIP. | [governance_recommendation_submit.md](governance_recommendation_submit.md) |
|
|
209
213
|
| `ae-cli analysis-meta metric create` | metadata.metric.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--metric-name` (string; required) — Metric technical name, for example pay_count.<br>`--metric-desc` (string; required) — Metric display name.<br>`--metric-remark` (string; optional) — Metric remark.<br>`--model-type` (string; required) — Semantic metric model type: event or retention.<br>`--metric-events` (json; required) — One semantic event-analysis definition, or a native snake_case QP array for compatibility.<br>`--metric-params` (json; optional) — Metric params JSON object. Defaults to {} in common when omitted. | [metric_create.md](metric_create.md) |
|
|
210
214
|
| `ae-cli analysis-meta metric delete` | metadata.metric.delete | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--metric-id` (number; required) — Metric ID. | [metric_delete.md](metric_delete.md) |
|
|
@@ -33,38 +33,52 @@ Input sends `project_id`, optional `window_days`, optional `limit`, and optional
|
|
|
33
33
|
|
|
34
34
|
Output includes `schema_version`, `run_id`, `project_id`, `snapshot_hash`, `work_units`, `coverage`, `stat_scopes`, and `agent_presentation_contract`.
|
|
35
35
|
|
|
36
|
+
## Tracked page-recommendation lifecycle
|
|
37
|
+
|
|
38
|
+
For page-review recommendations, including sidebar, scheduled and external Agent runs, start with `export --project-id <id> --limit 20 --track-run true`. This requires the matching Common service release. A tracked export starts the project run only when the server accepts actual work; filling a prompt never starts it. Legacy exports without this optional flag retain their original behavior.
|
|
39
|
+
|
|
40
|
+
- Preserve `run_id`. Expansion to top-50/top-100 must pass `--track-run true --run-id <same_run_id>`; do not start another run. The server rejects competing project runs.
|
|
41
|
+
- During Agent interpretation, call `analysis-meta governance-recommendation run-update --project-id <id> --run-id <id> --status HEARTBEAT` at least every five minutes. A fifteen-minute lost lease becomes `TIMED_OUT`; do not resume an expired run.
|
|
42
|
+
- Submit the final packet with `source_run_id` equal to the tracked `run_id`. Successful page submission finishes the run with its exact `batch_id` automatically.
|
|
43
|
+
- An export with `run_status: SUCCEEDED` has no actionable candidates and is already complete; do not heartbeat or submit it. If later Agent filtering leaves no new recommendation, finish with `--status SUCCEEDED` and report the empty result. If interpretation fails, finish with `--status FAILED --reason <short_non_sensitive_reason>`; use `CANCELLED` only once actual execution has stopped. This command records a terminal state; it does not cancel an executing Agent.
|
|
44
|
+
- Terminal states release project occupancy. Never claim success merely because export finished, and never include credentials or raw tool logs in a reason.
|
|
45
|
+
- `RECOMMENDATION_RUNNING` means another run owns this project. Do not bypass it with an untracked export. Query `metadata.governance_recommendation.run_status` through capability discovery if diagnosis is needed.
|
|
46
|
+
|
|
36
47
|
## Customer/Agent Material Package Contract
|
|
37
48
|
|
|
38
|
-
|
|
39
|
-
|
|
49
|
+
Ordinary recommendations use concise purpose, recommendation basis, core report meaning and known material risks. Page preparation or a local rehearsal uses [focused preflight](agent_review_preflight.md#focused-recommendation-review-default); recommendation-only display does not require a separate full audit. Preserve full source snapshots even when the authored explanation is short. Interpret only selected assets and their necessary grouping/dependency evidence; scripts can account for overflow without an Agent narrative for each unselected candidate.
|
|
50
|
+
|
|
51
|
+
Read [priorities and definition comparisons](agent_review_priorities_comparisons.md) only for requested ranking, concrete comparison/conflict clues or an explicit full audit. Ordinary items do not need priority grades or comparison-coverage records. Export ranking and `conflict_risks` are inputs; a related asset is not automatically a conflicting definition. Unknown or unexamined conflict scope must never be reported as fully checked.
|
|
40
52
|
|
|
41
53
|
- This command requires a numeric `--project-id`. If the user provides only a project name, resolve the project on the same host with `ae-cli project info list` before export.
|
|
42
54
|
- `run_id`, `snapshot_hash`, and `review_material_package` are the handoff package for Agent review drafting.
|
|
43
55
|
- `review_material_package` should contain candidate assets, heat evidence, source links, evidence links, dashboard/report/metadata relations, report definitions, AI-model definitions, `target_revision`, and hashes needed to draft a page review.
|
|
44
56
|
- The Agent must generate the downstream `agent-review submit-to-page` draft from this package: batch `ai_summary`, `presentation_snapshot`, per-item `ai_summary` / recommendation reasons, copied `evidence_snapshot`, copied source links, and relations.
|
|
45
|
-
- `work_units` are deterministic Common evidence containers. They are not the final page grouping. The Agent clusters selected assets into
|
|
57
|
+
- `work_units` are deterministic Common evidence containers. They are not the final page grouping. The Agent clusters selected assets into business domains and business subtopics for review. Apply [Business Topics and Subtopics](agent_review_submit_to_page.md#business-topics-and-subtopics) to both levels; a source dashboard is not a default subtopic.
|
|
46
58
|
- For report and SQL-report items, use `review_material_package.candidate_assets[].evidence_snapshot.analysis` first. Call `analysis-meta agent-review evidence` only when the package marks a definition/analysis gap or when validating a generated draft.
|
|
47
59
|
|
|
48
|
-
|
|
60
|
+
<a id="rejection-filtering-and-bounded-expansion"></a>
|
|
61
|
+
|
|
62
|
+
## Current Candidates and Bounded Expansion
|
|
49
63
|
|
|
50
|
-
|
|
64
|
+
Manual recommendation selects assets that currently need certification, by business value and current evidence. Do not query review history to select candidates. Earlier recommendations, pending reviews, rejection or deferral do not exclude an otherwise eligible uncertified asset. Historical fields returned in the packet remain audit context; they do not define manual recommendation eligibility. Automatic certification retains its separate explicit intent and safety rules.
|
|
51
65
|
|
|
52
|
-
1. Start with `--limit 20`, unless the user explicitly
|
|
53
|
-
2.
|
|
54
|
-
3.
|
|
55
|
-
4.
|
|
56
|
-
5.
|
|
57
|
-
6.
|
|
58
|
-
7.
|
|
59
|
-
8.
|
|
66
|
+
1. Start with `--limit 20`, unless the user explicitly requests another scope. Keep the same host, project, time window and completed-context setting throughout expansion.
|
|
67
|
+
2. Treat current `authentication_status:0` assets as pending review work. Use current certification facts in the asset or `evidence_snapshot.asset`; do not use historical `action_state`, `actionable`, or `previous_decision` as a substitute for current certification. Unknown certification or missing definition evidence is an evidence gap, not proof of eligibility. Authenticated assets are context only.
|
|
68
|
+
3. Deduplicate shared assets by full scoped identity within this packet and preserve source evidence, links and known relations. Do not remove dashboard branches because they appeared in an earlier recommendation.
|
|
69
|
+
4. Assess current candidates and business breadth. If there are fewer than about 10 pending review assets or fewer than 3 pending business domains and more dashboards exist, re-export with `--limit 50`, then use `--limit 100` if still insufficient. The pools are cumulative, not pages. Replace the earlier drafting packet with the latest successful export; never mix run IDs, hashes, revisions or snapshots.
|
|
70
|
+
5. Apply the daily review capacity after expansion: target about 20-50 pending review assets, hard cap around 80, across roughly 3-6 visible business domains. Rank by impact_degree, heat_count90d, user_count90d and dependency breadth. Use per-domain quotas before adding many assets from one domain.
|
|
71
|
+
6. Stop when candidates and domain coverage are sufficient, the pool is exhausted, or the top 100 have been inspected. Record overflow counts and domains for later batches. Do not fill a quota with weak or unsupported candidates. An export failure is an execution failure, not evidence of scarcity; do not expand because of an error or use stale material.
|
|
72
|
+
7. Build visible domains only when they contain selected pending work. Retain authenticated assets only as direct supporting context. Do not display or submit a zero-pending business domain as standalone work.
|
|
73
|
+
8. Submit the current material once when authorized. A new recommendation may include previously recommended assets. Reuse the same client request key and exact payload only when replaying the same submission after a network failure; a deliberate new submission uses a new key. Read back the returned batch rather than searching old batches to change the candidate set.
|
|
60
74
|
|
|
61
|
-
Report the final requested limit, actual dashboards returned,
|
|
75
|
+
Report the final requested limit, actual dashboards returned, dashboards represented in the selected packet, visible pending-domain count, selected pending asset count, context count, overflow summary and stopping reason. Do not describe a selected slice as covering all top-N dashboards. Historical recommendation counts are not part of eligibility or the required scope report.
|
|
62
76
|
|
|
63
77
|
## Decision Rules
|
|
64
78
|
|
|
65
79
|
- Use this command before presenting recommendations for certification or metrics.
|
|
66
80
|
- After export, always build the business-domain review display before answering. The command output is evidence, not the response format.
|
|
67
|
-
- For real review-page submission, apply
|
|
81
|
+
- For real review-page submission, apply Current Candidates and Bounded Expansion before grouping. Include eligible assets across the retained dashboard branches; do not compress them into a few representative themes or submit only the first hot dashboard or first `work_unit`. A smaller batch is valid when the evidence supports fewer eligible candidates or the user explicitly requests a sample or diagnostic batch. Explain the actual scope and omissions.
|
|
68
82
|
- For recurring recommendation jobs, the default reviewer workspace is pending-first: only business domains with pending review assets are visible. Authenticated/completed assets remain available as relation/context rows under those domains, but they must not create a visible topic by themselves.
|
|
69
83
|
- Treat `业务主题域` as a semantic cluster over the selected dashboards, not a copy of the dashboard list. Do not create one topic per hot dashboard just because `--limit 20` returned 20 work units. Merge dashboards into the same topic when their child reports, referenced metadata, metrics, folder context, or authored notes describe the same business process. Split only when the business meaning or review decision is materially different. A result where `topic_count == selected_dashboard_count` requires explicit evidence that every selected dashboard has a distinct business domain.
|
|
70
84
|
- Do not call project-semantic, project-KB, or personal-semantic-preference commands as prerequisite context for this workflow.
|
|
@@ -89,8 +103,8 @@ Each newly authored topic includes optional transport field `semantic_basis: {bu
|
|
|
89
103
|
This is an Agent presentation contract, not a CLI flag and not a Common renderer. Use the basic fields returned by Common to produce exactly one review shape:
|
|
90
104
|
|
|
91
105
|
- The top-level grouping must be `业务主题域`. Do not split the final answer into separate top-level sections such as `资产认证建议` and `推荐指标`.
|
|
92
|
-
- Aggregate by `业务主题域` with each source dashboard as the core evidence package for coverage, not as the business-domain name. Infer each domain from the dashboard semantics plus the business meaning of `topic_seed`, `source_reports`, asset names, metric names, and semantic definitions. The final group name should describe the business area or process, such as payment/revenue, login/channel, retention, item economy, or lifecycle, not the backend work-unit label. This grouping is for review comprehension only; it must not reduce the retained dashboard set after
|
|
93
|
-
- The expected page hierarchy is `业务域 -> 看板 -> 报表 -> 元数据`. Put
|
|
106
|
+
- Aggregate by `业务主题域` with each source dashboard as the core evidence package for coverage, not as the business-domain name. Infer each domain from the dashboard semantics plus the business meaning of `topic_seed`, `source_reports`, asset names, metric names, and semantic definitions. The final group name should describe the business area or process, such as payment/revenue, login/channel, retention, item economy, or lifecycle, not the backend work-unit label. This grouping is for review comprehension only; it must not reduce the retained dashboard set after current-state selection and bounded expansion.
|
|
107
|
+
- The expected page hierarchy is `业务域 -> 业务小主题 -> 看板 -> 报表 -> 元数据`. Put source dashboards answering the same specific business question under one subtopic within their broader domain. Neither grouping level is the dashboard node; the dashboard remains an asset row inside a subtopic. Review one-group-per-dashboard layouts for missed business merges rather than accepting renamed dashboard containers.
|
|
94
108
|
- Treat `work_units` as evidence containers, not presentation groups. One dashboard/work unit can split into multiple business domains when its child reports cover different business processes; one business domain can merge rows from multiple dashboards/work units when the evidence describes the same business process.
|
|
95
109
|
- Keep each report-centered evidence chain together: the report row, metadata rows, and metric candidates introduced by that report follow the same `业务主题域`. Do not detach report metadata into a separate generic metadata group, and do not merge unrelated child-report domains only because they share one source dashboard.
|
|
96
110
|
- When one source dashboard contains child reports for different business questions, create one `业务主题域` per child-report business question. Do not combine distinct report domains into a broad `A 与 B 运营`, `综合运营`, or `核心语义` group only because they share the same dashboard. The dashboard can appear as shared linked source evidence in each relevant domain.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# analysis-meta governance-recommendation run-update
|
|
2
|
+
|
|
3
|
+
Renew or finish the tracked recommendation started by [export](governance_recommendation_export.md#tracked-page-recommendation-lifecycle).
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
ae-cli analysis-meta governance-recommendation run-update --project-id <project_id> --run-id <run_id> --status HEARTBEAT
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Capability: `metadata.governance_recommendation.run_update`. Input required flags: `--project-id`, `--run-id`, `--status`. Optional: `--reason` with a short non-sensitive reason.
|
|
10
|
+
|
|
11
|
+
Use HEARTBEAT at least every five minutes during actual interpretation. SUCCEEDED without page submission means an empty successful result. Page submission automatically records the exact batch ID. FAILED and CANCELLED release occupancy; record CANCELLED only after execution has stopped. Updating state does not cancel Agent execution. The server requires the same project, actor and active run ID; a fifteen-minute lost lease ends as TIMED_OUT and cannot be revived.
|
|
12
|
+
|
|
13
|
+
Do not use this command to start recommendations or bypass another run. Output returns the current project status, exact run ID and successful batch ID when present; terminal states release occupancy.
|
|
@@ -25,7 +25,15 @@ CLI Agent performs the main semantic precompilation: understand definitions and
|
|
|
25
25
|
|
|
26
26
|
Use the `company-kb.mjs` wrapper below for project KB operations. It fixes scope to company, filters discovery to company results, verifies ZIP ownership before directory operations, and exits on any failed command. A company permission denial is terminal: report the server error and stop. Never create a personal KB, reuse a same-name personal KB, retry without scope, or continue to upload/schema/compile after failed creation.
|
|
27
27
|
|
|
28
|
-
Resolve host and project first.
|
|
28
|
+
Resolve host and project first. Use the authoritative server resolver, not the current user's visible KB list:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
node <skill_dir>/scripts/project-semantic-knowledge-wiki/company-kb.mjs +resolve --project-id <project_id> --host <host>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The resolver considers all undeleted company KBs bound to the project across all build states, including disabled or inaccessible targets. One bound KB is reused for legacy compatibility. For several candidates, exactly one fixed `项目语义` business tag selects the target; zero tags returns `multiple/untagged`, several tags returns `multiple/tag_conflict`. With no project binding, only the exact authoritative project name `<project_name> 项目语义知识库` without another project binding is a legacy candidate, using the same tag rule. Never select by list order, modification time, or accessible subset. `restricted`, `disabled`, and `multiple` stop the workflow and require permission, activation, or tag correction; do not create or select a replacement. Query/auth/unsupported-endpoint errors are terminal; do not fall back to visible-list inference on older servers. Only `missing` permits creation. `available` supplies the exact `item.dbId` and `item.id` (slug); reuse that identity. An explicitly selected existing target or an automation's stored target ID must not be silently switched by tag changes.
|
|
35
|
+
|
|
36
|
+
The wrapper's `+new` always sends `--purpose project-semantic` with a project binding. The server validates the project, rechecks the target under the KB write lock, and presets the fixed `项目语义` tag even if omitted by the caller. It preserves additional tags up to the existing total limit of two; overflow is an error, never truncation. Ordinary company KB creation outside this semantic workflow retains its current behavior. The tag is purpose classification, not an access grant; labels and names are not authority for project ownership. Once target resolution succeeds, do not stop after local generation.
|
|
29
37
|
|
|
30
38
|
The KB description is part of Agent auto-loading and source selection, not a casual note. Always write a normal business-facing description that states the project, asset scope, and intended Agent use. Do not mention temporary implementation details such as ZIP, test version numbers, source-tree packaging, or local build names in the description. Use this template:
|
|
31
39
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# analysis scenario append
|
|
2
2
|
|
|
3
|
+
Pass original text to `--text`; never pre-encode it. The CLI automatically sends `text` as UTF-8 Base64 with `content_encoding=base64`, for both user feedback and answer revisions and for execute, validate and dry-run. Common collects the exact decoded text. Other fields, including `--user-message`, retain their existing representation. Encoding is reversible and is not encryption. Deploy Common support first; old unmarked requests remain accepted by new Common. An older Common rejects the new marker; do not retry or fall back to plain text.
|
|
4
|
+
|
|
3
5
|
Command: `ae-cli analysis scenario append`. Capability: `analysis.scenario.append`. Risk: `write`.
|
|
4
6
|
|
|
5
7
|
## Project opt-in
|
|
@@ -23,3 +25,7 @@ ae-cli analysis scenario append --question-id '<original-question-id>' \
|
|
|
23
25
|
cli_analysis_scenario_entry links by authenticated user + agent_session_id + question_id, and target_answer_id links the actual answer. Entry deduplication uses the same scope plus entry_id. A separate evaluator determines whether the feedback is supported and whether a later revision resolves the original problem. Preserve both versions even if the latest is correct. Collection does not validate historical ID existence; unresolved links must be marked unknown by evaluation, not treated as verified associations.
|
|
24
26
|
|
|
25
27
|
Output contains accepted, question_id, event_name and delivery. On unavailable capability, permission/auth failure or transport failure, continue normal answering; do not login, automatically retry or claim recording. accepted=true with delivery=best_effort is not ingestion proof. An older explicit standalone satisfaction command remains available but do not double-report the same collected-scenario feedback through it.
|
|
28
|
+
|
|
29
|
+
## Answer duration
|
|
30
|
+
|
|
31
|
+
For a substantive follow-up, capture a fresh local `ae-cli analysis scenario begin` when processing that follow-up starts. Pass its exact `data.start_time` as `--start-time` on answer_revision. Keep the original question_id but use the new answer_id. This measures only that answer; do not include time spent waiting for the user or add earlier answer durations. User feedback accepts no start-time or duration_ms. Omit timing when no start marker was captured.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# analysis scenario begin
|
|
2
|
+
|
|
3
|
+
Command: `ae-cli analysis scenario begin`. Risk: `read`. Local clock utility; no Gateway capability or network request.
|
|
4
|
+
|
|
5
|
+
## Input
|
|
6
|
+
|
|
7
|
+
No command-specific flags. Run once when starting this question, before analysis calls. Retain the exact returned `data.start_time` and pass it as `--start-time` to [collect](scenario_collect.md) when the answer is ready, or [append](scenario_append.md) for a new revised answer. No local file or question content is written. Do not call this for historical review or regenerate a missing earlier timestamp.
|
|
8
|
+
|
|
9
|
+
## Output
|
|
10
|
+
|
|
11
|
+
`data.start_time` is a timezone-qualified ISO-8601 timestamp. The collection command computes one duration_ms. It measures this marker to the prepared-answer collection, not unobserved time before the marker or confirmed UI delivery. Missing timing stays unknown. Start a fresh clock for each follow-up answer so user waiting time is excluded.
|
|
@@ -4,12 +4,14 @@ Command: `ae-cli analysis scenario collect`. Capability: `analysis.scenario.coll
|
|
|
4
4
|
|
|
5
5
|
## Project opt-in
|
|
6
6
|
|
|
7
|
-
The source analysis project's `agent_analysis_scenario_collection_enabled` configuration defaults to `off`. Only explicit `on` permits scenario samples. Read its live value through `ae-cli project info get --project-id <id>` (`data.analysis_scenario_collection_enabled`); do not reuse a grant across scenarios or appends. The curated command checks again before sending content, without a persistent cache, and the service rechecks before emitting a sample. Ordinary invocation/intent
|
|
7
|
+
The source analysis project's `agent_analysis_scenario_collection_enabled` configuration defaults to `off`. Only explicit `on` permits scenario samples. Read its live value through `ae-cli project info get --project-id <id>` (`data.analysis_scenario_collection_enabled`); do not reuse a grant across scenarios or appends. The curated command checks again before sending content, without a persistent cache, and the service rechecks before emitting a sample. Ordinary invocation/intent event reporting remains unchanged; the same switch also gates the Common HDFS call archive.
|
|
8
8
|
|
|
9
9
|
The optional `--project-id` flag remains accepted for compatibility, but omission skips collection (`PROJECT_REQUIRED`). Disabled/missing/invalid configuration skips with `PROJECT_COLLECTION_DISABLED`; unavailable configuration skips with `PROJECT_COLLECTION_CONFIG_UNAVAILABLE`. A normal skip has `ok=true`, `accepted=false`, `skipped=true`, and `reason`; no scenario event is emitted. A returned `event_name` identifies the sample type, not proof of emission. Missing policy fields on an older backend are treated as disabled by the new CLI. No force override, automatic configuration writes, retry, historical backfill, or legacy-feedback bypass is permitted. `--validate` and `--dry-run` retain their side-effect-free parameter-checking contracts.
|
|
10
10
|
|
|
11
11
|
Read [append](scenario_append.md) for later user feedback and answer revisions. Both commands support `--validate` and `--dry-run`, which do not emit collection events.
|
|
12
12
|
|
|
13
|
+
Pass the original text to `--answer`; never pre-encode it. The CLI automatically sends `answer` as UTF-8 Base64 with `content_encoding=base64` for execute, validate and dry-run. Common decodes a copy for validation and collection; encoded requests and validation responses retain the wire representation. This is reversible encoding, not encryption. Only `answer` is encoded by collect; other fields retain their existing representation. Deploy Common support before upgrading the CLI. New Common accepts legacy unmarked plain-text requests; older Common rejects the encoding marker, and the CLI never retries with plain text. On rejection, follow the existing collection-failure behavior and answer normally.
|
|
14
|
+
|
|
13
15
|
## Collection only
|
|
14
16
|
|
|
15
17
|
Once a complete scenario answer is ready, collect one sample and deliver the exact captured answer. Keep the original request plus confirmed scope clarifications together in question; do not replace the original goal with the last short user message. Do not self-rate or ask for a rating. Multiple CLI data queries are one sample. Metadata/discovery/help or asset writes alone are not scenarios. An attempted failed query still qualifies when its existing call ID is available. Do not conduct extra queries just for collection.
|
|
@@ -28,8 +30,14 @@ ae-cli analysis scenario collect --question-id '<original-user-turn-id>' \
|
|
|
28
30
|
--project-id 196
|
|
29
31
|
```
|
|
30
32
|
|
|
31
|
-
The cli_analysis_scenario event has collection_source=external_agent and query_path_json containing the ordered references.
|
|
33
|
+
The cli_analysis_scenario event has collection_source=external_agent and query_path_json containing the ordered references. Use scenario get to resolve them against archived cli_gateway_call events using authenticated user/session plus invocation_id or client_request_id; verify capability_id matches and report missing, ambiguous or truncated records. The archive reuses existing gateway telemetry. A path records how the answer was obtained; it does not prove source numbers or overall correctness. A separate task follows [the evaluation guide](scenario_evaluation.md).
|
|
32
34
|
|
|
33
35
|
Existing SDK trackFirst uses authenticated user/session/question as its stable key, independent of answer wording. This is downstream deduplication, not a transactional guarantee. One distinct question_id represents one scenario; revisions and feedback are supplemental entries, not new scenarios. No collection-time good/bad label exists.
|
|
34
36
|
|
|
35
37
|
accepted=true, delivery=best_effort means endpoint acceptance, not confirmed ingestion. Do not automatically retry/login or delay business work if collection is unavailable. Do not claim it was saved on failure. This Skill needs a collection tool call before the final response because an external CLI cannot run after an arbitrary Agent's final response. It does not promise zero latency or token overhead.
|
|
38
|
+
|
|
39
|
+
## One question-to-answer duration
|
|
40
|
+
|
|
41
|
+
At the start of analysis run `ae-cli analysis scenario begin`. It only returns the local clock as `data.start_time`: no server call, file, or question content is written. Retain this exact value and pass `--start-time <value>` to collect when the answer is ready. The CLI computes `duration_ms`; never estimate it with the model or sum command costs. The boundary is the start marker to collection of the prepared answer, not confirmed UI delivery. Earlier time before the marker is not measured. Missing markers must stay missing, including old data; do not substitute zero or backfill timestamps. The timestamp must be valid, not future, and at most 90 days old.
|
|
42
|
+
|
|
43
|
+
New Common accepts legacy collect/append without duration_ms. Deploy the new Common (with the new gateway dependency) before distributing the timing Skill. An older server rejects the new field; do not retry with a modified payload. Answer normally and report collection failure only when needed.
|
|
@@ -8,23 +8,11 @@ Evaluate the original question, confirmed clarifications, final answer and query
|
|
|
8
8
|
|
|
9
9
|
Check whether the path addresses the requested subquestions and whether the answer covers them. A visible scope mismatch, a contradiction within the answer, or an arithmetic error using the answer's own stated operands can demonstrate a specific defect; arithmetic consistency does not prove those operands are true. A failed call does not establish that all other calls failed. A user's objection is a separate signal: preserve and assess it, never automatically treat it as proof of error or dismiss it because the path appears reasonable. When the only way to confirm or refute feedback is missing result data, its support is unknown.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
For
|
|
14
|
-
|
|
15
|
-
```json
|
|
16
|
-
{
|
|
17
|
-
"question_id": "<source id>",
|
|
18
|
-
"answers": [{
|
|
19
|
-
"answer_id": "<source answer id>",
|
|
20
|
-
"verdict": "correct|partial|incorrect|unknown",
|
|
21
|
-
"reason": "Short source-supported explanation",
|
|
22
|
-
"limitations": ["What cannot be verified from available path and call records"],
|
|
23
|
-
"evidence_refs": ["<answer/path-step/call-record/entry IDs or precise source paths>"],
|
|
24
|
-
"user_feedback": [{"entry_id":"<source entry id>","support":"supported|unsupported|unknown","reason":"Source-supported explanation"}]
|
|
25
|
-
}],
|
|
26
|
-
"latest_verdict": "correct|partial|incorrect|unknown"
|
|
27
|
-
}
|
|
28
|
-
```
|
|
11
|
+
Assess answers as correct, incomplete, wrong, or unverifiable internally. A wrong answer requires a demonstrable defect relevant to the scenario. An incomplete answer has a demonstrable substantive omission or unresolved subquestion, even when honestly acknowledged. A correct answer requires adequate support for the actual requested outcome; a plausible path alone cannot establish a numeric analysis answer as correct. Unverifiable means the available path/answer/feedback cannot establish correctness. Do not turn path compliance into an overall success label. A later revision never erases an earlier defect or the original goal. Judge each answer against the confirmed requirements at that point; a newly added requirement is not retroactively an omission.
|
|
12
|
+
|
|
13
|
+
For project archive review, follow [scenario list](scenario_list.md) for pagination, semantic deduplication and compact output. Include wrong and substantively incomplete answers as badcases. For Chinese output, label them "回答有误" and "回答不完整". Every badcase needs a concrete reason integrating the necessary source evidence, such as the contradictory numbers or the requested-but-missing subquestion. Keep answer/entry IDs and feedback-support checks internally for traceability, rather than dumping them into the final answer. Do not output internal verdict codes, a separate evidence list, raw JSON, or the latest/fixed status. Group repeated questions/defects with distinct-scenario occurrence counts. Briefly count unverifiable scenarios separately; never treat them as confirmed badcases or proven correct answers.
|
|
29
14
|
|
|
30
15
|
These are independent model judgments, not certified ground truth. Keep evaluations separate from immutable collection; human review can calibrate them. When samples are supplied as local files, read only those files, supplied call records and this guide, never hidden fixtures, test expectations or the collector's private reasoning.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Use [scenario list and detail](scenario_list.md#answer-duration-and-cli-execution-detail) when inspecting execution evidence. Add the measured question-to-answer duration to the concise review when available; otherwise state it was not collected. Use call evidence to explain a relevant execution error, but do not infer numeric answer correctness from a successful call or treat every transient failed attempt as a badcase. Preserve each occurrence's timing and invocation provenance when grouping.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# analysis scenario get
|
|
2
|
+
|
|
3
|
+
Command: `ae-cli analysis scenario get`. Capability: `analysis.scenario.get`. Risk: `read`.
|
|
4
|
+
|
|
5
|
+
## Input
|
|
6
|
+
|
|
7
|
+
Required `--project-id`, `--open-id`, `--agent-session-id`, `--question-id`: copy the exact identity from a scenario list initial record. Requires project configuration permission, even when open-id names another user. Optional `--days` defaults to 7 (1..90); `--end-time` is the exclusive snapshot boundary. Reuse the list's days, exact end_time and explicit `--host`.
|
|
8
|
+
|
|
9
|
+
## Output
|
|
10
|
+
|
|
11
|
+
Returns `initial`, `entries`, `conflicting_records`, and `call_archive`. Answers include optional duration_ms plus calls and call_summary. See [execution evidence and presentation rules](scenario_list.md#answer-duration-and-cli-execution-detail). Missing or ambiguous references do not mean success. Async submission status and final execution_status are different. Parameters are sanitized and may be truncated; full result rows are not archived.
|
|
12
|
+
|
|
13
|
+
## Errors
|
|
14
|
+
|
|
15
|
+
Missing identity is rejected. SCENARIO_NOT_FOUND means no matching archived scenario in the chosen window, not no activity. Permission, I/O and scan-limit errors must be surfaced. Never switch company/project or use an unrestricted path to bypass a failure. validate/dry-run check input and access without scanning HDFS. This command requires the upgraded Common service; older services may report capability unavailable.
|