{
  "version": "v0.8",
  "generated_at": "2026-09-28T10:18:00+08:00",
  "source": "v0.7 writing_invariants.json + v0.8 research_articles.json + publication_workflow.json + export_specs.json",
  "bridge_status": "DESIGN_ONLY",
  "boundary": "STRICTLY READ-ONLY ID LINK",
  "purpose": "Publication & Scholarly Output 维持与 Conan Xin Archive 的 ID-only 链接边界。文章、引用、参考文献不向 Archive 写入任何数据,仅引用其 ID。",
  "shared_id_namespaces_extended": [
    {
      "namespace": "field_note_id",
      "prefix": "FN-",
      "owner": "v0.5+",
      "v0.8_use": "article.linked_archive_note_ids[]"
    },
    {
      "namespace": "research_question_id",
      "prefix": "rq-",
      "owner": "v0.5+",
      "v0.8_use": "article.linked_archive_rq_ids[]"
    },
    {
      "namespace": "gap_id",
      "prefix": "gap-",
      "owner": "v0.5+",
      "v0.8_use": "article.linked_archive_gap_ids[]"
    },
    {
      "namespace": "workspace_id",
      "prefix": "ws-",
      "owner": "v0.5+",
      "v0.8_use": "article.linked_workspace_id (article→workspace reverse binding)"
    },
    {
      "namespace": "project_id",
      "prefix": "rp-",
      "owner": "v0.6+",
      "v0.8_use": "article.linked_project_id (article→project binding)"
    }
  ],
  "local_only_namespaces_extended": [
    {
      "namespace": "article_id",
      "prefix": "article-",
      "owner": "v0.8 (local)",
      "invariant": "v0.8 独有命名空间; 不暴露到 archive"
    },
    {
      "namespace": "review_id",
      "prefix": "review-",
      "owner": "v0.8 (local)",
      "invariant": "评审记录 local ID"
    },
    {
      "namespace": "rubric_score_id",
      "prefix": "rubric-",
      "owner": "v0.8 (local)",
      "invariant": "评审打分 local ID"
    },
    {
      "namespace": "export_record_id",
      "prefix": "export-",
      "owner": "v0.8 (local)",
      "invariant": "导出记录 local ID; 用于审计 trail"
    }
  ],
  "archive_bridge_invariants_v0_8": [
    {
      "rule_id": "inv-pub-1",
      "constraint": "SHALL NOT",
      "description": "v0.8 文章 SHALL NOT 写入 Conan Xin Archive 任何文件、字段或属性。",
      "rationale": "继承 v0.6/v0.7 边界: 严格只读 ID link。"
    },
    {
      "rule_id": "inv-pub-2",
      "constraint": "SHALL NOT",
      "description": "v0.8 SHALL NOT 通过 HTTP/curl/submodule/API key 读取 Conan Xin Archive 任何内容。",
      "rationale": "继承边界。"
    },
    {
      "rule_id": "inv-pub-3",
      "constraint": "SHALL NOT",
      "description": "v0.8 SHALL NOT 重新分配、重新生成、或修改 Citation ID 格式 (SHUGE:p<post_id>:<page_seq>)。",
      "rationale": "继承边界, export 时必须原样输出。"
    },
    {
      "rule_id": "inv-pub-4",
      "constraint": "SHALL NOT",
      "description": "v0.8 SHALL NOT 引入 LLM/embedding/向量数据库自动生成论文正文。",
      "rationale": "继承 v0.7 边界, 进一步收紧: 文章正文只能来自 v0.7 draft paragraphs,不允许自动补全/改写/扩展。"
    },
    {
      "rule_id": "inv-pub-5",
      "constraint": "SHALL NOT",
      "description": "v0.8 SHALL NOT 直接进入 PUBLISHED 状态; 必须经过 DRAFT → REVIEW → REVISED → (decision) → PUBLISHED 状态机。",
      "rationale": "v0.8 严格边界: 本演示不进入 PUBLISHED。articles 集合中无 PUBLISHED article,这是设计边界。"
    },
    {
      "rule_id": "inv-pub-6",
      "constraint": "SHALL",
      "description": "v0.8 每一份 export 输出 SHALL 包含 footer: \"Generated by SHUGE DH Research Platform v0.8 · READ-ONLY ID LINK\"。",
      "rationale": "透明性: 任何导出文件必须标识来源与边界。"
    },
    {
      "rule_id": "inv-pub-7",
      "constraint": "SHALL NOT",
      "description": "v0.8 SHALL NOT 在 export 中暴露 body_excerpt 超过 200 字符 (继承 v0.7 paragraph 字段约束)。",
      "rationale": "导出只是视图,不复制长文本。"
    },
    {
      "rule_id": "inv-pub-8",
      "constraint": "MAY",
      "description": "v0.8 MAY 在 article 中以 linked_archive_* IDs 字段引用 v0.5+/v0.6+ 已建立的 ID (FN-*/rq-*/gap-*/ws-*/rp-*)。",
      "rationale": "允许的边界: 仅 ID 引用,不涉及 Archive 内容。"
    }
  ],
  "schema_additions_v0_8": [
    {
      "field": "research_articles.json → articles[].article_id",
      "type": "string (article-<slug>)",
      "note": "v0.8 新增,local-only"
    },
    {
      "field": "research_articles.json → articles[].review_status",
      "type": "enum",
      "note": "DRAFT/REVIEW/REVISED/PUBLISHED,本演示不含 PUBLISHED"
    },
    {
      "field": "research_articles.json → articles[].linked_workspace_id",
      "type": "string (ws-*)",
      "note": "v0.8 新增,article→workspace 反向绑定"
    },
    {
      "field": "research_articles.json → articles[].linked_project_id",
      "type": "string (rp-*)",
      "note": "v0.8 新增,article→project 绑定"
    },
    {
      "field": "publication_workflow.json → states[]",
      "type": "array<state>",
      "note": "v0.8 新增,DRAFT/REVIEW/REVISED/PUBLISHED 状态机"
    },
    {
      "field": "export_specs.json → formats[]",
      "type": "array<format_spec>",
      "note": "v0.8 新增,导出层定义"
    }
  ],
  "demo_articles_invariants_summary": {
    "DRAFT": 1,
    "REVIEW": 1,
    "REVISED": 1,
    "PUBLISHED": 0,
    "note": "v0.8 严格边界:不进入 PUBLISHED"
  },
  "stats": {
    "shared_id_namespaces_extended": 5,
    "local_only_namespaces_extended": 4,
    "archive_bridge_invariants_v0_8": 8,
    "schema_additions_v0_8": 6,
    "articles_total": 3,
    "articles_in_published_forbidden": true
  }
}