Update 2026-05-17 — Pivot to ProjectV2-Membership-Param + Epic CLOSEOUT
Effective canonical contract (supersedes BOTH the 2026-05-08 label-driven pivot AND the original parent_child framing below):
- Canonical membership signal: ProjectV2 membership via
mcp_neo-mjs-github-workflow_create_issue's projects: [{projectNumber: 12}] parameter. Atomic attach at ticket-creation time.
- Implementation primitive: native MCP support per #11233. The
release:v* label-as-project-proxy pattern is deprecated; reconcileV13Project.mjs is superseded by direct project-membership at create-time.
- Why this final pivot: the label-substrate (2026-05-08 pivot above) was itself a workaround for parent_child's 1:1 limit + the absence of native ProjectV2-substrate in the MCP layer. Once
create_issue gained native projects parameter support, labels-as-proxy creates structural drift between label-state and project-state. ProjectV2 membership is the substrate-correct primitive — labels carry categorization, projects carry release-tracking.
- Implication for the canonical-membership-substrate this ticket establishes: the original purpose (canonical v13-focus subgraph for Sandman / Golden Path / Project tooling) is now structurally served by ProjectV2 +
create_issue projects param, NOT by this ticket's native sub-issue tree or by any label-driven proxy.
Closeout disposition (per drain-mode 2026-05-17 ~19:00Z + operator-direction):
All 6 sub-issues CLOSED:
- ✓ #10961 (CLOSED) Pilot GitHub Projects for v13 — ProjectV2 #12 became canonical
- ✓ #10965 (CLOSED) MCP server common base class
- ✓ #10970 (CLOSED) Post-review immediate next-phase pickup discipline
- ✓ #10982 (CLOSED 2026-05-17 ~19:05Z) Per-server MCP services migration to flatter SDK — all 3 subs CLOSED
- ✓ #10986 (CLOSED) Migrate Tier-1 MCP services to flat SDK boundary — all 5 subs CLOSED
- ✓ #11503 (CLOSED 2026-05-17 ~19:05Z) Heavy-maintenance mutex — all 5 subs CLOSED
Substrate-evolution narrative captured for graph ingestion (Retrospective daemon #11023): this ticket's 3-pivot chain (parent_child → labels → ProjectV2-params) is the canonical empirical anchor for the stale-substrate-decision danger. Each pivot was substrate-correct given the constraints at the time; tickets that don't refresh body framing as substrate evolves leave future agents to re-derive context OR worse, implement against the pre-pivot framing. Drain-mode discipline: close epics where work has actually shipped; update bodies for clarity when closing.
Closing this ticket as completed — its canonical-membership-substrate purpose is now structurally served by ProjectV2-membership-param. AC1-AC5 either substantively served (membership tracking via projectNumbers param) or naturally retired (AC5 release-cut is the natural close-trigger; this drain-mode closure is the structurally-correct alternative path that arrives at the same end-state earlier).
Update 2026-05-08 — Pivot to Label-Driven Canonical Membership (SUPERSEDED by 2026-05-17 pivot above)
Effective canonical contract (supersedes "Canonical membership" + AC1 below):
- Canonical membership signal: the
release:v13 label on an issue. The label IS the membership signal Sandman / Golden Path / the v13 Project (#10961) all read from.
- Inclusion rule: unchanged — narrower than "all #9999 open subs"; only tickets gating an M1-M7 exit gate or blocking/enabling one (per Discussion #10959 OQ2 resolution).
- Native sub-issue tree under this ticket: a human-curated organization layer, populated where parent_child slot is free. NOT canonical for membership; can co-exist with any other parent_child structure.
Why the pivot: GitHub's parent_child relationship is structurally limited to one parent per issue. #9999's existing children (e.g., #10030 Concept Ontology, #10013 DreamService Decomposition) cannot be re-parented under #10960 without breaking established parent_child relations. The release:v13 label can co-exist with any existing parent_child structure, so it is the only viable canonical signal.
Operational rule going forward:
- When a ticket is filed/identified as gating an M1-M7 exit gate → label it
release:v13. (Optionally also add as native sub-issue of THIS ticket where the parent_child slot is free.)
- The
release:v13 label drives Project #12 membership via ai/scripts/reconcileV13Project.mjs.
- Sandman / Golden Path math reads issue substrate (state + labels), NOT Project metadata — this contract is unchanged from the original ticket.
The original "Canonical membership" / AC1 language below describes the pre-pivot intent and is retained for decision-history visibility.
Context
Filed 2026-05-08 as the canonical anchor for v13 release-critical work, graduating Discussion #10959 per its OQ2 resolution. Establishes the single source of truth for "main focus items" semantics that @tobiu's chief-architect framing introduced earlier today:
"a project should mean: main focus items. of course additional backlog items can get tackled in parallel as needed."
Strategic anchor: learn/agentos/v13-path.md (PR #10958, merged) defines milestones M1-M7. This ticket's native sub-issue tree carries the release-critical work that gates each milestone's exit.
The Problem
The v13 trajectory is documented in v13-path.md, but "what tickets gate v13?" has no canonical answer. Today the question is implicitly answered by reading multiple ticket bodies + the path doc + Memory-Core-A2A coordination. Without an explicit canonical surface, a GitHub Project (per #10959 graduation) cannot derive its membership cleanly, and agents without Project tooling miss the release-critical path entirely.
The Architectural Reality
This ticket is purely structural — it does not carry implementation work. It establishes:
- Canonical membership: every ticket whose closure is required for an M1-M7 exit gate (per
v13-path.md §4) — OR blocks/enables a ticket required for an M1-M7 exit gate — is a native sub-issue of THIS ticket.
- Canonical owner: issue assignee field (drives Project visualization in #10961's pilot).
- Canonical status: issue state + existing labels (
agent-task:in-progress, agent-task:review, etc.).
- Inclusion rule (per Discussion #10959 OQ2 resolution): narrower than "all #9999 open subs" — only tickets gating an M1-M7 exit gate or blocking/enabling one. Long-horizon or orthogonal #9999 subs stay out.
The native parent_child relation gives Sandman / Golden Path math the v13-focus subgraph it needs without any Project-substrate dependency.
The Fix
Populate this ticket's native sub-issue tree with the M1-M7-gating tickets currently identified in v13-path.md §6:
M1 (substrate stabilization, current week):
- #10939 Phase 3 unit-row re-add (Gemini lane)
- #10945 Deployment-pipeline integration coverage (GPT lane; sub-tickets #10947/#10949/#10950/#10951/#10952)
- #10924 Bucket G epic — closure gates merging Phase 3
M2 (Common Base Server Class): ticket TBD; spawn from M2 prep.
M3 (Orchestrator Daemon Skeleton + Piece C):
- #10813 Restore session summaries (re-scope per v13-path D3/D5)
M4 (Migrate Decomposed Daemon Services to Orchestrator):
- #10013 DreamService Decomposition (sub-epic)
- #10028 Finalize DreamService Decomposition
M5 (NEO_MC_PRIMARY Retirement):
- #10956 NEO_MC_PRIMARY removal (re-scope per v13-path D5)
M6 (SDK Migration per-server waves): tickets TBD per server.
M7 (v13 Release Cut): roll-up only.
Plus structural meta-tickets:
- #10961 (forthcoming) Pilot GitHub Projects for v13 — sub-issue of THIS ticket
This ticket stays open through the v13 release. Closes when v13 ships.
Acceptance Criteria
Out of Scope
- Implementation of any milestone — those are individual sub-issues
- The GitHub Projects pilot — separate ticket #10961 (sub-issue of this one)
- Re-scoping of #10813 / #10956 — separate work; tracked on those tickets
- Backlog tickets that don't gate M1-M7 — they remain visible via parent epic + KB search; do not get added here
Avoided Traps / Gold Standards Rejected
- Rejected: include ALL #9999 open subs. GPT's Discussion #10959 review correctly narrowed this — long-horizon or orthogonal #9999 subs aren't release-critical. Inclusion rule is M1-M7 exit-gate or blocks/enables.
- Rejected: maintain a flat list of release-critical work as prose in v13-path.md. Prose lists drift; native parent_child is the swarm-readable substrate Sandman + Golden Path consume.
- Rejected: file under #9999 directly without an explicit tracking ticket. #9999 is the v13 main epic and carries non-release-critical context (older sub-epics like #10030 Concept Ontology that runs parallel). A dedicated tracking ticket separates "everything #9999 ever covered" from "what blocks v13 release".
Related
- Parent epic: #9999 — Cloud-Native Knowledge & Multi-Tenant Memory Core (v13 main epic)
- Strategic anchor:
learn/agentos/v13-path.md (#10957 — closed via PR #10958)
- Graduation source: Discussion #10959 OQ2 resolution
- Sibling implementation ticket: #10961 (forthcoming) GitHub Projects pilot
Origin Session ID: 005b6edf-85d8-4980-9e17-486b6b8bed3f
Retrieval Hint: query_raw_memories(query="v13 release tracking main focus items canonical sub-issue tree M1-M7 exit gate inclusion rule")
Update 2026-05-17 — Pivot to ProjectV2-Membership-Param + Epic CLOSEOUT
Effective canonical contract (supersedes BOTH the 2026-05-08 label-driven pivot AND the original parent_child framing below):
mcp_neo-mjs-github-workflow_create_issue'sprojects: [{projectNumber: 12}]parameter. Atomic attach at ticket-creation time.release:v*label-as-project-proxy pattern is deprecated;reconcileV13Project.mjsis superseded by direct project-membership at create-time.create_issuegained nativeprojectsparameter support, labels-as-proxy creates structural drift between label-state and project-state. ProjectV2 membership is the substrate-correct primitive — labels carry categorization, projects carry release-tracking.create_issue projectsparam, NOT by this ticket's native sub-issue tree or by any label-driven proxy.Closeout disposition (per drain-mode 2026-05-17 ~19:00Z + operator-direction):
All 6 sub-issues CLOSED:
Substrate-evolution narrative captured for graph ingestion (Retrospective daemon #11023): this ticket's 3-pivot chain (parent_child → labels → ProjectV2-params) is the canonical empirical anchor for the stale-substrate-decision danger. Each pivot was substrate-correct given the constraints at the time; tickets that don't refresh body framing as substrate evolves leave future agents to re-derive context OR worse, implement against the pre-pivot framing. Drain-mode discipline: close epics where work has actually shipped; update bodies for clarity when closing.
Closing this ticket as completed — its canonical-membership-substrate purpose is now structurally served by ProjectV2-membership-param. AC1-AC5 either substantively served (membership tracking via projectNumbers param) or naturally retired (AC5 release-cut is the natural close-trigger; this drain-mode closure is the structurally-correct alternative path that arrives at the same end-state earlier).
Update 2026-05-08 — Pivot to Label-Driven Canonical Membership (SUPERSEDED by 2026-05-17 pivot above)
Effective canonical contract (supersedes "Canonical membership" + AC1 below):
release:v13label on an issue. The label IS the membership signal Sandman / Golden Path / the v13 Project (#10961) all read from.Why the pivot: GitHub's
parent_childrelationship is structurally limited to one parent per issue. #9999's existing children (e.g., #10030 Concept Ontology, #10013 DreamService Decomposition) cannot be re-parented under #10960 without breaking established parent_child relations. Therelease:v13label can co-exist with any existing parent_child structure, so it is the only viable canonical signal.Operational rule going forward:
release:v13. (Optionally also add as native sub-issue of THIS ticket where the parent_child slot is free.)release:v13label drives Project #12 membership viaai/scripts/reconcileV13Project.mjs.The original "Canonical membership" / AC1 language below describes the pre-pivot intent and is retained for decision-history visibility.
Context
Filed 2026-05-08 as the canonical anchor for v13 release-critical work, graduating Discussion #10959 per its OQ2 resolution. Establishes the single source of truth for "main focus items" semantics that @tobiu's chief-architect framing introduced earlier today:
Strategic anchor:
learn/agentos/v13-path.md(PR #10958, merged) defines milestones M1-M7. This ticket's native sub-issue tree carries the release-critical work that gates each milestone's exit.The Problem
The v13 trajectory is documented in
v13-path.md, but "what tickets gate v13?" has no canonical answer. Today the question is implicitly answered by reading multiple ticket bodies + the path doc + Memory-Core-A2A coordination. Without an explicit canonical surface, a GitHub Project (per #10959 graduation) cannot derive its membership cleanly, and agents without Project tooling miss the release-critical path entirely.The Architectural Reality
This ticket is purely structural — it does not carry implementation work. It establishes:
v13-path.md§4) — OR blocks/enables a ticket required for an M1-M7 exit gate — is a native sub-issue of THIS ticket.agent-task:in-progress,agent-task:review, etc.).The native parent_child relation gives Sandman / Golden Path math the v13-focus subgraph it needs without any Project-substrate dependency.
The Fix
Populate this ticket's native sub-issue tree with the M1-M7-gating tickets currently identified in
v13-path.md§6:M1 (substrate stabilization, current week):
M2 (Common Base Server Class): ticket TBD; spawn from M2 prep.
M3 (Orchestrator Daemon Skeleton + Piece C):
M4 (Migrate Decomposed Daemon Services to Orchestrator):
M5 (NEO_MC_PRIMARY Retirement):
M6 (SDK Migration per-server waves): tickets TBD per server.
M7 (v13 Release Cut): roll-up only.
Plus structural meta-tickets:
This ticket stays open through the v13 release. Closes when v13 ships.
Acceptance Criteria
update_issue_relationship.learn/agentos/v13-path.md(one-line cross-reference) and inlearn/agentos/GitHubWorkflow.md(the canonical "what's the v13 focus?" lookup).Out of Scope
Avoided Traps / Gold Standards Rejected
Related
learn/agentos/v13-path.md(#10957 — closed via PR #10958)Origin Session ID:
005b6edf-85d8-4980-9e17-486b6b8bed3fRetrieval Hint:
query_raw_memories(query="v13 release tracking main focus items canonical sub-issue tree M1-M7 exit gate inclusion rule")