SuperAPI AI Directory

external-cannbot-ops-pypto-intent-understand

Coding & development

View repository

Updated 10-15 17:19

About this skill

PyPTO Operator Requirement Intent Understanding

Convert the user's natural language description intostructured, completePyPTO operator development requirement document (SPEC.md).

Core Principles

Strictly follow the core principles below to ensure accurate and complete requirement understanding

Principle 1: Based on facts, no guessing

  • ✅ Clearly mark information sources and confidence levels (✓ High / ⚠ Medium / ❓ Low)
  • ✅ When uncertain, proactively ask rather than infer on your own
  • ❌ Do not guess formulas, specifications, or parameter meanings out of thin air

Principle 2: Clear feature priorities

  • ✅ Mark priorities (P0/P1/P2/P3) for all features (including optional parameters)
  • ✅ P0 and P1 features must be implemented in the first version
  • ✅ Clearly mark which features are not yet supported and why

Principle 3: In-depth analysis of optional parameters

  • ✅ Analyze optional parameters from four dimensions: code location, computation logic, implementation complexity, and dependencies
  • ✅ Clearly identify constraints and mutually exclusive relationships among parameters
  • ❌ Do not omit analysis of commonly used optional parameters

Principle 4: Information completeness

  • ✅ Required information (operator name, formula, input/output specifications, dynamic axes) must not be missing
  • ✅ Complex operators must provide an algorithm description
  • ✅ It is recommended to provide typical configurations to facilitate subsequent golden generation and design solutions

Principle 5: Confirm at least once

  • ✅ Unless the user strongly requests no confirmation, confirm at least once
  • ✅ At most 2 confirmations, overall confirmation rather than item-by-item confirmation

Principle 6: Default values must be explicitly disclosed

  • ✅ Fields that allow default values must be shown during the confirmation step
  • ✅ Default values may only fill in non-blocking information, and must not silently replace key requirements
  • ❌ Do not inject default values without the user's awareness

Core Workflow

阶段 1: 快速解析 → 阶段 2: 可视化确认 → 阶段 3: 可选补充 → 输出文件

When the user's first input already contains all required information (operator name, formula/algorithm, input/output specifications), Stage 1 and Stage 2 can be merged into one step: directly show the data flow diagram + specification confirmation checklist, and generate the file after the user confirms. There is no need to mechanically go through every stage.


Stage 1: Quick Parsing

Receive user input

The user can describe operator requirements in any way. Immediately perform input classification after receiving it.

Input Classification

First determine which of the following 4 categories the input belongs to:

  1. Standard reference category

    • Applicable: common operators, framework API references, operators whose standard definitions can be found
    • Identification features: the user directly gives the operator name, or explicitly says "refer to PyTorch/NumPy/TensorFlow/JAX's ..."
  2. External material category

    • Applicable: paper/document links, code snippet references
    • Identification features: input contains URLs, paper links, document snippets, function definitions, import statements, or obvious code syntax
  3. Custom description category

    • Applicable to: custom operators, those without standard definitions, and operators for which trusted external references cannot be located
    • Identifying characteristics: the name is clearly custom, or a search cannot locate a trusted definition
  4. Direct specification category

    • Applicable to: the user's first input already contains key information such as the operator name, formula/algorithm, and input/output specifications
    • Identifying characteristics: can proceed directly to specification confirmation without relying on external references

Complexity determination and key characteristic identification

After completing input classification, determine whether it is a complex operator and identify key characteristics.

Criteria for determining complex operators:

  • Involves multiple steps, blocking, loops, online updates, state maintenance, or a combination of multiple sub-operators
  • After marking, append the following requirements:
    • An algorithm description or material from which an algorithm description can be recovered must be provided
    • The decomposed computation graph must be shown
    • The confirmation strength must be increased to ensure there is no ambiguity in understanding the workflow

Key characteristic identification(Required for complex operators): Complex operators usually contain key characteristics that can be configured independently, and these characteristics significantly affect implementation complexity and performance. They must be proactively identified and broken down for the user to confirm.

List of common key characteristics:

