LearnNewsExamplesServices
Frontmatter
id15159
titleProject bounded tenant community-attention counts
stateOpen
labels
enhancementaiarchitecturesecurity
assignees[]
createdAt7:32 AM
updatedAt8:29 AM
githubUrlhttps://github.com/neomjs/neo/issues/15159
authorneo-gpt
commentsCount0
parentIssue15145
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[ ] 15100 Live Lane Awareness — Wave-1 composition, [ ] 15158 Bind community events to canonical A2A Tasks, [ ] 15154 Reconcile GitHub Discussions and nested replies, [ ] 15153 Reconcile GitHub pull requests and reviews exhaustively, [ ] 15152 Reconcile GitHub issue activity exhaustively
blocking[ ] 15162 Prove the community-activity authority chain end to end, [ ] 15161 Enable metric-gated community-steward wake leases, [ ] 15160 Calibrate community policy from measured evidence
milestonev13.2

Project bounded tenant community-attention counts

Open Backlog/active-chunk-6 enhancementaiarchitecturesecurity
neo-gpt
neo-gpt commented on 7:32 AM

Context

Staged option J requires a bounded tenant/source count-only projection before any steward wake. It is an attention signal, never ranking, assignment, or completeness authority.

This is one fully closeable PR leaf under Epic #15145. The live parent-child and blocked-by graph is authoritative; this body owns only this leaf's contract.

The Problem

Even a count leaks another tenant's activity volume. Adding titles/excerpts creates hostile-content exposure, and rebuilding hook transport here would violate ADR 0035's projection-writer ownership.

The Architectural Reality

Memory Core owns the count/query source. It may feed ADR 0035's typed projection writer only through that writer's admitted channel contract; it must not recreate lifecycle-state.json, a new file writer, or hook-time network access. Epic #15100 is the external projection-owner dependency until its writer leaf exists.

The Agent OS structure map was run on 2026-07-14. New service/script/test placement must use the named sibling-file-lift fast paths; no service logic moves into MCP server entrypoint directories.

The Fix

Add a fixed, bounded count/oldest-age metadata projection over eligible unclaimed admitted events, scoped by server tenant/source, with explicit coverage and measurement fields. Exclude claimed/ineligible events using the neutral ledger and canonical Task binding. Expose no prose and no unmeasured escalation threshold.

Contract Ledger Matrix

Target Surface Source of Authority Proposed Behavior Fallback / Edge Case Docs Evidence
Count query/channel OQ7 J-stage1 Bounded tenant/source counts plus fixed metadata and coverage Missing/degraded sources stay explicit Schema docs Bounds/isolation tests
Eligibility Admission + claim authority Counts only eligible unclaimed items by explicit schema Seen does not remove; claim does JSDoc State-matrix tests
Projection integration ADR 0035 Submit typed channel to existing writer owner Writer unavailable means query still honest; no legacy fallback ADR link Static dependency and no-file-writer tests

Decision Record impact

Depends on ADR 0036, reconciliation, canonical Task binding, and ADR 0035 projection ownership.

Decision Record

Required: ADR 0036. This leaf is not code-ready until the ADR-0036 child of #15145 is accepted at the human merge gate.

Discussion Criteria Mapping

Upstream graduated criterion This leaf's executable contract
OQ7 Ships J stage 1 count-only projection before leased wake.
OQ8 Reapplies tenant/source isolation and excludes prose.
OQ5 Uses canonical claim state; per-viewer seen remains non-authority.
OQ10 Emits measurement inputs but introduces no age/wake threshold.

Source authority: Discussion #15139 body at the version-bound graduation anchor plus Grace's STEP_BACK and GRADUATION_APPROVED.

Operator Scope Clarification — 2026-07-14

The community substrate is not a mirror of every GitHub repository notification. It separates:

  1. source occurrences needed to reconstruct supported issue, pull-request/review, and Discussion conversation state; and
  2. attention-eligible community items: externally authored, response-bearing occurrences that may need maintainer attention.

Stars/un-stars, forks, watches, and equivalent popularity telemetry are outside the community-event source families and cannot enter Bird View, counts, wake, or Task claim. Internal/rostered actions may update or resolve the state of an existing external item without minting new community attention. First-time versus trusted-repeat external status affects trust/projection, not basic eligibility. Bot eligibility must be an explicit ADR disposition and cannot be inferred from provider actor kind or trust tier.

Attention eligibility remains zero-authority: it does not assign work, enter LifecycleFrontier, or create a Task. Only the explicit canonical claim transition owns that promotion.

Acceptance Criteria

  • AC1 — Output shape is fixed and bounded, with count, oldest occurrence time, coverage, and source watermark only.

  • AC2 — No title, body, excerpt, author prose, ranking score, or assignment hint is present.

  • AC3 — Every query/channel read is server-tenant- and source-scoped; cross-tenant count leakage tests pass.

  • AC4 — Claimed and explicitly ineligible items are excluded; seen items remain governed by the stated non-authority contract.

  • AC5 — Missing/degraded coverage is visible and never normalized to zero.

  • AC6 — Integration uses ADR 0035's projection writer contract or remains query-only until that owner ships; no parallel writer is created.

  • AC7 — No legacy lifecycle-state file, hook-time network read, global Neo roster, or all-resident broadcast is added.

  • AC8 — No stale-age, cadence, TTL, steward, or wake threshold is selected.

  • AC9 — Counts and oldest-age fields include only attention-eligible unclaimed items; internal/rostered context and excluded popularity telemetry leave both unchanged.

  • AC10 — A noise-flood fixture proves star/fork/watch volume cannot manufacture attention, while first-time and trusted-repeat external-human items remain countable.

Out of Scope

Leased wake, Fleet UI, prose drill-down, ranking, Task claim, or ADR 0035 writer implementation.

Avoided Traps

Do not treat zero as complete when coverage is degraded, let seen hide work, expose prose, or rebuild hook transport.

Related

  • Parent: #15145
  • Source: Discussion #15139 OQ5/OQ7/OQ8/OQ10
  • External owner: #15100 and ADR 0035
  • Warning precedent: #12850

Origin Session ID: 837ad74b-c2d2-413d-9aab-b7165a93a82a

Handoff Retrieval Hints

  • tenant community count only projection no prose
  • ADR 0035 community attention channel

Creation Freshness

Creation duplicate sweep: immediately before filing at 2026-07-14T05:32:00.414Z, checked the latest 20 open issues and last 30 all-state A2A messages. The independent broader audit at 2026-07-14T05:13:00Z covered open and closed issues, pull requests, A2A, ADRs, and code; no equivalent owner or foreign claim existed.