4.6 KiB
4.6 KiB
Handoff: client-validation / FCM ACK Smoke
Date: 2026-05-29
Active Route
- Milestone:
agent-roadmap/phase/product-foundation/milestones/client-validation.md - Task:
agent-task/m-client-validation/04+03_fcm_ack_smoke/ - Plan:
agent-task/m-client-validation/04+03_fcm_ack_smoke/PLAN-cloud-G07.md - Review stub:
agent-task/m-client-validation/04+03_fcm_ack_smoke/CODE_REVIEW-cloud-G07.md - State: incomplete, blocked on valid signed push payload or scope decision.
Do not record raw FCM tokens, auth tokens, signing keys, private endpoint values, screenshots with secrets, or unredacted logs in tracked files.
Completed In This Loop
agent-ops/skills/common/plan/SKILL.mdandagent-ops/skills/common/code-review/SKILL.mdnow resolve split predecessor completion from both active task paths andagent-task/archive/**.- Archived predecessor is valid:
agent-task/archive/2026/05/m-client-validation/03_smoke_preflight/complete.log. apps/flutter-testnow initializes Firebase andNexoMessagingPluginat app startup, after callbacks are registered.- Widget/integration tests can construct
MyApp(initializePlugin: false)so deterministic tests are not tied to Firebase/FCM runtime setup. apps/flutter-testhas directfirebase_coredependency.- Local
cd apps/flutter-test && flutter analyzepassed. - Local
cd apps/flutter-test && flutter testpassed. - Remote
cd apps/flutter-test && flutter pub get && flutter analyze && flutter testpassed. - Remote app run with
ORG_GRADLE_PROJECT_nexoSmokeApplicationId=com.tokilabs.mattermostinitialized Firebase/plugin and saved an FCM token. - Remote push-proxy direct sends returned
{"status":"OK"}. - Device logcat confirmed FCM receipt and ACK request:
NexoFCM : >>> onMessageReceived ENTERNexoFCM : onMessageReceived type=message ... ackId=...ReceiptDelivery: Send ACK=...NomadNetwork: POST https://mattermost.toki-labs.com/api/v4/notifications/ack
- Placeholder and unsigned payloads were rejected with
Notification skipped: signature verification failed, which is expected.
Current Blocker
Notification display and downstream behavior are still blocked because the smoke does not yet have a valid server-generated signed push payload.
Confirmed PASS:
- Archived preflight dependency.
- Remote readiness.
- Firebase/plugin initialization.
- Device token save, without recording raw token.
- FCM receipt.
- ACK POST request evidence.
- Invalid/unsigned signature rejection.
Still BLOCKED:
- Valid signature pass.
- System notification display.
- Notification tap/opened event.
- Channel/thread routing.
- Inline reply.
- Dismiss action.
Remote integration note: flutter test integration_test -d emulator-5554 built
and installed the app, then produced no runner output for more than 40 seconds.
The local ssh wrapper was killed. Treat this as inconclusive, not PASS.
Continue From Here
- Keep active files in place. Do not write
complete.logor move the task to archive until code-review flow decides it. - Decide whether to provide a valid signed push trigger or split the remaining notification UI checks into a follow-up task.
- If continuing the smoke, use the remote environment from
agent-ops/rules/private/testing-env.md. - Continue with device
emulator-5554and:ORG_GRADLE_PROJECT_nexoSmokeApplicationId=com.tokilabs.mattermost. - Do not print the raw token. Keep it only in the remote shell env used for the push request.
- Re-run push with a valid signature, then collect redacted evidence for display/opened/routing/reply/dismiss.
- Update
CODE_REVIEW-cloud-G07.mdfirst. User-review or final archive decisions remain code-review responsibilities.
Useful remote evidence paths already referenced in the review stub:
/tmp/nexo-flutter-test-run-after-init.log/tmp/nexo-token-logcat-after-init.txt/tmp/nexo-smoke-screen-after-init.png/tmp/nexo-send-response.json/tmp/nexo-after-send-logcat.txt/tmp/nexo-send-response-nosig.json/tmp/nexo-after-send-logcat-nosig.txt
Source Files Touched
agent-ops/skills/common/plan/SKILL.mdagent-ops/skills/common/code-review/SKILL.mdagent-roadmap/phase/product-foundation/milestones/client-validation.mdagent-task/m-client-validation/04+03_fcm_ack_smoke/PLAN-cloud-G07.mdagent-task/m-client-validation/04+03_fcm_ack_smoke/CODE_REVIEW-cloud-G07.mdapps/flutter-test/lib/main.dartapps/flutter-test/pubspec.yamlapps/flutter-test/pubspec.lockapps/flutter-test/test/widget_test.dartapps/flutter-test/integration_test/plugin_integration_test.dart