Characteristic category Typical characteristic Applicable operator type Scope of impact
Numerical stability safe_softmax, logsumexp, numerical_stable Softmax/normalization/exponential operations Computation precision, overflow handling
Blocking strategy tiling_strategy, block_size Large-scale matrices/attention/convolution Memory layout, loop structure
Mask mechanism causal_mask, padding_mask, custom_mask, sliding_window Attention/sequence processing Data flow, memory access, boundary handling
Online algorithm online_softmax, online_reduction, streaming_update Reduction/Softmax Computation order, intermediate state
Quantization support int8_quant, fp8_quant, blockwise_quant, dequantize Quantized operators Data type, scaling factor
Fusion mode bias_add, residual_add, activation_fused General Operator boundaries, intermediate result reuse
Dynamic Shape variable_length, ragged_tensor, dynamic_axis Sequence processing/variable-length input Memory allocation, loop unrolling
Parallel strategy split_k, split_n, parallel_reduction Matrix multiplication/Reduction Degree of parallelism, synchronization overhead
Memory optimization in_place, workspace_reuse, page_attention General Memory usage, data dependency, memory optimization
Boundary handling padding_mode, boundary_condition, edge_handling Convolution/pooling/interpolation Boundary precision, computation logic
Precision control mixed_precision, accumulator_dtype, rounding_mode General Computation precision, numerical range
Randomness deterministic, seed_control, dropout_rate Dropout/random sampling Reproducibility, random number generation
Sparsity sparse_pattern, masked_compute, structured_sparsity Sparse operators Data layout, computation skipping

Characteristic identification process:

  1. Extract characteristics already mentioned from the user's description
  2. Identify implicit characteristics from reference materials (papers/documentation/code)
  3. Generate a characteristic list, annotating confidence and source
  4. During the confirmation step, have the user confirm or modify them one by one

Detailed handling of various inputs

Category 1: Standard reference type (usually ✓ high confidence)

Prioritize recovering standard definitions from existing knowledge or trusted references.

Known common operators include:

Category Operator list
Activation functions relu, gelu, silu, swish, mish, sigmoid, tanh, softmax, hardswish, hardsigmoid
Mathematical operations sin, cos, sinh, cosh, tanh, exp, log, log2, log10, sqrt, rsqrt, pow, abs, sign
Normalization layer_norm, rms_norm, batch_norm, instance_norm, group_norm
Attention scaled_dot_product_attention, multi_head_attention
Matrix operations matmul, addmm, bmm, linear, einsum
Reduction sum, mean, max, min, amax, amin, argmax, argmin, prod
Element-wise add, sub, mul, div, maximum, minimum, clamp

Handling method:

  1. Obtain formulas and standard specifications from own knowledge base or trusted references
  2. Mark as ✓ high confidence, display and suggest confirmation
  3. If it is a multi-step/complex operator (such as Flash Attention, Scan), append an algorithm description requirement

Interaction example:

用户: 开发一个 GELU 算子

助手: 我知道 GELU 算子:

      GELU(x) = x * Φ(x)
            ≈ x * 0.5 * (1 + tanh(√(2/π) * (x + 0.044715*x³)))

      标准规格:
      - 输入: x [...], float32
      - 输出: y [...], float32 (shape与输入相同)

      ✓ 算子名称: gelu
      ✓ 公式: GELU(x) = x * Φ(x)
      ⚠ 有两个版本:
         1. 精确版 (使用erf)
         2. 近似版 (使用tanh)
      ❓ 你需要哪个版本?

Category 2: External material type (usually ⚠ medium confidence)

Identifying features: The input contains a URL, paper link, document excerpt, code snippet, or function definition.

Handling method:

  1. If it is a paper/document link, use WebFetch to obtain the content and extract specification information
  2. If it is a code snippet, analyze the code structure and extract inputs, outputs, and computation logic
  3. Uniformly mark as ⚠ medium confidence
  4. Musthave the user confirm whether the extracted result is correct

Fallback strategy(when WebFetch is unavailable):

  1. Generate specification information based on standard definitions in the AI's own knowledge base
  2. Confidence is lowered to ⚠ medium (source: AI knowledge base inference, not the original material)
  3. In SPEC.md, annotate "⚠ Original material unavailable, generated based on standard reference, manual confirmation recommended"
  4. Explain the reason for the fallback to the user and show the basis for the inference

Interaction example:

用户: 参考 PyTorch 的 F.scaled_dot_product_attention

助手: 我提取到以下规格信息:

      公式: Attention(Q,K,V) = softmax(QK^T/√d) @ V

      标准规格:
      - Q: [batch, num_heads, seq_len, head_dim]
      - K: [batch, num_heads, seq_len, head_dim]
      - V: [batch, num_heads, seq_len, head_dim]
      - Output: [batch, num_heads, seq_len, head_dim]

      可选参数:
      - attn_mask: 注意力掩码
      - dropout_p: dropout 概率
      - is_causal: 是否因果注意力
      - scale: 缩放因子(默认 1/√d)

      ❓ 你需要支持哪些可选参数?
      ❓ 输入的dtype是什么?(float32/bfloat16)

