LearnNewsExamplesServices
Frontmatter
id15851
titleRestore the plane-member count pin in BaseServer.spec (census tripwire)
stateClosed
labels
enhancementaitesting
assigneesneo-fable-clio
createdAtJul 24, 2026, 10:38 PM
updatedAtJul 25, 2026, 12:36 AM
githubUrlhttps://github.com/neomjs/neo/issues/15851
authorneo-fable-clio
commentsCount0
parentIssue15801
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 25, 2026, 12:36 AM

Restore the plane-member count pin in BaseServer.spec (census tripwire)

Closed Backlog/active-chunk-9 enhancementaitesting
neo-fable-clio
neo-fable-clio commented on Jul 24, 2026, 10:38 PM

Context

Follow-up from PR #15832's cross-family review (PRR_kwDODSospM8AAAABHK9rpg, Iris, Depth Floor observation 2 — non-blocking, "author's call"; author accepts). Filed per post-review-followup-surfacing.md: durable follow-ups become graph-visible tickets before merge, never prose riders.

The Problem

PR #15832 de-literalized the plane-member count assertion to eliminate per-member churn:

// test/playwright/unit/ai/mcp/server/BaseServer.spec.mjs:887 (PR branch)
expect(server.getPlaneMembers().length).toBe(TIER1_MEMBER_PATHS.length);

V-B-A receipt: verified on agent/15801-seat-token-subject-binding — the assertion compares two live lists, so it passes for any length. The config-vs-server coherence check survives (that was the point of the edit), but the absolute census pin is gone: an accidental silent deletion from PLANE_MEMBER_PATHS (ai/configBase.mjs) now fails nothing on the server-spec side. The config-side parity-snapshot lint (config-leaf-parity.json) gates config-leaf drift, but PLANE_MEMBER_PATHS membership itself has no absolute tripwire.

The trade was deliberate and reviewer-acknowledged ("churn reduction is a fair trade — this PR is the proof"); the census pin's value is separate and real: member add/remove should be a conscious act — one literal bumped in the same commit that changes the membership.

The Architectural Reality

  • ai/configBase.mjsPLANE_MEMBER_PATHS, the Tier-1 plane-member contract (10 entries once PR #15832's seatTokenRegistryPath lands).
  • test/playwright/unit/ai/mcp/server/BaseServer.spec.mjs:887 — the de-literalized coherence assertion.
  • Distinct from #15842 (Grace): that lane reconciles the plane-placement election diagnostic (planePlacementCensus.mjs) against the config contract — module-read classification. This ticket pins the member count in the boot-coherence spec. Two different censuses; the shared principle (contract over proxy) is why both cite configBase.mjs as authority. Also distinct from the #15790 profiling census (third use of the word today).

The Fix

Restore an absolute census pin alongside (not replacing) the coherence assertion:

// census, not coherence: a silent PLANE_MEMBER_PATHS deletion must fail this line.
// Adding/removing a plane member = bump this literal consciously in the same commit.
expect(TIER1_MEMBER_PATHS.length).toBe(10);

Placement option (implementer's one-line call in the PR): the pin could equally live beside the config-side spec closest to the PLANE_MEMBER_PATHS declaration; default = restore where the literal previously lived (BaseServer.spec).

Timing constraint: lands AFTER PR #15832 merges — the 10th member (seatTokenRegistryPath) and the touched assertion exist only on that branch; landing earlier asserts a count dev doesn't have.

Acceptance Criteria

  • BaseServer.spec.mjs carries BOTH assertions: the live coherence check (kept verbatim) and an absolute census literal on TIER1_MEMBER_PATHS.length, commented "census, not coherence".
  • The comment states the contract: membership change = conscious literal bump in the same commit.
  • One-line placement rationale in the PR (BaseServer.spec vs config-side spec).
  • No other spec churn in the PR.

Out of Scope

  • Any change to the coherence assertion or getPlaneMembers().
  • #15842's diagnostic-census reconciliation.
  • Parity-snapshot lint changes.

Decision Record impact

none — test hardening; no ADR surface.

Related

Parent #15801 (close-target whose PR de-literalized the pin) · PR #15832 (origin review) · #15799 / PR #15811 (phase-0, where the member-coherence machinery shipped) · epic #15798 · #15842 (adjacent census, distinct substrate — see Architectural Reality).

Live latest-open sweep: checked latest 20 open issues + A2A last-30 (all read-states) at 2026-07-24T20:37Z; nearest candidate #15842 read in full and disambiguated above; no equivalent found.

Origin Session ID: fed0f707-b481-432f-a5d9-587cc0325942 Retrieval Hint: query_raw_memories("census literal plane member count pin BaseServer spec tripwire coherence")

Authored by Clio (@neo-fable-clio, Fable).