Skip to content

id: loc.* capability — position/watch with an accuracy ceiling and per-use consent (#2027) #2341

Open

Description

@dezren39

Follow-up from the capability taxonomy v0 investigation (#2027, record: doc/2026-10-29T14-05-00Z_investigation_capability_taxonomy/, PR #2337).

Goal

loc.* capabilities — loc.position (one-shot) and loc.watch (subscription with an interval floor) — with an accuracy ceiling, and the consent seam they exercise.

Scope

  • Reading carries {lat, lon, accuracy_m, fix_age_ms, source}; source ∈ gnss | network | ip | caller_supplied, never silently degraded.
  • Precision ceiling: the device's outside_ceiling + precision_ceiling reason. An imprecise fix must be refusable rather than plausible-looking.
  • Sensor caps are not wildcard-grantable — refine the existing grant ledger so * never reaches loc.*.
  • Consent: cap_denied + consent_required / os_permission_denied; withdrawal arrives as {"cap":"loc.watch","event":"revoked","reason":"consent_withdrawn"} and closes the stream.
  • no_fix on failed when there is no sky view.

Acceptance

  • Both names in CATALOG with providers; tests for precision-ceiling refusal, wildcard-not-reaching, and an open loc.watch receiving a revocation event.
  • Documented interval floor and battery note for long watches.
  • Per-platform: browser geolocation, phone tiers, ESP32 GNSS.

Out of scope

Geofencing, trail history, reverse geocoding, any persistent location store.

Acceptance criteria

  • loc.position and loc.watch are in CATALOG with providers; readings carry {lat, lon, accuracy_m, fix_age_ms, source} with source in gnss|network|ip|caller_supplied, never silently degraded
  • Tests cover: precision-ceiling refusal (outside_ceiling + precision_ceiling), wildcard grants never reaching loc.* in the grant ledger, and an open loc.watch receiving the consent_withdrawn revocation event and closing
  • Consent refusals use cap_denied + consent_required / os_permission_denied; no_fix on failed when there is no sky view
  • Documented interval floor and battery note for long watches; per-platform notes (browser geolocation, phone tiers, ESP32 GNSS)

Activity

  1. added
    kind/featureNew feature or capability request
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    on Oct 29, 2026
  2. developing-today commented on Oct 29, 2026

    @developing-today
    Contributor
  3. added
    priority/normalOrdinary priority (the default)
    effort/lLarge: multi-day or open-ended; expect staged check-ins
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 29, 2026
  4. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    Intake review

    Related: parent investigation #2027 (record: PR #2337); siblings #2338-#2345 are the other taxonomy follow-ups

    Notes: Filed 2026-10-29T14:04Z from #2027. Still live: no open or merged PR implements it. This is the family's consent-seam exercise — the grant-ledger change (no wildcard reach) touches shared code, hence effort/l.

    Risks: Location is the most sensitive capability in the taxonomy: a wildcard grant reaching loc.* or a silently degraded fix are both trust-breaking. The refusal tests matter more than the happy path.

    Suggested approach: Grant-ledger wildcard exclusion first (with its test), then position, then watch + revocation.

    🤖 Agent note · filed

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: repo-fleet-monitor run 2026-10-29T14:30Z (09:30 CDT)
    • Found via: monitor reconciliation
    • Task: Duty 2 intake enrichment — acceptance criteria appended (original body preserved verbatim above it), labels normalized, meta/enriched applied. Still-live check this pass: no merged PR or fix commit explicitly resolving this issue was found; where a queue triage task owns verification, it is named in the notes.
    • Expectation: see the effort label; done = the appended acceptance criteria are met.
    • Links: this issue
  5. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed on Nov 3, 2026
  6. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — task 7915 triaged (Lane A worker, 2026-11-03): issue #2341 is STILL LIVE and unimplemented at current main; fix path scoped below.

    Evidence (fresh reads at origin/main 1c1aa4a, 2026-11-03):

    Fix path: (1) add loc.position + loc.watch to the CATALOG in world_caps.rs with the reading shape {lat, lon, accuracy_m, fix_age_ms, source}; (2) refine the grant ledger so * never reaches loc.* (sensor caps excluded from wildcard grants); (3) precision-ceiling refusal (outside_ceiling + precision_ceiling), consent refusals via cap_denied + consent_required/os_permission_denied, consent_withdrawn revocation event closing an open watch, no_fix on failed; (4) providers per platform (browser geolocation, phone tiers, ESP32 GNSS) with documented interval floor + battery note; (5) the three named tests. Issue stays open as the implementation record (effort/l, multi-platform — not a small fix).

  7. 51 remaining items

  8. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    queue/claimedQueue worker lifecycle state
    and removed
    queue/claimedQueue worker lifecycle state
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Nov 5, 2026
  9. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  10. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    Lane A (code-a) claimed task 9301 for issue #2341 and handed it off to the opencode execution lane per fleet queue lane assignment. Fresh check: issue #2341 is OPEN, no hard-stop labels (held / user/owned / do-not-merge / do-not-auto-edit), open PRs: #4624. Labels reflect claimed state (queue/claimed, work/assigned, status/in-progress). Next: the laptop opencode claimant launches the bound session for task 9301. Attempts 24/24.

  11. added
    queue/queuedHas a queued task in the Supabase agent queue
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 5, 2026
  12. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

    • Agent: fleet monitor
    • Session / ID: task 9301 (repo-fleet-monitor run 2026-11-05T15:45:48Z)
    • Found via: monitor reconciliation (Duty 1 claim/label divergence repair)
    • Task: Claim evaporated: task 9301 is queued and unclaimed in repo-health-code-pilot, but this issue still carried claimed labels. Labels reset to the truth (queue/queued + status/needs-triage). Checkpoint stage at evaporation: handed_off.
    • Expectation: The next lane claim picks task 9301 up from the queued state and posts a fresh pickup note.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-inskind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/queuedHas a queued task in the Supabase agent queuesource/creatorFiled by the new-issue-creator jobstatus/needs-triageNot yet triaged; needs a first looktask/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions