interaction(L3): - 控制权按态转交:活动在跑归活动,流转/审批/终态归系统;输入侧永远归系统(单入口) - 视图区净化门:含 <script> / on* / 外部资源的模版一律拒推 —— 容器无脚本执行权 - 对话流单入口:自由输入同写任务记忆并抛人事件;SSE 单连接 + 按目标失效广播 - 前端零过程状态:对话流与视图都是服务端投影 activity-registry(L4): - 安装两审:静态审(签名/SDK/工具契约齐备/模型名已绑定/schema/悬空监听/模版无脚本/ 零环境能力/动态执行/验收等级不得谎报)+ 回放审(旧成不坏是硬门,旧败能成只入报告) - 资产与包分离版本化:包只携资产初始版,不覆盖已有更高资产版;装载 = 包版本 + 生效资产版 - 进化管线状态机:候选 → 回放 → 人放行 → 生效;回退是显式治理动作 245 个测试通过,门禁五道全绿 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
57 lines
2.2 KiB
SQL
57 lines
2.2 KiB
SQL
CREATE TABLE "sys"."activity_asset" (
|
|
"activity_id" text NOT NULL,
|
|
"kind" text NOT NULL,
|
|
"version" integer NOT NULL,
|
|
"body" text NOT NULL,
|
|
"effective" boolean DEFAULT false NOT NULL,
|
|
"source" text NOT NULL,
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
CONSTRAINT "activity_asset_activity_id_kind_version_pk" PRIMARY KEY("activity_id","kind","version")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "sys"."activity_package" (
|
|
"activity_id" text NOT NULL,
|
|
"version" text NOT NULL,
|
|
"name" text NOT NULL,
|
|
"category" text NOT NULL,
|
|
"paradigm" text NOT NULL,
|
|
"manifest" jsonb NOT NULL,
|
|
"artifact" text NOT NULL,
|
|
"state" text DEFAULT 'active' NOT NULL,
|
|
"enabled" boolean DEFAULT true NOT NULL,
|
|
"installed_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
CONSTRAINT "activity_package_activity_id_version_pk" PRIMARY KEY("activity_id","version")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "sys"."asset_increment" (
|
|
"id" text PRIMARY KEY NOT NULL,
|
|
"activity_id" text NOT NULL,
|
|
"kind" text NOT NULL,
|
|
"diff" text NOT NULL,
|
|
"evidence_entry_ids" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
"state" text DEFAULT 'candidate' NOT NULL,
|
|
"replay_report" jsonb,
|
|
"released_by" text,
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "sys"."chat_message" (
|
|
"id" text PRIMARY KEY NOT NULL,
|
|
"task_id" text NOT NULL,
|
|
"kind" text NOT NULL,
|
|
"payload" jsonb NOT NULL,
|
|
"at" timestamp with time zone NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "sys"."task_view" (
|
|
"task_id" text PRIMARY KEY NOT NULL,
|
|
"blocks" jsonb,
|
|
"html" text,
|
|
"phase" text DEFAULT 'activating' NOT NULL,
|
|
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE UNIQUE INDEX "activity_asset_effective_key" ON "sys"."activity_asset" USING btree ("activity_id","kind") WHERE "sys"."activity_asset"."effective";--> statement-breakpoint
|
|
CREATE INDEX "activity_package_category_idx" ON "sys"."activity_package" USING btree ("category","paradigm");--> statement-breakpoint
|
|
CREATE INDEX "asset_increment_activity_idx" ON "sys"."asset_increment" USING btree ("activity_id","state");--> statement-breakpoint
|
|
CREATE INDEX "chat_message_task_idx" ON "sys"."chat_message" USING btree ("task_id","at"); |