@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
|
@@ -369,7 +369,7 @@
|
|
|
369
369
|
"repository": "1aboveio/ai",
|
|
370
370
|
"revision": "main"
|
|
371
371
|
},
|
|
372
|
-
"contentDigest": "
|
|
372
|
+
"contentDigest": "d50381c5d34f05b3c4ac60bd0d1a5a56fdeb7112caf3a58303e2c8d5b9cd73d4",
|
|
373
373
|
"digestExcludes": []
|
|
374
374
|
},
|
|
375
375
|
{
|
|
@@ -382,7 +382,7 @@
|
|
|
382
382
|
"repository": "1aboveio/ai",
|
|
383
383
|
"revision": "main"
|
|
384
384
|
},
|
|
385
|
-
"contentDigest": "
|
|
385
|
+
"contentDigest": "7fb81756e33e2582cc02b2a964af1361a474ddae64f1304dfdff680162e5f35e",
|
|
386
386
|
"digestExcludes": []
|
|
387
387
|
},
|
|
388
388
|
{
|
|
@@ -395,7 +395,7 @@
|
|
|
395
395
|
"repository": "1aboveio/ai",
|
|
396
396
|
"revision": "main"
|
|
397
397
|
},
|
|
398
|
-
"contentDigest": "
|
|
398
|
+
"contentDigest": "08e07649d8ee91496a4275c9417cd679932d798c91cdbb483ca45979733dd0c3",
|
|
399
399
|
"digestExcludes": []
|
|
400
400
|
},
|
|
401
401
|
{
|
|
@@ -408,7 +408,7 @@
|
|
|
408
408
|
"repository": "1aboveio/ai",
|
|
409
409
|
"revision": "main"
|
|
410
410
|
},
|
|
411
|
-
"contentDigest": "
|
|
411
|
+
"contentDigest": "45e72502bf9d1f707caf2990ba8a9bda7fbda4e748b5f798731a1d0d992b0b02",
|
|
412
412
|
"digestExcludes": []
|
|
413
413
|
},
|
|
414
414
|
{
|
|
@@ -421,7 +421,7 @@
|
|
|
421
421
|
"repository": "1aboveio/ai",
|
|
422
422
|
"revision": "main"
|
|
423
423
|
},
|
|
424
|
-
"contentDigest": "
|
|
424
|
+
"contentDigest": "5cf9c65216eda37ed0acebcaa97be9eea9239fad96397cdd858b4694cae9d906",
|
|
425
425
|
"digestExcludes": []
|
|
426
426
|
},
|
|
427
427
|
{
|
|
@@ -434,7 +434,7 @@
|
|
|
434
434
|
"repository": "1aboveio/ai",
|
|
435
435
|
"revision": "main"
|
|
436
436
|
},
|
|
437
|
-
"contentDigest": "
|
|
437
|
+
"contentDigest": "6e1c15f7d61a3bb2af78df82b57674152d9c321cc17b5a83d32379cc0a9104ef",
|
|
438
438
|
"digestExcludes": []
|
|
439
439
|
},
|
|
440
440
|
{
|
|
@@ -447,7 +447,7 @@
|
|
|
447
447
|
"repository": "1aboveio/ai",
|
|
448
448
|
"revision": "main"
|
|
449
449
|
},
|
|
450
|
-
"contentDigest": "
|
|
450
|
+
"contentDigest": "303941d679cacbafc5594a6b8369e016cef3cdf3c065ae919edc8695cbce8a69",
|
|
451
451
|
"digestExcludes": []
|
|
452
452
|
},
|
|
453
453
|
{
|
|
@@ -460,7 +460,7 @@
|
|
|
460
460
|
"repository": "1aboveio/ai",
|
|
461
461
|
"revision": "main"
|
|
462
462
|
},
|
|
463
|
-
"contentDigest": "
|
|
463
|
+
"contentDigest": "d8de3acaf463033d55e5bedf17b5aeac8e9a1d77267c5960af18bdebbaf18c7d",
|
|
464
464
|
"digestExcludes": []
|
|
465
465
|
},
|
|
466
466
|
{
|
|
@@ -473,7 +473,7 @@
|
|
|
473
473
|
"repository": "1aboveio/ai",
|
|
474
474
|
"revision": "main"
|
|
475
475
|
},
|
|
476
|
-
"contentDigest": "
|
|
476
|
+
"contentDigest": "8b8a149b90292ae4b0c3dd8b34a387ea7fa8c154610c232c8c55ce9781cca03d",
|
|
477
477
|
"digestExcludes": []
|
|
478
478
|
},
|
|
479
479
|
{
|
|
@@ -486,7 +486,7 @@
|
|
|
486
486
|
"repository": "1aboveio/ai",
|
|
487
487
|
"revision": "main"
|
|
488
488
|
},
|
|
489
|
-
"contentDigest": "
|
|
489
|
+
"contentDigest": "553b2748b6357b92caa30ee29351add044d10cc6ad28e4cdb809f4f23bb5a9da",
|
|
490
490
|
"digestExcludes": []
|
|
491
491
|
},
|
|
492
492
|
{
|
|
@@ -499,7 +499,7 @@
|
|
|
499
499
|
"repository": "1aboveio/ai",
|
|
500
500
|
"revision": "main"
|
|
501
501
|
},
|
|
502
|
-
"contentDigest": "
|
|
502
|
+
"contentDigest": "65bb8314e2fe1f2ebbdca60f2dcd433af44a8eeba080adf30f0682ef5c0a2acd",
|
|
503
503
|
"digestExcludes": []
|
|
504
504
|
},
|
|
505
505
|
{
|
|
@@ -512,13 +512,13 @@
|
|
|
512
512
|
"repository": "1aboveio/ai",
|
|
513
513
|
"revision": "main"
|
|
514
514
|
},
|
|
515
|
-
"contentDigest": "
|
|
515
|
+
"contentDigest": "9fb61a9e59fee73ff803113e9d33e47bc19a2ef5ce92c06f63a4d5cca8a72189",
|
|
516
516
|
"digestExcludes": [
|
|
517
517
|
"coherence/workflow.json"
|
|
518
518
|
]
|
|
519
519
|
}
|
|
520
520
|
],
|
|
521
|
-
"releaseIdentity": "
|
|
521
|
+
"releaseIdentity": "d0f4c3cc3c13714b4d4be17f6b8b1f56aff7fe1901be7c7823f4faba348baeb6",
|
|
522
522
|
"lifecycleAuthority": "native-skills-cli",
|
|
523
523
|
"repairRecipe": {
|
|
524
524
|
"id": "engineering-workflow-dependency-first",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: ensure-coverage
|
|
3
3
|
description: "Define or audit behavior-first test criteria — ACs, required test levels, mock/integration/E2E policy — across three axes: breadth (Coverage Ledger), depth (over-mocking), presentation (perceivability of browser surfaces). NOT judging whether a single test is any good (test-quality), authoring browser tests (e2e-test), reviewing a PR (better-review), or delivering issues (resolve-issues)."
|
|
4
4
|
disable-model-invocation: 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
|
# Ensure Coverage
|
|
@@ -3,7 +3,7 @@ name: golden-path
|
|
|
3
3
|
description: "Golden-path E2E: the short list of user journeys whose failure blocks a release, kept in a repo as one contract (golden-paths.json) with a generated GOLDEN_PATHS.md and a generated GitHub Actions workflow, and run against a local build or a deployed URL for an ALIVE/DEAD verdict. Use to set golden paths up in a repo ('init golden paths', 'add golden-path CI'), to migrate an older smoke.manifest.json or a hand-built smoke setup ('audit', 'migrate smoke'), to add, change, or remove a golden path, to ask 'is the build alive?' or run them before a PR or release, or when a change touches a flow listed in GOLDEN_PATHS.md. NOT for writing the Playwright specs themselves (e2e-test), deciding what a change must prove (ensure-coverage), or general workflow YAML (github-actions)."
|
|
4
4
|
dependencies:
|
|
5
5
|
- e2e-test
|
|
6
|
-
release-version: 0.
|
|
6
|
+
release-version: 0.46.0
|
|
7
7
|
---
|
|
8
8
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
9
9
|
# Golden path
|
|
@@ -3,7 +3,7 @@ name: harness-runtime
|
|
|
3
3
|
description: Internal import-only library shared by first-party engineering packages. Not a workflow skill; never select or invoke it as a user capability.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
user-invocable: false
|
|
6
|
-
release-version: 0.
|
|
6
|
+
release-version: 0.46.0
|
|
7
7
|
---
|
|
8
8
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
9
9
|
# Harness Runtime
|
|
@@ -100,7 +100,7 @@ four are copied.
|
|
|
100
100
|
reproduce a failed journey with it before they push a fix; never a CI
|
|
101
101
|
dispatch (`gh workflow run`, `gh run rerun`). `check` may be one.
|
|
102
102
|
- `skill` (every suite, present or missing): the absolute `SKILL.md` path of the installed skill for this
|
|
103
|
-
kind of journey (an emulator journey: `android-
|
|
103
|
+
kind of journey (an emulator journey: `android-development`; a browser
|
|
104
104
|
one: `e2e-test`), or `null` when none is installed.
|
|
105
105
|
Example: `check` dispatches the workflow input that runs the Charge
|
|
106
106
|
journey; `local` runs that Charge journey script on an owned emulator,
|
|
@@ -4,7 +4,7 @@ description: "Slash/explicit-only (/resolve-release). Full GitHub Flow release f
|
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
metadata:
|
|
6
6
|
workflow-role: coordinator
|
|
7
|
-
release-version: 0.
|
|
7
|
+
release-version: 0.46.0
|
|
8
8
|
---
|
|
9
9
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
10
10
|
# Resolve release
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: test-quality
|
|
3
3
|
description: "Seven principles for tests that catch real bugs, and an audit that reports weak, redundant, and not-coverage tests without fixing them. Use when writing, changing, or reviewing tests, or when asked whether tests are useful, redundant, over-mocked, flaky, only assert static text, or test config files, or asked to make a slow test suite faster without losing coverage, or when the user asks to write the testing conventions into a repo's CONTRIBUTING.md. NOT defining what a spec must prove (ensure-coverage) or authoring browser tests (e2e-test)."
|
|
4
|
-
release-version: 0.
|
|
4
|
+
release-version: 0.46.0
|
|
5
5
|
---
|
|
6
6
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
7
7
|
# Test Quality
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: compliance-audit
|
|
3
3
|
version: 2.9.0
|
|
4
4
|
description: "Audit operations against financial-compliance checklists (AML/KYC, VARS, PCI-DSS, TPA oversight, onboarding, transaction monitoring). Produces tracker.md (with a tracker.xlsx export) and phase-trail.md with layered validation; cites evidence by original filename. Input: reg-parser or the built-in VARS checklist."
|
|
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
|
# Compliance Audit
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: contract-compare
|
|
3
3
|
description: "Compare two or more contracts side-by-side for structured diff, gap analysis, and benchmarking. Use when: comparing contracts or agreements, contract diff, compare terms, vendor-vs-vendor, compare our template vs theirs, compliance gap between contracts. NOT for single-contract risk review — use contract-review for that."
|
|
4
|
-
release-version: 0.
|
|
4
|
+
release-version: 0.46.0
|
|
5
5
|
---
|
|
6
6
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
7
7
|
# Contract Compare
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: contract-review
|
|
3
3
|
description: "Review contracts for legal, commercial, and compliance risks via convert → chunk review → merge → validate (+ optional mandate preprocessing). Use for reviewing, auditing, or checking any contract, agreement, NDA, MSA, or SLA; input a file path (PDF/DOCX/TXT) or pasted text."
|
|
4
|
-
release-version: 0.
|
|
4
|
+
release-version: 0.46.0
|
|
5
5
|
---
|
|
6
6
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
7
7
|
# Contract Review
|
|
@@ -3,7 +3,7 @@ name: doc-authenticity
|
|
|
3
3
|
version: 0.4.1
|
|
4
4
|
description: "Screen PDF documents and raster images for fabrication, tampering, Photoshop or other image-editor use, and content validity. Detects file type, runs format-specific authenticity forensics, classifies bank statements, conversation logs, invoices, agreements, and other documents, then applies type-specific validity checks. Produces separate authenticity (NO_EVIDENCE_OF_MODIFICATION / SUSPICIOUS / LIKELY_MODIFIED / INCONCLUSIVE) and validity (VALID / INVALID / INCONCLUSIVE) verdicts. Use whenever a user asks whether a document, screenshot, scan, statement, invoice, contract, chat log, receipt, or payment evidence is genuine, original, edited, Photoshopped, manipulated, fake, or valid."
|
|
5
5
|
disable-model-invocation: true
|
|
6
|
-
release-version: 0.
|
|
6
|
+
release-version: 0.46.0
|
|
7
7
|
---
|
|
8
8
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
9
9
|
# Document and Image Authenticity
|
|
@@ -12,7 +12,7 @@ description: >
|
|
|
12
12
|
impact, and a business report. Use for fraud, scam, mule, account-takeover,
|
|
13
13
|
chargeback, dispute, transfer, collection, or payout risk analysis even when the
|
|
14
14
|
user does not name this skill.
|
|
15
|
-
release-version: 0.
|
|
15
|
+
release-version: 0.46.0
|
|
16
16
|
---
|
|
17
17
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
18
18
|
# Fraud Detection
|
|
@@ -14,7 +14,7 @@ description: >
|
|
|
14
14
|
transactions" — even if they do not say payment-analysis. Do NOT use for
|
|
15
15
|
fraud rule discovery (fraud-detection) or TLD / MCC-miscoding
|
|
16
16
|
clusters (tld-detection).
|
|
17
|
-
release-version: 0.
|
|
17
|
+
release-version: 0.46.0
|
|
18
18
|
---
|
|
19
19
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
20
20
|
# Payment Analysis
|
|
@@ -5,7 +5,7 @@ description: >
|
|
|
5
5
|
and investigate selected merchants' authorization, settlement and disputes,
|
|
6
6
|
including descriptor mapping and overlapping exports. Portfolio-level payment
|
|
7
7
|
overviews belong to payment-analysis; fraud rule discovery belongs to fraud-detection.
|
|
8
|
-
release-version: 0.
|
|
8
|
+
release-version: 0.46.0
|
|
9
9
|
---
|
|
10
10
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
11
11
|
# Portfolio payment analysis
|
|
@@ -8,7 +8,7 @@ description: >
|
|
|
8
8
|
links, an entity chain, and a watchlist for the operator's next domains.
|
|
9
9
|
Not transaction data (tld-detection) or fraud rules (fraud-detection).
|
|
10
10
|
disable-model-invocation: true
|
|
11
|
-
release-version: 0.
|
|
11
|
+
release-version: 0.46.0
|
|
12
12
|
---
|
|
13
13
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
14
14
|
# Similar Domain
|
|
@@ -6,7 +6,7 @@ description: >
|
|
|
6
6
|
patterns, with USD and BIN-country currency views, group profiles and priorities.
|
|
7
7
|
Not payment-analysis, fraud-detection, or website research.
|
|
8
8
|
disable-model-invocation: true
|
|
9
|
-
release-version: 0.
|
|
9
|
+
release-version: 0.46.0
|
|
10
10
|
---
|
|
11
11
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
12
12
|
# TLD detection
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: android-foundation
|
|
3
|
-
description: "Prove and debug Expo / React Native apps on an owned Android emulator. Use for stuck Android debugging, post-deploy startup or rendering failures, Metro answering while the app does not render, UiAutomator failures, missing controls, ADB drops, harness-test failures, APK builds, assigned or fresh SDK/NDK/JDK workspace setup, and native journey validation. Before fixing and rerunning or redispatching a failed Android CI job, reproduce its failing checkpoint off CI: a rerun is not a debugger. Diagnose existing setups without rebuilding the whole environment. NOT for workflow YAML, CI speed or runner design (github-actions), browser tests (e2e-test), iOS (ios-foundation), plain Jest component tests, or signing and store release."
|
|
4
|
-
release-version: 0.45.2
|
|
5
|
-
---
|
|
6
|
-
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
7
|
-
# Android foundation
|
|
8
|
-
|
|
9
|
-
Prove or debug a native Expo / React Native device journey using the repo's existing
|
|
10
|
-
build scripts, native project, harness and wrapper. Use `github-actions` for CI YAML
|
|
11
|
-
and runner integration. The CI template is a starting point; preserve existing workflows.
|
|
12
|
-
|
|
13
|
-
Pick the mode first:
|
|
14
|
-
|
|
15
|
-
- **Diagnosis:** an existing workspace or CI run fails or stalls. Follow
|
|
16
|
-
[Diagnosis](#diagnosis) first; a harness change does not automatically require a cold
|
|
17
|
-
setup. Re-run only the setup stages whose assumptions changed.
|
|
18
|
-
- **Setup proof:** a new workspace or CI job, or a toolchain, dependency or native
|
|
19
|
-
change that invalidates setup. Run every stage and write the
|
|
20
|
-
[evidence record](#evidence-record).
|
|
21
|
-
- **Feature work:** validating a product change in a workspace already set up. Follow
|
|
22
|
-
[Feature work](#feature-work): focused checks per candidate, targeted device checks
|
|
23
|
-
where needed, and integrated journeys at explicit checkpoints.
|
|
24
|
-
|
|
25
|
-
## Routing
|
|
26
|
-
|
|
27
|
-
| Step | Read |
|
|
28
|
-
| --- | --- |
|
|
29
|
-
| Workspace resolution, then shell snippets for every stage | [references/workspace.md](references/workspace.md), [references/setup.md](references/setup.md) |
|
|
30
|
-
| Stages 6–8 in one command | [scripts/device-run.sh](scripts/device-run.sh) |
|
|
31
|
-
| Adding the Android job to CI | [references/ci.md](references/ci.md), template [assets/android-ci-job.yml](assets/android-ci-job.yml) |
|
|
32
|
-
| Proving a product change on the emulator | [Feature work](#feature-work) |
|
|
33
|
-
| A stage failed or a worker appears stuck | [Diagnosis](#diagnosis), then [references/diagnosis.md](references/diagnosis.md) and [Triage](#triage) |
|
|
34
|
-
| Writing up setup proof | [Evidence record](#evidence-record) |
|
|
35
|
-
|
|
36
|
-
## Rules
|
|
37
|
-
|
|
38
|
-
- Resolve the workspace first; [references/workspace.md](references/workspace.md) owns
|
|
39
|
-
precedence: an assigned isolated workspace and candidate HEAD win, feature work, fixes and
|
|
40
|
-
diagnosis reuse the owned workspace, and standalone setup creates one managed workspace
|
|
41
|
-
only with no usable assignment. Read its actual HEAD; never substitute `origin/main`, a new
|
|
42
|
-
branch or another checkout, mutate a peer's checkout or symlink its writable `node_modules`.
|
|
43
|
-
- Tool shells keep no variables, functions or traps between calls. Write the environment
|
|
44
|
-
to `.cache/android-env.sh` once and source it at the start of every command. Use the
|
|
45
|
-
repo's existing owned-resource launcher. For a new local setup without one, use
|
|
46
|
-
`scripts/device-run.sh` for stages 6–8 in one command. Do not wrap an existing owner
|
|
47
|
-
with a second emulator/database lifecycle.
|
|
48
|
-
- Keep local writable caches private under `.cache/`: Gradle home, Android user/AVD
|
|
49
|
-
homes, temporary files, npm, node-gyp and pnpm. In CI, an already isolated runner slot
|
|
50
|
-
may provide those paths; verify its ownership contract rather than layering another
|
|
51
|
-
cache system on top. Never share writable state across concurrent owners.
|
|
52
|
-
- Read toolchain versions from the repo: the root `packageManager` and `engines`, the
|
|
53
|
-
native Gradle config, and the CI preflight. The repo is the source of truth, not this skill.
|
|
54
|
-
- Check that every required SDK component (platform, build-tools, NDK, CMake,
|
|
55
|
-
platform-tools, emulator, system image) is already installed. If one is missing, stop and
|
|
56
|
-
provision it separately. Never upgrade or install into a shared SDK during a journey;
|
|
57
|
-
build with `-Pandroid.builder.sdkDownload=false`.
|
|
58
|
-
- Install with `--frozen-lockfile`. Do not routinely run `clean`, reinstall dependencies or
|
|
59
|
-
run `expo prebuild`. The native project is tracked, and prebuild needs a reviewed native
|
|
60
|
-
change.
|
|
61
|
-
- Build every configured ABI for setup proof and release acceptance. An x86_64-only CI
|
|
62
|
-
APK only proves the emulator ABI. For feature work, the emulator ABI is enough unless the
|
|
63
|
-
change touches native code or ABI configuration.
|
|
64
|
-
- Determine how the selected build loads code and assets. A typical debug build needs
|
|
65
|
-
Metro; a release build normally embeds its bundle. Do not introduce Metro or debug
|
|
66
|
-
preferences into a release failure without evidence that the build uses them.
|
|
67
|
-
A successful build does not prove execution on a device.
|
|
68
|
-
|
|
69
|
-
## Stages
|
|
70
|
-
|
|
71
|
-
These are the full setup-proof stages, not a per-candidate checklist. For established
|
|
72
|
-
workspaces, select checks under [Feature work](#feature-work). Run the selected stages
|
|
73
|
-
in dependency order. Stop at the first failure and triage it.
|
|
74
|
-
|
|
75
|
-
1. **Workspace and environment.** Resolve the assigned or standalone workspace
|
|
76
|
-
([references/workspace.md](references/workspace.md)) and export the private cache paths,
|
|
77
|
-
`JAVA_HOME` (JDK 17), `ANDROID_HOME` and `ANDROID_SDK_ROOT`. Print the versions of
|
|
78
|
-
node, pnpm, java, python3, adb and the emulator. Assert that each SDK component
|
|
79
|
-
directory exists. Read the journey wrapper and device harness for the names they expect:
|
|
80
|
-
the venv path, the port variables, the database variables and the database-name prefix
|
|
81
|
-
the harness accepts.
|
|
82
|
-
2. **Install and check.** Run a frozen install, the app's unit tests, typecheck, and
|
|
83
|
-
`expo export --platform android` with a placeholder `EXPO_PUBLIC_API_URL`. Create a
|
|
84
|
-
Python venv for UI automation at the path the journey wrapper reads, and pin the
|
|
85
|
-
`uiautomator2` version the harness expects.
|
|
86
|
-
3. **Gradle dependencies.** Pick one:
|
|
87
|
-
- Seed: `rsync --ignore-existing` only `caches/modules-2/files-2.1/` from a trusted
|
|
88
|
-
Gradle home, excluding `*.lock`, `*.lck` and `*.tmp`. Never share writable caches,
|
|
89
|
-
metadata, credentials or APKs.
|
|
90
|
-
- Proxy: a private Gradle home does not inherit `~/.gradle/init.d`. Install the proxy's
|
|
91
|
-
init script into `$GRADLE_USER_HOME/init.d/` and export a route for every repository
|
|
92
|
-
the build uses, JitPack included. Ping the proxy first.
|
|
93
|
-
- Neither: build against upstream and expect a long cold build.
|
|
94
|
-
If the opted-in proxy fails, treat it as an error. Never fall back to direct downloads
|
|
95
|
-
and never disable TLS checks. The proxy covers Gradle Maven repositories only. Route the
|
|
96
|
-
Gradle wrapper ZIP and pnpm as the repo's CONTRIBUTING says.
|
|
97
|
-
4. **Build.** Run the repo's Android build script with `--max-workers=2
|
|
98
|
-
-Dorg.gradle.parallel=false -Pandroid.builder.sdkDownload=false --console=plain
|
|
99
|
-
--info`, keeping the log. For setup proof, hash the APK and list its `lib/<abi>/`
|
|
100
|
-
entries.
|
|
101
|
-
5. **Owned emulator.** Create a new private AVD in `$ANDROID_AVD_HOME` by copying only
|
|
102
|
-
`config.ini` from an installed AVD. Never copy its user data or snapshots. Check that
|
|
103
|
-
`image.sysdir.1` points to an installed, host-compatible image, and set `target` to
|
|
104
|
-
match it. Writing `config.ini` from scratch needs the hardware keys:
|
|
105
|
-
[gotchas](references/gotchas.md#a-hand-written-avd-misses-the-screen). Give the guest
|
|
106
|
-
4 GB: replace any `hw.ramSize` with `hw.ramSize=4096` (`device-run.sh` also passes
|
|
107
|
-
`-memory 4096`). At 2 GB, the usual `avdmanager` value, adb drops mid-journey ([gotchas](references/gotchas.md#the-adb-transport-drops-mid-journey)).
|
|
108
|
-
6. **Register cleanup before starting anything.** `device-run.sh` installs the `EXIT`
|
|
109
|
-
trap and the `INT`/`TERM` handlers first.
|
|
110
|
-
7. **Start resources.** The script refuses an emulator console port outside 5554–5584
|
|
111
|
-
(adb scans only that range) and any busy port, starts the ADB server, then the emulator
|
|
112
|
-
(PID recorded) and `postgres` (`--cidfile`, random loopback port), and waits for
|
|
113
|
-
`sys.boot_completed=1` and `pg_isready` with a time limit on every command.
|
|
114
|
-
8. **Journey.** The script hands the harness a database named with its accepted prefix and
|
|
115
|
-
runs the journey wrapper. Expect every scenario's `PASS` marker, plus screenshots, the
|
|
116
|
-
backend log and the Metro log.
|
|
117
|
-
|
|
118
|
-
## Owned-resource cleanup
|
|
119
|
-
|
|
120
|
-
- Clean up only what this run started: the emulator child PID, the container ID from the
|
|
121
|
-
CID file, and the named database; these are short-lived, unlike the development workspace
|
|
122
|
-
and its private caches. Signal the PID with `TERM`, wait up to 10 seconds, then `KILL`.
|
|
123
|
-
Then `wait` for it and confirm nothing is left. Count wait status 0 or 143 (ended by your
|
|
124
|
-
`TERM`) as a clean stop; count a needed `KILL` or any other status as a failure.
|
|
125
|
-
- Never use broad `pkill`, `docker system prune` or a shared `adb kill-server` for cleanup.
|
|
126
|
-
Use the live child's process owner, not an ADB serial that may be reused. A numeric
|
|
127
|
-
PID can also be reused after exit; it is not durable ownership evidence.
|
|
128
|
-
- Give every startup, readiness and cleanup command a 30-second limit that kills the
|
|
129
|
-
command's whole process group. Treat exit 124 (timeout) as a terminal failure, not as
|
|
130
|
-
"not ready yet".
|
|
131
|
-
- Preserve the stage's original non-zero exit status even when cleanup succeeds. Print
|
|
132
|
-
`original_stage_exit=<n> cleanup_exit=<n>`.
|
|
133
|
-
- After SIGKILL or a host crash, verify recorded resources before recovery: process
|
|
134
|
-
start identity, command/run scope and boot identity where available, or container ID
|
|
135
|
-
and ownership labels. Never signal a numeric PID solely because an old record names
|
|
136
|
-
it. If ownership cannot be verified, leave it alone and report the gap. Keep logs.
|
|
137
|
-
- For the local setup flow, point the database URL only at its disposable loopback
|
|
138
|
-
container. An existing isolated remote test flow must use its own disposable data and
|
|
139
|
-
ownership checks. Never use development, production or another worker's database for
|
|
140
|
-
fixture writes or cleanup. A public render-only smoke needs no database.
|
|
141
|
-
- Expo may rewrite `android/tsconfig.json` or delete `android/expo-env.d.ts` while it runs.
|
|
142
|
-
Inspect those changes and restore them before you commit.
|
|
143
|
-
|
|
144
|
-
## Delivery focus
|
|
145
|
-
|
|
146
|
-
Read [references/delivery-focus.md](references/delivery-focus.md) before starting or
|
|
147
|
-
continuing work. Keep an existing acceptance checkpoint, reuse available evidence,
|
|
148
|
-
justify new infrastructure and carry failure history across workers. Required CI and
|
|
149
|
-
the full acceptance criteria still apply; report delivered behavior before activity.
|
|
150
|
-
|
|
151
|
-
## Diagnosis
|
|
152
|
-
|
|
153
|
-
Follow the procedure below and [references/diagnosis.md](references/diagnosis.md).
|
|
154
|
-
`diagnosing-bugs`, when available, can help with deeper hypothesis testing; it is not
|
|
155
|
-
required to use this skill.
|
|
156
|
-
|
|
157
|
-
The developer owns technical diagnosis. The coordinator owns its scope and broader
|
|
158
|
-
acceptance scheduling. Failures in focused implementation validation stay with the
|
|
159
|
-
developer within that task's scope. Failures after review handoff or in broader
|
|
160
|
-
acceptance get a separate bounded diagnosis assignment, which may use the same developer:
|
|
161
|
-
name the failed checkpoint, retained evidence, next question and return condition.
|
|
162
|
-
Return scope growth or inconclusive evidence to the coordinator; do not silently extend
|
|
163
|
-
implementation into a full acceptance campaign. Independent review checks the fix.
|
|
164
|
-
|
|
165
|
-
1. Record the failed SHA, actual checkout, build variant, device type and retained
|
|
166
|
-
evidence. Locate the earliest failing stage: build/install → launch → load code/assets
|
|
167
|
-
→ initialize → render → interact. Distinguish host/CI, harness, transport and product
|
|
168
|
-
failures; an absent screen alone does not identify which one failed.
|
|
169
|
-
2. Choose the smallest test that can expose the suspected defect: a host test for logic,
|
|
170
|
-
real producer/consumer composition for a contract, or a device test for native/runtime
|
|
171
|
-
behavior. Collect evidence appropriate to that stage. A service probe proves only the
|
|
172
|
-
probe, not that the application used the same path.
|
|
173
|
-
3. State competing explanations and a distinguishing observation. Change one variable.
|
|
174
|
-
For reversible defects, a failure → correction → failure comparison can strengthen
|
|
175
|
-
the finding; it is optional, not a gate. For intermittent failures, use a bounded,
|
|
176
|
-
repeatable trigger and compare failure rates. Do not replay Authentication or financial
|
|
177
|
-
actions merely to obtain a comparison.
|
|
178
|
-
4. Keep the first exception and its evidence separate from cleanup errors. Bound the
|
|
179
|
-
full command and each subprocess wait, allowing the resource owner time to clean up.
|
|
180
|
-
A live worker or an outstanding tool call is not evidence of progress.
|
|
181
|
-
5. Verify the fix at the failing checkpoint, then run the affected validation once.
|
|
182
|
-
Broader acceptance belongs to its scheduled integration or release checkpoint, not
|
|
183
|
-
automatically to this diagnosis assignment. Preserve any explicitly required gate.
|
|
184
|
-
Report local reproduction, source CI and post-deploy acceptance separately. A local
|
|
185
|
-
result on another API/ABI or a copied APK is not proof of the original CI artifact.
|
|
186
|
-
|
|
187
|
-
Continue when the next attempt tests a new prediction, collects a missing observation,
|
|
188
|
-
reduces the reproduction, or adds a justified sample for an intermittent failure. Name
|
|
189
|
-
that purpose and bound its cost. Changing workers or repeating an unchanged run without
|
|
190
|
-
such a purpose is not progress. When no available experiment distinguishes the remaining
|
|
191
|
-
explanations, report the missing evidence or access instead of restarting the campaign.
|
|
192
|
-
|
|
193
|
-
## Triage
|
|
194
|
-
|
|
195
|
-
Name the earliest stage that failed. In CI, that is the first failed step. If the same
|
|
196
|
-
journey passed on another run of the same commit, suspect the run or the journey before
|
|
197
|
-
the product.
|
|
198
|
-
|
|
199
|
-
| Stage | Typical signal |
|
|
200
|
-
| --- | --- |
|
|
201
|
-
| Prerequisites / install | missing SDK directory, wrong JDK, lockfile drift |
|
|
202
|
-
| Harness unit tests (CI, before the APK) | a harness test fails on host state its fixture should fake (`requires 2 GiB reserve`) |
|
|
203
|
-
| Export / APK | Metro bundling error, Gradle compile or dependency-resolution error |
|
|
204
|
-
| Gradle network | Maven download or TLS-handshake errors on a cold build: fix routing, not code |
|
|
205
|
-
| Emulator boot / ADB | `sys.boot_completed` never reaches 1, device offline, exit 124 |
|
|
206
|
-
| Device to Metro | red box, "unable to load script", missing `adb reverse` mapping |
|
|
207
|
-
| Bridge passes, debug app fails to load | possible app/probe endpoint mismatch; inspect the actual request before choosing a cause ([React Native example](references/diagnosis.md#example-react-native-debug-app-uses-another-metro)) |
|
|
208
|
-
| Device to Metro, mid-journey | a screen's first Metro asset fails (`Unable to download asset from url: http://127.0.0.1:8081/assets/…`) while API calls still succeed |
|
|
209
|
-
| Backend / Login | backend log errors, verification code not found in the database |
|
|
210
|
-
| Backend tool, CI only | a Backend-backed step gets a 5xx in CI only; the log names a missing program (`Browser was not found at the configured executablePath`) |
|
|
211
|
-
| adb transport, mid-journey | `connection terminated: read failed` in the adb trace after boot, then lost `adb reverse`: usually guest RAM |
|
|
212
|
-
| UiAutomator server | `RemoteDisconnected` while the adb transport stays up: the on-device server was relaunched |
|
|
213
|
-
| Journey harness | a wait right after a navigation times out while the destination is on screen |
|
|
214
|
-
| Journey harness, short screen | a wait for a label times out only on a short or landscape screen, which shows the content above it |
|
|
215
|
-
| Product assertion | a screen or state mismatch with a screenshot |
|
|
216
|
-
|
|
217
|
-
Then match the signal against [references/gotchas.md](references/gotchas.md). If nothing
|
|
218
|
-
matches, [confirm the suspected cause](references/gotchas.md#confirm-a-suspected-cause)
|
|
219
|
-
before changing code.
|
|
220
|
-
|
|
221
|
-
Preserve the failure evidence. Do not blindly replay steps that send codes, verify sessions
|
|
222
|
-
or charge payments just to get a passing screenshot. One passing run does not prove the
|
|
223
|
-
build is reliable.
|
|
224
|
-
|
|
225
|
-
## Feature work
|
|
226
|
-
|
|
227
|
-
Read [references/feature-work.md](references/feature-work.md) before validating a
|
|
228
|
-
product change in an established workspace. Preserve required CI and acceptance gates.
|
|
229
|
-
|
|
230
|
-
## Evidence record
|
|
231
|
-
|
|
232
|
-
For setup proof only. Record:
|
|
233
|
-
|
|
234
|
-
- Source SHA and the workspace root/path/base/branch/owner from the lifecycle record; host OS
|
|
235
|
-
and architecture, the Expo SDK, and the node, pnpm, JDK, Python and emulator versions.
|
|
236
|
-
- System image API, image type and ABI. The AVD name, serial and ports are run
|
|
237
|
-
identifiers, not shared resources.
|
|
238
|
-
- Each stage's exit status and duration.
|
|
239
|
-
- The APK's SHA-256 (`shasum -a 256` or `sha256sum`) and its per-ABI `lib/` entries
|
|
240
|
-
(`unzip -l`), checked on the APK itself rather than inferred from Gradle flags.
|
|
241
|
-
- The journey's `PASS` markers and the cleanup results: database dropped, emulator exited,
|
|
242
|
-
container removed, no listeners left on the backend or Metro ports.
|
|
243
|
-
- Earlier failed or incomplete attempts. A later pass does not erase them.
|
|
244
|
-
|
|
245
|
-
State what the run does not prove: tablet, accessibility (TalkBack), physical devices,
|
|
246
|
-
signing, distribution, and any feature acceptance beyond the journey. Publish only
|
|
247
|
-
sanitized evidence: no authentication codes, session cookies, customer data or raw
|
|
248
|
-
payment payloads.
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# Delivery focus
|
|
2
|
-
|
|
3
|
-
Name one immediate checkpoint from the task's existing acceptance criteria: for example,
|
|
4
|
-
open the app and render the expected screen. Keep that target visible while diagnosing;
|
|
5
|
-
passing setup or adding helper code is not a substitute. Each independent work unit has
|
|
6
|
-
its own checkpoint, so this does not serialize unrelated work.
|
|
7
|
-
|
|
8
|
-
- Preserve a known-working source/artifact and relevant environment as a comparison when
|
|
9
|
-
one already exists. Do not start a baseline campaign or count that old artifact as proof
|
|
10
|
-
of the candidate. Reuse caches and valid results under the repo's ownership rules.
|
|
11
|
-
- Run the smallest test that reaches the failing behavior. After it supports the fix,
|
|
12
|
-
complete focused validation and hand off to independent review. Run affected integrated
|
|
13
|
-
acceptance at its explicit plan checkpoint and preserve required CI; do not repeatedly
|
|
14
|
-
rebuild the full campaign to discover the next local defect or defer all journeys to
|
|
15
|
-
the final task.
|
|
16
|
-
- Before adding a service, transport or test abstraction, state which existing criterion
|
|
17
|
-
needs it, why the current path cannot answer the question and the smallest alternative.
|
|
18
|
-
Make routine choices within authorization; preserve shared-resource and acceptance
|
|
19
|
-
approval boundaries. Do not expand infrastructure merely because a screen failed.
|
|
20
|
-
- Every continuation states the current checkpoint, new evidence or concrete blocker,
|
|
21
|
-
and the next distinguishing test. Carry prior failures across worker changes. If
|
|
22
|
-
successive attempts leave the same checkpoint unproved, reassess and reduce the case
|
|
23
|
-
or change the approach before assigning another similar attempt. Diagnostics can guide
|
|
24
|
-
that decision but do not count as delivered functionality or reset coordinator limits.
|
|
25
|
-
- Report behavior delivered and criteria still unproved first. Reuse existing results for
|
|
26
|
-
time to reproduce, time to verified fix and full CI runs when available; never invent
|
|
27
|
-
those measurements or create a reporting project to obtain them.
|
|
28
|
-
|
|
29
|
-
When a coordinator owns the run, keep this context in its existing plan note and worker
|
|
30
|
-
result. Follow its retry/replan rules; add no separate ledger, check or acceptance gate.
|
|
31
|
-
|
|
@@ -1,50 +0,0 @@
|
|
|
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. Keep validation early without repeating the entire campaign per candidate.
|
|
6
|
-
|
|
7
|
-
| Stage | Scope | Ownership |
|
|
8
|
-
| --- | --- | --- |
|
|
9
|
-
| Every candidate | Relevant tests, typecheck and applicable build/export checks; targeted device checks for runtime-sensitive behavior. | Developer validates, reports evidence and gaps, then hands off to independent review. |
|
|
10
|
-
| Integration checkpoint | Affected journeys through combined changes. | Coordinator schedules a separate validation task as soon as its prerequisites are ready. |
|
|
11
|
-
| Final acceptance | Remaining cross-feature, device-matrix and release obligations, plus checks invalidated by later changes. | Coordinator accounts for all required gates, reusing earlier evidence only within its proven scope. |
|
|
12
|
-
|
|
13
|
-
- Name focused checks and integrated journey checkpoints in the plan before implementation,
|
|
14
|
-
with real prerequisites, an owner and observable results. Do not put all device testing
|
|
15
|
-
in the last task. Start independent ready work concurrently within device/host capacity
|
|
16
|
-
and existing ownership boundaries.
|
|
17
|
-
- Choose the smallest check that proves the affected behavior. Host tests can prove logic
|
|
18
|
-
or a harness correction; native integration, navigation, keyboard, lifecycle and
|
|
19
|
-
accessibility changes need targeted owned-device evidence where host tests cannot prove
|
|
20
|
-
runtime behavior. A successful build/export alone is not device proof.
|
|
21
|
-
- Use existing supported journey selectors. If the harness cannot select the affected
|
|
22
|
-
flow, report that limitation and schedule the smallest existing journey that covers it.
|
|
23
|
-
Do not invent a flag, weaken assertions or silently omit device validation. For example,
|
|
24
|
-
a filter change needs open/edit/apply/result evidence, not an unrelated payment campaign.
|
|
25
|
-
- Reuse the workspace's private caches, venv and AVD configuration. Rerun setup stages only
|
|
26
|
-
when their assumptions change. Rebuild when build inputs change, using the emulator ABI
|
|
27
|
-
for focused work only where repository policy permits it. Do not require a fresh full
|
|
28
|
-
build or full journey solely because the candidate HEAD changed. APK reuse still needs
|
|
29
|
-
the source/configuration and artifact checks the repo requires; never relabel an old
|
|
30
|
-
artifact or result as current-source proof.
|
|
31
|
-
- At each checkpoint, state what changed and which earlier evidence that change invalidates.
|
|
32
|
-
Reuse evidence only while source, configuration, artifact and environment remain applicable
|
|
33
|
-
to the claimed behavior. Required current-source CI still runs; evidence reuse cannot
|
|
34
|
-
replace a gate that requires a new run.
|
|
35
|
-
- After a failed journey, local or a CI dispatch, enter Diagnosis mode and reproduce the
|
|
36
|
-
failing checkpoint off CI before running it again. A fake UI can reproduce a harness
|
|
37
|
-
navigation/scrolling bug; it cannot prove that the app loaded a bundle or rendered.
|
|
38
|
-
Show the fix passes at the appropriate boundary, then rerun the affected check once.
|
|
39
|
-
Never send a guessed fix to CI to see whether it passes. Use the Diagnosis continuation
|
|
40
|
-
rule for unreproduced or intermittent failures; report uncertainty until evidence
|
|
41
|
-
supports the cause.
|
|
42
|
-
- Report source SHA, commands, results and remaining gaps at review handoff. For device
|
|
43
|
-
checks, include the selected scenarios, `PASS` markers and cleanup exit. For a failure,
|
|
44
|
-
name the earliest failing checkpoint and link retained evidence; preserve failed attempts.
|
|
45
|
-
Separate build duration, device-check duration and total worker time when discussing cost.
|
|
46
|
-
- Broader device acceptance (all ABIs, tablet, TalkBack, physical devices, a release device
|
|
47
|
-
campaign) runs at the integration, release or campaign checkpoint the spec or repo assigns
|
|
48
|
-
it. Do not recreate it per feature or postpone affected runtime checks until release.
|
|
49
|
-
Record outstanding criteria as pending in their owning task or issue, never as passed.
|
|
50
|
-
|