eduevidence 5.2.0
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/LICENSE +21 -0
- package/README.md +506 -0
- package/README.zh-CN.md +434 -0
- package/SKILL.md +195 -0
- package/bin/eduevidence.js +127 -0
- package/domains/education/manifest.json +183 -0
- package/domains/education/outcome_taxonomy.json +127 -0
- package/domains/manifest.json +26 -0
- package/domains/policy/frame.schema.json +234 -0
- package/domains/policy/manifest.json +10 -0
- package/domains/policy/methodology_checklist.json +109 -0
- package/domains/policy/outcome_taxonomy.json +53 -0
- package/domains/policy/references/causal-identification.md +45 -0
- package/domains/policy/references/cost-evidence.md +44 -0
- package/domains/policy/references/equity.md +42 -0
- package/domains/policy/references/evidence-hierarchy.md +41 -0
- package/domains/policy/references/implementation-evidence.md +47 -0
- package/eduevidence_cli.py +26 -0
- package/engine/__init__.py +11 -0
- package/engine/__pycache__/__init__.cpython-312.pyc +0 -0
- package/engine/__pycache__/analysis.cpython-312.pyc +0 -0
- package/engine/__pycache__/bias.cpython-312.pyc +0 -0
- package/engine/__pycache__/briefs.cpython-312.pyc +0 -0
- package/engine/__pycache__/capabilities.cpython-312.pyc +0 -0
- package/engine/__pycache__/citation_check.cpython-312.pyc +0 -0
- package/engine/__pycache__/contracts.cpython-312.pyc +0 -0
- package/engine/__pycache__/datasets.cpython-312.pyc +0 -0
- package/engine/__pycache__/events.cpython-312.pyc +0 -0
- package/engine/__pycache__/evidence_graph.cpython-312.pyc +0 -0
- package/engine/__pycache__/evidence_review.cpython-312.pyc +0 -0
- package/engine/__pycache__/evidencecore.cpython-312.pyc +0 -0
- package/engine/__pycache__/gap_lens.cpython-312.pyc +0 -0
- package/engine/__pycache__/gaps.cpython-312.pyc +0 -0
- package/engine/__pycache__/graph_store.cpython-312.pyc +0 -0
- package/engine/__pycache__/graph_validate.cpython-312.pyc +0 -0
- package/engine/__pycache__/ids.cpython-312.pyc +0 -0
- package/engine/__pycache__/library.cpython-312.pyc +0 -0
- package/engine/__pycache__/library_builtin.cpython-312.pyc +0 -0
- package/engine/__pycache__/living.cpython-312.pyc +0 -0
- package/engine/__pycache__/log.cpython-312.pyc +0 -0
- package/engine/__pycache__/meta_analysis.cpython-312.pyc +0 -0
- package/engine/__pycache__/meta_synthesis.cpython-312.pyc +0 -0
- package/engine/__pycache__/migration.cpython-312.pyc +0 -0
- package/engine/__pycache__/mode_router.cpython-312.pyc +0 -0
- package/engine/__pycache__/paths.cpython-312.pyc +0 -0
- package/engine/__pycache__/pilot.cpython-312.pyc +0 -0
- package/engine/__pycache__/planner.cpython-312.pyc +0 -0
- package/engine/__pycache__/project.cpython-312.pyc +0 -0
- package/engine/__pycache__/projections.cpython-312.pyc +0 -0
- package/engine/__pycache__/robustness.cpython-312.pyc +0 -0
- package/engine/__pycache__/run.cpython-312.pyc +0 -0
- package/engine/__pycache__/semantics.cpython-312.pyc +0 -0
- package/engine/__pycache__/study_design.cpython-312.pyc +0 -0
- package/engine/__pycache__/synthesis.cpython-312.pyc +0 -0
- package/engine/__pycache__/tribunal.cpython-312.pyc +0 -0
- package/engine/__pycache__/update.cpython-312.pyc +0 -0
- package/engine/__pycache__/versions.cpython-312.pyc +0 -0
- package/engine/analysis.py +308 -0
- package/engine/bias.py +178 -0
- package/engine/briefs.py +106 -0
- package/engine/capabilities.py +99 -0
- package/engine/citation_check.py +192 -0
- package/engine/contracts.py +117 -0
- package/engine/datasets.py +165 -0
- package/engine/events.py +67 -0
- package/engine/evidence_graph.py +571 -0
- package/engine/evidence_review.py +88 -0
- package/engine/evidencecore.py +182 -0
- package/engine/gap_lens.py +132 -0
- package/engine/gaps.py +169 -0
- package/engine/graph_store.py +335 -0
- package/engine/graph_validate.py +87 -0
- package/engine/ids.py +77 -0
- package/engine/library.py +268 -0
- package/engine/library_builtin.py +301 -0
- package/engine/living.py +671 -0
- package/engine/log.py +39 -0
- package/engine/meta_analysis.py +333 -0
- package/engine/meta_synthesis.py +111 -0
- package/engine/migration.py +397 -0
- package/engine/mode_router.py +72 -0
- package/engine/paths.py +15 -0
- package/engine/pilot.py +368 -0
- package/engine/planner.py +126 -0
- package/engine/project.py +118 -0
- package/engine/projections.py +240 -0
- package/engine/robustness.py +109 -0
- package/engine/run.py +85 -0
- package/engine/semantics.py +135 -0
- package/engine/study_design.py +87 -0
- package/engine/synthesis.py +187 -0
- package/engine/tribunal.py +408 -0
- package/engine/update.py +113 -0
- package/engine/versions.py +12 -0
- package/install.sh +510 -0
- package/integrations/__init__.py +1 -0
- package/integrations/__pycache__/__init__.cpython-312.pyc +0 -0
- package/integrations/__pycache__/agent_mcp.cpython-312.pyc +0 -0
- package/integrations/__pycache__/smart_web_fetch.cpython-312.pyc +0 -0
- package/integrations/agent_mcp.py +856 -0
- package/integrations/smart_web_fetch.py +59 -0
- package/package.json +50 -0
- package/pyproject.toml +55 -0
- package/references/applicability-policy.md +88 -0
- package/references/education-framing.md +132 -0
- package/references/effect_size_formulas.md +35 -0
- package/references/evaluation-design.md +111 -0
- package/references/evidence-quality.md +79 -0
- package/references/grade_framework.md +29 -0
- package/references/intervention-design.md +98 -0
- package/references/methodology-audit.md +103 -0
- package/references/outcome-taxonomy.md +106 -0
- package/references/retrieval-protocol.md +142 -0
- package/references/skeptic-protocol.md +93 -0
- package/references/social_science_pitfalls.md +48 -0
- package/references/source-validity.md +140 -0
- package/references/tribunal-policy.md +112 -0
- package/references/wwc_standards.md +29 -0
- package/retrieval/__init__.py +1 -0
- package/retrieval/__pycache__/__init__.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/corpus_store.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/dedupe.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/failures.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/fetch.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/search.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/source.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/validate.cpython-312.pyc +0 -0
- package/retrieval/corpus_store.py +181 -0
- package/retrieval/dedupe.py +127 -0
- package/retrieval/failures.py +90 -0
- package/retrieval/fetch.py +435 -0
- package/retrieval/search.py +493 -0
- package/retrieval/source.py +160 -0
- package/retrieval/validate.py +257 -0
- package/schemas/agent-mcp-approval.schema.json +57 -0
- package/schemas/chart-spec.schema.json +88 -0
- package/schemas/cross-model-review.schema.json +28 -0
- package/schemas/education-frame.schema.json +106 -0
- package/schemas/evaluation.schema.json +35 -0
- package/schemas/evidence.schema.json +81 -0
- package/schemas/fetch-result.schema.json +119 -0
- package/schemas/intervention.schema.json +46 -0
- package/schemas/methodology.schema.json +102 -0
- package/schemas/report-result.schema.json +381 -0
- package/schemas/report-spec.schema.json +130 -0
- package/schemas/source.schema.json +311 -0
- package/schemas/v2/analysis-plan.schema.json +28 -0
- package/schemas/v2/analysis-run.schema.json +33 -0
- package/schemas/v2/claim.schema.json +26 -0
- package/schemas/v2/dataset-asset.schema.json +40 -0
- package/schemas/v2/decision-snapshot.schema.json +53 -0
- package/schemas/v2/evidence-link.schema.json +38 -0
- package/schemas/v2/finding.schema.json +47 -0
- package/schemas/v2/graph-revision.schema.json +30 -0
- package/schemas/v2/knowledge-gap.schema.json +40 -0
- package/schemas/v2/methodology-audit.schema.json +30 -0
- package/schemas/v2/outcome.schema.json +18 -0
- package/schemas/v2/project.schema.json +31 -0
- package/schemas/v2/research-intent.schema.json +24 -0
- package/schemas/v2/run.schema.json +43 -0
- package/schemas/v2/source.schema.json +24 -0
- package/schemas/v2/study-design.schema.json +67 -0
- package/schemas/v2/study.schema.json +37 -0
- package/schemas/v3/pilot-outcome.schema.json +132 -0
- package/schemas/v3/run-manifest.schema.json +193 -0
- package/schemas/v3/synthesis.schema.json +86 -0
- package/schemas/v4/drift-report.schema.json +66 -0
- package/schemas/v4/evidence-library.schema.json +42 -0
- package/schemas/v4/living-subscription.schema.json +55 -0
- package/schemas/v4/meta-analysis.schema.json +152 -0
- package/schemas/verdict.schema.json +56 -0
- package/scripts/__init__.py +0 -0
- package/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_evaluator.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_judge.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_routing.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_v2.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_v3.cpython-312.pyc +0 -0
- package/scripts/__pycache__/build_result.cpython-312.pyc +0 -0
- package/scripts/__pycache__/claim_audit.cpython-312.pyc +0 -0
- package/scripts/__pycache__/complexity_gate.cpython-312.pyc +0 -0
- package/scripts/__pycache__/compute_confidence.cpython-312.pyc +0 -0
- package/scripts/__pycache__/dashboard_server.cpython-312.pyc +0 -0
- package/scripts/__pycache__/did_regression.cpython-312.pyc +0 -0
- package/scripts/__pycache__/effect_calculator.cpython-312.pyc +0 -0
- package/scripts/__pycache__/evidence_matrix.cpython-312.pyc +0 -0
- package/scripts/__pycache__/evidence_score.cpython-312.pyc +0 -0
- package/scripts/__pycache__/evidence_semantics.cpython-312.pyc +0 -0
- package/scripts/__pycache__/fetch_benchmark.cpython-312.pyc +0 -0
- package/scripts/__pycache__/lint_report_layout.cpython-312.pyc +0 -0
- package/scripts/__pycache__/orchestrator.cpython-312.pyc +0 -0
- package/scripts/__pycache__/pre_verdict_gate.cpython-312.pyc +0 -0
- package/scripts/__pycache__/recompute_demo_quality.cpython-312.pyc +0 -0
- package/scripts/__pycache__/render_report.cpython-312.pyc +0 -0
- package/scripts/__pycache__/render_report_html.cpython-312.pyc +0 -0
- package/scripts/__pycache__/run_workspace.cpython-312.pyc +0 -0
- package/scripts/__pycache__/skill_lint.cpython-312.pyc +0 -0
- package/scripts/__pycache__/startup_probe.cpython-312.pyc +0 -0
- package/scripts/__pycache__/sync_killer_demo_report.cpython-312.pyc +0 -0
- package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.0.2.pyc +0 -0
- package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.1.1.pyc +0 -0
- package/scripts/__pycache__/validate_schema.cpython-312.pyc +0 -0
- package/scripts/audit_dois.py +292 -0
- package/scripts/bake_pack.sh +37 -0
- package/scripts/benchmark.py +183 -0
- package/scripts/benchmark_evaluator.py +371 -0
- package/scripts/benchmark_judge.py +535 -0
- package/scripts/benchmark_routing.py +120 -0
- package/scripts/benchmark_v2.py +304 -0
- package/scripts/benchmark_v3.py +552 -0
- package/scripts/build_esl_artifacts.py +1921 -0
- package/scripts/build_evidence_library.py +307 -0
- package/scripts/build_killer_demo.py +295 -0
- package/scripts/build_result.py +311 -0
- package/scripts/check_version_consistency.py +96 -0
- package/scripts/citation_check.py +123 -0
- package/scripts/claim_audit.py +157 -0
- package/scripts/complexity_gate.py +180 -0
- package/scripts/compute_confidence.py +176 -0
- package/scripts/dashboard_server.py +536 -0
- package/scripts/did_regression.py +315 -0
- package/scripts/effect_calculator.py +99 -0
- package/scripts/enrich_projects_human_and_lieflat.py +315 -0
- package/scripts/evidence_matrix.py +129 -0
- package/scripts/evidence_score.py +234 -0
- package/scripts/evidence_semantics.py +87 -0
- package/scripts/fetch_benchmark.py +177 -0
- package/scripts/generate_metrics.py +99 -0
- package/scripts/generate_new_projects.py +686 -0
- package/scripts/generate_promo.py +192 -0
- package/scripts/lint_report_layout.py +182 -0
- package/scripts/orchestrator.py +1456 -0
- package/scripts/pre_verdict_gate.py +513 -0
- package/scripts/quickstart.py +121 -0
- package/scripts/rebake_all_5themes.py +88 -0
- package/scripts/recompute_demo_quality.py +205 -0
- package/scripts/render_report.py +270 -0
- package/scripts/render_report_html.py +356 -0
- package/scripts/retraction_watch.py +110 -0
- package/scripts/run_workspace.py +337 -0
- package/scripts/serve_web.py +54 -0
- package/scripts/skill_lint.py +150 -0
- package/scripts/startup_probe.py +265 -0
- package/scripts/sync_killer_demo_report.py +270 -0
- package/scripts/test_adversarial_empirical.py +541 -0
- package/scripts/validate_schema.py +256 -0
- package/skill/agents/education-planner.md +80 -0
- package/skill/agents/evaluation-designer.md +74 -0
- package/skill/agents/evidence-analyst.md +106 -0
- package/skill/agents/evidence-judge.md +111 -0
- package/skill/agents/evidence-retriever.md +80 -0
- package/skill/agents/intervention-designer.md +82 -0
- package/skill/agents/method-reviewer.md +104 -0
- package/skill/agents/skeptic.md +89 -0
- package/skill/sub-skills/aihot-trend-analysis/SKILL.md +31 -0
- package/skill/sub-skills/contradiction-analysis/SKILL.md +17 -0
- package/skill/sub-skills/data-analysis/SKILL.md +23 -0
- package/skill/sub-skills/ethics-review/SKILL.md +25 -0
- package/skill/sub-skills/evidence-extraction/SKILL.md +19 -0
- package/skill/sub-skills/evidence-review/SKILL.md +18 -0
- package/skill/sub-skills/gap-analysis/SKILL.md +25 -0
- package/skill/sub-skills/literature-review/SKILL.md +21 -0
- package/skill/sub-skills/methodology-audit/SKILL.md +20 -0
- package/skill/sub-skills/report-generation/SKILL.md +51 -0
- package/skill/sub-skills/research-planning/SKILL.md +21 -0
- package/skill/sub-skills/study-design/SKILL.md +16 -0
- package/skill/task-briefs/adjudicate.md +17 -0
- package/skill/task-briefs/audit.md +15 -0
- package/skill/task-briefs/challenge.md +15 -0
- package/skill/task-briefs/evaluate.md +13 -0
- package/skill/task-briefs/extract.md +16 -0
- package/skill/task-briefs/frame.md +17 -0
- package/skill/task-briefs/intervene.md +14 -0
- package/skill/task-briefs/present.md +16 -0
- package/skill/task-briefs/retrieve.md +15 -0
- package/visualization/eduevidence-report/assets/base.css +337 -0
- package/visualization/eduevidence-report/motion/motion.css +157 -0
- package/visualization/eduevidence-report/motion/motion.js +107 -0
- package/visualization/eduevidence-report/references/bilingual-style.md +7 -0
- package/visualization/eduevidence-report/references/component-catalog.md +145 -0
- package/visualization/eduevidence-report/references/evidence-expansion.md +65 -0
- package/visualization/eduevidence-report/references/full-report-outline.md +86 -0
- package/visualization/eduevidence-report/references/layout-constraints.md +63 -0
- package/visualization/eduevidence-report/references/lieflat-composition.md +79 -0
- package/visualization/eduevidence-report/references/motion-system.md +31 -0
- package/visualization/eduevidence-report/schemas/adapter-envelope.schema.json +22 -0
- package/visualization/eduevidence-report/schemas/visual-layout.schema.json +87 -0
- package/visualization/eduevidence-report/scripts/__pycache__/adapter_contract.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_artifact_manifest.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_charts.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_figures.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_infographics.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_report.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/charts_data.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/lieflat_engine.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/zh_labels.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/adapter_contract.py +72 -0
- package/visualization/eduevidence-report/scripts/build_artifact_manifest.py +70 -0
- package/visualization/eduevidence-report/scripts/build_charts.py +283 -0
- package/visualization/eduevidence-report/scripts/build_figures.py +515 -0
- package/visualization/eduevidence-report/scripts/build_infographics.py +268 -0
- package/visualization/eduevidence-report/scripts/build_report.py +3211 -0
- package/visualization/eduevidence-report/scripts/charts_data.py +617 -0
- package/visualization/eduevidence-report/scripts/check_mobile_layout.js +220 -0
- package/visualization/eduevidence-report/scripts/lieflat_engine.py +852 -0
- package/visualization/eduevidence-report/scripts/zh_labels.py +245 -0
- package/visualization/eduevidence-report/themes/academic.css +94 -0
- package/visualization/eduevidence-report/themes/claude.css +96 -0
- package/visualization/eduevidence-report/themes/datalab-dark.css +147 -0
- package/visualization/eduevidence-report/themes/datalab.css +151 -0
- package/visualization/eduevidence-report/themes/presentation.css +140 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: study-design
|
|
3
|
+
description: "Generates pre-registered quasi-experimental DID and RCT trial designs to fill identified knowledge gaps."
|
|
4
|
+
---
|
|
5
|
+
# Study Design Skill
|
|
6
|
+
|
|
7
|
+
## 1. When to Use
|
|
8
|
+
Trigger automatically when Evidence Graph yields MIXED, UNCERTAIN, or INSUFFICIENT verdicts, converting knowledge gaps into actionable empirical protocols.
|
|
9
|
+
|
|
10
|
+
## 2. Process
|
|
11
|
+
1. **12-Week Trial Specification**:
|
|
12
|
+
- Sampling frame, cluster randomization / matched control classrooms.
|
|
13
|
+
- 4-phase rollout: Baseline pre-test (W1), Treatment exposure (W2-W9), Immediate post-test (W10), 4-week delayed transfer test (W14).
|
|
14
|
+
2. **Pre-Registration Manifest**:
|
|
15
|
+
- Statistical power calculation (N > 120 for power >= 0.80 at effect size g = 0.35).
|
|
16
|
+
- Primary/secondary outcome instruments, stopping rules, and pre-specified regression model.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Task Brief — stage: adjudicate(角色:evidence-judge)
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
整合 Frame + Evidence Matrix + Skeptic Findings + Method Reviews,产出四态裁决
|
|
5
|
+
(ADOPT/PILOT/REJECT/INSUFFICIENT EVIDENCE)+ Can/Cannot Claim + 证据边界。
|
|
6
|
+
|
|
7
|
+
## 输入
|
|
8
|
+
- frame.json、evidence.jsonl、skeptic.json、methodology.json
|
|
9
|
+
|
|
10
|
+
## 产出
|
|
11
|
+
- raw_verdict.json(模型裁决)→ orchestrator 跑 Pre-Verdict Gate + 确定性置信度
|
|
12
|
+
→ final_verdict.json(schemas/verdict.schema.json)。
|
|
13
|
+
|
|
14
|
+
## 规则(人话化硬标准,第一页决策语言)
|
|
15
|
+
- decision_rationale 必须为 ≤4 句面向读者的流畅散文(en/zh 分写);
|
|
16
|
+
- 禁证据 ID 列表(E-xxx/EV-xxx)、禁 schema 键(overall_risk= 等)、禁截断残留(null);
|
|
17
|
+
- what_can/cannot_be_claimed 等列表同样人话化;统计数字可保留但以自然表达呈现。
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Task Brief — stage: audit(角色:method-reviewer)
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
按审计清单审查每个研究的方法学质量,强制执行"任务完成表现 ≠ 学习效果"最高优先级规则。
|
|
5
|
+
|
|
6
|
+
## 输入
|
|
7
|
+
- evidence.jsonl + 来源 fetch 内容
|
|
8
|
+
|
|
9
|
+
## 产出
|
|
10
|
+
- methodology.json:audit_items(含 task_vs_learning_guard)+ 每条 PASS/CONCERN/FAIL verdict
|
|
11
|
+
(显示层经 zh_labels 映射中文)。
|
|
12
|
+
|
|
13
|
+
## 规则
|
|
14
|
+
- 只审"证据站不站得住",不审"证据说什么";审计说明(note/summary)为人话叙述,
|
|
15
|
+
枚举/代号(PASS/CONCERN/FAIL)只作标签。
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Task Brief — stage: challenge(角色:skeptic)
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
主动寻找、验证并记录 null/negative/contradictory evidence、AI dependency、reduced transfer、
|
|
5
|
+
novelty effect、alternative explanation;禁止虚构反方证据;没有反方证据时输出
|
|
6
|
+
NO CONTRADICTORY EVIDENCE FOUND。
|
|
7
|
+
|
|
8
|
+
## 输入
|
|
9
|
+
- evidence.jsonl
|
|
10
|
+
|
|
11
|
+
## 产出
|
|
12
|
+
- skeptic.json:search_performed=true;findings(counter_evidence/null_results/confounders)。
|
|
13
|
+
|
|
14
|
+
## 规则(人话化硬标准)
|
|
15
|
+
- 叙述字段为面向研究者的流畅中文;禁证据 ID 堆砌(用"作者-年份 + 人话描述"替代)。
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Task Brief — stage: evaluate(角色:evaluation-designer)
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
为 PILOT/ADOPT 配套评价方案:基线/后测/保持/迁移 + 过程/学习/风险指标 + 成功阈值与停止条件。
|
|
5
|
+
|
|
6
|
+
## 输入
|
|
7
|
+
- intervention.json + final_verdict.json
|
|
8
|
+
|
|
9
|
+
## 产出
|
|
10
|
+
- evaluation.json(schemas/evaluation.schema.json)。
|
|
11
|
+
|
|
12
|
+
## 规则
|
|
13
|
+
- 分离 Task Performance 与 Learning Effect;叙述为人话。
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Task Brief — stage: extract(角色:evidence-analyst)
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
从校验通过的来源中抽取 Claim 级证据对象,执行 Outcome Separation;只结构化,不裁决。
|
|
5
|
+
|
|
6
|
+
## 输入
|
|
7
|
+
- sources.jsonl + fetch/ 全文内容
|
|
8
|
+
|
|
9
|
+
## 产出
|
|
10
|
+
- evidence.jsonl:每行一个 Evidence Object(evidence_id/source_id/claim/outcome_type/
|
|
11
|
+
effect_direction/relation_to_claim/source_location/quality_score),须通过
|
|
12
|
+
schemas/evidence.schema.json 校验。
|
|
13
|
+
|
|
14
|
+
## 规则
|
|
15
|
+
- 任务表现 ≠ 学习效果:outcome 分类不得混用。
|
|
16
|
+
- claim 文本用可读人话,禁止把内部字段名写进叙述。
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Task Brief — stage: frame(角色:education-planner)
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
把原始教育问题结构化为主 Question / Learner / Intervention / Comparison / Outcome / Context 的完整
|
|
5
|
+
Education Research Frame;框架完整前禁止生成任何教学建议。
|
|
6
|
+
|
|
7
|
+
## 输入
|
|
8
|
+
- 用户原始问题(run manifest → question)
|
|
9
|
+
|
|
10
|
+
## 产出(写入本 run workspace)
|
|
11
|
+
- frame.json,须通过 schemas/education-frame.schema.json 校验
|
|
12
|
+
- 字段:question / decision_target / learner / course / intervention / comparison /
|
|
13
|
+
outcomes(primary/secondary)/ context / scope / inclusion_criteria / exclusion_criteria / success_condition
|
|
14
|
+
|
|
15
|
+
## 规则
|
|
16
|
+
- 语言:面向"阅读证据档案的人"(研究者/决策者),中文叙述通顺,禁内部字段名碎语。
|
|
17
|
+
- 复杂度门:随 frame 输出建议 S/M/L(由 scripts/complexity_gate.py 复核)。
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Task Brief — stage: intervene(角色:intervention-designer)
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
把 Verdict 转化为最小可验证试点(阶段化使用规则、护栏、停止条件、证据对齐);禁止直接推荐全面部署。
|
|
5
|
+
|
|
6
|
+
## 输入
|
|
7
|
+
- final_verdict.json + frame.json
|
|
8
|
+
|
|
9
|
+
## 产出
|
|
10
|
+
- intervention.json(schemas/intervention.schema.json):phases/ai_usage_policy/
|
|
11
|
+
stop_conditions/evidence_alignment。
|
|
12
|
+
|
|
13
|
+
## 规则
|
|
14
|
+
- 叙述为人话;枚举/代号只作标签。
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Task Brief — stage: present(角色:report-generation)
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
汇总 result.json → result.zh.json(语义对齐、非机翻、数字/ID/枚举/URL 不变),并经
|
|
5
|
+
visualization/eduevidence-report/scripts/build_report.py 烘焙双语报告
|
|
6
|
+
(主题生成时五选一,最终 HTML 只保留中英文切换)。
|
|
7
|
+
|
|
8
|
+
## 输入
|
|
9
|
+
- result.json + result.zh.json(叙述字段必须先过语言门禁 check_language_parallel)
|
|
10
|
+
|
|
11
|
+
## 产出
|
|
12
|
+
- EduEvidence_Report.html / reports-5themes/*.html + report_spec.json + artifact_manifest.json
|
|
13
|
+
|
|
14
|
+
## 规则
|
|
15
|
+
- 语言门禁:叙述字段人话化(禁 E-xxx 堆砌/schema 键/null 残留/中英交叉污染);
|
|
16
|
+
表格/ID/URL/枚举保留可追溯性。
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Task Brief — stage: retrieve(角色:evidence-retriever)
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
按 Frame 的 scope 与 inclusion criteria 检索支持证据与独立反方证据;只检索,不下结论。
|
|
5
|
+
Fetch/Validate 是 Retrieve 内部强制 gate(RULE 2:snippet ≠ 证据内容)。
|
|
6
|
+
|
|
7
|
+
## 输入
|
|
8
|
+
- frame.json(检索边界、纳排标准)
|
|
9
|
+
|
|
10
|
+
## 产出
|
|
11
|
+
- sources.jsonl:每行一个 Source Object(source_id/title/canonical_url/authority_level),
|
|
12
|
+
经 retrieval/validate.py 校验;抓取内容存 fetch/(raw + clean + provenance + fallback_chain)。
|
|
13
|
+
|
|
14
|
+
## 规则
|
|
15
|
+
- 来源权威等级可验证(DOI/期刊/机构),禁止编造 canonical URL;检索记录真实来源。
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
/* EduEvidence base stylesheet — extracted verbatim from build_report.py
|
|
2
|
+
(plan E2: templates/styles live outside the renderer; loaded at build time). */
|
|
3
|
+
:root {
|
|
4
|
+
--bg:#F7F4ED; --surface:#FFFFFF; --surface2:#FCFAF6;
|
|
5
|
+
--text:#3A3833; --primary:#B8694A; --support:#5E8A6A;
|
|
6
|
+
--contradict:#A85B53; --uncertain:#C99A4A; --insufficient:#8A867E;
|
|
7
|
+
--border:#E5DFD3; --radius:10px; --shadow:0 1px 3px rgba(60,56,48,.08);
|
|
8
|
+
--font-head:'Georgia','Songti SC','Noto Serif CJK SC',serif;
|
|
9
|
+
--font-ui:'Helvetica Neue','PingFang SC','Noto Sans CJK SC',Arial,sans-serif;
|
|
10
|
+
}
|
|
11
|
+
* { box-sizing:border-box; }
|
|
12
|
+
html, body { max-width:100%; overflow-x:hidden; }
|
|
13
|
+
body { margin:0; background:var(--bg); color:var(--text);
|
|
14
|
+
font-family:var(--font-ui); line-height:1.65;
|
|
15
|
+
font-variant-numeric:tabular-nums; }
|
|
16
|
+
.report-shell { width:100%; max-width:1200px; margin:0 auto; padding:24px clamp(18px,3vw,32px) 80px; }
|
|
17
|
+
.controls { width:calc(100% - 36px); max-width:1200px; margin:0 auto 16px; padding:12px clamp(0px,1vw,12px); display:flex; gap:18px; flex-wrap:wrap; align-items:center;
|
|
18
|
+
border-bottom:1px solid var(--border); }
|
|
19
|
+
.report-header { border-bottom:1px solid var(--border); padding-bottom:16px; margin-bottom:24px; }
|
|
20
|
+
.report-header h1 { font-family:var(--font-head); font-size:1.9rem; margin:0 0 8px; color:var(--text); }
|
|
21
|
+
.report-header .meta { color:var(--insufficient); font-size:.85rem; }
|
|
22
|
+
.lang-switcher { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
|
|
23
|
+
.lang-switcher span { font-size:.82rem; color:var(--insufficient); }
|
|
24
|
+
.lang-btn { background:var(--surface); border:1px solid var(--border); border-radius:999px;
|
|
25
|
+
padding:4px 12px; font-size:.8rem; cursor:pointer; color:var(--text); }
|
|
26
|
+
.lang-btn.active { background:var(--primary); color:#fff; border-color:var(--primary); }
|
|
27
|
+
.report-section { background:var(--surface); border:1px solid var(--border);
|
|
28
|
+
border-radius:var(--radius); box-shadow:var(--shadow);
|
|
29
|
+
padding:20px 24px; margin-bottom:20px; }
|
|
30
|
+
.report-section h2 { font-family:var(--font-head); font-size:1.25rem; margin:0 0 6px;
|
|
31
|
+
border-bottom:1px solid var(--border); padding-bottom:8px; }
|
|
32
|
+
.section-lead { font-size:.88rem; color:var(--insufficient); margin:0 0 14px;
|
|
33
|
+
background:var(--surface2); border-radius:6px; padding:8px 12px;
|
|
34
|
+
border-left:3px solid var(--primary); }
|
|
35
|
+
.report-section h3 { font-size:.95rem; margin:14px 0 6px; }
|
|
36
|
+
.decision-card { padding:18px 20px; border-radius:10px;
|
|
37
|
+
border-left:6px solid var(--insufficient); background:var(--surface2);
|
|
38
|
+
box-shadow:var(--shadow); }
|
|
39
|
+
.decision-card.adopt { border-left-color:var(--support); }
|
|
40
|
+
.decision-card.pilot { border-left-color:var(--uncertain); }
|
|
41
|
+
.decision-card.reject { border-left-color:var(--contradict); }
|
|
42
|
+
.kpi-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px 18px; }
|
|
43
|
+
.kpi-label { display:block; font-size:.72rem; color:var(--insufficient); text-transform:uppercase; letter-spacing:.05em; margin-bottom:2px; }
|
|
44
|
+
.kpi-value { font-size:1.05rem; font-weight:600; }
|
|
45
|
+
.decision-value { font-family:var(--font-head); font-size:1.5rem; font-weight:700; }
|
|
46
|
+
.confidence-badge { background:var(--uncertain); color:#fff; border-radius:999px; padding:3px 12px; font-size:.82rem; }
|
|
47
|
+
.rationale { color:var(--text); font-size:.92rem; margin-top:12px; border-top:1px dashed var(--border);
|
|
48
|
+
padding-top:10px; }
|
|
49
|
+
.exec-summary { background:var(--surface2); border:1px solid var(--border);
|
|
50
|
+
border-radius:10px; padding:16px 20px; margin-bottom:18px; }
|
|
51
|
+
.exec-summary h3 { margin:0 0 10px; color:var(--primary); }
|
|
52
|
+
.summary-row { display:flex; gap:12px; margin:8px 0; }
|
|
53
|
+
.summary-k { flex:0 0 64px; font-weight:700; color:var(--insufficient); font-size:.88rem; }
|
|
54
|
+
.summary-v { flex:1; font-size:.95rem; }
|
|
55
|
+
.summary-list { margin:4px 0 0; padding-left:18px; }
|
|
56
|
+
.summary-tag { display:inline-block; border-radius:999px; padding:0 10px; font-size:.75rem; color:#fff; }
|
|
57
|
+
.summary-tag.pos { background:var(--support); }
|
|
58
|
+
.summary-tag.neg { background:var(--contradict); }
|
|
59
|
+
ul.can li { border-left:3px solid var(--support); }
|
|
60
|
+
ul.uncertain li { border-left:3px solid var(--uncertain); }
|
|
61
|
+
ul.cannot li { border-left:3px solid var(--contradict); }
|
|
62
|
+
ul.can li, ul.uncertain li, ul.cannot li { list-style:none; margin:6px 0; padding:6px 10px;
|
|
63
|
+
background:var(--surface2); border-radius:6px; font-size:.9rem; }
|
|
64
|
+
.report-section svg { max-width:100%; height:auto; border:1px solid var(--border);
|
|
65
|
+
border-radius:var(--radius-sm); background:#fff; }
|
|
66
|
+
.table-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--border);
|
|
67
|
+
border-radius:var(--radius-sm); max-width:100%; }
|
|
68
|
+
.table-wrap .data-table { border:none; }
|
|
69
|
+
.data-table { width:100%; border-collapse:collapse; font-size:.88rem; }
|
|
70
|
+
.table-wrap .data-table th { background:var(--surface2); position:sticky; top:0; white-space:nowrap; }
|
|
71
|
+
.data-table th, .data-table td { border:1px solid var(--border); padding:7px 10px; text-align:left;
|
|
72
|
+
vertical-align:top; }
|
|
73
|
+
.data-table th { background:var(--surface2); white-space:nowrap; }
|
|
74
|
+
.data-table td.cell-main { max-width:280px; overflow:hidden; text-overflow:ellipsis;
|
|
75
|
+
white-space:nowrap; }
|
|
76
|
+
.data-table tbody tr:nth-child(even) { background:var(--surface2); }
|
|
77
|
+
.data-table tbody tr:hover { background:var(--primary-soft, #F3E4DC); }
|
|
78
|
+
.cite-badge { display:inline-block; margin-left:6px; padding:1px 7px; border-radius:999px; font-size:.66rem; border:1px solid var(--border); vertical-align:middle; }
|
|
79
|
+
.cite-badge.cite-ok { color:#166534; border-color:#16a34a55; background:rgba(22,163,74,.08); }
|
|
80
|
+
.cite-badge.cite-retracted { color:#991b1b; border-color:#dc262688; background:rgba(220,38,38,.10); font-weight:700; }
|
|
81
|
+
.raw-tag { display:inline-block; margin-left:6px; font-size:.68rem; color:var(--insufficient);
|
|
82
|
+
background:var(--surface2); border:1px solid var(--border); border-radius:4px;
|
|
83
|
+
padding:0 5px; vertical-align:1px; font-family:'SF Mono',Menlo,monospace; }
|
|
84
|
+
.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
|
|
85
|
+
.dir { display:inline-block; border-radius:999px; padding:1px 9px; font-size:.78rem; }
|
|
86
|
+
.dir.pos { background:var(--support); color:#fff; }
|
|
87
|
+
.dir.neg { background:var(--contradict); color:#fff; }
|
|
88
|
+
.dir.neu { background:var(--uncertain); color:#fff; }
|
|
89
|
+
.method-verdict { font-weight:700; }
|
|
90
|
+
.phase { border-left:3px solid var(--primary); padding:4px 0 4px 14px; margin:12px 0;
|
|
91
|
+
background:var(--surface2); border-radius:6px; }
|
|
92
|
+
.phase h3 { margin-top:4px; }
|
|
93
|
+
.conflict-card { border-left:3px solid var(--contradict); background:var(--surface2);
|
|
94
|
+
padding:10px 14px; margin:8px 0; border-radius:6px; }
|
|
95
|
+
.trace-row { margin:2px 0; font-size:.88rem; }
|
|
96
|
+
.trace-decision { font-weight:700; padding:4px 0; }
|
|
97
|
+
.trace-claim { margin-left:16px; padding:3px 0; }
|
|
98
|
+
.trace-evidence { margin-left:36px; color:var(--text); padding:2px 0; }
|
|
99
|
+
.chart-mount { display:none; width:100%; height:320px; margin-top:10px; }
|
|
100
|
+
.chart-mount.is-mounted { display:block; }
|
|
101
|
+
.chart-summary { color:var(--insufficient); font-size:.85rem; }
|
|
102
|
+
.academic-figure { margin:14px 0; }
|
|
103
|
+
.academic-figure svg { max-width:100%; height:auto; }
|
|
104
|
+
.academic-figure figcaption { font-size:.82rem; color:var(--insufficient); margin-top:6px; }
|
|
105
|
+
.matrix-tools { display:flex; gap:10px; flex-wrap:wrap; margin:8px 0; }
|
|
106
|
+
.matrix-tools input, .matrix-tools select { padding:5px 10px; font-size:.85rem;
|
|
107
|
+
border:1px solid var(--border); border-radius:6px; background:var(--surface); color:var(--text); }
|
|
108
|
+
.matrix-controls summary { cursor:pointer; color:var(--primary); font-size:.88rem; }
|
|
109
|
+
details.matrix-controls { margin-bottom:8px; }
|
|
110
|
+
code { font-family:'SF Mono',Menlo,monospace; font-size:.82em; background:var(--surface2);
|
|
111
|
+
padding:1px 4px; border-radius:4px; }
|
|
112
|
+
a { color:var(--primary); word-break:break-word; }
|
|
113
|
+
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, summary:focus-visible {
|
|
114
|
+
outline:3px solid color-mix(in srgb, var(--primary) 45%, transparent); outline-offset:3px;
|
|
115
|
+
}
|
|
116
|
+
.generated-theme { font-size:.76rem; letter-spacing:.08em; text-transform:uppercase; color:var(--insufficient); margin-right:auto; }
|
|
117
|
+
.report-section { margin-bottom:clamp(28px,4vw,58px); }
|
|
118
|
+
.section-narrative { width:100%; max-width:820px; margin-left:auto; margin-right:auto; }
|
|
119
|
+
.section-data { width:100%; max-width:1180px; margin-left:auto; margin-right:auto; }
|
|
120
|
+
.section-decision { width:100%; max-width:1040px; margin-left:auto; margin-right:auto; }
|
|
121
|
+
.decision-hero { position:relative; overflow:hidden; padding:clamp(22px,4vw,42px); border:1px solid var(--border);
|
|
122
|
+
border-radius:calc(var(--radius) + 4px); background:var(--surface2); }
|
|
123
|
+
.hero-decision { display:flex; gap:12px 18px; flex-wrap:wrap; align-items:center; margin-bottom:18px; }
|
|
124
|
+
.eyebrow, .hero-insight>span, .action-node>span { display:block; font-size:.72rem; font-weight:700; letter-spacing:.08em;
|
|
125
|
+
text-transform:uppercase; color:var(--insufficient); }
|
|
126
|
+
.hero-rationale { max-width:860px; font-family:var(--font-head); font-size:clamp(1.05rem,2vw,1.35rem); line-height:1.5; margin:0 0 28px; }
|
|
127
|
+
.hero-insights { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
|
|
128
|
+
.hero-insight { min-height:112px; padding:16px 18px; border-top:2px solid var(--border); background:var(--surface); }
|
|
129
|
+
.hero-insight.support { border-top-color:var(--support); } .hero-insight.uncertain { border-top-color:var(--uncertain); }
|
|
130
|
+
.hero-insight.risk { border-top-color:var(--contradict); } .hero-insight.next { border-top-color:var(--primary); }
|
|
131
|
+
.hero-insight p { margin:7px 0 0; font-size:.94rem; }
|
|
132
|
+
.hero-provenance { margin:18px 0 0; color:var(--insufficient); font-size:.82rem; }
|
|
133
|
+
.visual-heading { max-width:760px; margin-bottom:18px; } .visual-heading h3 { font-size:1.15rem; margin-bottom:6px; }
|
|
134
|
+
.visual-heading p { color:var(--insufficient); margin:0; }
|
|
135
|
+
.outcome-separation { margin:10px 0 24px; }
|
|
136
|
+
.outcome-groups { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr)); gap:14px; }
|
|
137
|
+
.outcome-group { padding:16px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); }
|
|
138
|
+
.outcome-group h3 { margin:0 0 10px; } .outcome-group ul { list-style:none; margin:0; padding:0; }
|
|
139
|
+
.outcome-group li { display:flex; flex-direction:column; gap:7px; padding:9px 0; border-top:1px solid var(--border); }
|
|
140
|
+
.outcome-group li:first-child { border-top:0; } .outcome-states { display:flex; gap:6px; flex-wrap:wrap; }
|
|
141
|
+
.visual-surface { margin:22px 0; padding:16px; border:1px solid var(--border); background:var(--surface2); border-radius:var(--radius); }
|
|
142
|
+
.matrix-controls { margin:0 0 12px; } .matrix-tools { align-items:center; }
|
|
143
|
+
.matrix-tools input { min-width:min(360px,100%); flex:1; }
|
|
144
|
+
.evidence-matrix th:nth-child(1) { width:72px; } .evidence-matrix th:nth-child(3) { width:110px; }
|
|
145
|
+
.evidence-matrix th:nth-child(4) { width:130px; } .evidence-matrix th:nth-child(6) { width:92px; }
|
|
146
|
+
.claim-cell { min-width:320px; max-width:520px; } .claim-cell>p { margin:0 0 6px; }
|
|
147
|
+
.matrix-row-detail { font-size:.78rem; color:var(--insufficient); } .matrix-row-detail summary { color:var(--primary); cursor:pointer; }
|
|
148
|
+
.matrix-row-detail p { margin:4px 0; }
|
|
149
|
+
.quality-cell { display:flex; align-items:center; gap:8px; min-width:90px; }
|
|
150
|
+
.quality-meter { display:block; width:64px; height:5px; border-radius:99px; background:var(--border); overflow:hidden; }
|
|
151
|
+
.quality-meter i { display:block; height:100%; background:var(--primary); border-radius:inherit; }
|
|
152
|
+
.evidence-tribunal { margin-top:8px; } .tribunal-summary { margin:0 0 18px; }
|
|
153
|
+
.tribunal-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
|
|
154
|
+
.tribunal-card { padding:16px 18px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); }
|
|
155
|
+
.tribunal-card header { display:flex; gap:9px; align-items:center; } .tribunal-card header>span { font-weight:800; }
|
|
156
|
+
.tribunal-card.supported { border-top:3px solid var(--support); } .tribunal-card.uncertain { border-top:3px solid var(--uncertain); }
|
|
157
|
+
.tribunal-card.contradicted { border-top:3px solid var(--contradict); } .tribunal-card.missing { border-top:3px solid var(--insufficient); }
|
|
158
|
+
.tribunal-card ul { margin:10px 0 0; padding-left:18px; } .tribunal-card li { margin:7px 0; }
|
|
159
|
+
.supporting-visual { margin-top:16px; } .supporting-visual summary { cursor:pointer; color:var(--primary); }
|
|
160
|
+
.trace-chain { display:grid; gap:14px; } .trace-chain-card { padding:16px 18px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); }
|
|
161
|
+
.trace-claim-node p { margin:5px 0 0; } .trace-arrow { color:var(--insufficient); text-align:center; }
|
|
162
|
+
.trace-evidence-list { display:grid; gap:7px; } .trace-evidence-node { display:flex; flex-wrap:wrap; gap:7px 10px; align-items:center; padding:8px 10px; background:var(--surface); border-radius:var(--radius-sm); }
|
|
163
|
+
.evidence-to-action { display:flex; gap:10px; align-items:stretch; overflow-x:auto; padding:6px 0 20px; margin-bottom:22px; }
|
|
164
|
+
.action-node { flex:1 0 165px; padding:14px 15px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); }
|
|
165
|
+
.action-node p { margin:7px 0 0; font-size:.84rem; } .flow-arrow { align-self:center; color:var(--insufficient); }
|
|
166
|
+
.relation-note { display:block; margin-top:5px; font-size:.68rem; color:var(--insufficient); line-height:1.35; }
|
|
167
|
+
.semantic-note, .chart-interpretation { margin:9px 0 0; color:var(--insufficient); font-size:.82rem; }
|
|
168
|
+
.detail-expander { margin-top:7px; } .detail-expander>summary { cursor:pointer; color:var(--primary); font-size:.78rem; }
|
|
169
|
+
.detail-body { margin-top:8px; padding:10px 12px; border-left:2px solid var(--border); background:var(--surface2); }
|
|
170
|
+
.detail-body p { margin:0; white-space:normal; }
|
|
171
|
+
.evidence-detail-grid, .source-detail-grid { margin:10px 0 0; display:grid; grid-template-columns:minmax(120px,170px) 1fr; gap:0; }
|
|
172
|
+
.evidence-detail-row, .source-detail-row { display:contents; }
|
|
173
|
+
.evidence-detail-grid dt, .evidence-detail-grid dd, .source-detail-grid dt, .source-detail-grid dd { margin:0; padding:7px 8px; border-top:1px solid var(--border); }
|
|
174
|
+
.evidence-detail-grid dt, .source-detail-grid dt { color:var(--insufficient); font-size:.75rem; }
|
|
175
|
+
.evidence-detail-grid dd, .source-detail-grid dd { font-size:.8rem; overflow-wrap:anywhere; }
|
|
176
|
+
.tribunal-count { margin-left:auto; min-width:24px; height:24px; display:inline-grid; place-items:center; border-radius:999px; background:var(--surface); color:var(--insufficient); font-size:.72rem; }
|
|
177
|
+
.tribunal-evidence-refs { display:flex; gap:5px; flex-wrap:wrap; margin-top:5px; }
|
|
178
|
+
.tribunal-more>summary { margin-top:10px; cursor:pointer; color:var(--primary); font-size:.8rem; }
|
|
179
|
+
.method-review-group { margin:0 0 26px; }
|
|
180
|
+
.method-review-title { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; margin-bottom:12px; }
|
|
181
|
+
.method-review-title h3 { margin:0; }
|
|
182
|
+
.method-audit-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:10px; }
|
|
183
|
+
.method-audit-item { border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); padding:12px; }
|
|
184
|
+
.method-audit-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
|
|
185
|
+
.method-audit-item p { margin:7px 0 0; font-size:.82rem; } .method-status { font-size:.7rem; color:var(--insufficient); white-space:nowrap; }
|
|
186
|
+
.method-guard-wrap { margin-top:12px; padding:12px 14px; border-left:3px solid var(--primary); background:var(--surface2); }
|
|
187
|
+
.scope-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
|
|
188
|
+
.scope-card, .retrieval-grid>article, .retrieval-coverage, .boundary-block, .visual-suppressed { border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); padding:15px 16px; }
|
|
189
|
+
.scope-card h3, .retrieval-grid h3, .retrieval-coverage h3, .boundary-block h3 { margin:0 0 8px; }
|
|
190
|
+
.retrieval-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-bottom:12px; }
|
|
191
|
+
.retrieval-coverage code { margin-right:5px; }
|
|
192
|
+
|
|
193
|
+
/* Two-layer report shell: the content contract is shared by all five themes. */
|
|
194
|
+
.report-brand-row { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
|
|
195
|
+
.report-brand { font-weight:750; letter-spacing:.02em; }
|
|
196
|
+
.generated-theme-chip { font-size:.7rem; color:var(--insufficient); border:1px solid var(--border); border-radius:999px; padding:2px 8px; }
|
|
197
|
+
.data-origin-chip { font-size:.7rem; border:1px solid var(--border); border-radius:999px; padding:2px 8px; color:var(--insufficient); margin-left:8px; overflow-wrap:anywhere; }
|
|
198
|
+
.data-origin-chip[data-origin="synthetic"], .data-origin-chip[data-origin="hybrid"] { border-color:#b45309; color:#92400e; background:rgba(217,119,6,.10); font-weight:600; }
|
|
199
|
+
.report-view-switcher { display:flex; gap:8px; margin-top:18px; }
|
|
200
|
+
.report-view-btn { border:1px solid var(--border); background:var(--surface); color:var(--text); border-radius:999px; padding:7px 14px; cursor:pointer; font-size:.82rem; }
|
|
201
|
+
.report-view-btn.active { background:var(--primary); border-color:var(--primary); color:#fff; }
|
|
202
|
+
.report-page[hidden] { display:none !important; }
|
|
203
|
+
.brief-block { width:100%; max-width:1040px; margin:0 auto clamp(42px,6vw,76px); }
|
|
204
|
+
.brief-block-header { max-width:760px; margin-bottom:22px; }
|
|
205
|
+
.brief-block-header h2 { margin:0 0 7px; font-family:var(--font-head); font-size:1.45rem; }
|
|
206
|
+
.brief-block-header p { margin:0; color:var(--insufficient); }
|
|
207
|
+
.brief-source-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
|
|
208
|
+
.brief-source { border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface2); padding:14px 15px; }
|
|
209
|
+
.brief-source h3 { margin:7px 0 4px; font-size:.9rem; } .brief-source p, .brief-source-more { color:var(--insufficient); font-size:.78rem; }
|
|
210
|
+
.full-report-intro { width:100%; max-width:900px; margin:0 auto 30px; }
|
|
211
|
+
.full-report-intro h2 { font-family:var(--font-head); margin:0 0 7px; font-size:1.8rem; }
|
|
212
|
+
.full-report-intro p { margin:0; color:var(--insufficient); }
|
|
213
|
+
.full-report-layout { position:relative; display:grid; width:100%; grid-template-columns:minmax(180px,240px) minmax(0,1fr); gap:clamp(24px,3vw,42px); align-items:start; }
|
|
214
|
+
/* 桌面双栏:内容列收口残余的行内可滚动溢出(clip 不产生滚动条也不破坏 sticky)。 */
|
|
215
|
+
@media (min-width:981px) { .full-report-content { overflow-x:clip; } }
|
|
216
|
+
.full-report-toc { position:sticky; top:18px; max-height:calc(100vh - 36px); overflow:auto; border-right:1px solid var(--border); padding-right:18px; }
|
|
217
|
+
.toc-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:12px; }
|
|
218
|
+
.toc-head strong { font-size:.78rem; text-transform:uppercase; letter-spacing:.08em; color:var(--insufficient); }
|
|
219
|
+
.toc-collapse { border:0; background:transparent; color:var(--primary); cursor:pointer; font-size:.72rem; padding:2px; }
|
|
220
|
+
.full-report-toc nav { display:grid; gap:4px; }
|
|
221
|
+
.full-report-toc a { display:block; color:var(--insufficient); text-decoration:none; padding:7px 8px; border-left:2px solid transparent; font-size:.8rem; line-height:1.4; }
|
|
222
|
+
.full-report-toc a.active { color:var(--text); border-left-color:var(--primary); background:var(--surface2); }
|
|
223
|
+
:root .full-report-layout.toc-collapsed { grid-template-columns:minmax(0,1fr); gap:0; }
|
|
224
|
+
.full-report-layout.toc-collapsed .full-report-toc nav, .full-report-layout.toc-collapsed .toc-head strong { display:none; }
|
|
225
|
+
.full-report-layout.toc-collapsed .full-report-toc { position:absolute; left:0; top:0; width:0; max-height:none; padding:0; border:0; overflow:visible; z-index:6; }
|
|
226
|
+
.full-report-layout.toc-collapsed .toc-head { margin:0; }
|
|
227
|
+
.full-report-layout.toc-collapsed .toc-collapse { position:sticky; top:18px; writing-mode:horizontal-tb; white-space:nowrap; border:1px solid var(--border); border-radius:999px; padding:7px 10px; background:var(--surface); box-shadow:var(--shadow); transform:translateX(-6px); }
|
|
228
|
+
.full-report-content { width:100%; min-width:0; max-width:960px; }
|
|
229
|
+
.full-report-layout.toc-collapsed .full-report-content { max-width:none; }
|
|
230
|
+
.full-chapter { scroll-margin-top:24px; padding:0 0 54px; margin:0 0 54px; border-bottom:1px solid var(--border); }
|
|
231
|
+
.full-chapter:last-child { border-bottom:0; }
|
|
232
|
+
.full-chapter-header { max-width:760px; margin-bottom:24px; }
|
|
233
|
+
.full-chapter-header h2 { margin:0 0 8px; font-family:var(--font-head); font-size:1.55rem; line-height:1.25; }
|
|
234
|
+
.full-chapter-lead { margin:0; color:var(--insufficient); }
|
|
235
|
+
.full-chapter-body>*+* { margin-top:20px; }
|
|
236
|
+
.report-footer { margin-top:64px; padding-top:18px; border-top:1px solid var(--border); color:var(--insufficient); font-size:.76rem; }
|
|
237
|
+
|
|
238
|
+
/* Lieflat gallery cards — AI-composed, data-driven charts.
|
|
239
|
+
Card four-piece set: conclusion title (700) + subtitle (legend, `·`
|
|
240
|
+
separated) + themed inline SVG + uppercase source line; caption optional.
|
|
241
|
+
Themes tune surface/radius/typography; identity lives in themes/*.css. */
|
|
242
|
+
.lieflat-gallery-container { display:flex; flex-direction:column; gap:22px; margin:6px 0 0; }
|
|
243
|
+
.lieflat-card { margin:0; padding:22px 24px 18px; border:1px solid var(--border);
|
|
244
|
+
border-radius:calc(var(--radius) + 6px); background:var(--surface);
|
|
245
|
+
box-shadow:var(--shadow); }
|
|
246
|
+
.lieflat-title { margin:0 0 8px; font-family:var(--font-head); font-size:1.12rem;
|
|
247
|
+
font-weight:700; line-height:1.35; }
|
|
248
|
+
.lieflat-sub { margin:0 0 14px; color:var(--insufficient); font-size:.85rem; line-height:1.55; }
|
|
249
|
+
.lieflat-figure svg { display:block; width:100%; height:auto; border:1px solid var(--border);
|
|
250
|
+
border-radius:var(--radius-sm); background:var(--surface2); }
|
|
251
|
+
.lieflat-caption { margin:10px 0 0; font-size:.8rem; color:var(--insufficient); line-height:1.5; }
|
|
252
|
+
.lieflat-src { margin:10px 0 0; font-size:.68rem; font-weight:600; letter-spacing:.08em;
|
|
253
|
+
text-transform:uppercase; color:var(--insufficient); }
|
|
254
|
+
.lieflat-suppressed { margin:0; padding:12px 16px; border:1px dashed var(--border);
|
|
255
|
+
border-radius:var(--radius-sm); background:var(--surface2);
|
|
256
|
+
font-size:.82rem; color:var(--insufficient); }
|
|
257
|
+
.lieflat-suppressed ul { margin:8px 0 0; padding-left:18px; }
|
|
258
|
+
.lieflat-suppressed li { margin:3px 0; }
|
|
259
|
+
|
|
260
|
+
@media print { body { background:#fff; } .controls, .report-view-switcher, .full-report-toc { display:none !important; }
|
|
261
|
+
.report-shell { max-width:none !important; padding:0 !important; }
|
|
262
|
+
.report-page-brief { display:none !important; } .report-page-full { display:block !important; }
|
|
263
|
+
.full-report-layout { display:block !important; } .full-report-content { max-width:none !important; }
|
|
264
|
+
.full-chapter { break-before:auto; break-inside:auto; }
|
|
265
|
+
.report-section { box-shadow:none !important; border:none !important; break-inside:avoid-page; }
|
|
266
|
+
.report-section svg { border:none; } .table-wrap { overflow:visible; }
|
|
267
|
+
.lieflat-card { box-shadow:none !important; break-inside:avoid; }
|
|
268
|
+
.lieflat-figure svg { border:none; }
|
|
269
|
+
details>summary { display:none !important; } details>*:not(summary) { display:block !important; }
|
|
270
|
+
.decision-hero, .tribunal-card, .trace-chain-card, .action-node, .method-audit-item { box-shadow:none !important; background:#fff !important; }
|
|
271
|
+
a { color:#000; text-decoration:underline; } }
|
|
272
|
+
@media (max-width:980px) {
|
|
273
|
+
/* 网格 item 收缩安全:阻止子内容 min-content 把 1fr 轨道撑破(移动端/平板横向裁切)。 */
|
|
274
|
+
.full-report-layout { grid-template-columns:minmax(0,1fr); gap:18px; }
|
|
275
|
+
.brief-block-body > *, .outcome-separation, .visual-surface,
|
|
276
|
+
.tribunal-grid > *, .hero-insights > *, .brief-source-grid > * { min-width:0; }
|
|
277
|
+
/* 章节直接子元素(table-wrap / evidence-to-action 等)默认 min-width:auto,
|
|
278
|
+
会把来源表等宽内容的 min-content 一路传给 shell —— 显式放开收缩。
|
|
279
|
+
注意用 .table-wrap .data-table 同强度选择器,否则压不过基座 nowrap。 */
|
|
280
|
+
.full-chapter-body > *, .table-wrap, .evidence-to-action { min-width:0; max-width:100%; }
|
|
281
|
+
.table-wrap .data-table th { white-space:normal; }
|
|
282
|
+
.table-wrap .data-table th, .table-wrap .data-table td { overflow-wrap:anywhere; word-break:break-word; }
|
|
283
|
+
/* 窄屏放弃 nowrap+省略号:让主单元格换行,否则行 min-content 撑破表格容器。 */
|
|
284
|
+
.table-wrap .data-table td.cell-main { white-space:normal; max-width:none; }
|
|
285
|
+
/* 定义网格/范围卡片里的 snake_case 枚举值(如 frame.json 的
|
|
286
|
+
first_programming_course_no_prior_text_based_programming)是不可断行长
|
|
287
|
+
token,必须允许任意断行,否则 min-content 直接撑破窄屏。 */
|
|
288
|
+
.scope-card, .scope-text, .scope-grid dt, .scope-grid dd,
|
|
289
|
+
.evidence-detail-grid dd, .source-detail-grid dd,
|
|
290
|
+
.retrieval-grid article, .retrieval-grid li { min-width:0;
|
|
291
|
+
overflow-wrap:anywhere; }
|
|
292
|
+
.full-report-toc { position:relative; top:auto; max-height:none; border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px; }
|
|
293
|
+
.full-report-toc nav { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
|
|
294
|
+
:root .full-report-layout.toc-collapsed { grid-template-columns:1fr; }
|
|
295
|
+
.full-report-layout.toc-collapsed .full-report-toc { position:relative; width:100%; padding:10px 12px; border:1px solid var(--border); }
|
|
296
|
+
.full-report-layout.toc-collapsed .toc-collapse { position:static; transform:none; padding:4px 8px; box-shadow:none; }
|
|
297
|
+
.full-report-layout.toc-collapsed .full-report-toc nav { display:none; }
|
|
298
|
+
}
|
|
299
|
+
@media (max-width:720px) {
|
|
300
|
+
.controls { width:calc(100% - 24px); margin-bottom:10px; padding-left:8px; padding-right:8px; }
|
|
301
|
+
.report-shell { width:100%; padding:12px 14px 56px; }
|
|
302
|
+
.report-header { width:100%; }
|
|
303
|
+
.report-header h1 { font-size:1.55rem; overflow-wrap:anywhere; }
|
|
304
|
+
.report-header .meta, .brief-source h3, .claim-cell, .detail-body, .source-detail-grid dd { overflow-wrap:anywhere; word-break:break-word; }
|
|
305
|
+
.data-table { font-size:.78rem; }
|
|
306
|
+
.hero-insights, .tribunal-grid, .scope-grid, .retrieval-grid, .brief-source-grid, .method-audit-grid { grid-template-columns:1fr; }
|
|
307
|
+
/* 网格收缩安全:1fr 轨道 min 改 0、auto-fit 轨道 min 随容器收缩(min(180px,100%)),
|
|
308
|
+
阻断固定 px 最小值 -> min-content 爆炸 -> 移动端横向溢出 的链条。 */
|
|
309
|
+
.full-report-content, .full-chapter, .full-chapter-body, .brief-block-body,
|
|
310
|
+
.outcome-separation, .visual-surface, .report-page-full, .report-page-brief { min-width:0; }
|
|
311
|
+
.outcome-groups { grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr)); }
|
|
312
|
+
.report-view-switcher { width:100%; }
|
|
313
|
+
.report-view-btn { flex:1; min-height:42px; }
|
|
314
|
+
.lang-btn, .toc-collapse { min-height:40px; }
|
|
315
|
+
.lang-btn { min-width:46px; }
|
|
316
|
+
.detail-expander>summary, .matrix-controls summary, .supporting-visual summary, .tribunal-more>summary { padding:7px 0; min-height:38px; display:flex; align-items:center; }
|
|
317
|
+
.full-report-toc nav { grid-template-columns:1fr; }
|
|
318
|
+
.full-chapter { width:100%; margin-bottom:38px; padding-bottom:38px; }
|
|
319
|
+
.full-chapter-header, .brief-block-header, .visual-heading { max-width:100%; }
|
|
320
|
+
.evidence-detail-grid, .source-detail-grid { grid-template-columns:1fr; }
|
|
321
|
+
.evidence-detail-grid dt, .evidence-detail-grid dd,
|
|
322
|
+
.source-detail-grid dt, .source-detail-grid dd { min-width:0; overflow-wrap:anywhere; }
|
|
323
|
+
.evidence-detail-grid dt, .source-detail-grid dt { padding-bottom:2px; }
|
|
324
|
+
.evidence-detail-grid dd, .source-detail-grid dd { padding-top:2px; }
|
|
325
|
+
.decision-hero { padding:20px 16px; }
|
|
326
|
+
.section-data, .section-decision, .section-narrative { width:100%; max-width:100%; }
|
|
327
|
+
.visual-surface, .outcome-separation, .trace-chain { max-width:100%; }
|
|
328
|
+
.chart-mount { height:clamp(240px,62vw,320px); }
|
|
329
|
+
.evidence-to-action { flex-direction:column; overflow:visible; }
|
|
330
|
+
.flow-arrow { transform:rotate(90deg); }
|
|
331
|
+
.matrix-wrap { width:100%; border:0; overflow:visible; }
|
|
332
|
+
.evidence-matrix thead { display:none; }
|
|
333
|
+
.evidence-matrix, .evidence-matrix tbody, .evidence-matrix tr, .evidence-matrix td { display:block; width:100%; }
|
|
334
|
+
.evidence-matrix tr { border:1px solid var(--border); border-radius:var(--radius-sm); margin-bottom:12px; padding:10px; background:var(--surface); }
|
|
335
|
+
.evidence-matrix td { border:0; padding:5px 0; }
|
|
336
|
+
.claim-cell { min-width:0; max-width:none; }
|
|
337
|
+
}
|