@1aboveio/skills 1.0.13 → 1.0.14
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.
- package/.codex-plugin/plugin.json +1 -1
- package/.codex-plugin/resources.json +145 -142
- package/README.md +1 -1
- package/package.json +5 -5
- package/skills/app-dev/airflow/SKILL.md +1 -1
- package/skills/app-dev/android-development/SKILL.md +126 -0
- package/skills/app-dev/android-development/references/android-conventions.md +117 -0
- package/skills/app-dev/{android-foundation → android-development}/references/ci.md +10 -6
- package/skills/app-dev/{android-foundation → android-development}/references/diagnosis.md +39 -15
- package/skills/app-dev/android-development/references/feature-work.md +171 -0
- package/skills/app-dev/android-development/references/framework-choice.md +88 -0
- package/skills/app-dev/{android-foundation → android-development}/references/gotchas.md +43 -6
- package/skills/app-dev/android-development/references/init.md +104 -0
- package/skills/app-dev/android-development/references/setup.md +389 -0
- package/skills/app-dev/android-development/references/workspace.md +156 -0
- package/skills/app-dev/android-development/scripts/init.mjs +380 -0
- package/skills/app-dev/app-debug/SKILL.md +1 -1
- package/skills/app-dev/better-auth/SKILL.md +1 -1
- package/skills/app-dev/data-catalog/SKILL.md +1 -1
- package/skills/app-dev/data-quality/SKILL.md +1 -1
- package/skills/app-dev/ios-foundation/SKILL.md +2 -2
- package/skills/app-dev/monorepo/SKILL.md +1 -1
- package/skills/app-dev/nextjs-fullstack/SKILL.md +1 -1
- package/skills/app-dev/prisma-setup/SKILL.md +1 -1
- package/skills/app-dev/pyspark/SKILL.md +1 -1
- package/skills/app-dev/python-backend/SKILL.md +1 -1
- package/skills/app-dev/shadcn/SKILL.md +1 -1
- package/skills/app-dev/zod-v4/SKILL.md +1 -1
- package/skills/cicd/cloud-build/SKILL.md +1 -1
- package/skills/cicd/cloud-debug/SKILL.md +1 -1
- package/skills/cicd/cloud-deploy/SKILL.md +1 -1
- package/skills/cicd/docker/SKILL.md +1 -1
- package/skills/cicd/github-actions/SKILL.md +1 -1
- package/skills/cicd/github-flow/SKILL.md +1 -1
- package/skills/cicd/google-cloud/SKILL.md +1 -1
- package/skills/cicd/mergify/SKILL.md +1 -1
- package/skills/cicd/podman/SKILL.md +1 -1
- package/skills/content/article-review/SKILL.md +1 -1
- package/skills/content/article-to-image/SKILL.md +1 -1
- package/skills/content/flowchart-svg/SKILL.md +1 -1
- package/skills/content/image-gen/SKILL.md +1 -1
- package/skills/content/mermaid/SKILL.md +1 -1
- package/skills/content/wechat-article-writer/SKILL.md +1 -1
- package/skills/content/wechat-publisher/SKILL.md +1 -1
- package/skills/content/wechat-search/SKILL.md +1 -1
- package/skills/content/xai-search/SKILL.md +1 -1
- package/skills/core/distill-writing/SKILL.md +1 -1
- package/skills/core/doc-to-md/SKILL.md +1 -1
- package/skills/core/editorial-review/SKILL.md +1 -1
- package/skills/core/house-style/SKILL.md +1 -1
- package/skills/core/plain-language/SKILL.md +1 -1
- package/skills/core/polish-cn/SKILL.md +1 -1
- package/skills/core/reg-parser/SKILL.md +1 -1
- package/skills/core/terminology/SKILL.md +1 -1
- package/skills/core/write-doc/SKILL.md +1 -1
- package/skills/core/write-report/SKILL.md +1 -1
- package/skills/engineering/better-review/SKILL.md +1 -1
- package/skills/engineering/e2e-test/SKILL.md +1 -1
- package/skills/engineering/engineering/SKILL.md +9 -3
- package/skills/engineering/engineering/references/init-scope.md +7 -3
- package/skills/engineering/engineering/references/scope-management.md +9 -0
- package/skills/engineering/engineering/scripts/init.mjs +40 -17
- package/skills/engineering/engineering-runtime/SKILL.md +1 -1
- package/skills/engineering/engineering-runtime/coherence/workflow.json +13 -13
- package/skills/engineering/ensure-coverage/SKILL.md +1 -1
- package/skills/engineering/golden-path/SKILL.md +1 -1
- package/skills/engineering/harness-runtime/SKILL.md +1 -1
- package/skills/engineering/resolve-issues/SKILL.md +1 -1
- package/skills/engineering/resolve-issues/references/exploration.md +1 -1
- package/skills/engineering/resolve-release/SKILL.md +1 -1
- package/skills/engineering/rush-issues/SKILL.md +1 -1
- package/skills/engineering/rush-release/SKILL.md +1 -1
- package/skills/engineering/test-quality/SKILL.md +1 -1
- package/skills/risk-compliance/compliance-audit/SKILL.md +1 -1
- package/skills/risk-compliance/contract-compare/SKILL.md +1 -1
- package/skills/risk-compliance/contract-review/SKILL.md +1 -1
- package/skills/risk-compliance/doc-authenticity/SKILL.md +1 -1
- package/skills/risk-compliance/fraud-detection/SKILL.md +1 -1
- package/skills/risk-compliance/payment-analysis/SKILL.md +1 -1
- package/skills/risk-compliance/portfolio-payment-analysis/SKILL.md +1 -1
- package/skills/risk-compliance/similar-domain/SKILL.md +1 -1
- package/skills/risk-compliance/tld-detection/SKILL.md +1 -1
- package/skills/app-dev/android-foundation/SKILL.md +0 -248
- package/skills/app-dev/android-foundation/references/delivery-focus.md +0 -31
- package/skills/app-dev/android-foundation/references/feature-work.md +0 -50
- package/skills/app-dev/android-foundation/references/setup.md +0 -188
- package/skills/app-dev/android-foundation/references/workspace.md +0 -81
- /package/skills/app-dev/{android-foundation → android-development}/LICENSE +0 -0
- /package/skills/app-dev/{android-foundation → android-development}/assets/android-ci-job.yml +0 -0
- /package/skills/app-dev/{android-foundation → android-development}/release-check.mjs +0 -0
- /package/skills/app-dev/{android-foundation → android-development}/scripts/device-run.sh +0 -0
- /package/skills/app-dev/{android-foundation → android-development}/scripts/workspace-runtime/bin/workspaces.mjs +0 -0
- /package/skills/app-dev/{android-foundation → android-development}/scripts/workspace-runtime/native-workspace.mjs +0 -0
- /package/skills/app-dev/{android-foundation → android-development}/scripts/workspace-runtime/workspace-lifecycle.mjs +0 -0
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ See https://github.com/1aboveio/ai/blob/main/docs/native-codex.md for prerequisi
|
|
|
52
52
|
| `core` | `@1aboveio/core-skills` | distill-writing, doc-to-md, editorial-review, house-style, plain-language, polish-cn, reg-parser, terminology, write-doc, write-report |
|
|
53
53
|
| `engineering` | `@1aboveio/engineering-skills` | better-review, e2e-test, engineering, engineering-runtime, ensure-coverage, golden-path, harness-runtime, resolve-issues, resolve-release, rush-issues, rush-release, test-quality |
|
|
54
54
|
| `cicd` | `@1aboveio/cicd-skills` | cloud-build, cloud-debug, cloud-deploy, docker, github-actions, github-flow, google-cloud, mergify, podman |
|
|
55
|
-
| `app-dev` | `@1aboveio/app-dev-skills` | airflow, android-
|
|
55
|
+
| `app-dev` | `@1aboveio/app-dev-skills` | airflow, android-development, app-debug, better-auth, data-catalog, data-quality, ios-foundation, monorepo, nextjs-fullstack, prisma-setup, pyspark, python-backend, shadcn, zod-v4 |
|
|
56
56
|
| `risk-compliance` | `@1aboveio/risk-compliance-skills` | compliance-audit, contract-compare, contract-review, doc-authenticity, fraud-detection, payment-analysis, portfolio-payment-analysis, similar-domain, tld-detection |
|
|
57
57
|
| `content` | `@1aboveio/content-skills` | article-review, article-to-image, flowchart-svg, image-gen, mermaid, wechat-article-writer, wechat-publisher, wechat-search, xai-search |
|
|
58
58
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@1aboveio/skills",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.14",
|
|
4
4
|
"description": "Every 1aboveio skill package in one: install once, then choose which packages Pi loads with npx @1aboveio/skills select.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"nativeCodex": {
|
|
29
29
|
"schemaVersion": 1,
|
|
30
30
|
"metadataPath": ".codex-plugin/resources.json",
|
|
31
|
-
"metadataDigest": "
|
|
32
|
-
"releaseIdentity": "
|
|
31
|
+
"metadataDigest": "5a89642fb1549c82420cbba78a75eaff01509d14cbf556480130a688e7ca1efe",
|
|
32
|
+
"releaseIdentity": "1d0affb17cf284c052ad00266f7d5ea31a7f7f9bb7f8ae6435b200835710e123"
|
|
33
33
|
},
|
|
34
34
|
"pi": {
|
|
35
35
|
"skills": [
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"needsCore": false,
|
|
105
105
|
"skills": [
|
|
106
106
|
"airflow",
|
|
107
|
-
"android-
|
|
107
|
+
"android-development",
|
|
108
108
|
"app-debug",
|
|
109
109
|
"better-auth",
|
|
110
110
|
"data-catalog",
|
|
@@ -260,7 +260,7 @@
|
|
|
260
260
|
]
|
|
261
261
|
}
|
|
262
262
|
],
|
|
263
|
-
"digest": "
|
|
263
|
+
"digest": "ffe17fe4c3bfd5076e842358a22f58b116f060bd779f788f4ba3fd7b814f8b0e"
|
|
264
264
|
},
|
|
265
265
|
"publishConfig": {
|
|
266
266
|
"registry": "https://registry.npmjs.org/",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: airflow
|
|
3
3
|
description: Airflow DAG architecture and conventions. Use when designing, writing, reviewing, testing, or debugging Airflow DAGs and tasks, including TaskGroups, data intervals, timezone-aware date parameters, CLI validation, environment-based scheduling, and pytest integrity tests.
|
|
4
4
|
user-invocable: true
|
|
5
|
-
release-version: 0.
|
|
5
|
+
release-version: 0.46.0
|
|
6
6
|
---
|
|
7
7
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
8
8
|
# Airflow DAG Development Patterns
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: android-development
|
|
3
|
+
description: "Prove and debug Expo / React Native apps on an owned Android emulator. Use for Android startup/rendering failures, Metro or ADB problems, UiAutomator/harness failures, APK builds, SDK/NDK/JDK workspace setup, native journey validation, and choosing Kotlin/Compose versus React Native for Android flows. Reproduce failed Android CI checkpoints off CI before fixing and redispatching. Standalone invocation offers Project or Session; init persists repo conventions. NOT for workflow YAML, CI speed or runners (github-actions), browser tests (e2e-test), iOS (ios-foundation), plain Jest tests, or signing/store release."
|
|
4
|
+
release-version: 0.46.0
|
|
5
|
+
---
|
|
6
|
+
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
7
|
+
# Android development
|
|
8
|
+
|
|
9
|
+
Use the repo's existing native project, build scripts, launcher and journey harness.
|
|
10
|
+
Read its `AGENTS.md`, `CONTRIBUTING.md` Android development section and relevant ADRs.
|
|
11
|
+
Project rules and required CI remain binding; this skill does not add acceptance gates.
|
|
12
|
+
|
|
13
|
+
## Invocation and persistence
|
|
14
|
+
|
|
15
|
+
- **Standalone `/android-development`**, without a task or explicit scope: ask once,
|
|
16
|
+
"Where should the Android workflow apply?" Offer **Project** (persist repo conventions)
|
|
17
|
+
and **Session** (apply here without writing files). Wait for the answer; cancellation
|
|
18
|
+
leaves files unchanged. Do not offer global persistence.
|
|
19
|
+
- **Project**, `/android-development init`, or an explicit request to save repo conventions:
|
|
20
|
+
follow [initialization](references/init.md). Preview, then apply the authorized missing
|
|
21
|
+
`CONTRIBUTING.md` section and `AGENTS.md` pointer. No second approval is needed unless
|
|
22
|
+
existing policy conflicts. Initialization is not a policy refresh or delivery permission.
|
|
23
|
+
- **Session:** apply this workflow without writing guidance or agent settings. Retain the
|
|
24
|
+
choice through reload/compaction in this session; a new session makes its own choice.
|
|
25
|
+
- **An actual Android task or automatic skill load:** read and apply the workflow without
|
|
26
|
+
a scope question or writes. Quoted invocations are not setup requests. If repo guidance
|
|
27
|
+
is absent, use these defaults and offer init once without blocking the task. An existing
|
|
28
|
+
guide alone does not authorize persistence. Do not treat unreadable guidance as absent.
|
|
29
|
+
|
|
30
|
+
## Work loop
|
|
31
|
+
|
|
32
|
+
Choose the task, not a fresh environment for every attempt:
|
|
33
|
+
|
|
34
|
+
- **Feature:** implement, then follow the applicable validation levels below.
|
|
35
|
+
- **Debug:** reproduce the failing screen/action/build/harness checkpoint, inspect its
|
|
36
|
+
evidence, fix the cause, and confirm that the original reproduction passes. Then follow
|
|
37
|
+
the same validation ladder. Read [diagnosis](references/diagnosis.md) before debugging.
|
|
38
|
+
For CI failures, reproduce the checkpoint off CI before fixing and redispatching;
|
|
39
|
+
never send a guessed correction to CI to discover whether it works.
|
|
40
|
+
- **Setup proof:** only for a new environment or invalidated setup assumptions. Read
|
|
41
|
+
[workspace](references/workspace.md) and [setup](references/setup.md), run all applicable
|
|
42
|
+
repo-specific stages in order and record proof. Do not add Expo or a new harness merely
|
|
43
|
+
to match the examples, or repeat cold setup for ordinary fixes.
|
|
44
|
+
|
|
45
|
+
## Validation ladder
|
|
46
|
+
|
|
47
|
+
Read [feature work](references/feature-work.md) for selection, ownership and handoff.
|
|
48
|
+
These feedback times are targets, not promises or automatic command deadlines.
|
|
49
|
+
|
|
50
|
+
| Level | Trigger | Verification | Target feedback |
|
|
51
|
+
| --- | --- | --- | --- |
|
|
52
|
+
| L0: Fast | Each code edit | Focused tests, relevant typecheck, and Fast Refresh on the owned app for applicable JS/UI behavior | 5-60 sec |
|
|
53
|
+
| L1: Native | Native code, SDK/dependency or native configuration changes | Incremental emulator-ABI build, install/update, and exercise affected native behavior | 1-4 min |
|
|
54
|
+
| L2: Integration | PR or meaningful feature checkpoint | Candidate APK, fresh-install startup smoke on disposable owned state, and selected real journeys | 5-15 min |
|
|
55
|
+
| L3: Acceptance | Assigned merge/release checkpoint | Required regression, security, backend, device and ABI matrix | As required |
|
|
56
|
+
|
|
57
|
+
Skip L1 when native inputs did not change. Do not defer affected runtime checks to L2
|
|
58
|
+
just because L0 is fast. Fast Refresh and build success are not packaged-app proof.
|
|
59
|
+
If a level fails, debug and fix that failure, confirm its reproduction, then repeat the
|
|
60
|
+
checks the correction invalidated. Preserve applicable evidence and required current-source
|
|
61
|
+
CI; do not restart the whole campaign. Finish at the assignment's checkpoint and report
|
|
62
|
+
higher levels still pending rather than claiming acceptance.
|
|
63
|
+
|
|
64
|
+
## Principles
|
|
65
|
+
|
|
66
|
+
- **Minimize coordination cost.** Choose the smallest design that preserves the required
|
|
67
|
+
behavior and reduces demonstrated coordination cost.
|
|
68
|
+
- **Reuse valid state; invalidate only what changed.** A source edit does not automatically
|
|
69
|
+
invalidate the environment or every artifact.
|
|
70
|
+
- **Match proof to the claim.** Focused development feedback and release acceptance prove
|
|
71
|
+
different things. Use provenance to qualify evidence, not postpone runnable tests;
|
|
72
|
+
speed does not waive correctness or explicit identity gates.
|
|
73
|
+
- **Make ownership explicit.** State transitions and resources need an authoritative owner;
|
|
74
|
+
shared access does not imply permission to reset or modify them.
|
|
75
|
+
|
|
76
|
+
## DOs
|
|
77
|
+
|
|
78
|
+
- Resolve the [owned workspace](references/workspace.md) and actual candidate HEAD. Classify
|
|
79
|
+
changed inputs; verify the [command/task graph](references/feature-work.md#verify-command-expansion)
|
|
80
|
+
before adopting a native build route, not as a prerequisite for independent source tests.
|
|
81
|
+
- Run independent source tests against the working changes immediately. Record HEAD and
|
|
82
|
+
dirty state, verify the code loaded by each relevant test, and report artifact checks separately;
|
|
83
|
+
read [test-first provenance](references/feature-work.md#run-tests-before-chasing-commit-labels).
|
|
84
|
+
- Start Metro once per owned development session for a Metro-backed debug app. Reuse its
|
|
85
|
+
server/port, installed app and booted emulator across edits and focused checks.
|
|
86
|
+
- Assign separate Metro servers/ports and device mappings to independently changing source
|
|
87
|
+
trees/configurations. Share only the same intentional source/config under one runtime owner;
|
|
88
|
+
follow [parallel runtime ownership](references/workspace.md#parallel-development-sessions).
|
|
89
|
+
- Use Fast Refresh or reload for refreshable JS/TS edits. Do not run Gradle, reinstall,
|
|
90
|
+
reboot or restart the backend solely because HEAD changed.
|
|
91
|
+
- Incrementally build/install the actual device ABI when native inputs change and exercise
|
|
92
|
+
the affected behavior. Retain compatible Metro, emulator, Gradle daemon and private outputs.
|
|
93
|
+
- Restart only the resource invalidated by configuration, incompatibility or demonstrated
|
|
94
|
+
failure. Stop owned resources or explicitly hand them off at session completion; finishing
|
|
95
|
+
one check is not session completion. Read [runtime and cleanup](references/setup.md#owned-development-session) first.
|
|
96
|
+
- Use repo-pinned tools, frozen installs and installed SDK components. Bound commands/child
|
|
97
|
+
waits with cleanup time; preserve the original failure separately from cleanup errors.
|
|
98
|
+
- Keep writable caches and fixture data private; never use shared/production data or
|
|
99
|
+
signal unverified stale PIDs. Follow the existing resource owner's cleanup rules.
|
|
100
|
+
- Record native artifact and served-JS identities, variant/API/ABI and sanitized evidence.
|
|
101
|
+
Preserve all configured ABI setup/release proof and distinguish local, CI and post-deploy results.
|
|
102
|
+
|
|
103
|
+
## Avoids
|
|
104
|
+
|
|
105
|
+
- Do not routinely rebuild, reinstall or restart the emulator for JS edits the app can load.
|
|
106
|
+
- Do not automatically run cold setup, clean, prebuild or shared SDK upgrades for an ordinary correction.
|
|
107
|
+
- Do not hide test-APK packaging or all-ABI builds in development commands without a relevant
|
|
108
|
+
requirement. Keep required instrumentation and all-ABI acceptance explicit and intact.
|
|
109
|
+
- Do not borrow writable caches, reset peer runtimes, reuse invalid native artifacts or invent flags.
|
|
110
|
+
- Do not treat a fast local pass as release acceptance or add pools/metrics systems by default.
|
|
111
|
+
- Do not commit, publish, tag or rebuild unrelated artifacts just to match SHA labels before
|
|
112
|
+
testing. Do not count tests loading an unchanged package as proof of its correction.
|
|
113
|
+
|
|
114
|
+
## Read when needed
|
|
115
|
+
|
|
116
|
+
| Topic | Required reference |
|
|
117
|
+
| --- | --- |
|
|
118
|
+
| Repo convention persistence | [init.md](references/init.md) |
|
|
119
|
+
| Kotlin/Compose vs React Native selection | [Kotlin/Compose vs React Native](references/framework-choice.md) |
|
|
120
|
+
| Workspace selection and retention | [workspace.md](references/workspace.md) |
|
|
121
|
+
| Development-session lifecycle and resource ownership | [Owned development session](references/setup.md#owned-development-session) and [runtime ownership](references/workspace.md#development-workspace-owned-session-runtime-and-disposable-runs) |
|
|
122
|
+
| Parallel warm servers and test-first provenance | [Parallel sessions](references/workspace.md#parallel-development-sessions) and [test-first provenance](references/feature-work.md#run-tests-before-chasing-commit-labels) |
|
|
123
|
+
| Builds, provisioning, device execution, cleanup and setup proof | [setup.md](references/setup.md); use [device-run.sh](scripts/device-run.sh) only without an existing resource owner |
|
|
124
|
+
| Feature/fix validation and handoff | [feature-work.md](references/feature-work.md) |
|
|
125
|
+
| Failure reproduction and correction | [diagnosis.md](references/diagnosis.md), then the relevant [gotcha](references/gotchas.md) |
|
|
126
|
+
| CI integration | [ci.md](references/ci.md), [template](assets/android-ci-job.yml), and `github-actions` |
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
## Android development
|
|
2
|
+
|
|
3
|
+
This section records validation order, proof limits and this repo's verified command map.
|
|
4
|
+
Before a selected check, resolve only the commands and inputs it needs from the repo's scripts,
|
|
5
|
+
CI configuration and native project. Do not delay a verified source test while resolving an
|
|
6
|
+
unrelated native build, journey or CI command. Report unresolved commands for their affected
|
|
7
|
+
checks instead of guessing them. Add verified bindings during explicit initialization;
|
|
8
|
+
do not restate or contradict existing project policy.
|
|
9
|
+
|
|
10
|
+
Required CI, release gates, safety rules and cleanup ownership stay binding at every rung. The
|
|
11
|
+
ladder validates the corrected candidate; it never waives a gate the repository requires.
|
|
12
|
+
|
|
13
|
+
### Principles
|
|
14
|
+
|
|
15
|
+
- **Minimize coordination cost.** Choose the smallest design that preserves the required
|
|
16
|
+
behavior and reduces demonstrated coordination cost.
|
|
17
|
+
- **Reuse valid state; invalidate only what changed.** A source edit does not automatically
|
|
18
|
+
invalidate the environment or every artifact.
|
|
19
|
+
- **Match proof to the claim.** Focused development feedback and release acceptance prove
|
|
20
|
+
different things. Use provenance to qualify evidence, not postpone runnable tests;
|
|
21
|
+
preserve explicit source/artifact identity gates.
|
|
22
|
+
- **Make ownership explicit.** State transitions and resources need an authoritative owner;
|
|
23
|
+
shared access does not imply permission to reset or modify them.
|
|
24
|
+
|
|
25
|
+
### DOs
|
|
26
|
+
|
|
27
|
+
- Classify changes and verify actual command expansion: app assembly/install, test APK
|
|
28
|
+
packaging and test execution are different work. Inspect native build routes when needed;
|
|
29
|
+
do not make that a precondition for independent source tests. Retain required CI and consumers.
|
|
30
|
+
- Run independent source tests against the working changes immediately. Record actual HEAD
|
|
31
|
+
and dirty state once, verify the source/module/output loaded by the relevant test, and
|
|
32
|
+
report missing integration artifacts separately. Build affected package output only when
|
|
33
|
+
the test needs it; retain exact identity requirements for assigned workspaces, CI and releases.
|
|
34
|
+
- Start Metro once per owned development session for a Metro-backed debug app and reuse the
|
|
35
|
+
same server/port, installed app and booted emulator across edits and focused checks.
|
|
36
|
+
- Assign separate warm Metro servers, host ports and device mappings to independently
|
|
37
|
+
changing workspaces/configurations. Share one only for intentional same-source/config
|
|
38
|
+
work under one owner, with coordinated writes and exclusive mutating device checks.
|
|
39
|
+
Schedule device conflicts within host capacity; keep caches and test data isolated and
|
|
40
|
+
stop shared services only after every user releases them or an explicit handoff.
|
|
41
|
+
- Use Fast Refresh or reload for refreshable JS/TS edits; do not run Gradle, reinstall,
|
|
42
|
+
reboot or restart the backend solely because the source HEAD changed.
|
|
43
|
+
- Incrementally build/install the actual device ABI when native inputs change and check
|
|
44
|
+
the affected behavior. Retain compatible Metro, emulator, Gradle daemon and private outputs;
|
|
45
|
+
preserve the configured ABI matrix for setup/release acceptance.
|
|
46
|
+
- Restart only a resource invalidated by configuration, incompatibility or demonstrated
|
|
47
|
+
failure. Stop owned services or explicitly hand them off at session completion, not after
|
|
48
|
+
each check. Use the owner's bounded shutdown and verify exit; never reset peer resources.
|
|
49
|
+
- Track native artifact and served-JS identities separately. Invalidate shell reuse when
|
|
50
|
+
native inputs change; never relabel an older APK as a current-source build.
|
|
51
|
+
- Prefer shared RN UI for cross-platform forms/lists and Kotlin/Compose for new Android-only
|
|
52
|
+
native-heavy flows when making an explicit framework decision supported by product requirements.
|
|
53
|
+
Keep the existing stack for ordinary fixes; migration needs separate authorization.
|
|
54
|
+
|
|
55
|
+
### Avoids
|
|
56
|
+
|
|
57
|
+
- Do not routinely build/install APKs, reboot the emulator, clean or prebuild for refreshable JS edits.
|
|
58
|
+
- Do not hide test packaging, all-ABI builds or acceptance campaigns inside a supposedly fast lane.
|
|
59
|
+
Preserve intentional test consumers and full required validation when separating commands.
|
|
60
|
+
- Do not share writable caches, reset peer runtimes, reuse invalid native artifacts or invent selectors.
|
|
61
|
+
- Do not guarantee timings, introduce emulator pools by default or add metrics infrastructure.
|
|
62
|
+
- Do not delay runnable tests while chasing matching package/commit labels, or publish/tag/
|
|
63
|
+
commit unrelated work to obtain them. Do not count an unchanged installed package as fix proof.
|
|
64
|
+
- Do not switch one Metro between candidate trees or alter another session's device mapping.
|
|
65
|
+
Do not let one blocked artifact prevent independent source checks or waive explicit CI gates.
|
|
66
|
+
|
|
67
|
+
### Repository command map
|
|
68
|
+
|
|
69
|
+
During explicit initialization, record the verified working directory, command, native/JS
|
|
70
|
+
inputs, produced app/test artifacts and resource owner for L0-L3. Inspect effective Gradle
|
|
71
|
+
task expansion before calling a route app-only; keep unverified commands or graphs unresolved.
|
|
72
|
+
Prefer existing Expo/React Native scripts. Distinguish source inspection from an observed run;
|
|
73
|
+
init does not require provisioning, a cold build or a full acceptance campaign. Later init
|
|
74
|
+
runs preserve this section and its manual command bindings rather than refreshing them.
|
|
75
|
+
|
|
76
|
+
### Debug, fix, validate
|
|
77
|
+
|
|
78
|
+
1. Record the failed checkpoint, source SHA and the actual checkout, build variant, device or
|
|
79
|
+
ABI, and the evidence already kept. Name the earliest failing stage: build/install, launch,
|
|
80
|
+
load code and assets, initialize, render, interact.
|
|
81
|
+
2. Reproduce the actual failing screen, action, build task or harness checkpoint. Reproduce a
|
|
82
|
+
failed CI checkpoint off CI before fixing and redispatching. Inspect the relevant compiler,
|
|
83
|
+
process/runtime log, app request or UI state; change one relevant variable at a time.
|
|
84
|
+
3. Correct the cause and confirm that the original reproduction passes. Add a focused regression
|
|
85
|
+
test where it can expose the defect, then follow the applicable L0-L3 levels below. A passing
|
|
86
|
+
reproduction alone is not acceptance. If validation finds another defect, fix it and repeat
|
|
87
|
+
checks the correction invalidated rather than restarting the whole campaign.
|
|
88
|
+
4. Report the commands used, their results, remaining gaps and any level still owed. Keep failed
|
|
89
|
+
attempts; a later pass does not erase them.
|
|
90
|
+
|
|
91
|
+
### Validation ladder
|
|
92
|
+
|
|
93
|
+
Run L0 after code edits, L1 when native inputs change, and L2/L3 at their assigned project
|
|
94
|
+
checkpoints. Do not defer affected runtime checks merely to keep L0 fast. Feedback times are
|
|
95
|
+
targets, not deadlines, measured results or promises.
|
|
96
|
+
|
|
97
|
+
| Rung | Scope | Target feedback |
|
|
98
|
+
| --- | --- | --- |
|
|
99
|
+
| L0 | Edits to app code: affected fast tests, typecheck, Fast Refresh on the running app | 5–60 s |
|
|
100
|
+
| L1 | Native code, SDK/dependency or native configuration change: incremental emulator-ABI build, install/update, affected runtime check | 1–4 min |
|
|
101
|
+
| L2 | PR or feature checkpoint: candidate APK from current source, fresh-install smoke on disposable owned device and backend state, selected real journeys | 5–15 min |
|
|
102
|
+
| L3 | Merge and release: the repository-required regression, security, backend, device and ABI matrix | as required by the repository |
|
|
103
|
+
|
|
104
|
+
- L0 and Fast Refresh prove a source change in a running app, not a packaged artifact. A claim
|
|
105
|
+
about installed, packaged or distributed behavior needs L2 or L3 evidence from the same source
|
|
106
|
+
and configuration.
|
|
107
|
+
- Skip L1 when native inputs did not change. Retain required additional ABI checks for native
|
|
108
|
+
or ABI configuration changes. Setup proof and release acceptance build every configured ABI;
|
|
109
|
+
an emulator-ABI build proves only the emulator ABI. Compilation alone is not runtime proof.
|
|
110
|
+
- L2 installs on disposable state this run owns and records the identity of the APK it installed.
|
|
111
|
+
Reuse earlier evidence only while its source, configuration, artifact and environment still
|
|
112
|
+
apply to the behavior being claimed.
|
|
113
|
+
- Fresh-install proof does not cover upgrades or authorize clearing a borrowed device; preserve
|
|
114
|
+
upgrade-state checks when relevant. Reuse the existing resource owner, keep writable state
|
|
115
|
+
private, bound waits with cleanup time and never use shared/production fixture data.
|
|
116
|
+
- The developer owns focused validation and independent review checks the correction. The
|
|
117
|
+
coordinator schedules broader L2/L3 checks; keep remaining required levels explicitly pending.
|
|
@@ -19,8 +19,10 @@ trigger and required-check contract unless changing it is part of the task.
|
|
|
19
19
|
never run on the self-hosted Android runners.
|
|
20
20
|
3. Add `android` to `gate`'s `needs:` and a `check android "$ANDROID_RESULT" "$ANDROID"`
|
|
21
21
|
line. Require only `gate`.
|
|
22
|
-
4.
|
|
23
|
-
the
|
|
22
|
+
4. Verify both Android-only and docs-only changed-path cases: the job runs for the former,
|
|
23
|
+
skips for the latter, and the required gate handles both correctly. Reuse sufficient
|
|
24
|
+
existing run evidence or the repo's supported validation method. Open dedicated PRs
|
|
25
|
+
only when explicitly authorized and needed; this check does not grant delivery permission.
|
|
24
26
|
|
|
25
27
|
## Runner
|
|
26
28
|
|
|
@@ -50,8 +52,9 @@ trigger and required-check contract unless changing it is part of the task.
|
|
|
50
52
|
- Build `x86_64` only (`-PreactNativeArchitectures=x86_64`), with `--no-daemon` and
|
|
51
53
|
`-Pandroid.builder.sdkDownload=false`. Report
|
|
52
54
|
this APK as emulator evidence only. The all-ABI build stays a local or release step.
|
|
53
|
-
- Bundle
|
|
54
|
-
bundling errors fail fast.
|
|
55
|
+
- Bundle/export JavaScript with the repo's supported tooling before the native build so
|
|
56
|
+
bundling errors fail fast; use `expo export --platform android` only for Expo projects.
|
|
57
|
+
Preserve an existing bundle/build dependency order when it already provides this proof.
|
|
55
58
|
- Give the job `timeout-minutes: 60`, the install step its own short timeout, and the
|
|
56
59
|
APK build `timeout-minutes: 30`.
|
|
57
60
|
|
|
@@ -64,8 +67,9 @@ trigger and required-check contract unless changing it is part of the task.
|
|
|
64
67
|
- Run the native auth/integration tests against that service before the device journey.
|
|
65
68
|
- Unit-test the device orchestration scripts (journey wrapper, slot allocator, code
|
|
66
69
|
lookup) before booting the emulator.
|
|
67
|
-
-
|
|
68
|
-
|
|
70
|
+
- If the existing harness uses Python UI automation, pin its package in the venv the
|
|
71
|
+
wrapper reads and use its supported Python version (3.12 in the example). Do not add
|
|
72
|
+
Python or replace an instrumentation harness solely to match the template.
|
|
69
73
|
- Boot the emulator with the SHA-pinned `reactivecircus/android-emulator-runner`, or the
|
|
70
74
|
runner's preinstalled emulator under an owned process group. Use the API level, target
|
|
71
75
|
and ABI of the preinstalled image, `disable-animations: true`, `ram-size: 4096M` (or
|
|
@@ -1,8 +1,31 @@
|
|
|
1
1
|
# Diagnose an existing Android failure
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
established resources and caches;
|
|
5
|
-
|
|
3
|
+
Get to a correction of the reported failure, then validate the corrected candidate through
|
|
4
|
+
the [L0-L3 ladder](../SKILL.md#validation-ladder). Reuse established resources and caches;
|
|
5
|
+
do not build a second test platform to explain one failure.
|
|
6
|
+
|
|
7
|
+
## Reproduce, diagnose, fix
|
|
8
|
+
|
|
9
|
+
1. Reproduce the actual failing screen, action, build task or harness checkpoint. For a
|
|
10
|
+
failed CI journey, reproduce that checkpoint off CI before fixing and redispatching.
|
|
11
|
+
Record the failed source, variant and environment; retain the original failure evidence.
|
|
12
|
+
2. Inspect the first relevant error and the actual operation: compiler output for build
|
|
13
|
+
failures, process/crash logs for launch, app requests for loading, and screenshots,
|
|
14
|
+
hierarchy or state transitions for UI failures. Use the stage table below to narrow it.
|
|
15
|
+
3. Find and correct the cause. Test one explanation at a time and add a focused regression
|
|
16
|
+
test at the boundary that exposes the defect where feasible. Do not substitute a
|
|
17
|
+
passing fake UI or readiness probe for the missing real app observation.
|
|
18
|
+
4. Repeat the original reproduction and confirm the correction works. Then follow L0,
|
|
19
|
+
applicable L1, and the assigned L2/L3 checkpoints in [feature work](feature-work.md).
|
|
20
|
+
If validation exposes another defect, debug and fix it, then repeat invalidated checks.
|
|
21
|
+
|
|
22
|
+
The developer owns technical diagnosis and focused validation. The coordinator owns
|
|
23
|
+
scope and broader acceptance scheduling. After review handoff or a broader acceptance
|
|
24
|
+
failure, assign a bounded investigation with the failed checkpoint, evidence, next
|
|
25
|
+
question and return condition; the same developer may do it. Independent review checks
|
|
26
|
+
the fix. Return scope growth, missing access or inconclusive evidence to the coordinator,
|
|
27
|
+
not an unlimited campaign. Report local reproduction, source CI and post-deploy results
|
|
28
|
+
separately; another API/ABI or copied APK does not prove the original CI artifact.
|
|
6
29
|
|
|
7
30
|
## Locate the failing stage
|
|
8
31
|
|
|
@@ -90,6 +113,12 @@ purpose and cost bound first. When no available experiment distinguishes the rem
|
|
|
90
113
|
explanations, report the missing evidence/access. Do not restart an unchanged campaign
|
|
91
114
|
or impose an arbitrary fixed number of retries on every kind of failure.
|
|
92
115
|
|
|
116
|
+
Carry the failed checkpoint and prior attempts across worker changes. Before adding a
|
|
117
|
+
service, transport or test abstraction, name the existing criterion it enables and why
|
|
118
|
+
the current path cannot answer the question. Use an existing known-working comparison
|
|
119
|
+
when available, but do not launch a baseline campaign or count it as candidate proof.
|
|
120
|
+
Report delivered behavior and remaining gaps first; a diagnostic helper is not acceptance.
|
|
121
|
+
|
|
93
122
|
Choose the environment the assertion requires: local test resources for ordinary
|
|
94
123
|
functional diagnosis, isolated deployed HTTPS when that behavior requires it, or an
|
|
95
124
|
existing shared deployment for explicitly non-destructive smoke checks. Create only the
|
|
@@ -118,19 +147,14 @@ Do not kill another worker's server if the app accidentally connects to it.
|
|
|
118
147
|
- Bundle succeeds, expected screen absent: inspect runtime exceptions, actual screen
|
|
119
148
|
and selector.
|
|
120
149
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
The corrected post-deploy CI subsequently passed on its deployed SHA. Ports, package,
|
|
125
|
-
cloud infrastructure and issue identifiers are case-study details, not requirements.
|
|
150
|
+
Use any controlled comparison only for the source, API and ABI actually observed. A local
|
|
151
|
+
failure or correction does not reconstruct a missing CI response. Retain that evidence gap
|
|
152
|
+
and prove the corrected deployed artifact separately when the checkpoint requires it.
|
|
126
153
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
154
|
+
For a fixture consumed by another language or process, pass the real producer output
|
|
155
|
+
through the actual reader and journey selection. Empty collections or missing context
|
|
156
|
+
can expose a contract mismatch before another cloud/device run; handwritten fixtures on
|
|
157
|
+
each side cannot establish that the composed path works.
|
|
131
158
|
|
|
132
|
-
- [Case study: issue #2001](https://github.com/1aboveio/fmm-express/issues/2001)
|
|
133
|
-
- [Correction PR #2010](https://github.com/1aboveio/fmm-express/pull/2010)
|
|
134
|
-
- [Passing post-deploy run](https://github.com/1aboveio/fmm-express/actions/runs/40329312705)
|
|
135
159
|
- [RN 0.81.5 preference handling](https://raw.githubusercontent.com/facebook/react-native/v0.81.5/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.kt)
|
|
136
160
|
- [RN 0.81.5 host selection](https://raw.githubusercontent.com/facebook/react-native/v0.81.5/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoHelpers.kt)
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Feature work
|
|
2
|
+
|
|
3
|
+
Read the repository's validation and delivery policy first. Preserve required CI and
|
|
4
|
+
acceptance gates; this skill does not authorize skipping them or rewriting project
|
|
5
|
+
policy. Follow the [L0-L3 ladder](../SKILL.md#validation-ladder); do not duplicate setup
|
|
6
|
+
or full acceptance per edit. Name the immediate existing acceptance checkpoint, such as
|
|
7
|
+
opening the app and rendering the expected screen. Setup success is not that outcome.
|
|
8
|
+
|
|
9
|
+
| Stage | Scope | Ownership |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| L0 and applicable L1 | Focused checks and affected runtime behavior during implementation. | Developer validates, reports evidence and gaps, then hands off to independent review. |
|
|
12
|
+
| L2 | Packaged-app startup and affected journeys through combined changes. | Coordinator schedules validation as soon as its prerequisites are ready, including before PR/merge when repo policy requires it. |
|
|
13
|
+
| L3 | Remaining cross-feature, device-matrix and release obligations, plus invalidated checks. | Coordinator accounts for required gates and reuses evidence only within its proven scope. |
|
|
14
|
+
|
|
15
|
+
## Choose the work before building
|
|
16
|
+
|
|
17
|
+
Classify the changed inputs and affected behavior before selecting a command. Keep required
|
|
18
|
+
CI and assigned acceptance checks; fast feedback supplements them rather than replacing them.
|
|
19
|
+
|
|
20
|
+
| Changed input | Development response |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| JS/TS logic or styling loaded by the existing Metro-backed app | Keep the owned runtime; focused tests/typecheck and Fast Refresh or reload. Do not invoke Gradle, reinstall or reboot solely for this edit. |
|
|
23
|
+
| Native code, native dependency resolution, code generation, manifest/configuration or native resources | Incremental L1 build/install for the owned device ABI, then the affected runtime check. |
|
|
24
|
+
| Assets | Determine their delivery path: Metro-served assets may reload; packaged resources/embedded bundles need repackaging and affected install/runtime proof. Do not classify every asset as native or every JS edit as refreshable. |
|
|
25
|
+
| Authentication, payments, security or lifecycle contracts | Add the affected contract/device/integration checks at the assigned checkpoint; neither the filename nor a small diff justifies omitting them or automatically running every acceptance test. |
|
|
26
|
+
|
|
27
|
+
Use the repo's existing Expo/React Native development route before proposing a new wrapper.
|
|
28
|
+
An already installed compatible debug shell can load updated JS through the owned Metro.
|
|
29
|
+
Native/build-input changes invalidate that reuse; unknown compatibility calls for a scoped
|
|
30
|
+
rebuild, not an assertion that the old APK is current. Do not run `expo prebuild` routinely
|
|
31
|
+
against tracked native projects.
|
|
32
|
+
|
|
33
|
+
### Verify command expansion
|
|
34
|
+
|
|
35
|
+
Before adopting a native fast path, trace its package script, wrapper, Gradle tasks and
|
|
36
|
+
consumed artifacts. Inspect the effective task graph in the owned, prepared environment
|
|
37
|
+
with the repo's wrapper and a bounded `--dry-run` when available; this still configures the
|
|
38
|
+
project and may resolve plugins, so it is not an L0 check or permission to provision tools.
|
|
39
|
+
If it cannot be inspected, report the unverified expansion rather than calling it app-only.
|
|
40
|
+
|
|
41
|
+
Distinguish app assembly/install, instrumentation-test APK packaging, test execution and
|
|
42
|
+
broader journeys. For example, an `assembleDebug` dependency on `assembleDebugAndroidTest`
|
|
43
|
+
adds test packaging to that task, but does not prove every other debug/install route does
|
|
44
|
+
so. A task name such as `installDebug` is not proof of its dependency graph either.
|
|
45
|
+
Preserve an intentional separate-UID consumer or required test artifact. If separation is
|
|
46
|
+
needed, route the authorized build/CI change through `github-actions`, explicitly retain
|
|
47
|
+
the required test tasks/artifacts in validation, and verify both paths. Do not hide the
|
|
48
|
+
cost or bypass obligations with arbitrary task exclusions.
|
|
49
|
+
|
|
50
|
+
### Run tests before chasing commit labels
|
|
51
|
+
|
|
52
|
+
Verify the code under test, not matching labels across every package and artifact. Record
|
|
53
|
+
the actual workspace, HEAD and uncommitted changes once, then run independent source tests
|
|
54
|
+
against those working changes. Do not require a clean tree or a new commit merely to start
|
|
55
|
+
L0 checks. Revisit identity when relevant inputs, resolution or the runtime change, not as
|
|
56
|
+
a repeated search for matching SHAs before every test.
|
|
57
|
+
|
|
58
|
+
For a changed package, verify the actual module path or build output loaded by its consumer.
|
|
59
|
+
Use the repo's supported workspace dependency, local build or package-install route to load
|
|
60
|
+
the correction. A package version, common Git label or passing test against an unchanged
|
|
61
|
+
installed copy does not prove the fix. If an integration check needs new compiled output,
|
|
62
|
+
build that affected output; do not hunt for an older artifact with a matching commit label.
|
|
63
|
+
Keep package lookup and identity checks bounded by the question they answer.
|
|
64
|
+
|
|
65
|
+
| Check | Identity needed before claiming the result |
|
|
66
|
+
| --- | --- |
|
|
67
|
+
| Focused source test | The actual changed source loaded by the test, including working changes |
|
|
68
|
+
| Package integration | The actual changed package output loaded by the real consumer |
|
|
69
|
+
| Metro-backed app behavior | Compatible native shell plus the actual JS source/endpoint served |
|
|
70
|
+
| Required CI, release or published-artifact verification | The exact identity mandated by that checkpoint |
|
|
71
|
+
|
|
72
|
+
Do not publish, tag, commit or rebuild unrelated components solely to manufacture matching
|
|
73
|
+
labels. If changed package output cannot yet be loaded, mark that integration check pending
|
|
74
|
+
or blocked and run other ready source checks. Report "source tests passed; installed-package
|
|
75
|
+
integration pending" when that is what the evidence proves; do not relabel a source pass as
|
|
76
|
+
integration success or substitute mocks for the changed first-party path.
|
|
77
|
+
|
|
78
|
+
Retain explicit current-source CI/release identity requirements. A wrong assigned checkout
|
|
79
|
+
or candidate revision is a real scope problem: follow [workspace precedence](workspace.md#precedence),
|
|
80
|
+
report it and do not silently reset, test a substitute revision or search indefinitely for
|
|
81
|
+
an equivalent package. Local test execution does not authorize waiving that assignment.
|
|
82
|
+
|
|
83
|
+
### Track native and JS provenance separately
|
|
84
|
+
|
|
85
|
+
For a development session, record the installed native artifact's source/build inputs,
|
|
86
|
+
package, variant and ABI separately from the JS source and actual Metro endpoint serving
|
|
87
|
+
the current candidate. Compare native sources, resolved native dependencies, build/config
|
|
88
|
+
inputs and packaged resources before reusing that shell. A changed Git HEAD alone is not
|
|
89
|
+
a reason to rebuild if only Metro-served JS changed and policy allows shell reuse.
|
|
90
|
+
|
|
91
|
+
An APK built at A and JS served from B are valid scoped development evidence only when
|
|
92
|
+
those identities and native compatibility are known. Do not call the APK a build of B or
|
|
93
|
+
claim packaged/release proof from it. L2/L3 still use the artifact/source checks their
|
|
94
|
+
checkpoint requires. No new fingerprint service or cross-checkout artifact copying is implied.
|
|
95
|
+
|
|
96
|
+
## Apply the levels
|
|
97
|
+
|
|
98
|
+
- At L0, use Fast Refresh only when the selected debug build supports it and the owned app
|
|
99
|
+
is running. It helps check JS/UI edits, but does not prove a fresh launch, install or
|
|
100
|
+
embedded release bundle. Use the repo's focused tests and relevant typecheck commands.
|
|
101
|
+
- At L1, changed Kotlin/Java/C++/Compose code, native SDKs/dependencies or native build
|
|
102
|
+
configuration require an incremental build, install/update and the affected device
|
|
103
|
+
interaction. Use the emulator ABI where repo policy permits; retain required additional
|
|
104
|
+
ABI checks. A successful compile is not native runtime proof.
|
|
105
|
+
Use the actual owned device ABI and a per-invocation override, not an assumed x86_64
|
|
106
|
+
target or a change to the shared all-ABI default; see [setup](setup.md).
|
|
107
|
+
- At L2, use the candidate APK and its actual bundle/asset-loading mechanism, not just a
|
|
108
|
+
development session. Fresh-install smoke uses disposable owned app state; it does not
|
|
109
|
+
prove upgrades or authorize clearing a borrowed device. Run upgrade-state coverage when
|
|
110
|
+
required. Exercise the changed journey using supported selectors.
|
|
111
|
+
- At L3, run the matrix and regression/security/backend checks the repo/spec assigns to
|
|
112
|
+
that checkpoint. This is not a new requirement to run every conceivable test per PR.
|
|
113
|
+
- Treat feedback times as targets to measure, not evidence of achieved speed. Set real
|
|
114
|
+
command deadlines for the selected work and leave time for owned cleanup.
|
|
115
|
+
|
|
116
|
+
## Debug, fix, then validate
|
|
117
|
+
|
|
118
|
+
Reproduce the failure, inspect the relevant evidence, correct the cause and confirm that
|
|
119
|
+
the original reproduction passes. Then run L0, applicable L1, and L2/L3 at their assigned
|
|
120
|
+
checkpoints. The original reproduction passing does not replace the ladder. If a level
|
|
121
|
+
finds another defect, fix it and repeat the checks that correction invalidated; do not
|
|
122
|
+
restart unchanged setup or the entire campaign.
|
|
123
|
+
|
|
124
|
+
For example, a JS filter fix needs its focused regression test and open/edit/apply/result
|
|
125
|
+
check at L0, no L1 if native inputs are unchanged, and that journey in the candidate APK
|
|
126
|
+
at L2. Required CI and L3 obligations remain assigned, not silently waived or marked done.
|
|
127
|
+
|
|
128
|
+
## Plan and hand off
|
|
129
|
+
|
|
130
|
+
- Name focused checks and integrated journey checkpoints in the plan before implementation,
|
|
131
|
+
with real prerequisites, an owner and observable results. Do not put all device testing
|
|
132
|
+
in the last task. Start independent ready work concurrently within device/host capacity
|
|
133
|
+
and existing ownership boundaries.
|
|
134
|
+
- Choose the smallest check that proves the affected behavior. Host tests can prove logic
|
|
135
|
+
or a harness correction; native integration, navigation, keyboard, lifecycle and
|
|
136
|
+
accessibility changes need targeted owned-device evidence where host tests cannot prove
|
|
137
|
+
runtime behavior. A successful build/export alone is not device proof.
|
|
138
|
+
- Use existing supported journey selectors. If the harness cannot select the affected
|
|
139
|
+
flow, report that limitation and schedule the smallest existing journey that covers it.
|
|
140
|
+
Do not invent a flag, weaken assertions or silently omit device validation. For example,
|
|
141
|
+
a filter change needs open/edit/apply/result evidence, not an unrelated payment campaign.
|
|
142
|
+
- Reuse the workspace's private caches, venv and AVD configuration. Rerun setup stages only
|
|
143
|
+
when their assumptions change. Rebuild when build inputs change, using the emulator ABI
|
|
144
|
+
for focused work only where repository policy permits it. Do not require a fresh full
|
|
145
|
+
build or full journey solely because the candidate HEAD changed. APK reuse still needs
|
|
146
|
+
the source/configuration and artifact checks the repo requires; never relabel an old
|
|
147
|
+
artifact or result as current-source proof.
|
|
148
|
+
- At each checkpoint, state what changed and which earlier evidence that change invalidates.
|
|
149
|
+
Reuse evidence only while source, configuration, artifact and environment remain applicable
|
|
150
|
+
to the claimed behavior. Required current-source CI still runs; evidence reuse cannot
|
|
151
|
+
replace a gate that requires a new run.
|
|
152
|
+
- After a failed journey, local or a CI dispatch, enter Diagnosis mode and reproduce the
|
|
153
|
+
failing checkpoint off CI before running it again. A fake UI can reproduce a harness
|
|
154
|
+
navigation/scrolling bug; it cannot prove that the app loaded a bundle or rendered.
|
|
155
|
+
Show the original reproduction passes, then follow the applicable ladder and rerun
|
|
156
|
+
the affected check once at its assigned checkpoint.
|
|
157
|
+
Never send a guessed fix to CI to see whether it passes. Use the Diagnosis continuation
|
|
158
|
+
rule for unreproduced or intermittent failures; report uncertainty until evidence
|
|
159
|
+
supports the cause.
|
|
160
|
+
- Report source SHA, commands, results and remaining gaps at review handoff. For device
|
|
161
|
+
checks, include the selected scenarios, `PASS` markers and cleanup exit. For a failure,
|
|
162
|
+
name the earliest failing checkpoint and link retained evidence; preserve failed attempts.
|
|
163
|
+
Separate build duration, device-check duration and total worker time when discussing cost.
|
|
164
|
+
Reuse existing logs to distinguish cold/warm builds, build count, ABI, test packaging,
|
|
165
|
+
runtime startup and edit-to-feedback time. Do not infer a task's cost from total job time,
|
|
166
|
+
claim measured savings from a flag change, or add a metrics pipeline for this purpose.
|
|
167
|
+
- Broader device acceptance (all ABIs, tablet, TalkBack, physical devices, a release device
|
|
168
|
+
campaign) runs at the integration, release or campaign checkpoint the spec or repo assigns
|
|
169
|
+
it. Do not recreate it per feature or postpone affected runtime checks until release.
|
|
170
|
+
Record outstanding criteria as pending in their owning task or issue, never as passed.
|
|
171
|
+
|