Category 3: Custom description type (usually ❓ requires a complete description)

Identifying features: The name is obviously custom (such as my_op, custom_fusion), no trusted standard definition can be located, or the user explicitly says it is custom.

Handling method:

  1. Clearly inform the user that this is a custom operator
  2. Guide the user to provide the required information (mathematical formula, input/output specifications)
  3. Provide multiple input methods: formula description, pseudocode, NumPy/PyTorch code, flowchart description
助手: 我没有找到 "my_fusion_op" 的标准定义,这似乎是一个自定义算子。

      请提供以下信息:

      必须提供:
      1. 数学公式(例如: y = f(x) = ... 或用文字描述计算逻辑)
      2. 输入输出规格(输入: x [shape] dtype / 输出: y [shape] dtype)

      你可以用以下任一方式提供:
      - 公式描述: "y = relu(x) * sigmoid(gate), x和gate都是[b,s,d]的float32"
      - 伪代码: h1 = relu(x); h2 = sigmoid(gate); y = h1 * h2
      - NumPy/PyTorch 代码: def my_op(x, gate): return torch.relu(x) * torch.sigmoid(gate)

Category 4: Direct specification type (information completeness determines confidence)

Identifying features: The user's first input already contains key information such as the operator name, formula/algorithm, and input/output specifications.

Handling method:

  1. Directly organize the existing information and generate a structured specification draft
  2. If the information is complete and consistent, proceed directly to visual confirmation
  3. If there are gaps in the information, ask only about the missing items and do not repeatedly ask about existing information

Confidence marking conventions

Mark Confidence Information source Handling method
✓ High Own knowledge base/framework knowledge Display and suggest confirmation
⚠ Medium WebSearch/WebFetch/code analysis Musthave the user confirm
❓ Low Inference/guess Actively ask the user

Phase 2: Visual Confirmation

This isthe most critical step, ensuring that understanding aligns with user intent.

Display Content

Display in the following order:

0. Key Feature Breakdown (for complex operators only)

For complex operators, before displaying the data flow diagram,you mustfirst display the list of identified key features:

🔍 识别到的关键特性:

| 特性 | 是否需要 | 置信度 | 来源 | 实现说明 | 优先级 |
|------|----------|--------|----------|--------|
| causal_mask | ✓ 需要 | ✓ 高 | 用户描述 | 需要上三角 mask 逻辑 | P0 |
| online_softmax | ✓ 需要 | ⚠ 中 | 论文推断 | 需要分块 + 数值稳定更新 | P0 |
| multi_query_attention | ✗ 不需要 | ❓ 低 | 默认假设 | - | - |
| paged_attention | ? 待确认 | ❓ 低 | 网络搜索 | 需要KV cache管理 | P1 |
| dropout | ? 待确认 | ❓ 低 | 框架默认 | 需要随机数生成 | P2 |

❓ 请确认以上特性是否符合你的需求:
  - 需要调整哪些特性的"是否需要"状态?
  - 是否有遗漏的特性?

Feature Confirmation Interaction:

  • Use AskUserQuestion to let the user confirm the feature list
  • Provide options: Confirm all / Modify features / Add new features / I'm not sure, explain it to me
  • If the user is unsure, provide a brief description of each feature and typical usage scenarios

1. ASCII Data Flow Diagram

Select an appropriate data flow diagram template based on the operator type:

Simple Element-wise Operator(single input, shape unchanged):

    输入 x                      输出 y
┌────────────────┐         ┌────────────────┐
│  [b, s, n, d]  │ ──────▶ │  [b, s, n, d]  │
│   float32      │  sinh   │   float32      │
└────────────────┘         └────────────────┘

公式: y = sinh(x) = (e^x - e^(-x)) / 2
动态轴: b, s

Multi-input Matmul-type Operator:

    输入 a           输入 b           输入 c (可选)
