Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions docs/revised-api-acceptance-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,34 @@

**Android Mapbox API36 is complete within the declared retained-contract scope: camera passed attempt24, core passed attempt27 and all six retained scenarios passed attempt29.** The [completed outcome](../records/evidence/revised-api-u26-android-mapbox-api36-attempt-29.json) records all thirteen renderer checks, six current physical receipts, actual scale2.625, matching installed APK identities before and after,695 unchanged frozen files and successful owned cleanup. Accepted camera/core evidence retains its original limits. The [retained packet](../records/evidence/revised-api-u26-mapbox-android-api36-retained-preparation.json) is completed execution history and grants no further dispatch.

**Next: prepare the complete Android MapLibre unit.** Preparation must account for every retained requirement using applicable reused evidence, remaining camera/core/retained scenarios and owner exclusions, then supply one immutable packet for independent audit under the [complete batch protocol](testing-policy.md#complete-acceptance-units). This handoff authorizes no backend switch or native execution. Three native units and nine rows remain: Android MapLibre, iOS Mapbox and iOS MapLibre.
**Android MapLibre API36 is complete within the declared retained-contract scope: camera passed attempt30, core passed attempt31 and all six retained scenarios passed attempt32.** The [completed outcome](../records/evidence/revised-api-u26-android-maplibre-api36-attempt-32.json) records all thirteen renderer checks, six fresh physical receipts, actual scale2.625, matching installed APK identities before and after,695 unchanged frozen files and nine passed cleanup steps. Accepted camera/core evidence retains its original limits. Attempt30 schema failure and attempt31 quota-interrupted retained timeout remain unchanged history; neither was retroactively passed. The [retained-only packet](../records/evidence/revised-api-u26-maplibre-android-api36-retained-preparation.json) is completed execution history and grants no further dispatch.

**Next: prepare the complete iOS Mapbox unit.** Both Android backend units are complete. Two iOS units and six rows remain, followed by offline density closeout requiring two distinct positive observed scales per engine. Preparation must follow the complete batch protocol and independent audit; this Android completion authorizes no iOS launch, build, installation, calibration or acceptance execution.

The [attempt27 outcome](../records/evidence/revised-api-u26-android-mapbox-api36-attempt-27.json) preserves the accepted core pass and mistaken retained failure latch. The [attempt28 outcome](../records/evidence/revised-api-u26-android-mapbox-api36-attempt-28.json) remains an unverified retained row; missing initial-theme history and stale final child state were not retroactively repaired. Attempt29 supplied fresh initial/updated child history and final matching snapshots. The original application SIGKILL cause remains unresolved; the completed unit does not establish its cause or a fix.

After all four native units, the offline density closeout still requires two distinct positive observed scales per engine and matching artifact identities. A single scale2.625 observation does not close that aggregate gate.

## Coverage matrix and order

The [fixed baseline matrix](../records/evidence/revised-api-u26-platform-batches-preparation.json) owns the twelve camera/core/retained row IDs, thirteen core recipes, six retained recipes, accepted evidence and scope dispositions. Its historical two-platform dispatch instructions are superseded by the four complete backend units below. The historical baseline remains twelve rows, with one accepted API37 camera row and eleven remaining rows. Selecting API36 reopened Android Mapbox camera for the new OS; attempt24 passed that row, leaving eleven unfinished rows across the selected targets. The old API37 pass remains accurate history. Attempt27 completed API36 core and attempt29 completed retained, leaving nine unfinished rows across three native units.
The [fixed baseline matrix](../records/evidence/revised-api-u26-platform-batches-preparation.json) owns the twelve camera/core/retained row IDs, thirteen core recipes, six retained recipes, accepted evidence and scope dispositions. Its historical two-platform dispatch instructions are superseded by the four complete backend units below. The historical baseline remains twelve rows, with one accepted API37 camera row and eleven remaining rows. Selecting API36 reopened Android Mapbox camera for the new OS; attempt24 passed that row, leaving eleven unfinished rows across the selected targets. The old API37 pass remains accurate history. Attempt27 completed API36 core and attempt29 completed retained, leaving nine unfinished rows across three native units. Attempt30 subsequently completed MapLibre Android camera; attempt31 completed its core and attempt32 its retained row, leaving six unfinished iOS rows.

| Order | Immutable platform/backend unit | Camera | Core | Retained | Remaining rows |
| ----- | ------------------------------- | ---------------- | ---------------- | ---------------- | -------------- |
| 1 | Android Mapbox, API36 | Passed attempt24 | Passed attempt27 | Passed attempt29 | 0 |
| 2 | Android MapLibre | Pending | Pending | Pending | 3 |
| 2 | Android MapLibre, API36 | Passed attempt30 | Passed attempt31 | Passed attempt32 | 0 |
| 3 | iOS Mapbox | Pending | Pending | Pending | 3 |
| 4 | iOS MapLibre | Pending | Pending | Pending | 3 |

The [Android Mapbox camera outcome](../records/evidence/revised-api-u26-android-platform-batch-attempt-01.json) remains accepted. It does not establish an API36 camera pass; attempt24 independently supplied that pass. Partial core observations and calibration runs do not complete a row. Android Mapbox is complete within its recorded scope. Prepare Android MapLibre next; do not interleave features across the remaining units.
The [Android Mapbox camera outcome](../records/evidence/revised-api-u26-android-platform-batch-attempt-01.json) remains accepted. It does not establish an API36 camera pass; attempt24 independently supplied that pass. Partial core observations and calibration runs do not complete a row. Android Mapbox is complete within its recorded scope. MapLibre Android camera30, core31 and retained32 are accepted within their recorded scopes. Prepare iOS Mapbox next. Do not interleave features across the remaining units.

All nine browser rows passed on unchanged f05 within the [recorded browser scope](../records/evidence/revised-api-u25-web-attempt-07.json); web has no pending row. The fixed matrix links the accepted four-environment minimal, lifetime, query/cluster, bounded source/image and targeted rendering evidence. Reuse those results where artifact and behavior remain applicable, retaining their original limits. The API36 packet reviews OS-change impact: reuse unchanged-contract evidence within its original limits, then obtain fresh camera/GL, query, style/replacement, live UI and density observations through the three selected rows. Any new OS-dependent gap blocks the unit; no general SDK certification is implied.

The twelve rows are the remaining execution baseline, not a replacement for full retained-contract accounting. Before approval, map every retained requirement to valid reused evidence, a remaining scenario or an explicit owner-approved exclusion. A newly demonstrated gap must be resolved in the selected unit's complete packet; it must not be hidden by relabeling the requirement unsupported.

## Next complete-unit preparation

Prepare Android MapLibre under the [complete batch protocol](testing-policy.md#prepare-the-complete-batch). Reuse valid frozen-candidate evidence with its original limits; account for the complete retained contract before proposing execution. The packet must bind candidate, resolved dependencies, selected device/OS, all remaining camera/core/retained scenarios, exact commands, ownership, first-failure cleanup, storage and elapsed-time budgets. Independent audit precedes a separate execution decision. No Android MapLibre launch, build, installation or calibration is authorized here.
Prepare iOS Mapbox under the [complete batch protocol](testing-policy.md#prepare-the-complete-batch), accounting for every retained requirement through applicable reused evidence, remaining camera/core/retained rows and owner exclusions. Supply one immutable packet with candidate/dependency/device identities, exact commands, ownership, first-failure cleanup and resource budgets for independent audit before an iOS execution decision. The completed Android packets are history and must not be dispatched again.

The [completed Android Mapbox outcome](../records/evidence/revised-api-u26-android-mapbox-api36-attempt-29.json) and [completed retained packet](../records/evidence/revised-api-u26-mapbox-android-api36-retained-preparation.json) preserve its executed inputs and accepted reuse. Historical commands must not be dispatched again from this handoff.

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
{
"result": "stopped-at-observation-writer-schema-error",
"candidateSha256": "33828324898408485cd9211cc780f098d1564d90426887ff9fb4b64733913276",
"distSha256": "f17855848fccf4aad07d2ebc02738d2bb799778ea0bd12070c448cd857251ab5",
"inputApkSha256": "c4c0ccf43f9d3b7217f8085827b351f10c5ececfb6a70c603be9f766dd64d131",
"environment": "api36-google-apis-revision7-arm64-4k",
"deviceIdentity": {
"api": "36",
"abi": "arm64-v8a",
"pageBytes": "4096",
"gles": 196609
},
"completedRows": [
{
"rowId": "maplibre-android-camera",
"status": "passed",
"scene": {
"observations": [
{
"text": "TF04 fit=ok click=pending clickAt=pending stop=pending held=pending command=pending doubletap=pending center=-122.32000,47.64000 note=none phase=await-click done=0",
"fields": {
"fit": "ok",
"click": "pending",
"clickAt": "pending",
"stop": "pending",
"held": "pending",
"command": "pending",
"doubletap": "pending",
"center": "-122.32000,47.64000",
"note": "none",
"phase": "await-click",
"done": "0"
}
},
{
"text": "TF04 fit=ok click=hit clickAt=-122.32001,47.63754 stop=rejected held=pending command=pending doubletap=pending center=-120.00000,45.00000 note=none phase=await-hold done=0",
"fields": {
"fit": "ok",
"click": "hit",
"clickAt": "-122.32001,47.63754",
"stop": "rejected",
"held": "pending",
"command": "pending",
"doubletap": "pending",
"center": "-120.00000,45.00000",
"note": "none",
"phase": "await-hold",
"done": "0"
}
},
{
"text": "TF04 fit=ok click=hit clickAt=-122.32001,47.63754 stop=rejected held=0 command=applied doubletap=pending center=-120.00000,45.00000 note=none phase=await-double-tap done=0",
"fields": {
"fit": "ok",
"click": "hit",
"clickAt": "-122.32001,47.63754",
"stop": "rejected",
"held": "0",
"command": "applied",
"doubletap": "pending",
"center": "-120.00000,45.00000",
"note": "none",
"phase": "await-double-tap",
"done": "0"
}
},
{
"text": "TF04 fit=ok click=hit clickAt=-122.32001,47.63754 stop=rejected held=0 command=applied doubletap=timeout center=-120.00000,45.00000 note=none phase=done done=1",
"fields": {
"fit": "ok",
"click": "hit",
"clickAt": "-122.32001,47.63754",
"stop": "rejected",
"held": "0",
"command": "applied",
"doubletap": "timeout",
"center": "-120.00000,45.00000",
"note": "none",
"phase": "done",
"done": "1"
}
}
],
"display": {
"width": 1080,
"height": 2400
},
"tap": [
"540",
"1488"
]
}
}
],
"core": {
"status": "unverified",
"acceptedPhysicalScenarios": [
"live-child-button",
"nested-scroll",
"live-activation",
"annotation-activation",
"offset-touch-bounds",
"popup-follow-dismissal",
"map-feature-click",
"navigation-location",
"style-remount",
"host-accessibility",
"sdk-ornaments",
"camera-target-and-gesture"
],
"remainingPhysicalScenarios": [
"marker-prop-rejection"
],
"markerRecoveryHelpers": "Four rejection-verified receipts exist; final observation not written; no completed core judge/result exists. Fresh four-case rejection remains required for continuation.",
"runId": "8ca84053-4355-45bc-8d81-0b213cd34adb"
},
"retained": {
"status": "not-run"
},
"firstFailure": {
"boundary": "operator observation input, not production library",
"message": "Unknown observation field.",
"cause": "Worker put receipts at top level; writer allows only action, seenResult, rendererData, screenshot and rejected input before mutation.",
"writerExitCode": 1,
"rawReportUnchanged": true
},
"cleanup": {
"launcher": "Worker sent SIGTERM under erroneous packet instruction; exit143 without finally cleanup; checkpoint cleanup remains empty.",
"manualFallback": "Worker reported bounded owned cleanup: core PGID26486 and emulator PID/PGID25229 absent; ports5580/5581/8081/8797 absent; private AVD and ini removed.",
"limits": "Selected app force-stop/uninstall and reverse removal were not independently confirmed before emulator termination; device termination ended them. No automatic-cleanup pass claimed.",
"source": "Execution worker report relayed by coordinator; checkpoint binds acquired emulator identity.",
"rawRetention": "Preserve all attempt30 files unchanged for active investigation."
},
"sourceSha256": {
"/Users/rob/code/mapbox-code/one-map-f05-android-recovery/android-platform-batch-attempt-30/checkpoint.json": "441e0a77035ce5f7157e550b63dc38c0d244802965164ec1bc74534836efcecf",
"/Users/rob/code/mapbox-code/one-map-f05-android-recovery/android-platform-batch-attempt-30/maplibre-android-core-manual.json": "0b3c5b46c960edc3fa129996bbc794d104c211f1230134af57248d1b263915d1",
"/Users/rob/code/mapbox-code/one-map-f05-android-recovery/android-platform-batch-attempt-30/marker-prop-rejection-observation.json": "818e84f6b230f04c08756893d4302f684d925ff58516e7ac7cbab1d91f458b93",
"/Users/rob/code/mapbox-code/one-map-f05-android-recovery/android-platform-batch-attempt-30/toolbar-034.json": "34a98f0d8427f2659f8e6dc5799e5293313bf116614d7764cf5853f4022d5805",
"/Users/rob/code/mapbox-code/one-map-f05-android-recovery/android-platform-batch-attempt-30/toolbar-038.json": "57a8069ee9f920d8263a0c5033c17e78d49b57002efbc7507dd8edaf8932cf8c",
"/Users/rob/code/mapbox-code/one-map-f05-android-recovery/android-platform-batch-attempt-30/toolbar-042.json": "3911a8ce5d4352c99217a6c726283fc0f918dceb6294d39763d01f987e4afd1f",
"/Users/rob/code/mapbox-code/one-map-f05-android-recovery/android-platform-batch-attempt-30/toolbar-046.json": "c184ffb60be97afbfeaaf532cd6615f1293596cb3eab64800f35d71e630c88b5"
},
"correctedInput": {
"path": "/private/tmp/one-map-android-restoration-review/records/evidence/revised-api-u26-maplibre-android-attempt30-corrected-input.json",
"sha256": "dfd9e2d4f9f95205c25fc38afcb16af646896dbeed643515229d0e1ea841c57d",
"change": "Only move receipts under rendererData; new copy, raw input/report untouched.",
"limit": "Offline schema reproduction; no core acceptance credit."
},
"remainingUnit": "Android MapLibre API36 core+retained, reusing camera30 and twelve accepted core physical observations with exact provenance; fresh marker cases/current renderer read and all six retained required.",
"authorization": "No native retry authorized. Offline repair and independent audit precede one complete remaining-unit owner decision."
}
Loading