docs planning history P32_UI_OPENING_20261005 - AlexandreZanata/Abastevo GitHub Wiki

Current execution state

  • BATCH 2026-10-05 LOCAL_DONE: P26 INTEGRATED (938fc1f, PR #117); P32 T01–T04 + P33 T01–T03 code-ready and pushed (branches codex/phase-32-station-profile-app, codex/phase-33-profile-acceptance); teste backend UNVERIFIED (Fortinet CA, curl 60, no bypass). Owed: end manual batch, required CI, cumulative PR/guarded merge, merged-SHA wiki, then G09/P10. Evidence: batch closure. iOS archived; G09 UNCERTIFIED; no production/pilot claim.

  • P33-T03 LOCAL_DONE 2026-10-05 on codex/phase-33-profile-acceptance: pinned candidate + handoff (candidate manifest, new profile-review.md runbook; docs-only on tested tree, diff-check + secrets PASS; G33 code-ready, live/device/G09 OWED). Evidence: p33-t03. Phase P33 LOCAL_DONE (T01–T03 pushed); next: conjunto closure (manual batch → cumulative CI/PR/merge/wiki). No per-phase PR/merge/wiki; iOS archived; G09 UNCERTIFIED.

  • P33-T02 LOCAL_DONE 2026-10-05 on codex/phase-33-profile-acceptance: authority lifecycle locked end-to-end (open→reissue→approve→terminal-closed + rival isolation; test-only, 5/5 -race pkgs ok, diff/secrets PASS; device/provider rows OWED). Evidence: p33-t02.

  • P33-T01 LOCAL_DONE 2026-10-05 on codex/phase-33-profile-acceptance: adversarial campaign (rival/divergent bursts + proof exhaustion; fixed real publish-window 404→Busy/409 + harness races; 10/10 -race GREEN, vet/fmt/compat/diff/secrets PASS). Evidence: p33-t01.

  • P32-T04 LOCAL_DONE 2026-10-05 on codex/phase-32-station-profile-app: offline/restart code acceptance (rule + recovery test; full domain/application/data/app suites 0-fail + assemble PASS, diff-check + secrets PASS; device/a11y rows OWED). Evidence: p32-t04. Phase P32 LOCAL_DONE (T01–T04 pushed); next: P33 via new phase branch. No PR/CI/merge/wiki per batch closure; iOS archived; G09 UNCERTIFIED.

  • P32-T03 LOCAL_DONE 2026-10-05 on codex/phase-32-station-profile-app: management/invitations/contest (capability rule + orchestration + action labels; RED→GREEN + assemble PASS, diff-check + secrets PASS; server-authoritative, no optimistic approval/replay). Evidence: p32-t03.

  • P32-T02 LOCAL_DONE 2026-10-05 on codex/phase-32-station-profile-app: claim export-sign-import (domain rule + application orchestration + status labels; RED→GREEN + assemble PASS, diff-check + secrets PASS; no PDF rewrite/key collection/backend change). Evidence: p32-t02. No PR/CI/merge/wiki per batch closure; iOS archived; G09 UNCERTIFIED.

  • P32-T01 LOCAL_DONE 2026-10-05 on codex/phase-32-station-profile-app: public profile/badge (domain/application/data/app, no migration/network; RED→GREEN badge/usecase/DTO/UI + assemble PASS, diff-check + secrets PASS; privacy by projection-filter tests). Evidence: p32-t01.

  • P31-T04 LOCAL_DONE 2026-10-05 on codex/phase-31-verified-representation: scoped edits + official replies (migration 000040, server-side privileges, at-time attribution; unit + PostGIS PASS, contracts green, full build PASS). Evidence: p31-t04. Next (other session): P31-T05 contestation/suspension. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P31-T03 LOCAL_DONE 2026-10-05 on codex/phase-31-verified-representation: restricted review + atomic grants (migration 000039, tx convergence, moderation target; unit + PostGIS race PASS, suites green). Evidence: p31-t03. Next: P31-T04 edit/reply permissions. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P31-T02 LOCAL_DONE 2026-10-05 on codex/phase-31-verified-representation: authority checker (linkage + powers + joint/mismatch/expiry rules; unit 4/4 PASS; sourcing stays OPEN). Evidence: p31-t02. Next: P31-T03 review/grants. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P31-T01 LOCAL_DONE 2026-10-05 on codex/phase-31-verified-representation: signature/declaration verification (chain/validity/revocation vectors + VerifyProof service; synthetic PKI logic-only, real trust owed; unit + PostGIS PASS). Evidence: p31-t01. Next: P31-T02 company/authority verification. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P30-T04 LOCAL_DONE 2026-10-05 on codex/phase-30-station-profiles: proof intake/expiry (migration 000038 + validation + metadata + 503-without-storage; unit + PostGIS PASS, contracts green, full build PASS). Evidence: p30-t04. Next: P30 phase exit, then P31 via --from-checkpoint. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P30-T03 LOCAL_DONE 2026-10-05 on codex/phase-30-station-profiles: claims + one-use declarations (migration 000037 + service + routes + OpenAPI/wiring; unit + PostGIS lifecycle/privacy/race PASS, contracts green, full build PASS). Evidence: p30-t03. Next: P30-T04 proof intake/expiry. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P30-T02 LOCAL_DONE 2026-10-05 on codex/phase-30-station-profiles: operator link + public unclaimed profile (new module, migration 000036, handler + OpenAPI/wiring; unit + PostGIS race/convergence PASS, contracts green, full build PASS). Evidence: p30-t02. Next: P30-T03 claims/declarations. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P30-T01 LOCAL_DONE 2026-10-05 on codex/phase-30-station-profiles: profile contract freeze (ceremony/roles/fields/retention/states + 4 OPEN items; docs-only, links/secrets PASS). Evidence: p30-t01. Next: P30-T02 operator link/unclaimed profile. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P29-T03 LOCAL_DONE 2026-10-05 on codex/phase-29-catalog-acceptance: candidate/handoff recorded (pinned SHAs, runbooks, G09/P10 prerequisites; P28 unselected, no SLA). Evidence: p29-t03. Next: P29 phase exit, then P30 via --from-checkpoint. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P29-T02 LOCAL_DONE 2026-10-05 on codex/phase-29-catalog-acceptance: lifecycle reacceptance (PostGIS source→app chain + closed/replay honesty; backend + Android suites green; device rows owed). Evidence: p29-t02. Next: P29-T03 candidate/handoff. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P29-T01 LOCAL_DONE 2026-10-05 on codex/phase-29-catalog-acceptance: capacity campaign (10k rows 5.3 s, burst p95 553 µs, catch-up + backlog + indexes PASS; simulation, no SLA). Evidence: p29-t01. Next: P29-T02 lifecycle reacceptance. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P27-T05 LOCAL_DONE 2026-10-05 on codex/phase-27-station-intake: abuse/privacy/lifecycle (liveness gate, quota 20/21, races, cross-module suites green; retention/runbook explicit). Evidence: p27-t05. Next: P27 phase exit, then P29 via --from-checkpoint (P28 optional). No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P27-T04 LOCAL_DONE 2026-10-05 on codex/phase-27-station-intake: suggest/correct/status journey (intake client/gateway/use cases + ViewModel/screen/nav + strings; 10 new tests PASS, full Android suites + assemble green). Evidence: p27-t04. Next: P27-T05 abuse/privacy/lifecycle. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P27-T03 LOCAL_DONE 2026-10-05 on codex/phase-27-station-intake: Room v8 catalog cache + offline replay (Room 4/4 + migration guard PASS, memory retired, targets verified); full Android suites + assemble PASS. Evidence: p27-t03. Next: P27-T04 suggest/status journey. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P27-T02 LOCAL_DONE 2026-10-05 on codex/phase-27-station-intake: verified decisions (exact-official auto-verify + audited review + unknown pins, worker job wired; unit + PostGIS approve/defer/projection/race PASS, full build PASS). Evidence: p27-t02. Next: P27-T03 Android catalog/cache/targets. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P27-T01 LOCAL_DONE 2026-10-05 on codex/phase-27-station-intake: signed suggestions + private status (migration 000034 + service + handler + OpenAPI + api wiring; unit + PostGIS idempotency/isolation PASS, contracts green, full build PASS). Evidence: p27-t01. Next: P27-T02 decisions/corrections/locations. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P26-T03 LOCAL_DONE 2026-10-05 on codex/phase-26-regulatory-discovery: review/catch-up/acceptance (weekday backfill, correction edges, runbook; unit 4/4 PASS; G26 BLOCKED on live access, recorded). Evidence: p26-t03. Next: P26 phase exit, then P27 via --from-checkpoint. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P26-T02 LOCAL_DONE 2026-10-05 on codex/phase-26-regulatory-discovery: act classification + chronology/revocation (deterministic rules, no opening-date output; unit 6/6 + PostGIS grant→revoke same-identity PASS). Evidence: p26-t02. Next: P26-T03 review/catch-up/acceptance. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P26-T01 LOCAL_DONE 2026-10-05 on codex/phase-26-regulatory-discovery: INLABS access/fetch/parse/checkpoints (RED→GREEN 7/7, no live access — explicit refusal, provisional fixtures). Evidence: p26-t01. Next: P26-T02 act classification/reconciliation. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P25-T05 LOCAL_DONE 2026-10-05 on codex/phase-25-national-registry: jobs/acceptance (reconcile handler + disabled daily schedule + runbook + freshness query; handler 3/3 + platform/directory suites PASS, worker builds). Evidence: p25-t05. Next: P25 phase exit, then P26 via --from-checkpoint. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P25-T04 LOCAL_DONE 2026-10-05 on codex/phase-25-national-registry: canonical reconciliation (complete-runs-only, stable UUIDs, revocation sticks, reviewed-point projection; unit 4/4 + PostGIS e2e/race + zero-price reads PASS, directory suites green). Evidence: p25-t04. Next: P25-T05 jobs/acceptance. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P25-T03 LOCAL_DONE 2026-10-05 on codex/phase-25-national-registry: API discovery (typed traversal/targeted lookup, module-owned guarded transport, coordinate honesty; unit 8/8 + PostGIS traversal/replay/404 PASS, directory suites + vet green, no live fetch). Evidence: p25-t03. Next: P25-T04 reconciliation/reads. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P25-T02 LOCAL_DONE 2026-10-05 on codex/phase-25-national-registry: bounded CSV staging (migration 000031 + sqlc + StageCSV with run ledger/checksum/batches; unit 11/11 + PostGIS replay/concurrency/quarantine/recovery PASS, full directory suites green). Evidence: p25-t02. Next: P25-T03 API discovery. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P25-T01 LOCAL_DONE 2026-10-05 on codex/phase-25-national-registry: source contracts frozen (REGISTRY_SOURCES policy + executable registry package RED→GREEN 6/6 + v1 fixtures, provisional columns/budgets flagged). Evidence: p25-t01. Next: P25-T02 CSV staging. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P38-T03 LOCAL_DONE 2026-10-05 on codex/phase-38-app-acceptance: candidate/handoff recorded (P34–P38 scope, trust/blocker state, P25 entry + final-closure plan; no integration claim). Evidence: p38-t03. Next: P38 phase exit, then P25 via --from-checkpoint. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P38-T02 LOCAL_DONE 2026-10-05 on codex/phase-38-app-acceptance: consolidated end manual/device matrix planned (P24/P29/P33 + P35–P37 rows, execution OWED, no runs per directive). Evidence: p38-t02. Next: P38-T03 candidate/handoff. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P38-T01 LOCAL_DONE 2026-10-05 on codex/phase-38-app-acceptance: integrated code regression (backend unit+PostGIS + full Android suites + assemble + contracts, 0 failures retained as 0); live/device rows owed, not waived. Evidence: p38-t01. Next: P38-T02 end manual matrix. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P37-T03 LOCAL_DONE 2026-10-05 on codex/phase-37-live-contributions: storage/expiry verification (24h all-copy matrix PASS unit+PostGIS, no new semantics); live photo journey BLOCKED_MEDIA (no attached VPS storage), never fabricated. Evidence: p37-t03. Next: P37 phase exit, then P38 via --from-checkpoint. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P37-T02 LOCAL_DONE 2026-10-05 on codex/phase-37-live-contributions: upload/outbox lifecycle (confirmed→enqueue with target+fuel-match guards, worker/gateway verified, no backend defect found); capture + contribution/outbox suites + assemble PASS; live UNVERIFIED, photo bytes out of live path. Evidence: p37-t02. Next: P37-T03 storage/expiry. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P37-T01 LOCAL_DONE 2026-10-05 on codex/phase-37-live-contributions: contextual capture/review (ContributionTarget RED→GREEN + ViewModel bind + target-aware nav, legacy FAB flow kept); capture/nav suites + assemble + photo/OCR + evidence suites PASS; live UNVERIFIED. Evidence: p37-t01. Next: P37-T02 upload/outbox lifecycle. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P36-T03 LOCAL_DONE 2026-10-05 on codex/phase-36-live-community: activity/account rights (session→discussion binding +2 tests, deletion/session-revocation verified, export contract frozen NOT IMPLEMENTED); app discovery 10/10 + full app suite PASS, backend account/identity/feedback/moderation race+PostGIS PASS. Evidence: p36-t03. Next: P36 phase exit, then P37 via --from-checkpoint. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P36-T02 LOCAL_DONE 2026-10-05 on codex/phase-36-live-community: station/fuel feedback screens on canonical UUID targets (FeedbackTarget RED→GREEN 3/3 + StationFeedbackSection in server detail, guest reads/signed writes, legacy untouched); stations+community suites + assemble PASS; live UNVERIFIED. Evidence: p36-t02. Next: P36-T03 activity/account rights. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P36-T01 LOCAL_DONE 2026-10-05 on codex/phase-36-live-community: staging account/provider wiring locked (origin guard 3/3, auth/account/identity suites PASS, no creds in Git); provider delivery/device proof OWED, live UNVERIFIED (curl 60, no bypass). Evidence: p36-t01. Next: P36-T02 feedback UUID wiring. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P35-T03 LOCAL_DONE 2026-10-05 on codex/phase-35-live-discovery: search/degraded regression (transient nearby use case, cancellable loads, refresh-preserving selection, GPS-denied honesty; legacy untouched); application 7/7 + app 8/8 + full domain/application/data/app suites PASS, assemble PASS; live still UNVERIFIED (curl 60, no bypass). Evidence: p35-t03. Next: P35 phase exit, then P36 via --from-checkpoint. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P35-T02 LOCAL_DONE 2026-10-05 on codex/phase-35-live-discovery: Explore/station-detail integration (flag-gated server use cases + ViewModel UUID state + row/detail sheet + en/pt-BR, legacy untouched); new application/app suites 10/10 + existing StationsViewModelTest PASS, assemble PASS; live still UNVERIFIED (curl 60, no bypass). Evidence: p35-t02. Next: P35-T03 search/degraded regression. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P35-T01 LOCAL_DONE 2026-10-05 on codex/phase-35-live-discovery: canonical Directory UUID ports/cache (domain ServerStation + gateway/cache ports, data HTTP client/codec/gateway/memory-cache + DirectoryModule, legacy CNPJ untouched, no Room migration); RED→GREEN domain/data suites + Hilt KSP + :app:assembleDebug PASS; vacuum/apicontract/PostGIS PASS; live still UNVERIFIED (curl 60, no bypass). Evidence: p35-t01. Next: P35-T02 Explore/detail integration. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P34 phase exit 2026-10-05 on codex/phase-34-vps-connection (head d05c7d3, base 0067e86): T01-T03 LOCAL_DONE; exit checks PASS once (apicontract, vacuum, directory/health PostGIS, ApiEnvironment --rerun-tasks, diff/secret, no-bypass). Record: p34 exit. Next: checkpoint then P35 via --from-checkpoint. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P34-T03 LOCAL_DONE 2026-10-05 on codex/phase-34-vps-connection: bounded synthetic catalog spec (contracts/testdata/p34/catalog.json v1, 3 owned [P34-TEST] stations + 9 exercise cases); RED→GREEN TestP34Catalog* + full apicontract + vacuum + real-PostGIS directory PASS. NOT SEEDED, population unclaimed. Evidence: p34-t03. Next: P34 phase exit, then P35. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P34-T02 LOCAL_DONE 2026-10-05 on codex/phase-34-vps-connection: shared ApiEnvironment staging origin wired into auth/identity/community/feedback/contribution DI; RED→GREEN ApiEnvironmentTest + client/session regression + Hilt KSP + :app:assembleDebug PASS; vacuum/apicontract/health PASS; live still UNVERIFIED (curl 60, no bypass). Evidence: p34-t02. Next: P34-T03 synthetic catalog spec. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • P34-T01 LOCAL_DONE 2026-10-05 on codex/phase-34-vps-connection (9b4740c, base 0067e86): staging client/flag/contract inventory + TLS verification without bypass. Live https://teste.abastevo.com.br UNVERIFIED (Fortinet middlebox CA FG6H0FTB23902129, curl 60 on 4 probes); local vacuum/apicontract/health/directory-PostGIS + Android HTTPS tests PASS. Evidence: p34-t01. Next: P34-T02 explicit origin config. No PR/CI/merge/wiki per ADR-018; iOS archived; G09 UNCERTIFIED.

  • App-first planning 2026-10-05: ADR-019, ANDROID_VPS_PLAN; branch codex/phase-34-vps-app-plan, source baseline b4754b2. Next authorized implementation P34-T01, then P34–P38 Android/VPS source integration before P25–P33 catalog/profile scope. All new tasks PLANNED / LOCAL_ONLY; no runtime/server/publication done by this planning edit.

  • Staging origin https://teste.abastevo.com.br; 2026-10-05 read-only retries could not verify live JSON due runner/server certificate-chain trust (curl exit 60), not diagnosed as a VPS outage. Earlier smoke is historical. P34 verifies trust/contracts/data; private media/provider/device proof remains explicit. Continuation prompt.

  • Cadence update 2026-10-05: explicit user request adopts ADR-018. P01-T18 local workflow implementation on codex/phase-01-project-batch-flow, isolated from existing follow-up/planning work. Evidence: project batch validation. Remote rollout PENDING; no existing PR merged/closed here.

  • Next construction: accepted local phase checkpoint → next authorized dependency branch; no CI polling/PR waits/merge/wiki between phases. At final project closure: acceptance matrix + cumulative PR + required current Quick verification/reviews + guarded merge + wiki once. Task critical tests remain immediate; manual Android batch OWED; iOS archived; G09 UNCERTIFIED unchanged.

  • Updated: 2026-10-01. User authorized current icons/plan publication and wiki Home alignment. ADR-016 records Android-first commercial direction and explicit iOS deferral.

  • Updated: 2026-10-05. P25 INTEGRATED: PR #111 (a3c1eb3), issues #106–#110 CLOSED, wiki 9ddc2e9. Phase 26 authorized: evergreen educational guides under milestone 20 and branch codex/phase-26-landing-guides (issues #112–#116).

  • P26-T01 LOCAL_DONE (issue #112): landing guides content contract created and approved; 3 evergreen guides specified (/guias/pesquisa-anp/, /guias/etanol-ou-gasolina/, /guias/como-ler-precos/) plus /guias/ hub index; strict B-BR-L01 truthfulness, B-BR-L04 static content, zero runtime deps; git diff --check PASS; bash scripts/scan-secrets.sh PASS.

  • P26-T02 LOCAL_DONE (issue #113): 4 static guias pages + hub authored with breadcrumbs/semantic HTML, discreet /guias/ nav/footer links, build.mjs extended; pre-existing guide CSS tokens preserved + EOF fix; npm --prefix landing run build PASS, run check PASS, test 21/21 PASS, git diff --check PASS, secret scan PASS; SEO/sitemap stay P26-T03-owned. Next: P26-T03.

  • P26-T03 LOCAL_DONE (issue #114): guides SEO complete — titles 42–51 chars, descs 149–157 chars, OG/Twitter large cards, CollectionPage/TechArticle+BreadcrumbList JSON-LD with unique IDs, sitemap 8 URLs (4 guides), llms.txt discovery, privacidade nav consistency preserved; titles paraphrased within bounds vs contract wording (recorded, not rewritten); build PASS, check PASS, test 21/21 PASS, diff --check PASS, secret scan PASS. Next: P26-T04 regression tests.

  • P26-T04 LOCAL_DONE (issue #115): landing/tests/guides-content.test.mjs (3 suites: content/breadcrumbs/truthfulness, schemas/sitemap/llms, budgets) GREEN; 404/excluir/termos Guias nav consistency preserved; build PASS, check PASS, test 24/24 PASS, test-gate-selection.sh 15/15 PASS, diff --check PASS, secret scan PASS. Next: P26-T05 release evidence/closure.

  • P26-T05 LOCAL_DONE (issue #116): docs/release-evidence/p26-landing-guides.md recorded (G26 local only; commits T01–T04 pushed); quick-verify.sh ok 10s at 33cc11f; teste backend UNVERIFIED (Fortinet CA, curl 60, no bypass); PR #117 stays draft — manual/CI/cumulative-PR/guarded-merge/wiki OWED at conjunto closure. Next: Android P32 (branch isolada de P31).

  • P25 INTEGRATED record: issues #106–#110 CLOSED, required Quick verification + CI/test PASS, merge commit a3c1eb3, wiki snapshot 9ddc2e9. G25-STATIC-READY achieved.

  • Integrated history: G09-LOCAL/P09 PR #14 (6f4f048); P12 #21 (bf40a44); P13 #27 (fb5ac45); P14 #33 (47bdffe); P15 #39 (207936b); P16 #44 (cb131b0); P10 local #54 (be680d1); P17 #59 (047a347). See preserved current-state history for gates/check/wiki evidence and limits; do not recreate merged tasks.

  • P00-T01–T03 INTEGRATED: PR #66 (fd3dbcd), approved brand/README/native vectors; wiki 0cf4dce. Brand ledger.

  • P18 local validation INTEGRATED: PR #67 (9c090c6577b9cedb6119f9d5f8f8de96f2c6aa96), tested head 37e21cc, required Quick verification + fast/integration SUCCESS; local quick PASS once; wiki b4b6c97. Ledger, local exit.

  • P18/G18 full acceptance remains NOT_ACCEPTED; issues #60–#62 and milestone 10 remain OPEN. Android instrumented regressions 2/2 PASS, cached-home 382ms; this is not full functional/cold-start/performance acceptance. Native iOS/device and local private-storage matrix gaps remain recorded.

  • iOS: DEFERRED_EXPLICIT_RESUME_ONLY, archived by explicit user request. No Mac; preserve source/KMP ports/assets/evidence. Resume only after a new explicit request, never automatically. Archived backlog.

  • G09: real-production RELEASE, DEFERRED_UNTIL_G24_ANDROID_COMMERCIAL, tracker #13. Historical full multiplatform G18 is not accepted; future Android/backend certification scope is explicit. No production deployment/tag/public pilot authorized by this plan.

  • P19 INTEGRATED: PR #75 (b5ae5d7), issues #71–#74 CLOSED; G19 entry satisfied for P20.

  • P20 INTEGRATED: PR #80 (2788356), issues #76–#79 CLOSED with reason completed, required Quick verification SUCCESS; wiki 472b331. G20 entry satisfied for P21.

  • P21 INTEGRATED: PR #85 (f24afd1), issues #81–#84 CLOSED with reason completed, required Quick verification SUCCESS; wiki 9fbaf9b. G21 entry satisfied for P22.

  • P22 INTEGRATED: PR #90 (cdd395f), issues #86–#89 CLOSED with reason completed, required Quick verification SUCCESS; wiki 12f75e8. G22 entry satisfied for P23.

  • P23 INTEGRATED: PR #95 (b4f664e), issues #91–#94 CLOSED with reason completed, required Quick verification SUCCESS; wiki 2913d1d. G23 entry satisfied for P24.

  • Previous delivery record: P10-T09 definition+smoke INTEGRATED (PR #104, merge 4cd745e, base 59ea845; Quick verification SUCCESS; branch deleted local/remote verified). Issue #53 stays OPEN (launch blocked); #13, #60–#62 OPEN. Temp staging env RUNNING (isolated, local-only, teardown on owner word). Wiki: WIKI_PENDING. Remote/runtime state not reverified by P25 planning.

  • User directive 2026-10-02 (PLANNING): no emulator/device runs — manual validation only after ALL P phases; code tests only until then. User further directed advancing with that future manual validation treated as valid: P24/G24 accepted BY USER DECISION, not by device evidence (record: docs/release-evidence/p24-g24-user-acceptance.md). Manual batch stays OWED; G09 stays UNCERTIFIED; no deployment/tag/pilot authorized.

  • P24 INTEGRATED: PR #100 (aedfdd3, head guard 9f46ff8, base b4f664e), issues #96–#99 CLOSED with reason completed, required Quick verification + test SUCCESS; local quick PASS; branch deleted local/remote (verified). Acceptance by explicit user decision 2026-10-02 (code slices + deferred end manual batch; record docs/release-evidence/p24-g24-user-acceptance.md); wiki 87683e6 from aedfdd3. G24 entry satisfied for P09/G09 by that decision.

  • P23-T01 LOCAL_DONE (issue #91): duplicate-alert suppression for local opt-in price-drop alerts (once per vehicle per week; device-local history port + DataStore + codec + DI); no follows/subscriptions/backend push (no measured need, contract frozen for if-ever). Evidence: docs/mobile/p23-t01-return-flows.md. Validation: :domain:test 408 + :application:test 248 + :data:testDebugUnitTest 207 (1 pre-existing skip), 0-fail; :app:assembleDebug PASS; git diff --check PASS; secret scan PASS.

  • P23-T02 LOCAL_DONE (issue #92): onboarding contributor page (4th intro page, safe/legible/honest guidance) + Help screen (contribute/rules/report-appeal/privacy, Perfil entry, en/pt-BR); no invite flow (no need). Evidence: docs/mobile/p23-t02-onboarding-rules.md. Validation: :app:testDebugUnitTest 147/0-fail; :app:assembleDebug PASS; git diff --check PASS; secret scan PASS.

  • P23-T03 LOCAL_DONE (issue #93): frozen community metric definitions + pilot operating model (8 aggregates with purpose/denominator/window/min-aggregation/retention/status, low-coverage honesty, staffing checklist, measured-only costs); nothing new collected. Evidence: docs/mobile/p23-t03-metrics-operations.md, definitions docs/product/COMMUNITY_METRICS.md. Validation: links/state checks PASS; git diff --check PASS; secret scan PASS.

  • P23-T04 LOCAL_DONE (issue #94): synthetic lifecycle rehearsal (onboarding→contribution→correction→report→moderate→notify→erase/export→no-coverage, all green) + pilot-city runbook + hypotheses evaluation (none implemented). Evidence: docs/mobile/p23-t04-community-rehearsal.md, runbook docs/operator/pilot-city.md. Validation: backend -race PostGIS feedback/moderation 0-fail, :domain:test 408 + :application:test 248 + :data:testDebugUnitTest 207 (1 pre-existing skip) + :app:testDebugUnitTest 147, 0-fail; :app:assembleDebug PASS; git diff --check PASS; secret scan PASS. Phase P23 ready for exit / PR merge.

  • P00-T04 LOCAL_DONE: issue #68, commit 1de6423; native Android white-background A and density/monochrome assets; assembly PASS, source/geometry/gradient/dimension/opacity checks PASS. iOS catalog PREPARED/DEFERRED, not compiled. Icon guide.

  • P00-T05 LOCAL_DONE (issue #69, commit 28bf779): commercial community plan/new P19–P24 tasks, policy/iOS archive, current-state reconciliation and explicit wiki Home adoption. Plan, experience, batch evidence.

  • Future source sequence: P34–P38 Android/VPS → P25/P26/P27/P29 catalog (P28 selected only) → P30/P31/P32/P33 profile → end manual/device acceptance → final cumulative CI/PR merge/wiki → P09/G09 real certification → P10 public pilot. P11 optional; iOS archived. New source tasks PLANNED, not executed by this planning batch.

  • Required protection: Quick verification, current head/base and guarded merge; immediate critical risk tests and local phase exit checkpoints; local quick/remote checks through finish at final project closure, merged-SHA wiki once per batch (ADR-018). No release evidence is inferred from plans.

  • User choices: comments/replies 280 Unicode scalar characters; free email-code/Google/Apple accounts; ANP is dated reference, community current projection primary; private audit photos all-copy maximum 24h; payment never changes trust/free social participation.

  • P19-T01 LOCAL_DONE (issue #71, commit da637cb, draft PR #75): inherited screen/contract inventory, toolchain pins, P18 gaps carried forward; docs/mobile/p19-t01-baseline.md. Validation: git diff --check PASS, secret scan PASS, :app:assembleDebug PASS.

  • P19-T02 LOCAL_DONE (issue #72, commit 93487bb): frozen Explorar/Comunidade/Perfil + Atualizar-preço IA, source/condition hierarchy grounded in BackendPriceGroup, state matrix; novice testing explicitly PENDING. Evidence: docs/mobile/p19-t02-information-architecture.md. Validation: git diff --check PASS, secret scan PASS, :domain:test --rerun-tasks 378/0-fail.

  • P19-T03 LOCAL_DONE (issue #73, commit 771d5b1): abastevo brand token aliases (no new hex), accessible SourceTimeBadge (text+icon+screen-reader, no domain rules), app_name → abastevo. Validation: RED→GREEN SourceTimeBadgeTest 3/0-fail, :app:testDebugUnitTest 115/0-fail, :app:assembleDebug PASS.

  • P19-T04 INTEGRATED (issue #74, PR #75 b5ae5d7): migrated navigation shell with frozen 3 tabs (Explorar/Comunidade/Perfil) + persistent primary action ("Atualizar preço" FAB), preserved legacy expert tools and deep link support.

  • P20-T01 LOCAL_DONE (issue #76): bounded DiscoveryQuery (city+fuel, search/sort/page 1..100, no GPS/account/photo fields) reusing BackendPriceGroup money/condition/dated-ANP semantics; no new backend index. Evidence: docs/mobile/p20-t01-discovery-contract.md. Validation: DiscoveryQueryTest 6/0-fail, :domain:test 384/0-fail, git diff --check PASS, secret scan PASS.

  • P20-T02 LOCAL_DONE (issue #77): list-first Explore (manual city + fuel chips + station-name search + price sort, no map) with failed-refresh cache recovery. Evidence: docs/mobile/p20-t02-explore-journey.md. Validation: DiscoveryStationsRuleTest 7/0-fail (RED→GREEN), StationsViewModelTest 7/0-fail, :domain:test 391/0-fail, :app:testDebugUnitTest 126/0-fail, :app:assembleDebug PASS, git diff --check PASS, secret scan PASS.

  • P20-T03 LOCAL_DONE (issue #78): station detail bottom sheet (explicit no-coverage community slot, dated ANP reference with stale/unknown states, route + update-price actions, screen-reader source labels). Evidence: docs/mobile/p20-t03-station-detail.md. Validation: StationDetailRuleTest 6/0-fail (RED→GREEN), StationsViewModelTest 9/0-fail, :domain:test 397/0-fail, :app:testDebugUnitTest 128/0-fail, :app:assembleDebug PASS, git diff --check PASS, secret scan PASS.

  • P20-T04 LOCAL_DONE (issue #79): discovery acceptance + legacy regression, no new behavior. Evidence: docs/mobile/p20-t04-discovery-acceptance.md. Validation: :domain:test 397 + :application:test 238 + :app:testDebugUnitTest 128 = 763/0-fail (--rerun-tasks), :app:assembleDebug PASS, git diff --check PASS, secret scan PASS. Novice campaign/device matrix stay P24-owned; no fake coverage. Phase P20 ready for exit / PR merge.

  • P21-T01 LOCAL_DONE (issue #81): frozen contribution states (queued/pending/accepted/disputed/rejected, review precedence, cancelled → no status) + 24h evidence retention boundary, optional-photo API unchanged. Evidence: docs/mobile/p21-t01-contribution-contract.md. Validation: ContributionStateRuleTest 9/0-fail (RED→GREEN), :domain:test 406/0-fail, git diff --check PASS, secret scan PASS.

  • P21-T02 LOCAL_DONE (issue #82): editable capture review (selectable OCR candidates, manual price entry, explicit fuel + condition picks, one explicit confirm; backend SanitizeForward + P15 budgets verified existing, no backend change). Evidence: docs/mobile/p21-t02-capture-review.md. Validation: PortablePriceOcrTest 8 + ConfirmPriceCaptureUseCaseTest 8 + CaptureOcrViewModelTest 4, 0-fail; :domain:test 408 + :application:test 240 + :app:testDebugUnitTest 129, 0-fail; :app:assembleDebug PASS; git diff --check PASS; secret scan PASS. Low-end-device encode measurement stays P24-owned.

  • P21-T03 LOCAL_DONE (issue #83): private owner status (durable listOwned + P21-T01 state mapping + cancel, Perfil card; payload location-integrity proof; no migration/backend change). Evidence: docs/mobile/p21-t03-outbox-status.md. Validation: RoomContributionOutboxRepositoryTest 6 + GetOwnedContributionsUseCaseTest 2 + EnqueueContributionUseCaseTest 6 + ContributionStatusViewModelTest 4, 0-fail; :domain:test 408 + :application:test 243 + :data:testDebugUnitTest 200 (1 pre-existing live-network skip) + :app:testDebugUnitTest 133, 0-fail; :app:assembleDebug PASS; git diff --check PASS; secret scan PASS. Worker unit test + restart-restore proof stay P21-T04/P22-owned.

  • P21-T04 LOCAL_DONE (issue #84): storage/expiry evidence, no product change (tmpfs PostGIS + S3Mock substituted for unreachable MinIO; evidence unit + integration 7/7 pkgs, backup 10/0, restore drill 9/0, no-storage path ok). Evidence: docs/mobile/p21-t04-storage-expiry.md. Validation: go test -race unit + -tags=integration, git diff --check PASS, secret scan PASS. Full matrix/MinIO-parity stay future-owned. Phase P21 ready for exit / PR merge.

  • P22-T01 LOCAL_DONE (issue #86): self-deletion in auth UX (two-step confirm, Deleted notice, failure keeps session) + session-aware Perfil card; export needs a backend extension (deferred). Evidence: docs/mobile/p22-t01-account-journey.md. Validation: AuthViewModelTest 13/0-fail, backend account+identity unit + real-PostGIS integration 0-fail, :app:testDebugUnitTest 135/0-fail, :app:assembleDebug PASS, git diff --check PASS, secret scan PASS. Real provider proof stays P24-owned.

  • P22-T02 LOCAL_DONE (issue #87): ratings transport end-to-end (backend rate/remove/stats routes + OpenAPI + golden vectors, Android client, application stats read, ViewModel rate/delete/stats + ratingLine separate from price confidence); comments/replies/votes transport reused unchanged. Evidence: docs/mobile/p22-t02-ratings-comments-votes.md. Validation: backend feedback unit + real-PostGIS integration 0-fail, vacuum lint PASS, :domain:test 408 + :application:test 246 + :data:testDebugUnitTest 203 (1 pre-existing live-network skip) + :app:testDebugUnitTest 142, 0-fail; :app:assembleDebug PASS; git diff --check PASS; secret scan PASS. Screen-level discussion wiring (needs CNPJ→UUID target mapping) is the next slice; moderation UI stays P22-T03.

  • P22-T03 LOCAL_DONE (issue #88): report/moderation/support journey (user-facing moderation policy + frozen no-mute contract, Comunidade report & moderation card en/pt-BR, report-path tests locking received-without-deletion/quota/blank-guard). Evidence: docs/mobile/p22-t03-moderation-support.md. Validation: backend moderation/feedback/ops unit + -race real-PostGIS integration 0-fail, :app:testDebugUnitTest 145/0-fail, :app:assembleDebug PASS, git diff --check PASS, secret scan PASS. Reporter case-status/author-history reads need a future backend extension; in-screen report buttons wait on the station-identity mapping; help channel is P23-T02-owned.

  • P22-T04 LOCAL_DONE (issue #89): abuse/lifecycle + phase acceptance (astral-plane 280-scalar boundary test, comment/vote/rate hot-path benchmarks ~0.5–0.7 µs/op app-layer, full scenario matrix proven on existing suites, T01–T04 gate record). Evidence: docs/mobile/p22-t04-abuse-acceptance.md. Validation: full backend unit 0-fail, -race real-PostGIS integration (feedback/moderation/account/identity/ops) 0-fail, apicontract + vacuum lint + check-compat.sh PASS, :domain:test 408 + :application:test 246 + :data:testDebugUnitTest 203 (1 pre-existing skip) + :app:testDebugUnitTest 145, 0-fail; :app:assembleDebug PASS; git diff --check PASS; secret scan PASS. G24/G18/P09 acceptances stay owner-held; low-end encode + provider proof stay P24-owned. Phase P22 ready for exit / PR merge.

  • P09/G09 record INTEGRATED: PR #102 (merge 4e1c73a) + follow-up PR #103 (merge 59ea845); G09 stays UNCERTIFIED/BLOCKED, tracker #13 OPEN; history #60–#62 OPEN. Wiki snapshot for the record phase: WIKI_PENDING.

  • P10-T09 INTEGRATED as definition+smoke (PR #104, merge 4cd745e, head guard 5bef97b): pilot-plan.md + temp smoke at https://teste.abastevo.com.br (30/30 migrations, honest-empty 200s, 400/404 negatives, no-store; peers healthy). Issue #53 stays OPEN — launch, pilot-results.md and G09 cert NOT RUN. Temp env configs/secrets local-only by owner order.

Preserved history