┌──────────┐    ┌──────────┐    ┌──────────┐
│  [m, k]  │    │  [n, k]  │    │  [m, n]  │
└────┬─────┘    └────┬─────┘    └────┬─────┘
     │               │               │
     │    ┌──────────┘               │
     ▼    ▼                          │
  ┌────────────┐                     │
  │  a @ b^T   │                     │
  └─────┬──────┘                     │
        │                            │
        ▼                            ▼
     ┌──────────────────────────────────┐
     │              +                   │
     └───────────────┬──────────────────┘
                   ▼
             ┌──────────┐
             │ 输出 y   │
             │  [m, n]  │
             └──────────┘

Other Operators: Refer to the above templates and draw according to the actual data flow. For composite operators, show the decomposition and merging relationships of sub-operators.

2. Specification Confirmation Checklist

For simple operators (formulas are sufficient to describe):

✅ 必须信息:
  [✓] 算子名称: {operator_name}
  [✓] 数学公式: {formula}
  [✓] 输入: {input_name}[{shape}] {dtype}, 动态轴: {dynamic_axes}
  [✓] 输出: {output_name}[{shape}] {dtype}, 动态轴: {dynamic_axes}

⚙️ 自动推断(使用默认值,可修改):
  • 支持数据类型: float32 (atol=0.001, rtol=0.001)
  • 性能目标: 无特殊要求
  • 边界处理: 正常计算

For complex operators (formulas cannot fully express the computation flow), add an algorithm section and a key features section:

✅ 必须信息:
  [✓] 算子名称: {operator_name}
  [✓] 数学公式: {formula}
  [✓] 关键特性:
      ┌─────────────────────┬────────┬──────────────────────────┐
      │ 特性                │ 状态   │ 实现说明                 │
      ├─────────────────────┼────────┼──────────────────────────┤
      │ causal_mask         │ ✓ 需要 │ 上三角 mask 逻辑         │
      │ online_softmax      │ ✓ 需要 │ 分块 + 数值稳定更新      │
      │ paged_attention     │ ✗ 不需 │ -                        │
      │ dropout             │ ✗ 不需 │ -                        │
      └─────────────────────┴────────┴──────────────────────────┘
  [✓] 算法描述:
      Algorithm: {algorithm_name}
      ────────────────────────────
      {带编号的伪代码步骤}
  [✓] 输入: ...
  [✓] 输出: ...

When an algorithm description is needed: When the computation involves procedural logic such as tiling, loops, online updates, state maintenance, etc., formulas can only describe the mathematical semantics but cannot describe the implementation strategy. In this case, an algorithm description is needed to explain "how it is computed". Typical examples: the tiled computation + Online Softmax of Flash Attention, and the recurrence process of Scan-type operators.

Algorithm Description Format: Use numbered pseudocode steps to clearly show the loop structure, tiling strategy, state updates, and other processes. Example:

Algorithm: Flash Attention (Forward)
────────────────────────────────────
输入: Q, K, V ∈ R^{N×d}, 分块大小 Br, Bc
输出: O ∈ R^{N×d}

1. 将 Q 分为 Tr = ⌈N/Br⌉ 块, K/V 分为 Tc = ⌈N/Bc⌉ 块
2. 初始化 O = 0, l = 0, m = -∞
3. for j = 1 to Tc:                          // 外层循环: K/V 块
     3.1 从 HBM 加载 K_j, V_j 到 SRAM
     3.2 for i = 1 to Tr:                    // 内层循环: Q 块
           3.2.1 从 HBM 加载 Q_i, O_i, l_i, m_i 到 SRAM
           3.2.2 S_ij = Q_i @ K_j^T  ∈ R^{Br×Bc}
           3.2.3 m̃_ij = rowmax(S_ij)
           3.2.4 P̃_ij = exp(S_ij - m̃_ij)
           3.2.5 l̃_ij = rowsum(P̃_ij)
           3.2.6 m_new = max(m_i, m̃_ij)
           3.2.7 l_new = exp(m_i - m_new) * l_i + exp(m̃_ij - m_new) * l̃_ij
           3.2.8 O_i ← diag(l_new)^{-1} * (diag(l_i) * exp(m_i - m_new) * O_i
                        + exp(m̃_ij - m_new) * P̃_ij @ V_j)
           3.2.9 写回 O_i, l_new, m_new 到 HBM
4. return O

3. Operation Options

Use the AskUserQuestion tool to provide the user with the following choices:

  • Modify an item — Modify any of the above information
  • Add more details — Proceed to Phase 3
  • Everything is correct, continue — Skip Phase 3 and generate the file directly

