vicTop-cw/fist-mbt/src/core does not have a README file

    Action

    pub enum Action {
    CreateSpec
    ReviewSpec
    } derive(Eq,
    Debug
    )

    每个任务的完整操作清单(仅保留 Omega 强验证相关 Action)

    Action::to_string

    fn Action::to_string(self : Action) -> String

    Action 可读名(供错误消息)

    Principle

    pub struct Principle {
    index : Int
    title : String
    body : String
    } derive(Eq,
    Debug
    )

    单条原则

    Principle::get_body

    fn Principle::get_body(self : Principle) -> String

    Principle::get_index

    fn Principle::get_index(self : Principle) -> Int

    Principle::get_title

    fn Principle::get_title(self : Principle) -> String

    Principle::to_json

    fn Principle::to_json(self : Principle) -> Json

    单条原则转 JSON(供 resource 输出)

    Role

    pub enum Role {
    HumanSteward
    Leader
    Searcher
    Allocator
    Executor
    Verifier
    Recorder
    Observer
    SpecAuthor
    } derive(Eq,
    Debug
    )

    八角色

    Role::description

    fn Role::description(self : Role) -> String

    角色职责说明

    Role::from_string

    fn Role::from_string(s : String) -> Role?

    Role::to_string

    fn Role::to_string(self : Role) -> String

    Task

    pub struct Task {
    id : String
    parent_id : String?
    project_dir : String
    ns : String
    priority : String
    importance : String
    depth : Int
    split_n : Int
    status : TaskStatus
    assignee : String?
    description : String
    deliverable : String
    created_at : String
    updated_at : String
    completed_by : String?
    cleanup_mode : String
    depends_on : Array[String]
    } derive(Eq,
    Debug
    )

    FIST-Mbt 任务实体

    Task::archive

    fn Task::archive(self : Task) -> Result[Task, String]

    已完成 -> 已归档

    Task::claim

    fn Task::claim(self : Task, assignee~ : String) -> Result[Task, String]

    待领取 -> 已领取(角色:any active agent)

    Task::complete

    fn Task::complete(self : Task, completed_by~ : String) -> Result[Task, String]

    待验收 -> 已完成(人类主权:completed_by 必须 human / human_steward 或明确授权) 注意:此处仅校验 completed_by 非空;不引入独立的强身份认证模型(鉴权属上层 MCP 工具/MCP 层职责,本域不做权宜式身份伪造防护,避免脆弱的新鉴权模型)。

    Task::execute

    fn Task::execute(self : Task) -> Result[Task, String]

    拆分中/已领取/执行中 -> 执行中(进入/覆盖/追加交付物) 执行中 -> execute = 覆盖/追加交付物(retry 后原地更新交付物的直觉行为) BUG-2(Round 2 收口):合法前态含「执行中」。retry 的落点就是执行中,若这里不收, 「被打回重做」这条最该更新交付物的路径会写不进 deliverable(omega_result_verify 随即报「尚无交付物」),诱导操作者新建任务覆盖旧账、破坏 append-only 审计。 选择放宽 execute 而不改 retry 的落点:retry→执行中 是对外承诺的语义 (AGENTS.md 工具表「打回后重试(→执行中)」、已发布流水线的状态判据都按它写), 改它等于改一条公共状态机迁移;而「执行中重复 execute」本就是幂等追加,影响面更小。 错误文案必须给出路(当前状态 → 该走哪条迁移),否则调用方只能猜或另起任务。

    Task::execute_exit_hint

    fn Task::execute_exit_hint(status : TaskStatus) -> String

    execute 被拒时按当前状态给出可用出路(BUG-2 文案,纯函数便于回归测试)。

    Task::from_db

    fn Task::from_db(id : String, parent_id : String?, project_dir : String, ns : String, priority : String, importance : String, depth : Int, split_n : Int, status_s : String, assignee : String?, description : String, deliverable : String, created_at : String, updated_at : String, completed_by : String?, cleanup_mode : String, depends_on : Array[String]) -> Task

    按存储行字段直接构建任务(供 store 层反序列化使用;status 为存储字符串,非法回退 Pending)

    Task::get_assignee

    fn Task::get_assignee(self : Task) -> String?

    Task::get_depth

    fn Task::get_depth(self : Task) -> Int

    Task::get_description

    fn Task::get_description(self : Task) -> String

    Task::get_id

    fn Task::get_id(self : Task) -> String

    Task::get_parent

    fn Task::get_parent(self : Task) -> String?

    Task::get_status

    fn Task::get_status(self : Task) -> TaskStatus

    Task::get_updated_at

    fn Task::get_updated_at(self : Task) -> String

    Task::is_leaf

    fn Task::is_leaf(self : Task) -> Bool

    Task::mark_decomposing

    fn Task::mark_decomposing(self : Task) -> Result[Task, String]

    拆分中标记(AO 式拆解用,宽于 split:待领取/已领取/拆分中均可转入)

    Task::new

    fn Task::new(id~ : String, project_dir~ : String, description? : String, priority? : String, importance? : String, depth? : Int, split_n? : Int, parent_id? : String, assignee? : String, cleanup_mode? : String, created_at? : String, ns? : String, depends_on? : Array[String]) -> Task

    构造器(字段带默认值)

    Task::pause

    fn Task::pause(self : Task) -> Result[Task, String]

    任意活跃状态 -> 已暂停(外部中断/等待依赖)

    Task::reject

    fn Task::reject(self : Task, reason? : String) -> Result[Task, String]

    待验收 -> 已打回(验收不通过,需重做)

    Task::reopen

    fn Task::reopen(self : Task) -> Result[Task, String]

    任意非归档状态 -> 已领取(被打回重做)

    Task::resume_task

    fn Task::resume_task(self : Task) -> Result[Task, String]

    已暂停 -> 已领取(恢复执行)

    Task::retry

    fn Task::retry(self : Task) -> Result[Task, String]

    已打回 -> 执行中(重新执行)

    Task::split

    fn Task::split(self : Task) -> Result[Task, String]

    已领取 -> 拆分中(指挥官拆解)

    Task::status_to_string

    fn Task::status_to_string(self : Task) -> String

    便捷状态访问

    Task::submit

    fn Task::submit(self : Task) -> Result[Task, String]

    执行中 -> 待验收

    Task::to_json

    fn Task::to_json(self : Task) -> Json

    任务转 JSON(供 MCP resource / tool 输出)

    Task::with_deliverable

    fn Task::with_deliverable(self : Task, deliverable : String, now : String) -> Task

    Task::with_depends_on

    fn Task::with_depends_on(self : Task, dep_id : String, now : String) -> Task

    追加一条前置依赖(去重)并更新时间戳;返回带新 depends_on 的副本。 供显式 DAG 构建(dag_depend)使用——不只靠 plan_deep 的隐式父子关系。

    Task::with_updated_at

    fn Task::with_updated_at(self : Task, now : String) -> Task

    记录类复制更新(跨包不便直接构造 record,由 core 提供)

    TaskStatus

    pub enum TaskStatus {
    Pending
    Claimed
    Splitting
    Executing
    Reviewing
    Completed
    Archived
    Rejected
    Paused
    } derive(Eq,
    Debug
    )

    任务七态状态机

    TaskStatus::can_execute

    fn TaskStatus::can_execute(self : TaskStatus) -> Bool

    execute 的前态谓词(engine.execute 的第一道门)。 BUG-2 相邻加固(守卫一致性):这里曾多出一条 Rejected,而 Task::execute 并不接受 已打回——两条门不一致时,调用方拿到的是引擎的"非法执行: 任务处于 [已打回]"(无出路), 而不是域迁移里带 retry 出路的文案。集合与 Task::execute 逐字对齐(对外结果不变: 两条门对 Rejected 都是拒,只是文案统一)。

    TaskStatus::can_split

    fn TaskStatus::can_split(self : TaskStatus) -> Bool

    状态谓词(供跨包业务层判断,避免直接构造变体)

    TaskStatus::from_string

    fn TaskStatus::from_string(s : String) -> TaskStatus?

    TaskStatus::is_active

    fn TaskStatus::is_active(self : TaskStatus) -> Bool

    TaskStatus::is_archived

    fn TaskStatus::is_archived(self : TaskStatus) -> Bool

    TaskStatus::is_claimed

    fn TaskStatus::is_claimed(self : TaskStatus) -> Bool

    TaskStatus::is_completed

    fn TaskStatus::is_completed(self : TaskStatus) -> Bool

    TaskStatus::is_executing

    fn TaskStatus::is_executing(self : TaskStatus) -> Bool

    TaskStatus::is_paused

    fn TaskStatus::is_paused(self : TaskStatus) -> Bool

    TaskStatus::is_pending

    fn TaskStatus::is_pending(self : TaskStatus) -> Bool

    TaskStatus::is_rejected

    fn TaskStatus::is_rejected(self : TaskStatus) -> Bool

    TaskStatus::is_reviewing

    fn TaskStatus::is_reviewing(self : TaskStatus) -> Bool

    TaskStatus::is_splitting

    fn TaskStatus::is_splitting(self : TaskStatus) -> Bool

    TaskStatus::order

    fn TaskStatus::order(self : TaskStatus) -> Int

    TaskStatus::to_string

    fn TaskStatus::to_string(self : TaskStatus) -> String

    can

    fn can(role : Role, action : Action) -> Bool

    权限判定:Can(HumanSteward, 任意) = true; 非人类角色只能做自己职责内的非破坏性动作。

    child_id

    fn child_id(parent_id~ : String, idx~ : Int) -> String

    ensure_can

    fn ensure_can(role : Role, action : Action) -> Result[Unit, String]

    权限校验函数(带可读错误消息)

    ensure_can_create_spec

    fn ensure_can_create_spec(actor : String) -> Result[Unit, String]

    Omega 强验证:语料创建权校验(供 engine 包调用,避免跨包构造枚举值)

    ensure_can_review_spec

    fn ensure_can_review_spec(actor : String) -> Result[Unit, String]

    Omega 强验证:语料审核 / 成果复验权校验

    principles

    fn principles() -> Array[Principle]

    七条金条的权威定义(与 FIST-SKILL/Python 版保持同源)

    principles_json

    fn principles_json() -> Json

    全部原则转 JSON 数组

    role_of

    fn role_of(s : String) -> Result[Role, String]

    从字符串解析角色(MCP 参数用)