Repository navigation
docs planning STATIC_LANDING_PLAN
State: PLANNED, specification revision 2 (2026-10-05). Publication scope: LOCAL_ONLY. Authority: maintainer requested a separate phase for a professional, attractive, simple landing page, restrained calls to action, professional SEO, a GitHub link and a Play Store link after the app is published. Stack confirmed by the maintainer: static HTML, static CSS and plain TypeScript 7.0.2 compiled to JavaScript. Revision 2 incorporates the maintainer-requested review of revision 1 (legal destinations, owner decisions, hosting, icons/social/headers, visual contract, content, verification tooling and delivery cost); it changes the specification only.
This document owns the landing specification; ROADMAP owns task IDs. PROGRESS owns execution state. Planning does not implement the site, open remote issues/PRs, publish a wiki, deploy a website or release the app/backend.
P25 is an independent website workstream outside the Android/backend release chain. Existing G09-LOCAL integration satisfies the inherited integration-first boundary. P25 can be implemented locally without waiting for G09 certification or Play Store availability. It neither blocks nor accepts G09, P10-T09, G24 or historical G18; iOS remains deferred. Public app/pilot availability claims follow their actual owning release evidence.
Use codex/phase-25-static-landing-plan for this local planning change. Future authorized implementation uses one phase branch codex/phase-25-static-landing and sequential P25-T01–T05 tasks under DELIVERY_WORKFLOW. Create milestone/issues/draft PR only when delivery is authorized; use a worktree if another effort occupies the checkout. No dates, traffic, ranking, budget costs or remote identifiers are invented.
Expected implementation areas: landing/, bounded landing selection/checks in scripts/quick-verify.sh and its existing gate-selection tests, a scoped CI integration if needed, and landing evidence/docs. Existing mobile/backend modules, com.anpfuel, applied migrations and MIT notices are preserved. No API, database, account, geolocation, analytics, payment, form service, CMS or new backend is needed.
Delivery shape and cost control. The default is landing/ inside this repository under the existing quick-verification gate with path-based selection; unknown paths remain refused. A separate landing repository (as the Zaflas reference uses) is a documented alternative that requires an explicit maintainer request and its own plan; it is not assumed. To avoid ceremony out of proportion to a small site: T01 is one short contract document and no code; the <head> metadata skeleton lands in T02 so T04 completes and validates it rather than introducing it; there is one specialized exit check and one finish run per phase.
These inputs are pending and not invented. Each has a need-by point; none blocks local implementation unless stated.
| ID | Decision / input | Why it matters | Need by |
|---|---|---|---|
| D-L01 |
Repository identity — RESOLVED 2026-10-05 by observation (see contract): the old name redirects (HTTP 301) to the public MIT repository AlexandreZanata/abastevo, which is the canonical GitHub destination. The local origin still uses the old name (works through the redirect). |
One consistent name across README, site links, JSON-LD sameAs, store listing and brand search. |
Done; the repository website field is set at publication. |
| D-L02 |
Canonical domain. Maintainer selects one stable HTTPS origin (a Brazilian .com.br is a natural candidate). Name/trademark availability is checked by the owner; this plan makes no availability claim. |
Canonical, og:url, sitemap, JSON-LD IDs, redirects. |
Public-artifact acceptance and publication. Local previews use explicit nonpublic configuration. |
| D-L03 | Static host. See Hosting and response policy. | Response headers, redirects, real 404, preview noindex, cache. |
T01 records the criteria; the choice is needed before publication. |
| D-L04 | Public contact channel (role mailbox or the repository issue tracker) for privacy, deletion and security reports. No personal mailbox is assumed. | Required by the legal destinations (B-BR-L07) and security.txt. |
Before the legal pages are accepted. |
| D-L05 | Wireframe and token approval — RESOLVED 2026-10-05: wireframes and tokens reviewed and approved by maintainer. | “Beautiful” must be agreed before it is built. | Done (T01). |
| D-L06 |
Delivery shape (see Scope and entry). Default: landing/ in this repository. |
Gate selection and CI scope. | T01. |
| D-L07 |
Crawler policy for AI/LLM crawlers and optional llms.txt. Normal search crawlers stay allowed. Default direction for an open, free project: allow reading/citation; the final choice is recorded. |
robots.txt content and optional discovery file. |
T04. |
| D-L08 | Store listing details (public URL, package identity) after app publication. | Replaces the prelaunch notice (B-BR-L03). | Follow-up task, not P25 acceptance. |
- B-BR-L01 — Truthful product presentation: use the approved lowercase abastevo name and existing brand. Describe demonstrated features with their limitations. Community observations and dated ANP references remain distinct; never imply ANP affiliation, guaranteed current prices, coverage everywhere, automatic trusted publication, guaranteed savings or production certification. Label future capability explicitly.
- B-BR-L02 — Restrained navigation: present one clear product explanation and ordinary links. No urgency/countdown, popup, signup wall, notification request, autoplay, repeated purchase/download banners or sticky conversion bar. A visitor can understand the project without taking an action.
-
B-BR-L03 — Honest store state: before a verified public listing, show plain text “Em breve na Google Play”; no disabled/fake download link, invented release date or unofficial APK fallback. After the maintainer supplies the public listing, verify its app/package identity and replace the notice with one normal “Ver na Google Play” link or the official badge (single placement). Preserve
com.anpfuel; do not derive or publish an unverified store URL from the package alone. - B-BR-L04 — Essential content is static: product copy, headings, GitHub/store links, legal/help destinations and SEO metadata exist in delivered HTML. With JavaScript disabled or failing, the page remains usable and links still work. TypeScript only enhances optional interactions; it does not fetch or inject essential content.
- B-BR-L05 — Evidence-based SEO: publish accurate visible content and consistent metadata. Never copy another organization's identity, rating, review count, testimonials, social profiles or availability. Structured data cannot contain unverified facts. SEO acceptance means a technically prepared site, not a promised Google position or indexation date.
- B-BR-L06 — Minimal data surface: no cookies, third-party trackers, remote font calls, location collection or visitor accounts in this phase. Any privacy/help text describes actual behavior and links to maintained project material; do not present a draft policy as legally approved. Hosting access logs are reviewed when hosting is selected.
-
B-BR-L07 — Required public legal and help destinations: the site publishes, as static pages reachable from the footer, a privacy page (
/privacidade/), an account/data deletion request page (/excluir-conta/), community terms (/termos/) and the contact channel from D-L04. Content is derived from the maintained security/privacy plan, location/media policy, free account access and community moderation; it states the actual current behavior, retention and rights workflow and marks not-yet-shipped features as such. The wording difference between the README/media policy (all photo copies within 24 hours) and the older 14-day sanitized-evidence line is resolved in the T01 contract: the media policy supersedes it, and public wording is labelled as project policy until release evidence exists. A Google Play listing for an app with accounts and user-generated content is expected to need a privacy-policy URL, a web deletion destination and a data-safety declaration; T01 verifies the current Play Console policy text, records source and date, and repeats the check at listing time. The plan does not assert current policy wording. Pages are not presented as legally approved.
Use cases:
-
BUC-L01: a visitor opens
/, understands what abastevo does, reads how community and ANP sources differ, and finds the project links without registering or granting permissions. - BUC-L02: a visitor opens the confirmed GitHub repository from an ordinary HTML link, using keyboard or touch, with JavaScript enabled or disabled.
- BUC-L03: a visitor sees the honest prelaunch notice; after an authorized listing update, the same section leads to the verified public Play Store app. Missing/invalid configuration keeps the prelaunch state; it never produces an empty or unsafe link.
- BUC-L04: a crawler or link-preview client receives the page copy, canonical URL, description, social metadata and factual JSON-LD in the initial HTML response, without executing JavaScript.
- BUC-L05: a visitor or store reviewer opens privacy, deletion and terms pages from the footer without JavaScript, reads the current behavior in plain language and finds the contact channel.
Portuguese (Brazil) first, lang="pt-BR". Initial scope is the main landing page, the three legal/help pages required by B-BR-L07 and a static 404. Do not create a blog, city doorway pages, translation system or app dashboard for SEO alone. Optional later educational pages are described under Later content phase.
Recommended section order:
- Compact header: approved logo/name and at most three anchors, such as “Como funciona”, “O projeto” and “Aplicativo”. Navigation remains visible or uses a native accessible pattern without depending on JS.
- Calm introduction: one H1 and a short paragraph explaining the product. Initial copy direction: “abastevo: preços de combustíveis com a comunidade”. Explain community contributions and dated ANP reference underneath, with availability wording matched to release evidence. Show “Ver no GitHub” as an ordinary link; a store link appears only in the published state.
- Illustrative source comparison (the product differentiator): a static HTML/CSS card pair, for example “Comunidade — observado há algumas horas” beside “Referência ANP — semana de pesquisa”, showing source, date and condition. It is labelled “Exemplo ilustrativo com dados fictícios”, contains no real station or price, is not a functional widget and exposes a text alternative that states it is illustrative.
- “Como funciona”: three short steps for consulting available information, checking source/date/condition, and contributing through the app when available. These are explanations, not functional website widgets.
- “Para quem é” (include only if copy is verified): three short profiles such as private driver, ride-app driver and small fleet operator. Factual wording, no savings promise (B-BR-L01).
- “O projeto”: transparent source distinction, free community participation, a link to source code and a “Privacidade em resumo” block of short statements matched to the legal pages (browsing without account or GPS, limited photo retention as stated by the reconciled policy, no trackers on this website, open source). No invented user counts, price samples, partner logos or testimonials. If an app image helps, use a real screenshot from a verified revision with synthetic data and a clear illustrative caption; otherwise use approved brand artwork and the comparison card.
- “Aplicativo”, “Acompanhe o projeto” and brief questions: Android/store state, project status, source/freshness and contribution basics. Following the project needs no signup: ordinary links to the repository, its releases page and the repository releases Atom feed (verify the feed URL for the confirmed repository). The page collects no email. Native
<details>is sufficient for optional FAQ disclosure; no FAQ rich-result promise. FAQ questions follow real search intent where the product supports the answer, for example how to find a station's fuel price, what the ANP weekly survey is, the difference between a community observation and an ANP reference, and (only if the app's calculator behaves as described) how to compare ethanol and gasoline. Answers cite official sources where used and never promise “cheapest near me”. - Quiet footer: GitHub, privacy, account deletion, terms, contact, source attribution (ANP data with a link to the official source), “Código aberto sob licença MIT”, “Não afiliado à ANP”, and trademark references (TRADEMARKS). When the listing exists, include the attribution required by Google's brand guidelines (to be copied from the guideline current at that time).
Visual direction: white/light surfaces, existing blue/green mark, dark readable text, generous whitespace, consistent spacing and a restrained type scale. Reuse the abastevo palette/identity rather than Zaflas colors. Start with system fonts; if a brand typeface is later approved, self-host a Latin-subset WOFF2 with font-display: swap and never call remote font services. One column on small screens and modest content width on desktop. Avoid giant photographic hero backgrounds, carousels, excessive cards, decorative motion and a theme switch unless evidence of need changes the scope.
Visual contract (T01 output, D-L05). Before coding, produce low-fidelity wireframes for 375 and 1280 CSS pixels (static artifact reviewed by the maintainer) and a frozen token set: palette with measured contrast ratios against their backgrounds, type scale, spacing scale, radii and minimal shadows. Implementation follows the approved tokens; changes go back through this contract. Automatic dark appearance through prefers-color-scheme (no switch) is deferred: the approved wordmark is navy and no dark-background logo variant exists, so P25 ships a light scheme only (T01 contract).
Finishing details: scroll-margin-top on in-page anchors, smooth scrolling only without a reduced-motion preference, a simple print stylesheet, visible high-contrast focus ring and touch targets of at least 44 CSS pixels where feasible.
Acceptance includes 320, 375, 768, 1024 and 1440 CSS-pixel widths; 200% zoom; readable text without horizontal overflow; visible keyboard focus; skip link; logical landmarks/headings; descriptive link text/alt text; WCAG AA contrast targets; sufficient touch targets; and reduced-motion preferences. One H1 is a readability/accessibility convention, not a claimed ranking shortcut. Actual visual/browser evidence is collected during implementation, with manual browser review in the final owed manual batch if the existing user directive still applies; no Android emulator/device run is introduced here.
Proposed layout, not existing implementation:
landing/
static/index.html
static/privacidade/index.html
static/excluir-conta/index.html
static/termos/index.html
static/404.html
static/robots.txt
static/sitemap.xml
static/llms.txt # optional, D-L07
static/.well-known/security.txt # needs D-L04
static/site.webmanifest
static/assets/styles.css
static/assets/brand/... # favicon set, app icons, social image
static/_headers, _redirects # or host-equivalent; see Hosting
src/main.ts
tsconfig.json
package.json
package-lock.json
scripts/build.mjs
scripts/check.mjs
tests/...
README.md
dist/ # ignored generated deploy artifact
Use ordinary handwritten HTML/CSS and browser DOM APIs. Compile TS locally to an ES module loaded with type="module"; JSON-LD uses its own static application/ld+json script. No React, Astro, Svelte, Tailwind, component framework, runtime library or bundler is needed. Node/npm is build/check tooling only; the published site is files served by any suitable static host. Do not import the reference repository's admin server, framework or deployment configuration.
TypeScript 7.0.2 is confirmed by the maintainer and its official release was verified on 2026-10-05. At P25-T02, verify the actual registry package/artifact, binary name, supported tsconfig options and defaults (they may differ from 5.x examples), pin the exact version without a range, commit the lockfile, select and record a supported Node version, and prove compiler output. Record dependency need, MIT license and scoped security review; no dependency is installed by this plan. If the exact version is unavailable in the execution environment, record the failure and resolve it before accepting T02; do not silently substitute a version.
Compiler settings: strict typing, DOM types, explicit module/target selection for the frozen browser support, noEmitOnError, root src/ and generated output under dist/assets/. A minimal build copies authored static files and compiles TS; any necessary host-specific URL substitution happens at build time with missing/invalid-value checks. Essential HTML is never client-rendered. dist/ contains no TS sources, server code, private configuration or source maps by default; building twice from the same inputs yields the same artifact. Set store state in authored/build-time static content and verify every affected visible/metadata location together. The build fingerprints CSS, JS and image file names with a content hash and rewrites references, so long-lived immutable caching is safe while HTML stays short-lived.
Use of TypeScript. TypeScript is a requirement of the stack, and every use must remain an optional enhancement. Candidate interactions, each independently testable and harmless without JS: highlight the active in-page section in the header (IntersectionObserver, respecting reduced motion); a “copy repository link” helper with a plain-link fallback; an unobtrusive “back to top”. Select only those the approved wireframe needs. Build/check scripts may also be authored in TypeScript and compiled by the same toolchain if that keeps the toolchain single.
GitHub destination: https://github.com/AlexandreZanata/abastevo (D-L01 resolved; the previous repository name redirects to it). Open links in the same tab by default; if a new tab is chosen, communicate that behavior and use rel="noopener noreferrer". Store URL, final domain and hosting provider are pending owner inputs (D-L02, D-L03, D-L08), required only for their respective activation/publication steps. Existing test/staging endpoints are not assumed to be the landing's canonical address.
The plan is host-neutral at the artifact level but the host determines what the site can enforce. Selection criteria, to be recorded in T01 and verified against each provider's current documentation at selection time (not asserted here): custom response headers (security headers, X-Robots-Tag for previews, per-path cache), redirects (HTTP→HTTPS, www→apex, trailing-slash policy), a real 404 status, automatic HTTPS, preview deployments, access-log/privacy posture, cost/limits and rollback to a previous immutable artifact.
| Option | Direction |
|---|---|
Static-site hosts with file-based _headers/_redirects style configuration (for example Cloudflare Pages or Netlify) |
Preferred direction: meets the criteria without running a server. Verify the configuration syntax and limits at selection. |
| GitHub Pages | Simple and free, but custom response headers are not configurable as far as known; if chosen, verify the limitation and compensate with in-document metadata only, accepting weaker header coverage. |
| Self-managed server (Caddy, as in the reference) | Maximum control, ongoing maintenance and operations cost; only on explicit maintainer choice. |
Header baseline for the chosen host (adapted from the reference's _headers, without copying its project-specific rules): X-Content-Type-Options: nosniff; Referrer-Policy: strict-origin-when-cross-origin; Permissions-Policy denying camera, microphone and geolocation (the site uses none); a strict Content-Security-Policy with default-src 'self' and no inline executable script (an application/ld+json block is data, not executed script); Strict-Transport-Security only after stable HTTPS is verified, with preload omitted unless consciously decided because it is hard to reverse; long immutable cache for fingerprinted assets and short revalidated cache for HTML. Preview deployments send noindex through the host or the HTML.
Read-only reference: /home/iiii/ZAFLAS/zaflas-landing/, local HEAD 5216ebc75f3c5e72b4cbc17a0882ae2a22f645fa, inspected 2026-10-05. Observed source behavior, not a completed runtime audit or evidence of Google's ranking:
-
src/components/seo/SeoHead.astroandsrc/lib/seo/meta.ts: consistent titles/descriptions, canonical absolute URLs, Open Graph/Twitter image metadata,theme-color, locale tags and optional image preload. Adapt the metadata contract into static HTML. Only prioritize a real above-the-fold image when needed; preload is not mandatory. -
astro.config.mjsandpublic/robots.txt: static output, sitemap discovery, language routes, excluded admin/API paths and explicit rules for AI crawlers. Adapt a small static sitemap and environment-specific indexing. There are no landing admin/API routes to exclude. Omithreflanguntil real translated pages exist. Crawler rules follow D-L07. -
src/lib/seo/jsonld/*andtests/seo/jsonld.test.ts: structured entity IDs, graph relationships and automated assertions. Adapt factual JSON-LD and tests against emitted HTML. The reference software node includes a rating/count and an offer; its test asserts their presence, which does not establish provenance. These values are not transferable to abastevo. -
src/styles/tokens.css,src/components/pages/HomePage.astroandHeroSection.astro: spacing tokens, readable hierarchy, responsive imagery and section composition. Adapt the principles with the existing abastevo identity and a smaller page; the reference's broad hero, marketing sections and multiple CTAs are not required by this brief. -
public/_headers,public/site.webmanifest, favicon/app-icon set,public/llms.txtanddeploy/Caddyfile: security/cache headers, install metadata, icon sizes, an LLM-oriented summary and apex/wwwredirect. Adapt the ideas per the sections above. Do not copy Zaflas-specific redirects, Markdown content negotiation, admin proxying or its content signal wording without an explicit decision.
Technical SEO acceptance:
- Accurate unique title/description (title about 60 characters, description about 155, checked in the artifact test), one descriptive H1, semantic sections and meaningful crawlable
<a href>links. Suggested title direction: “abastevo | Preços de combustíveis com a comunidade”; final copy follows T01 evidence. Nometa keywords, keyword stuffing, fake coverage pages or copied marketing text. - Confirm one HTTPS canonical origin and trailing-slash policy before a public build. Align canonical,
og:url, sitemap entries and JSON-LD IDs. Redirect equivalent host/HTTP variants at the selected host; serve a real 404 (helpful text and links to the home page and repository) rather than a universal 200. Local previews may use nonpublic configuration and must never ship placeholder URLs. - Production
robots.txtexposes the actual sitemap and allows required HTML/CSS/JS/images. Sitemap lists only canonical indexable 200 pages (home, privacy, deletion, terms); omit fabricatedlastmod. Preview HTML usesnoindex(or hostX-Robots-Tag) while remaining crawlable enough to see the directive;robots.txtblocking alone is neither a deindexing guarantee nor privacy protection. Public-build checks reject accidentalnoindex, staging URLs and placeholders. - Accurate Open Graph/Twitter title, description, absolute image URL and image alt text,
og:localept_BRandtwitter:cardsummary_large_image. The social image is owned/approved artwork of 1200×630 pixels, lightweight (target ≤300 KB), with a versioned file name so link-preview caches refresh. Preview rendering is checked for WhatsApp and Telegram (the dominant sharing channels in Brazil) as an owed manual observation; previews improve sharing, not rankings. - Icons and install metadata: SVG and ICO favicons, 180 px Apple touch icon, 192/512 px Android icons,
site.webmanifest, andtheme-color, generated from the approved brand assets underdocs/assets/brand/and recorded with their provenance. No new brand artwork is invented. - Begin with factual
WebSite/WebPage/brand information. AddsameAsonly for real profiles (the confirmed GitHub repository now; the store listing and social profiles when they exist). Add organization/person identity only when confirmed. AndroidMobileApplication/SoftwareApplicationmetadata may be added in the published state when supported by visible, verified facts, including the real listing; omit unknown offers/ratings/reviews.BreadcrumbListonly if internal pages benefit. Missing evidence means no claim of software rich-result eligibility. FAQ is for visitors and has no rich-result acceptance requirement. - Optimize assets, reserve image dimensions, lazily load below-the-fold images and avoid third-party calls. Proposed project budgets, measured on the built page: compressed CSS ≤25 KiB, compressed JS ≤10 KiB, initial page transfer ≤500 KiB (including initially requested images). Mobile lab target: Lighthouse Performance ≥95 and Accessibility/Best Practices/SEO ≥95, with zero known serious accessibility defects. Freeze the tool version, viewport, throttling and report method before measuring; scores alone do not prove usability or indexation.
- Target good Core Web Vitals: LCP ≤2.5s, INP ≤200ms and CLS ≤0.1 at the 75th percentile when field data exists. Use lab measurements diagnostically; Lighthouse TBT is not field INP. A new site without sufficient traffic has field evidence PENDING, not a fabricated pass.
- Optional discovery files:
llms.txt(short, factual and generated from the same approved copy) and/.well-known/security.txtwith the D-L04 contact. Neither is a ranking factor; omit either if its prerequisite decision is missing.
Google sources checked 2026-10-05: SEO Starter Guide, canonical URLs, software app structured data, Core Web Vitals. These support discoverability and quality; they do not guarantee indexation, rich results or a search position.
Positioning strategy: clearly answer searches for “abastevo”, “aplicativo de preços de combustíveis” and “preços de combustíveis com a comunidade” in natural Portuguese copy. These are initial intent hypotheses, not measured keyword-volume research. Build consistency between the real GitHub project, site and future store listing (D-L01). Publish useful original explanations of source, date, coverage and price conditions, including the FAQ intents listed above. Do not promise “combustível mais barato perto de mim” without demonstrated location/coverage behavior. No purchased backlinks or mass-produced pages.
Legitimate discoverability actions, performed only at publication under explicit authorization: link the site from the repository README and set the repository website field; fill the website field in the Play listing; register the site in Google Search Console and Bing Webmaster Tools (importing from Search Console is sufficient); announce through relevant developer/Android communities in ordinary posts. Each is recorded as done/not done, never assumed.
If, after publication, Search Console shows demand for educational queries, a separate phase may add three to five original evergreen guides (for example how the ANP weekly survey works, how to compare ethanol and gasoline with the calculation explained, and how to read a price's date/source/condition) linking discreetly to the app and repository. This requires its own explicit maintainer request and plan, no city doorway pages, no blog scaffolding and no generated mass content. It is not part of P25 acceptance.
Baseline: Node's built-in test runner and assert for emitted-artifact contracts (static content without JS, links, metadata, JSON-LD, sitemap, robots, store states, indexing modes, fingerprinted references, headers file). Candidate development-only tools, each requiring recorded need, license and scoped security review at T02 before installation, and chosen minimally: an HTML validator, an accessibility engine for the built pages, an internal/external link checker, and the Lighthouse command line pinned to a recorded version. No tool is installed by this plan, and no result is claimed.
All commands below under landing/ are planned interfaces, to be implemented and documented in P25-T02 before they can count as evidence. No script, browser run or check is claimed to exist/pass now. Prefer built-in Node test and assert facilities for emitted-artifact contracts; browser/lab tools, if needed, are dev-only and require the same need/license/security review.
- P25-T01 — Content, visual and decision contract (output: LANDING_CONTENT_CONTRACT and wireframes): one short document freezing B-BR-L01–L07/BUC-L01–L05, copy, section order, page inventory (home, privacy, deletion, terms, 404), verified-feature inventory, identity assets, both store states, the D-L01–D-L08 status, hosting criteria, the current Google Play policy check for legal destinations (source and date), the retention-wording reconciliation, and the approved 375/1280 wireframes and design tokens with contrast ratios. Record final-domain/hosting/listing inputs as pending where appropriate. Review links/claims against the current product/release evidence. Risk: docs. Output: bounded contract linked from the landing plan; no code.
-
P25-T02 — Static foundation and reproducible compilation: create authored HTML (including the full
<head>metadata skeleton and the page inventory), static CSS baseline, plain TS toolchain, build with content-hash fingerprinting, header/redirect source files for the selected host, and artifact checks. Include negative tests for missing/invalid public origin and store state/URL (HTTPS, expectedplay.google.com/store/apps/detailsroute and confirmed package). Prove GitHub/store anchors, legal links and main copy exist without JS. Select the verification tooling with its review. Extend the existing unknown-path-refusing quick selection forlanding/with real landing checks and its selection regression tests; no docs-only classification for executable website assets. Ensure required Quick verification remains present. Risk: standard. Commands to implement:npm --prefix landing ci,npm --prefix landing run typecheck,npm --prefix landing run build,npm --prefix landing run check,npm --prefix landing test; usebash scripts/tests/test-gate-selection.shfor affected selection behavior after confirming its interface at task opening. - P25-T03 — Visual polish, legal pages and progressive enhancement: implement responsive static CSS from the approved tokens with approved brand assets, the illustrative source comparison, privacy summary and follow-the-project links, the legal/help pages with reconciled wording, restrained interactions and accessible native patterns. Use TS only for the selected optional interactions; if none is needed, keep browser JS minimal. Validate supported browsers, responsive widths, keyboard/zoom/reduced-motion and JS failure. Add meaningful interaction regression tests only for introduced behavior; collect owed manual observations honestly. Risk: standard. Run T02 compile/build/check and affected tests, plus the documented scoped browser checks.
-
P25-T04 — SEO, icons and indexing contracts: complete and validate initial-response metadata, factual JSON-LD, canonical/sitemap/robots/preview modes, icon set and manifest, versioned 1200×630 social image, security/cache headers, crawler policy (D-L07) and optional
llms.txt/security.txt. Artifact tests cover malformed JSON-LD, mismatched origins, duplicate IDs, phantom store/rating claims, placeholders, broken local resources, wrongnoindexstate, title/description length bounds and header-file expectations. Validate generated HTML/XML and public artifact completeness. Use official schema validation without treating a missing unsupported rich-result type as a defect. Risk: standard. Run T02 checks plus scoped metadata/indexing tests against both prelaunch and published-state fixtures; synthetic fixtures prove rendering only, not a real store release. -
P25-T05 — Acceptance and publication handoff: validate final built artifact, performance budgets, browser/accessibility evidence and all BUC/store-state cases. Record exact revision, tools/configuration, results and outstanding field/manual/publication evidence (including WhatsApp/Telegram preview observation) in
docs/release-evidence/p25-static-landing.md(future file). Prepare a static hosting, origin/redirect/cache/404/indexing and rollback runbook inlanding/README.md, including the publication-time discoverability checklist and the store-activation steps (listing verification, single link/badge, attribution, JSON-LD, sitemap and Search Console resubmission); restore a prior immutable artifact to roll back. Risk: standard, with deployment kept separate. Public domain/hosting access and a verified artifact become prerequisites only for an explicitly authorized publication. No cloud service or hosting runtime is added merely to close local acceptance.
Per task: affected checks, git diff --check, scoped secret/private-data review, concise PROGRESS entry and an atomic task commit when authorized. The current docs-only planning change uses document/link/task checks only. Phase closure: specialized landing exit once, then the existing scripts/git-flow.sh finish --required "Quick verification" --pr <actual-number> interface once, only with authorized remote delivery and a real PR; verified head/base merge and separately scoped wiki snapshot. Never invent a PR number or bypass a missing landing/required check.
G25-STATIC-READY: T01–T05 acceptance demonstrated for a static artifact, truthful prelaunch state, legal destinations consistent with maintained policy and tested published-state rendering; manual evidence still owed under an active directive is recorded and prevents claiming full browser/usability acceptance. Distinguish LOCAL_DONE, INTEGRATED and WEBSITE_PUBLISHED. Real field metrics and Search Console remain pending until a public site produces evidence. This gate never certifies Android/backend production, deploys the site, proves Play policy compliance or proves Google ranking.
When website publication is explicitly authorized, select the actual static host and canonical domain, verify DNS/TLS/redirects/404/cache/headers and public indexing, and record the deployed artifact revision. Confirm the Search Console property, submit the real sitemap, inspect canonical/indexability and monitor impressions/clicks/queries when data appears. Search Console verification requires authorized owner access and is not a secret to place in general logs. Collect meaningful findings rather than declaring SEO complete from a lab score. No recurring automation is created by this plan.
When the app listing is supplied after publication, open a bounded follow-up task with its own acceptance and authorized delivery: verify app identity/public availability, update static links and availability copy/metadata together (single link or official badge, brand attribution, MobileApplication JSON-LD, sameAs, sitemap), re-check the current Play policy destinations, rerun affected checks, and publish the changed artifact only within the authorized scope. No polling, redirect service, backend coupling or site rebuild-on-every-app-run is needed.
Current local planning evidence: inspected clean main at b4754b21e4fd3c192ae69e6e42cfbac6fb0d5209, matching local origin/main; this includes merged P10 follow-up PR #105 beyond the earlier #104 current-state entry. No fetch/remote-state certification is inferred. Reference read-only; website implementation, dependency installation, browser acceptance and publication remain NOT RUN.
Planning validation: see the current PROGRESS entry for the latest document-check results of revision 2. No aggregate runtime/release gate is run for this documentation-only change.
- Home
- Roadmap
- docs-ADR_INDEX
- docs-AI_ENGINEERING_CONTRACT
- docs-CURRENT_STATE_AUDIT
- docs-MIGRATION_PLAN
- docs-README
- docs-adr-001-kotlin-compose-stack
- docs-adr-002-price-import-immutability
- docs-adr-003-nominatim-reverse-geocode
- docs-adr-004-backend-scope-and-governance
- docs-adr-005-modular-monolith-and-postgresql
- docs-adr-006-official-catalog-and-exact-contracts
- docs-adr-007-anonymous-proof-of-possession
- docs-adr-008-privacy-and-retention
- docs-adr-009-community-consensus-and-projections
- docs-adr-010-private-object-evidence
- docs-adr-011-operations-and-android-gate
- docs-adr-012-licensing-and-hosted-business
- docs-adr-013-fast-phase-delivery
- docs-adr-014-functional-app-before-production-release
- docs-adr-015-kotlin-multiplatform-shared-domain
- docs-adr-016-android-commercial-community-ios-deferred
- docs-adr-017-station-profile-and-verified-representation
- docs-adr-018-project-batch-delivery
- docs-adr-019-android-vps-integration-first
- docs-adr-020-maintained-dev-main-delivery
- docs-adr-021-community-first-contribution
- docs-architecture
- docs-assets-brand-README
- docs-assets-flags-ATTRIBUTION
- docs-assets-fuel-icons-README
- docs-assets-games-fuel-v1-README
- docs-assets-home-art-README
- docs-assets-home-icons-README
- docs-assets-landing-fleet-android-20261012-BRIEF
- docs-assets-landing-hero-20261011-BRIEF
- docs-assets-landing-illustrated-20261012-BRIEF
- docs-assets-landing-illustrated-20261012-README
- docs-assets-landing-minimal-20261012-BRIEF
- docs-assets-landing-redesign-20261011-PREPARATION_EVIDENCE
- docs-assets-landing-redesign-20261011-README
- docs-assets-landing-redesign-20261011-REFERENCE_BRIEF
- docs-assets-landing-sync-20261012-BRIEF
- docs-attribution
- docs-backend-ANDROID_INTEGRATION_GUIDE
- docs-backend-ANP_INGESTION
- docs-backend-API_PLAN
- docs-backend-CI_PR127_RECOVERY
- docs-backend-CI_PR128_PR129_RECOVERY
- docs-backend-COMMUNITY_FIRST_POLICY
- docs-backend-COMMUNITY_PRICING_SPEC
- docs-backend-DATA_MODEL
- docs-backend-DOMAIN_MODEL
- docs-backend-INFRASTRUCTURE_PLAN
- docs-backend-PHOTO_CAPTURE_CONTRACT
- docs-backend-PHOTO_SUBSET_SUBMISSION_CONTRACT
- docs-backend-PREMIUM_API_CONTRACT
- docs-backend-PREMIUM_BILLING_RUNBOOK
- docs-backend-PREMIUM_CLOUD_PROTOCOL
- docs-backend-PRIVACY_NOTICE
- docs-backend-REGISTRY_DAILY_SYNC
- docs-backend-RST_VPS_HARDENING
- docs-backend-STATION_RELIABILITY_AUDIT_20261013
- docs-backend-TARGET_ARCHITECTURE
- docs-backend-TEST_STRATEGY
- docs-backend-TOOLCHAIN
- docs-backend-evidence-community-safety-COMMUNITY_FINAL_SAFETY
- docs-backend-evidence-community-safety-COMMUNITY_HOME_CONSOLIDATION
- docs-backend-evidence-community-safety-CS00_AUDIT
- docs-backend-evidence-community-safety-CS01_HELPFULNESS_CONTRACT
- docs-backend-evidence-community-safety-CS02A_HELPFULNESS_STORE
- docs-backend-evidence-community-safety-CS02B_HELPFULNESS_HTTP
- docs-backend-evidence-community-safety-CS03A_HELPFULNESS_QUOTA
- docs-backend-evidence-community-safety-CS03B_LIMITER_ROTATION
- docs-backend-evidence-community-safety-CS04_FEED_PLANS
- docs-backend-evidence-community-safety-CS05A_CONTRIBUTION_MODERATION
- docs-backend-evidence-community-safety-CS05B_REVIEW_ANNOTATION
- docs-backend-evidence-community-safety-CS06_PROJECTIONS_ISOLATION
- docs-backend-evidence-community-safety-CS07A_BENCH_HARNESS
- docs-backend-evidence-community-safety-CS08A_HELPFULNESS_CLIENT
- docs-backend-evidence-community-safety-CS08B_HELPFULNESS_VIEW
- docs-backend-evidence-community-safety-CS09A_CONSENT_CONTRACT
- docs-backend-evidence-community-safety-CS09B_CONSENT_STORE
- docs-backend-evidence-community-safety-CS09C_CONSENT_HTTP
- docs-backend-evidence-community-safety-CS10A_PROMOTION_CONTRACT
- docs-backend-evidence-community-safety-CS10B_DERIVATIVE_STORE
- docs-backend-evidence-community-safety-CS10C_WORKER_PURGE_SOAK
- docs-backend-evidence-community-safety-CS10D_TRAINING_ERASURE
- docs-backend-evidence-community-safety-CS11A_CONSENT_CLIENT
- docs-backend-evidence-community-safety-CS11B_CONSENT_VIEW
- docs-backend-evidence-community-safety-CS11C_PHOTO_OPT_IN
- docs-backend-evidence-community-safety-CS12A_CONSENT_LIVE
- docs-backend-evidence-community-safety-PRM_COMMUNITY_FIRST
- docs-backend-evidence-community-safety-PRM_COMMUNITY_FIRST_ROLLOUT
- docs-backend-evidence-community-safety-RVA01_INGRESS_CONTRACT
- docs-backend-evidence-community-safety-RVA02_ADMISSION_CONTRACT
- docs-backend-evidence-community-safety-RVA03_ERASURE_RECOVERY
- docs-backend-evidence-community-safety-RVA04_CONSENT_FENCE
- docs-backend-evidence-community-safety-RVA05_OUTPUT_RECOVERY
- docs-backend-evidence-community-safety-RVA06_MINIMIZATION_GATE
- docs-backend-evidence-community-safety-RVA07_DEADLINE_ENFORCEMENT
- docs-backend-evidence-community-safety-RVA08_OWNER_CONSENT
- docs-backend-evidence-community-safety-RVA08_STAGING_ACCEPTANCE_2026-10-12
- docs-backend-evidence-community-safety-RVA09_JWKS_ADMISSION
- docs-backend-evidence-community-safety-RVA_BATCH_DELIVERY_2026-10-13
- docs-backend-evidence-community-safety-SEC01A_ADMISSION_REGRESSIONS
- docs-backend-evidence-community-safety-SEC01B_MAILBOX_BOUND
- docs-backend-evidence-community-safety-SEC01C_ATOMIC_ADMISSION
- docs-backend-evidence-community-safety-SEC01D_RETRY_ROLLBACK
- docs-backend-evidence-community-safety-SEC02A_PROXY_REGRESSIONS
- docs-backend-evidence-community-safety-SEC02B_TRUSTED_RESOLVER
- docs-backend-evidence-community-safety-SEC02C_BUDGET_SPLIT
- docs-backend-evidence-community-safety-SEC03A_ATOMIC_RESERVATION
- docs-backend-evidence-community-safety-SEC03B_TRANSFER_BOUNDARY
- docs-backend-evidence-community-safety-SEC03C_PROVIDER_MATRIX
- docs-backend-evidence-community-safety-SEC03D_NAMESPACE_MONITORING
- docs-backend-evidence-community-safety-SEC04A_ERASURE_INVENTORY
- docs-backend-evidence-community-safety-SEC04B_DELETION_LINKAGE
- docs-backend-evidence-community-safety-SEC04C_ATTRIBUTION_TRAINING
- docs-backend-evidence-community-safety-SEC04D_REPLAY_LOCAL_CLEANUP
- docs-backend-evidence-community-safety-SEC05A_OVERDUE_ORIGINALS
- docs-backend-evidence-community-safety-SEC05B_SCHEDULING_CATCHUP
- docs-backend-evidence-community-safety-SEC05C_TRANSIENT_CACHE
- docs-backend-evidence-community-safety-SEC05D_BACKUP_ASSESSMENT
- docs-backend-evidence-community-safety-SEC05E_EVERY_COPY_SOAK
- docs-backend-evidence-community-safety-SEC06A_SOURCE_BOUNDS
- docs-backend-evidence-community-safety-SEC06B_XLSX_CEILINGS
- docs-backend-evidence-community-safety-SEC06C_OUTBOX_BOUNDS
- docs-backend-evidence-community-safety-SEC06D_RETRY_BUDGETS
- docs-backend-evidence-community-safety-SEC06E_MEASURED_HISTORIES
- docs-backend-evidence-community-safety-SEC07A_REFRESH_REUSE
- docs-backend-evidence-community-safety-SEC07B_JWKS_EXPIRY
- docs-backend-evidence-community-safety-SEC07C_ANDROID_REFRESH
- docs-backend-evidence-community-safety-SEC08A_LOCATION_ASSURANCE
- docs-backend-evidence-community-safety-SEC08B_ADVERSARIAL_CLIENT
- docs-backend-evidence-community-safety-SEC08C_ATTESTATION_DECISION
- docs-backend-evidence-community-safety-SEC08D_PHONE_MATRIX
- docs-backend-evidence-community-safety-SEC09A_CURRENT_HEAD_REVIEW
- docs-backend-evidence-community-safety-SEC09B_DEPENDENCY_SCANS
- docs-backend-evidence-community-safety-SEC09C_INTEGRATION_FAULT
- docs-backend-evidence-community-safety-SEC09D_STAGING_RUNBOOK
- docs-backend-evidence-community-safety-SEC09E_PROTECTED_DELIVERY
- docs-backend-evidence-community-safety-rva08-staging-20261012-README
- docs-backend-evidence-premium-PRM08_T05_GATE_MATRIX
- docs-backend-evidence-premium-PRM_FIRST_TEN
- docs-backend-evidence-premium-PRM_NEXT_TEN
- docs-brand-APP_ICONS
- docs-brand-IDENTITY
- docs-commit-conventions
- docs-data-sources
- docs-glossary
- docs-license
- docs-local-build
- docs-mobile-KOTLIN_MULTIPLATFORM_AUDIT
- docs-mobile-android-developer-preview-key-session
- docs-mobile-bottom-tab-base-navigation
- docs-mobile-evidence-games-v1-README
- docs-mobile-games-mvp
- docs-mobile-games-polish-emulator
- docs-mobile-p12-t01-toolchain-baseline
- docs-mobile-p12-t02-portable-domain
- docs-mobile-p12-t03-application-ports
- docs-mobile-p12-t04-swift-shell
- docs-mobile-p12-t05-foundation-acceptance
- docs-mobile-p13-t05a-shared-auth
- docs-mobile-p13-t05b-android-adapters
- docs-mobile-p13-t05c-auth-screens
- docs-mobile-p17-t04-lifecycle-exit
- docs-mobile-p18-t01-acceptance-matrix
- docs-mobile-p19-t01-baseline
- docs-mobile-p19-t02-information-architecture
- docs-mobile-p20-t01-discovery-contract
- docs-mobile-p20-t02-explore-journey
- docs-mobile-p20-t03-station-detail
- docs-mobile-p20-t04-discovery-acceptance
- docs-mobile-p21-t01-contribution-contract
- docs-mobile-p21-t02-capture-review
- docs-mobile-p21-t03-outbox-status
- docs-mobile-p21-t04-storage-expiry
- docs-mobile-p22-t01-account-journey
- docs-mobile-p22-t02-ratings-comments-votes
- docs-mobile-p22-t03-moderation-support
- docs-mobile-p22-t04-abuse-acceptance
- docs-mobile-p23-city-community-feed
- docs-mobile-p23-t01-return-flows
- docs-mobile-p23-t02-onboarding-rules
- docs-mobile-p23-t03-metrics-operations
- docs-mobile-p23-t04-community-rehearsal
- docs-mobile-p24-t01-device-matrix
- docs-mobile-p24-t02-usability-accessibility
- docs-mobile-p24-t03-performance-memory
- docs-mobile-p24-t04-security-signoff
- docs-mobile-p32-home-commercial
- docs-mobile-p32-home-minimal
- docs-mobile-p32-icon-monochrome
- docs-mobile-p32-t01-public-profile
- docs-mobile-p32-t02-claim-export-import
- docs-mobile-p32-t03-management
- docs-mobile-p32-t04-offline-acceptance
- docs-mobile-p32-ui-completion
- docs-mobile-p34-t01-staging-inventory
- docs-mobile-p34-t02-environment
- docs-mobile-p34-t03-test-catalog
- docs-mobile-p35-station-page
- docs-mobile-p35-t01-directory-ports
- docs-mobile-p35-t02-explore-detail
- docs-mobile-p35-t03-search-regression
- docs-mobile-p36-account-continuity
- docs-mobile-p36-secure-storage-keyboard-integration
- docs-mobile-p36-secure-storage-keyboard
- docs-mobile-p36-t01-staging-accounts
- docs-mobile-p36-t02-feedback-screens
- docs-mobile-p36-t03-activity-rights
- docs-mobile-p37-camera-review
- docs-mobile-p37-image-ocr
- docs-mobile-p37-ocr-expanded-validation
- docs-mobile-p37-owner-scope-expiry
- docs-mobile-p37-photo-capture-eligibility
- docs-mobile-p37-photo-subset-android
- docs-mobile-p37-photo-subset-backend
- docs-mobile-p37-send-feedback-recovery
- docs-mobile-p37-split-price-ocr
- docs-mobile-p37-t01-contextual-capture
- docs-mobile-p37-t02-upload-outbox
- docs-mobile-p37-t03-storage-expiry
- docs-mobile-p38-t01-code-regression
- docs-mobile-p38-t02-manual-matrix
- docs-mobile-p38-t03-candidate-handoff
- docs-mobile-premium-fuel-category
- docs-mobile-stations-auto-sync-20261013
- docs-operator-access
- docs-operator-backup
- docs-operator-deploy
- docs-operator-dou-editions
- docs-operator-edge-cache
- docs-operator-feedback-moderation
- docs-operator-monitoring
- docs-operator-pilot-city
- docs-operator-profile-review
- docs-operator-recovery
- docs-operator-registry-runs
- docs-operator-retention
- docs-planning-ANDROID_VPS_PLAN
- docs-planning-ANDROID_VPS_PLAN_VALIDATION
- docs-planning-BASELINE_VALIDATION
- docs-planning-CI_PLAN
- docs-planning-COMMERCIAL_COMMUNITY_PLAN
- docs-planning-COMMUNITY_SAFETY_EXECUTION_PLAN
- docs-planning-COMMUNITY_SAFETY_EXECUTION_PROMPT
- docs-planning-CONTINUE_ANDROID_VPS_PROMPT
- docs-planning-DECISIONS
- docs-planning-DELIVERY_WORKFLOW
- docs-planning-DOCUMENT_VALIDATION
- docs-planning-FAST_EXECUTION
- docs-planning-GAMES_OFFLINE_PLAN
- docs-planning-LANDING_REDESIGN_EXECUTION_PLAN
- docs-planning-LANDING_REDESIGN_EXECUTION_PROMPT
- docs-planning-MOBILE_DELIVERY_PLAN
- docs-planning-OFFLINE_CAPABILITY_INVENTORY
- docs-planning-OFFLINE_DECISION_FREEZE_CS15B1
- docs-planning-PHOTO_PRICE_CONTRIBUTION_PLAN
- docs-planning-PREMIUM_BACKEND_APP_PLAN
- docs-planning-PREMIUM_PLAN_VALIDATION
- docs-planning-PRM_COMMUNITY_FIRST_PROMPT
- docs-planning-PRM_COMMUNITY_FIRST_VALIDATION
- docs-planning-PROGRESS
- docs-planning-PROJECT_BATCH_FLOW_VALIDATION
- docs-planning-REQUIREMENTS_TRACEABILITY
- docs-planning-RISKS
- docs-planning-RST21_BUNDLE
- docs-planning-RUST_STATION_BENCHMARK_PLAN
- docs-planning-RUST_STATION_INGESTION_PLAN
- docs-planning-RUST_STATION_INGESTION_PROMPT
- docs-planning-RUST_STATION_INGESTION_RST00
- docs-planning-RUST_STATION_INGESTION_RST01
- docs-planning-RUST_STATION_INGESTION_RST02
- docs-planning-RUST_STATION_INGESTION_RST03
- docs-planning-RUST_STATION_INGESTION_RST04
- docs-planning-RUST_STATION_INGESTION_RST05
- docs-planning-RUST_STATION_INGESTION_RST06
- docs-planning-RUST_STATION_INGESTION_RST07
- docs-planning-RUST_STATION_INGESTION_RST08
- docs-planning-RUST_STATION_INGESTION_RST09
- docs-planning-RUST_STATION_INGESTION_RST10
- docs-planning-RUST_STATION_INGESTION_RST11
- docs-planning-RUST_STATION_INGESTION_RST12
- docs-planning-RUST_STATION_INGESTION_RST13
- docs-planning-RUST_STATION_INGESTION_RST14
- docs-planning-RUST_STATION_INGESTION_RST15
- docs-planning-RUST_STATION_INGESTION_RST16
- docs-planning-RUST_STATION_INGESTION_RST17
- docs-planning-RUST_STATION_INGESTION_RST18
- docs-planning-RUST_STATION_INGESTION_RST19
- docs-planning-RUST_STATION_INGESTION_RST20
- docs-planning-SEC00A_REPRODUCTION_RECORD
- docs-planning-SEC00B_ROUTE_INVENTORY
- docs-planning-SEC00C_BUDGET_FREEZE
- docs-planning-SECURITY_OFFLINE_CORRECTION_PLAN_2026-10-11
- docs-planning-SECURITY_REMEDIATION_PLAN_2026-10-11
- docs-planning-SKELETON_LOADING_PLAN
- docs-planning-STATIC_LANDING_PLAN
- docs-planning-STATION_CATALOG_PLAN
- docs-planning-STATION_PROFILE_PLAN
- docs-planning-WIKI_HOME_ADOPTION
- docs-planning-WORKFLOW_PLAN_VALIDATION
- docs-planning-archive-IOS_DEFERRED
- docs-planning-history-CONSOLIDATION_OPENING_20261006
- docs-planning-history-P01_FOUNDATION_EVIDENCE
- docs-planning-history-P01_P09_PROGRESS_20260930
- docs-planning-history-P09_LOCAL_PROGRESS_20260930
- docs-planning-history-P14_PROGRESS_20260930
- docs-planning-history-P15_PROGRESS_20260930
- docs-planning-history-P18_AND_BRAND_PROGRESS_20261001
- docs-planning-history-P32_UI_OPENING_20261005
- docs-planning-history-ROADMAP_BEFORE_MULTIPLATFORM_20260930
- docs-planning-history-WIKI_HOME_BEFORE_20261001
- docs-planning-history-reconciliation-20261013-README
- docs-planning-repository-consolidation-20261006
- docs-planning-repository-reconciliation-20261013
- docs-planning-templates-PHASE_PR
- docs-planning-templates-PHASE_RECORD
- docs-planning-templates-TASK_ISSUE
- docs-play-store-listing
- docs-privacy-policy
- docs-product-COMMUNITY_EXPERIENCE
- docs-product-COMMUNITY_METRICS
- docs-product-COMMUNITY_MODERATION
- docs-product-COMMUNITY_PRIVACY_TERMS_PT_BR
- docs-product-LANDING_CONTENT_CONTRACT
- docs-product-LANDING_GUIDES_CONTRACT
- docs-product-LANDING_MOBILE_TUTORIAL_CATALOG
- docs-product-NOTIFICATION_CONTENT_CONTRACT
- docs-product-OPEN_SOURCE_BUSINESS
- docs-product-PREMIUM_FINANCIAL_METHOD
- docs-product-PREMIUM_PRODUCT_CONTRACT
- docs-product-PREMIUM_SOURCE_POLICY
- docs-product-PRODUCT_CONTRACT
- docs-product-REGISTRY_SOURCES
- docs-product-STATION_CATALOG
- docs-product-STATION_FUEL_FEEDBACK
- docs-product-STATION_PROFILE_CONTRACT_FREEZE
- docs-product-STATION_PROFILE_REPRESENTATION
- docs-product-pilot-plan
- docs-release-build
- docs-release-evidence-G09
- docs-release-evidence-batch-p32-p33-closure
- docs-release-evidence-g09-historical-4ce5aaf
- docs-release-evidence-landing-redesign
- docs-release-evidence-p00-app-icons-commercial-plan
- docs-release-evidence-p00-brand-publication
- docs-release-evidence-p08-t04-restore-drill
- docs-release-evidence-p08-t07-load
- docs-release-evidence-p08-t08-security
- docs-release-evidence-p09-g09-scoped-release
- docs-release-evidence-p09-local-runtime-validation
- docs-release-evidence-p09-t01-rehearsal
- docs-release-evidence-p09-t02-compatibility
- docs-release-evidence-p09-t04-functional-planning
- docs-release-evidence-p09-t05-wiki-overview
- docs-release-evidence-p10-t01-contract-harness
- docs-release-evidence-p10-t02-community-read-cache
- docs-release-evidence-p10-t03-device-keys
- docs-release-evidence-p10-t04-capture-ocr
- docs-release-evidence-p10-t05-outbox-media
- docs-release-evidence-p10-t06-price-ui
- docs-release-evidence-p10-t07-confirm-dispute
- docs-release-evidence-p10-t08-offline-release
- docs-release-evidence-p10-t09-temp-smoke
- docs-release-evidence-p13-t01-account-rules
- docs-release-evidence-p13-t02a-account-service
- docs-release-evidence-p13-t02b-pgstore
- docs-release-evidence-p13-t02c-transport
- docs-release-evidence-p13-t03a-oidc-verifier
- docs-release-evidence-p13-t03b-provider-links
- docs-release-evidence-p13-t03c-transport
- docs-release-evidence-p13-t04a-status-lifecycle
- docs-release-evidence-p13-t04b-binding
- docs-release-evidence-p13-t04c-transport-prover
- docs-release-evidence-p13-t04d-write-gate
- docs-release-evidence-p14-t01-feedback-domain
- docs-release-evidence-p14-t02-ratings
- docs-release-evidence-p14-t03-comments
- docs-release-evidence-p14-t04-votes
- docs-release-evidence-p14-t05a-reports-visibility
- docs-release-evidence-p14-t05b-export-erase
- docs-release-evidence-p15-t01-media-budgets
- docs-release-evidence-p15-t02a-portable-photo
- docs-release-evidence-p15-t02b-android-cache
- docs-release-evidence-p15-t03-backend-processing
- docs-release-evidence-p15-t04-expiry-restore
- docs-release-evidence-p15-t05-privacy-acceptance
- docs-release-evidence-p16-t01-location-risk
- docs-release-evidence-p16-t02-native-adapters
- docs-release-evidence-p16-t03a-server-verification
- docs-release-evidence-p16-t03b-intake-wiring
- docs-release-evidence-p16-t04-device-recovery
- docs-release-evidence-p17-t01-feedback-usecases
- docs-release-evidence-p17-t02-social-flows
- docs-release-evidence-p17-t03-iphone-integration
- docs-release-evidence-p17-t04-lifecycle-exit
- docs-release-evidence-p18-local-integration-exit
- docs-release-evidence-p18-t01-feature-matrix
- docs-release-evidence-p18-t02-performance-baselines
- docs-release-evidence-p18-t03-security-signoff
- docs-release-evidence-p24-g24-user-acceptance
- docs-release-evidence-p25-registry-exit
- docs-release-evidence-p25-static-landing
- docs-release-evidence-p25-t01-source-contracts
- docs-release-evidence-p25-t02-csv-staging
- docs-release-evidence-p25-t03-api-discovery
- docs-release-evidence-p25-t04-reconciliation
- docs-release-evidence-p25-t05-jobs-acceptance
- docs-release-evidence-p26-landing-guides
- docs-release-evidence-p26-regulatory-exit
- docs-release-evidence-p26-t01-edition-access
- docs-release-evidence-p26-t02-act-reconciliation
- docs-release-evidence-p26-t03-review-catchup
- docs-release-evidence-p27-intake-exit
- docs-release-evidence-p27-t01-signed-intake
- docs-release-evidence-p27-t02-verified-decisions
- docs-release-evidence-p27-t03-catalog-cache
- docs-release-evidence-p27-t04-suggest-journey
- docs-release-evidence-p27-t05-abuse-privacy
- docs-release-evidence-p29-catalog-exit
- docs-release-evidence-p29-t01-capacity
- docs-release-evidence-p29-t02-lifecycle
- docs-release-evidence-p29-t03-candidate
- docs-release-evidence-p30-profile-exit
- docs-release-evidence-p30-t01-contract-freeze
- docs-release-evidence-p30-t02-operator-profile
- docs-release-evidence-p30-t03-claims
- docs-release-evidence-p30-t04-proof-intake
- docs-release-evidence-p31-t01-signature-verify
- docs-release-evidence-p31-t02-authority
- docs-release-evidence-p31-t03-review-grants
- docs-release-evidence-p31-t04-manage-replies
- docs-release-evidence-p33-t01-adversarial
- docs-release-evidence-p33-t02-lifecycle
- docs-release-evidence-p33-t03-candidate
- docs-release-evidence-p34-vps-connection-exit
- docs-release-evidence-p35-live-discovery-exit
- docs-release-evidence-p36-live-community-exit
- docs-release-evidence-p37-live-contributions-exit
- docs-release-evidence-p38-app-acceptance-exit
- docs-releases-v1.0.0
- docs-releases-v2.0.0
- docs-releases-v3.0.0
- docs-releases-v3.1.0
- docs-screenshots-v2-README
- docs-screenshots-v3-README
- docs-security-AI_TRAINING_IMAGE_CONSENT_PLAN
- docs-security-FREE_ACCOUNT_ACCESS
- docs-security-LOCAL_MEDIA_LOCATION_POLICY
- docs-security-SECURITY_AUDIT_2026-10-11
- docs-security-SECURITY_OFFLINE_REASSESSMENT_2026-10-11
- docs-security-SECURITY_PRIVACY
- docs-security-evidence-audit-2026-10-11-README
- docs-security-evidence-reassessment-2026-10-11-README
- docs-security-identity-profile
- docs-tech-stack
- docs-use-cases-backend-use-cases
- docs-use-cases-uc-001-sync-price-tables
- docs-use-cases-uc-002-onboarding
- docs-use-cases-uc-003-select-location
- docs-use-cases-uc-004-search-municipality
- docs-use-cases-uc-005-view-municipality-prices
- docs-use-cases-uc-006-view-price-history
- docs-use-cases-uc-007-view-station-prices
- docs-use-cases-uc-008-manage-settings
- docs-use-cases-uc-009-select-survey-week
- docs-use-cases-uc-010-manage-vehicles
- docs-use-cases-uc-011-estimate-tank-fill-cost
- docs-use-cases-uc-012-resolve-location-from-device
- docs-use-cases-uc-013-navigate-to-station
- docs-use-cases-uc-014-fuel-price-drop-alerts
- docs-use-cases-uc-015-find-nearest-best-price-station
- docs-user-business-logic
Source: AlexandreZanata/brazil-fuel-prices @ 08a54dc49c2e43a85aba56a7b56ae96d692cec61