Confirmation Strategy

  • High confidence (✓): Display but do not force confirmation; the user can continue directly
  • Medium confidence (⚠):mustconfirm once
  • Number of confirmations: At most 2 times (category confirmation (only for medium confidence) + final confirmation)
  • Confirmation method: Overall confirmation, not item-by-item confirmation
  • Multi-step/complex operators: Decomposed display, overall confirmation

Phase 3: Optional Supplements

If the user chooses "Add more details", use AskUserQuestion to display the following optional configuration items:

  1. Dynamic axis range — The value range of dynamic axes (default: unrestricted)

  2. Performance goals — Whether there are special performance metric requirements (default: no special requirements)

  3. Boundary condition handling — How zero values/extreme values/NaN/Inf are handled (default: normal computation)

  4. Reference implementation — PyTorch/NumPy reference implementation link or code

  5. Application Scenarios and Typical Configurations — Target model, usage location, typical configuration table (strongly recommended)

    Typical configurations are used for subsequent golden verification and design solution generation, using a 7-column format:

    Configuration Name Type Priority Parameters Input Shape Output Shape Description
    Performance_P0 Performance P0 {key parameters} {each input shape} {output shape} Core performance scenario
    Function_P0 Function P0 {key parameters} {each input shape} {output shape} Core function verification

    Guided Process: If the user chooses to provide application scenarios, proactively ask whether they will provide typical configurations. If the user does not provide typical configurations, recommend default configurations based on the dynamic axis ranges for confirmation.

The user may fill in only the items they care about, and the rest will use default values.


Output File Generation

After user confirmation, generate the SPEC.md file:

SPEC.md Template

The template file is located at: templates/spec-template.md

When using it, replace the following placeholders:

  • {operator_name} — Operator name
  • {category} — Operator category (element-wise / reduction / matmul / attention / custom)
  • {formula} — Mathematical formula
  • {description} — Functional description
  • front matter structured fields:
    • {axes_list} / {axes_ranges} / {shape_constraints}
    • {performance_target}
    • {atol} / {rtol}
    • Convention:axes_list Must be a YAML-parsable list (for example ['N'] or ['N','M'])
  • {feature_name}, {need_or_not}, {confidence}, {impl_note}, {priority} — Key features table rows (required for complex operators)
  • {algorithm_name} / {带编号的伪代码步骤} — Algorithm description (optional, required for complex operators)
  • {ASCII数据流图} — Data flow diagram
  • {name}, {shape}, {dtype}, {dynamic_axes}, {description} — Input/output specifications
  • {atol}, {rtol} — Precision requirements
  • {axes_list}, {axes_meanings}, {axes_ranges} — Dynamic axis description
  • {zero_handling}, {inf_handling}, {nan_handling} — Boundary condition handling
  • {performance_target} — Performance targets
  • {reference_impl}, {paper}, {similar_ops} — Reference information
  • {model}, {layer} — Application scenarios
  • {config_name}, {type}, {priority}, {params}, {input_shapes}, {output_shapes}, {config_desc} — Typical configuration table rows
  • {timestamp} — Generation time

File Conflict Handling

If under the target path SPEC.md already exists,mustask the user via AskUserQuestion :

⚠ 文件已存在:
  - SPEC.md 路径

请选择:
  1. 覆盖 — 用新生成的内容替换已有文件
  2. 取消 — 不生成文件,保留现有内容

Field Definitions and Default Values

Required fields (no default values, must be provided by the user)

Field Type Description
Operator name string Unique identifier, starts with a lowercase letter, may contain only lowercase letters, digits, and underscores
Mathematical formula string Core computation logic, required for all operators

Conditionally required fields (must be provided in specific scenarios)

Field Type When required
Algorithm description string When the formula cannot fully express the computation flow (involving procedural logic such as blocking, loops, online updates, state maintenance, etc.)

The formula describes "what to compute", and the algorithm describes "how to compute it". Most operators that require an algorithm also have a formula. Simple operators (such as y = sinh(x)) only need a formula; complex operators (such as Flash Attention) have both.

Recommended fields (with default values)

Field Default value Description
Input shape Construct a typical value Input tensor shape
Input dtype float32 Input data type
Output shape Derived from the input Output tensor shape
Output dtype Same as the input Output data type
Dynamic axes batch、seq Supports dynamic shape
Performance target 2 times the first-run accuracy-success performance Performance optimization guidance
Accuracy requirement atol=0.001, rtol=0.001 Default accuracy standard

Optional fields (with reasonable default values, can be skipped entirely)

