@antprofuse/saddle-islands-minifish 0.0.0-stage → 0.1.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.
Files changed (3) hide show
  1. package/SKILL.md +99 -0
  2. package/package.json +16 -4
  3. package/README.md +0 -3
package/SKILL.md ADDED
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: saddle-islands-minifish
3
+ description: 消费 Spec、Prototype、正式physical输入、backend-contract 和既有 Minifish 黑盒测试,实现或修改小程序产品,使独立验收通过。不编写测试答案、重设计业务契约或实现后端。
4
+ ---
5
+
6
+ # Saddle Minifish
7
+
8
+ 这是项目工程研发规范,平台 API 以当前 Minifish 官方资料为准;CDP 探针是辅助接入工具,不是完整平台研发规范。
9
+
10
+ 先完整阅读本轮冻结的 saddle-islands-workflow 及本 Skill 原始包。按 workflow 的传播规则消费已提交并推送的 Git 包,核仓库、完整 commit、版本和逐文件摘要;同批保持一致,运行中不静默替换。npm 仅作发布备份,不要求安装 latest 或等待 registry。缺失正文或引用文件须修复交接,不能凭版本号相同认定内容一致。
11
+
12
+ ## 阶段执行合同
13
+
14
+ 开始前确认正式输入、设计、独立测试定义、公共工具版本及已有有效结果已就绪。交付是产品改动与本轮实际测试的完整增量结果,包含复用依据、退回问题及影响集合。单Agent兼任时也须先完成上一阶段交接,再按产品职责执行;不能按实现现状改测试期望。
15
+
16
+ 通过独立工具集已交付的公开入口运行测试和生成报告,使用工具默认调度与前置门禁,必要偏离按工具合同留痕。不自行复制runner、断言或报告脚本;公开入口尚不可用时反馈设施缺口,不以文档中的规划命令冒充已提供能力。
17
+
18
+ ## 实现输入与主入口
19
+
20
+ 读取当前分支范围内 Prototype、原始测试责任、实体/流程、正式physical绑定及入口 和 backend-contract,并读 minifish-tests 的业务场景、覆盖和运行说明。默认产品目录 code/minifish,已有工程优先;不假设 PUC 域名、页面路径或业务字段。
21
+
22
+ 每份后端契约有一个唯一的小程序端请求实现入口;仅所属页面同一语义起点的载体或 helper 可调用它;不同起点不共用契约。沿正式契约标识保持请求入口与后端注册入口的脉络。具体代码布局按当前正式工程规则,未批准命名提案不自动迁移。
23
+
24
+ 页面通过标准平台生命周期接收已定义入参,包括直接带参打开;不以研发内存 session 代替真实入口。业务后端通信走 MobileGW,不另接直连 Saddle URL,不把可信身份放业务 payload。平台特殊字段依据正式平台合同,不凭经验补参数。
25
+
26
+ ## 增量迭代的研发顺序
27
+
28
+ 同一页面由唯一产品成员串行消费已就绪的测试功能批次。先理解需求和独立测试,消费已有有效失败;证据不足时运行相关测试,自主定位问题、设计实现、修改并复验。已有同一输入的有效结果可复用并标明来源,未运行项不能算通过。既有工程不按全新项目重写,不把目录、区域或case排列当作研发顺序。
29
+
30
+ 按共同原因归并失败,区分产品缺陷、测试设施缺陷和源冲突;统筹修复共享逻辑和布局,不一条case改一遍同一实现。普通业务失败不中止其他独立case的初次运行;若公共设施无法启动或环境失效,则先处理该共因,避免批量产生同一种无效失败。
31
+
32
+ 修复阶段主要分析失败项及本次改动影响,不重复调查无变化的已通过项。修改后复验失败项和受影响的已通过case,最终按约定范围独立验收。先跑再看失败不等于忽略需求或源冲突,也不以测试全绿证明缺失断言已覆盖。
33
+
34
+ 同一页面产品单写者约束只用于避免多个研发节点同时改写冲突文件,不限制该节点一次实现多个区域,也不要求逐case或逐区域串行研发。
35
+
36
+ 产品每轮发布绑定固定分组和原ID的覆盖数据,保留产品/测试版本、认证收据与历史快照。报告粒度不等于实际运行粒度,未受影响的有效证据可复用;有回退如实报告。Owner核对数据后安排下一批,不代替产品成员决定具体代码修改。测试错误退回原测试负责人审计同因消费者,仅阻塞实际影响集合,产品不改测试答案。
37
+
38
+ 每轮必须评估本批所有未通过case并按共因处理当前可处理项,不能遇局部测试错误就结束整批。完整增量交付保已过结果、产品修改与实际复验、其余各项原因和退回影响集合;判断整批测试大概率不可靠须有机制、范围及证据,否则继续独立可处理部分。具体交付与报数规则消费workflow的“产品迭代的完整增量交付”。
39
+
40
+ ## 实现和验收
41
+
42
+ - 开始布局前核对测试中的语义承载与整体页面责任:原型模拟的原生导航不等于业务 DOM。按输入及真实平台选择承载,已有原生能力满足的逻辑元素不重复绘制;自定义导航按明确输入实现。
43
+ - 即使测试全绿,发现实际结果与输入冲突也要提交来源、实际结果及错误断言证据给测试建设方;不为迎合错误测试保留错误 UI,也不自行放宽独立验收。普通产品失败由研发节点内部分析修复并验证;每轮形成实质结果即交付,不要求全绿才发布进展。
44
+ - 原型决定页面消费与交互;后端契约决定请求/响应。金额、时间、null、枚举与失败分支逐项实现,不无依据补值或舍入。
45
+ - 展示逻辑留在小程序端;不是让后端提供页面拼接文案。数据归属、重复进入、等待与迟到响应按已确定要求处理。
46
+ - 不读取 backend 实现来建立隐性依赖;两侧除正式输入和契约外互为黑盒。
47
+ - 可增加产品单测,最终运行既有 minifish-tests,使用真实产物、实际平台请求拦截和页面断言。测试设施问题交 本轮冻结的saddle-islands-minifish-test 的建设职责,不删改断言迁就实现。
48
+ - 发现预期冲突,给出 Spec/契约条款、请求、场景及实际结果;没有依据不选择某个看似合理结果。独立且明确部分继续。
49
+ - 每轮交付前完成工程现有编译/类型/格式检查、本轮修复的受影响黑盒及必要回归,说明复用依据;不是每轮重跑整批全量,也不能固定禁止运行测试、仅改代码等待验收代替研发反馈。报告实际通过、失败、未运行与覆盖剩余责任。Mock 通过不证明真实后端、真机或发布。
50
+ - 报告、终态截图、trace 和实际结果写仓库外;源码提交、push 及平台上传分别按授权。不得为测试通过直接调页面内部函数、测试 hook 或替换产品页面。
51
+
52
+ ## 契约身份交接
53
+
54
+ 消费本轮冻结的saddle-islands-design后端契约格式,以及独立工具集随附的语义身份规范。契约 identity/id 由设计工具生成,研发/测试不得重新命名或自行实现摘要。读取同版本只追加登记表,校验全部当前契约及可信 Git 基线;不同页面语义起点独立契约,同起点可聚合。旧项目未批准迁移时保留原交付,不混用当前格式规则。
55
+
56
+ ## 原生组件与原型目标
57
+
58
+ 处理原型到原生组件的实现或验收时,读取本轮统一的 `saddle-islands-minifish-test` 包或已指定源码中的 `references/native-miniapp-validation.md`,了解测试的原生观察方法;不复制另一份断言规则。逐元素交接源条件、原生承载和可执行观察;先用真实清单内完整 case 验证适配,再按消费者分批迁移。原型 HTML 实现树不作为小程序组件合同,单例通过不代表其他 case 通过。
59
+
60
+ ## 原生文字与按钮布局
61
+
62
+ 原生button/text可能具有默认高度、内边距或内部文字载体。原型要求居中时,按原生组件布局能力明确实现并验证实际文字位置;不要照搬HTML标签的默认排版。保持已确定的rpx尺寸、字号、字重和颜色,检查文字是否被裁切。若CSS值正确但显示粗细有差异,先核实际字体及测试宿主;字体缺失由公共测试环境解决,不在产品逐元素调字重补偿,也不在发布包夹带测试字体。
63
+
64
+ ## 宿主导航随原型变更
65
+
66
+ 原型的可见页面标题、导航栏背景等宿主外观也是实现输入,不能因由小程序平台绘制而遗漏。每轮核对原型相关节点和设计token的变化,追踪到应用window配置、页面配置及运行时导航API的实际覆盖关系;按当前原型更新,不沿用旧值或自行换成平台默认色。需要改变目标外观时先变更原型,不反向修改原型迎合产品。
67
+
68
+ 原生导航由宿主配置承载,不在内容区重复绘制。标题区分可见导航文案与HTML文档title,保留源要求的多语言和状态变化。交付注明源锚点、受影响配置及实际宿主观察结果;单靠配置文件正确或内容区case通过,不能宣称导航已对齐。
69
+
70
+ ## 专用测试锚点
71
+
72
+ 组件用 `data-anchor-id` 声明当前 Spec 的页面内完整目标路径,与测试共享同一目标身份,不另起英文别名。页面目标索引只关联源、锚点及承载;具体期望仍来自Spec/原型。业务id、class保持原用途,样式和业务逻辑不能依赖测试锚点;标识不携带预期结果或业务测试开关。
73
+
74
+ 同一目标内容/视觉case共用锚点。列表依据源成员身份明确实例区分,自定义组件显式将标识传到内部实际目标,不假定虚拟调用标签透传,也不为定位增加影响布局的包装。源目标路径变更时同步核对索引和声明。
75
+
76
+ 读取本轮固定测试Skill的 `references/semantic-anchors.md`。平台透传/桥接由公共测试工具承担,产品只声明真实身份,不引入Fiber遍历、DOM补属性或测试驱动代码到发布包。公共工具能力验证不等于产品迁移已完成,新增及迁移目标须在真实小程序中验证身份、行为与独立原case。旧运行批次在安全点接入,不中途替换输入。
77
+
78
+
79
+ 导航背景调整时同时核宿主支持的前景主题及覆盖层级,使状态栏文字/网络/电量、标题与右侧胶囊均符合原型或明确批准的平台映射。使用官方配置/API,不在产品内注入模拟器DOM样式。交付包含实际宿主截图和测试观察,不只检查配置值。
80
+
81
+ 页面区域顺序也是原型责任,局部组件样式通过不能证明整页布局正确。调整区域时保留原子树的条件与交互,核相邻区域的负边距和重叠;交接顺序责任需同时提供两个真实目标的专用锚点,供测试独立判断顺序,不能要求测试通过兄弟关系猜身份。
82
+
83
+ ## 当前登录用户的平台接入
84
+
85
+ Spec 的 `getLoginUser()` 是语义依赖,不是一个需要另建的登录体系。既有支付宝小程序SDK接入依据包括 `my.getUserInfo`,为 `my.ap.getUserInfo` 的别名;业务入参为空,成功返回中的 `userId` 才是用户身份。`getAuthCode` 返回授权码,不能当作 userId。小程序端身份比较应适配这一平台能力,不扩业务请求加入可信身份,也不把空串或硬编码身份作为降级。
86
+
87
+ 接入时需按冻结SDK重新核对这些正式位置:`@alipay/mini-api-types/lib/public/apis/open/userinfo.d.ts` 的返回定义、`@ali/appx-api-types/typing/typings.d.ts` 的别名/NativeAPI映射,以及 `@ali/antcube-appx-bridge-my/esm/ap/open.js` 的实际桥接。SDK 标记 `@private`,因此“接口存在”“Mock下接入通过”“当前应用真实宿主权限已验证”分别记录;权限未实证不推翻已有接口结论,也不阻塞独立Mock覆盖设计。接入失败按正式源处理,不擅自把本人判断为他人。
88
+
89
+ 例如分享来源本人/好友比较会消费平台 userId;后端请求的可信身份仍归后端认证上下文。具体调用条件由当前Spec决定,不因接口可用而让所有case强制调用。
90
+
91
+ ## 分支资源与局部失败归属
92
+
93
+ 相邻结果分支的资源分别核原型:成功、失败、取消不因布局相同就共用同一图。资源变更保持业务状态与请求不变,交付对应分支实际加载及截图证据;装饰资源没有独立测试ID时不虚构覆盖点。
94
+
95
+ “后端协作延期”只适用于缺少或待变更的跨端协议。冻结源已经声明的平台API、公开RPC及其小程序端消费仍按本轮授权实现;未生成适配代码不自动构成后端依赖。对源规定的提醒等功能同时实现调用门禁、同页面状态及迟到响应隔离,不能只补一个外观入口。
96
+
97
+ ## 源单位的明确例外
98
+
99
+ rpx仍是已确定的默认长度规则;源最终级联若明确某个值保持固定逻辑px,应先核设计基准和至少两个视口的计算值,按源优先的既定决策处理,不用错误换算迎合通用门禁。例外只记录准确文件、selector、属性和值,保其余rpx检查,并以邻近错误值/其他selector反例防止扩大。不得把某次固定圆角推广成所有圆角免检。
package/package.json CHANGED
@@ -1,6 +1,18 @@
1
1
  {
2
2
  "name": "@antprofuse/saddle-islands-minifish",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "消费 Spec、Prototype、正式physical输入、backend-contract 和既有 Minifish 黑盒测试,实现或修改小程序产品,使独立验收通过。不编写测试答案、重设计业务契约或实现后端。",
5
+ "license": "MIT OR Apache-2.0",
6
+ "files": [
7
+ "SKILL.md"
8
+ ],
9
+ "publishConfig": {
10
+ "access": "public",
11
+ "registry": "https://registry.npmjs.org/"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+ssh://git@code.alipay.com/profuse/saddle-islands.git",
16
+ "directory": "skills/minifish"
17
+ }
18
+ }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.