Field Default value Purpose
Optional parameters Automatically derived Functional completeness
Dynamic axis ranges [1, INT32_MAX] Performance optimization
Boundary condition handling Normal computation (zero/inf/nan are all normal) Special value handling
Reference implementation None Framework/paper/code reference
Application scenarios Recommended to provide typical configurations (7-column table) Model/layer/typical configuration table, for subsequent golden generation and design solutions

Default value disclosure rules

When the following information is not provided and default values are allowed to be used, it must be clearly displayed during the confirmation step and must not be filled in silently:

  • dtype default value
  • atol / rtol default values
  • Dynamic axis range default values
  • Performance target default value

Display format suggestion:

⚙️ 将使用以下默认值(如不修改,将直接写入 SPEC.md):
- dtype: float32
- atol/rtol: 0.001 / 0.001
- 动态轴范围: [1, INT32_MAX]
- 性能目标: 首跑精度成功性能的 2 倍

⚠️ Default value persistence requirement: All default values displayed during the confirmation step must be written into the corresponding fields of the generated SPEC.md (such as default_params frontmatter fields, accuracy requirement section, etc.), and must not be only displayed without being persisted.


In-depth analysis of optional parameters

When an operator involves optional parameters (such as in framework API reference scenarios), an in-depth analysis must be performed from the following four dimensions:

Dimension Description Example
Code location At which stage of the computation flow the parameter is used Input preprocessing/core computation/output post-processing
Computation logic How the parameter affects the computation Conditional branching/numerical scaling/data selection
Implementation complexity Whether PyPTO supports it Low (directly supported)/Medium (requires special handling)/High (not supported)
Dependency relationships Whether it depends on other parameters Independent/dependent on parameter X/mutually exclusive with parameter Y

Analysis method:

  1. Locate the code position: Search for the parameter name in the reference implementation and find where it is used
  2. Understand the computation logic: Analyze how the parameter affects the computation flow
  3. Assess implementation complexity: Determine whether the PyPTO API supports it and how difficult it is to implement
  4. Determine dependency relationships: Analyze constraints and mutual exclusivity relationships between parameters

Feature priority system

Determine implementation priority based on the importance of the feature:

Priority Definition Description
P0 (must have) Core feature Cannot work without it; required in all scenarios
P1 (important) Common feature Affects most usage scenarios,must be implemented in the first version
P2 (optional) Special-scenario feature Decide whether to implement based on requirements
P3 (deferred) Not supported or too costly Not supported by PyPTO or too costly to implement; not implemented for now

Important principles:

  • P0 and P1 features must be implemented in the first version
  • Only P2/P3 features can be deferred
  • Mark the priority of each feature in the specification confirmation checklist

Example:

✅ 必须信息:
  [✓] 算子名称: scaled_dot_product_attention
  [✓] 数学公式: Attention(Q,K,V) = softmax(QK^T/√d) @ V
  [✓] 输入: Q, K, V [b, h, s, d] float32 (P0)
  [✓] 可选参数:
      - attn_mask: 注意力掩码 (P2)
      - dropout_p: dropout 概率 (P3)
      - is_causal: 因果注意力 (P1)
      - scale: 缩放因子 (P1)

Requirements understanding checklist

  • The completeness of the current requirements information has been assessed (high / medium / low)
  • The usage of default values has been explicitly shown
  • The operator name has been confirmed and complies with the naming convention (see "Field definitions" § Operator name)
  • The mathematical formula has been confirmed and clearly describes the core computation logic
  • For complex operators, key characteristics have been identified and confirmed with the user (see "Complexity determination and key characteristic identification")
  • For complex operators, an algorithm description has been provided (see "Stage 2" § When an algorithm description is needed)
  • All key characteristics have been marked with implementation status (✓ needed / ✗ not needed / ? to be confirmed) and priority
  • All information has been marked with confidence level (✓ high / ⚠ medium / ❓ low)
  • Input/output shapes, dtypes, and dynamic axes have been clarified
  • Optional parameters have been listed and marked with priority (P0-P3); P0/P1 have completed the four-dimensional analysis
  • P0 and P1 features have no omissions (see "Feature priority system")
  • Precision requirements, boundary conditions, and dynamic axis ranges have been clarified or default values have been used
  • Performance goals, reference implementation, application scenarios, and typical configuration have been asked about
  • Medium-confidence information has been confirmed once, and the number of confirmations has not exceeded 2