From 5a54cf2f3bde046aec6f86ade79e1b091a61b2af Mon Sep 17 00:00:00 2001 From: Wang Shining Date: Fri, 22 May 2026 14:06:51 +0800 Subject: [PATCH] =?UTF-8?q?data:=20Ornn=20M6=20=E2=86=92=20bridged,=20move?= =?UTF-8?q?=20#467=20#106=20to=20M7,=20refresh=20stale=20counts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit M6 (Code Review Hardening) finished — 62 closed / 0 open after moving out the lone remaining #467 (public hosted demo, OSS-readiness, not hardening). closure obligation → bridged, focus cleared. M3 (Trust & Quality) — only #106 left (NyxID permission catalog flip, cross-team feature, not M3-themed). Moved to M7. Milestone closed on GitHub. closure stays bridged; will auto-promote to mature on 2026-05-30 (30d from bridged). M7 (Platform Power) — gains #467 + #106 alongside the original composition/webhook/templates trio. Still seed; no other change. Issue counts refreshed via sync_milestone_issues.py: M1: 7 → 3 (3 stragglers in closed milestone) M3: 1 → 0 (#106 moved out) M4: 6 → 4 M6: 38 → 0 M7: 3 → 5 (+#467 +#106) Effect on the map: L1-Launch's code-side deps collapse to M5 only (M6 now bridged → counts as shipped under the new isShipped rules). Focus collapses to {M5, L0, L1}. Co-Authored-By: Claude Opus 4.7 (1M context) --- ornn-issues.json | 828 ++++++++++++++++++++++++++++++----------------- regions.json | 67 ++-- 2 files changed, 572 insertions(+), 323 deletions(-) diff --git a/ornn-issues.json b/ornn-issues.json index ca8f4e9..4d0584d 100644 --- a/ornn-issues.json +++ b/ornn-issues.json @@ -1,5 +1,5 @@ { - "synced_at": "2026-05-18T09:52:51.741850Z", + "synced_at": "2026-05-22T05:38:30.970073Z", "regions": { "Ornn-M0-Engineering-Foundation": { "milestone": { @@ -534,11 +534,11 @@ "repo": "ChronoAIProject/Ornn" }, "issues": { - "565": { - "number": 565, - "title": "[Bug] [Skill Edit] Owner updating an existing skill package is blocked by CORS", + "531": { + "number": 531, + "title": "[Bug] [Playground Sandbox] Installed CLI state is not preserved across tool calls", "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/565", + "url": "https://github.com/ChronoAIProject/Ornn/issues/531", "labels": [ "bug" ], @@ -549,11 +549,11 @@ "tracked_by": [] } }, - "564": { - "number": 564, - "title": "[Bug] [Playground] Missing skill still opens an interactive Playground page after API returns 404", + "530": { + "number": 530, + "title": "[Bug] [Playground Sandbox] nyxid skill tool execution returns 500 internal_error", "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/564", + "url": "https://github.com/ChronoAIProject/Ornn/issues/530", "labels": [ "bug" ], @@ -564,26 +564,28 @@ "tracked_by": [] } }, - "531": { - "number": 531, - "title": "[Bug] [Playground Sandbox] Installed CLI state is not preserved across tool calls", + "243": { + "number": 243, + "title": "[Feature] Service-binding agent prompt — encourage agents to promote repeated service operations into a reusable Ornn skill bound to that service", "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/531", + "url": "https://github.com/ChronoAIProject/Ornn/issues/243", "labels": [ - "bug" + "dx" ], "deps": { "blocked_by": [], "blocks": [], - "tracks": [], + "tracks": [ + 242 + ], "tracked_by": [] } }, - "530": { - "number": 530, - "title": "[Bug] [Playground Sandbox] nyxid skill tool execution returns 500 internal_error", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/530", + "565": { + "number": 565, + "title": "[Bug] [Skill Edit] Owner updating an existing skill package is blocked by CORS", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/565", "labels": [ "bug" ], @@ -594,11 +596,11 @@ "tracked_by": [] } }, - "529": { - "number": 529, - "title": "[Bug] [GitHub Import] Skip validation still fails on Ornn frontmatter validation", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/529", + "564": { + "number": 564, + "title": "[Bug] [Playground] Missing skill still opens an interactive Playground page after API returns 404", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/564", "labels": [ "bug" ], @@ -609,11 +611,11 @@ "tracked_by": [] } }, - "528": { - "number": 528, - "title": "[Bug] [Skill Creation] Saving AI-generated or guided skills fails with CORS error", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/528", + "562": { + "number": 562, + "title": "[Bug] [Playground] nyxid LIST CAPABILITIES response is delayed and follow-up command is not executed", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/562", "labels": [ "bug" ], @@ -624,28 +626,26 @@ "tracked_by": [] } }, - "243": { - "number": 243, - "title": "[Feature] Service-binding agent prompt — encourage agents to promote repeated service operations into a reusable Ornn skill bound to that service", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/243", + "529": { + "number": 529, + "title": "[Bug] [GitHub Import] Skip validation still fails on Ornn frontmatter validation", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/529", "labels": [ - "dx" + "bug" ], "deps": { "blocked_by": [], "blocks": [], - "tracks": [ - 242 - ], + "tracks": [], "tracked_by": [] } }, - "562": { - "number": 562, - "title": "[Bug] [Playground] nyxid LIST CAPABILITIES response is delayed and follow-up command is not executed", + "528": { + "number": 528, + "title": "[Bug] [Skill Creation] Saving AI-generated or guided skills fails with CORS error", "state": "CLOSED", - "url": "https://github.com/ChronoAIProject/Ornn/issues/562", + "url": "https://github.com/ChronoAIProject/Ornn/issues/528", "labels": [ "bug" ], @@ -1286,7 +1286,7 @@ "566": { "number": 566, "title": "[Bug] [Registry] Anonymous users cannot load public and system skills because public Registry APIs return 401", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/566", "labels": [ "bug" @@ -1298,29 +1298,16 @@ "tracked_by": [] } }, - "254": { - "number": 254, - "title": "[Bug] backfill-skill-author-display-names.ts uses $last for activity labels — same root cause as #238 runtime aggregator", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/254", - "labels": [ - "bug", - "api" - ], - "deps": { - "blocked_by": [], - "blocks": [], - "tracks": [], - "tracked_by": [] - } - }, - "106": { - "number": 106, - "title": "[Feature] NyxID permission catalog flip — post-NyxID-rename", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/106", + "271": { + "number": 271, + "title": "[Feature] PostHog-only platform analytics — wire DB-driven telemetry, remove custom audit infrastructure", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/271", "labels": [ - "security" + "phase:3", + "dx", + "api", + "infra" ], "deps": { "blocked_by": [], @@ -1329,16 +1316,14 @@ "tracked_by": [] } }, - "271": { - "number": 271, - "title": "[Feature] PostHog-only platform analytics — wire DB-driven telemetry, remove custom audit infrastructure", + "254": { + "number": 254, + "title": "[Bug] backfill-skill-author-display-names.ts uses $last for activity labels — same root cause as #238 runtime aggregator", "state": "CLOSED", - "url": "https://github.com/ChronoAIProject/Ornn/issues/271", + "url": "https://github.com/ChronoAIProject/Ornn/issues/254", "labels": [ - "phase:3", - "dx", - "api", - "infra" + "bug", + "api" ], "deps": { "blocked_by": [], @@ -1927,22 +1912,6 @@ "repo": "ChronoAIProject/Ornn" }, "issues": { - "507": { - "number": 507, - "title": "[Bug] Recipients tooltip on BroadcastsPage unreadable for many recipients", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/507", - "labels": [ - "bug", - "web" - ], - "deps": { - "blocked_by": [], - "blocks": [], - "tracks": [], - "tracked_by": [] - } - }, "506": { "number": 506, "title": "[Misc] Decide whether admins can be broadcast recipients (UserEmailPicker role scope)", @@ -1991,23 +1960,6 @@ "tracked_by": [] } }, - "220": { - "number": 220, - "title": "[Bug] NyxID service registry: 'ornn' slug had wrong upstream + identity-mode mismatch with 'ornn-api' slug", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/220", - "labels": [ - "bug", - "infra", - "security" - ], - "deps": { - "blocked_by": [], - "blocks": [], - "tracks": [], - "tracked_by": [] - } - }, "22": { "number": 22, "title": "[Misc] Owner 自主目标: 定义 Ornn O1 路径 + 开发者触达计划", @@ -2259,6 +2211,22 @@ "tracked_by": [] } }, + "507": { + "number": 507, + "title": "[Bug] Recipients tooltip on BroadcastsPage unreadable for many recipients", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/507", + "labels": [ + "bug", + "web" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, "503": { "number": 503, "title": "[Bug] Playground + Generative skill builder — i18n gaps in hero, starters, drawer, quota chip, model picker", @@ -3538,6 +3506,23 @@ "tracked_by": [] } }, + "220": { + "number": 220, + "title": "[Bug] NyxID service registry: 'ornn' slug had wrong upstream + identity-mode mismatch with 'ornn-api' slug", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/220", + "labels": [ + "bug", + "infra", + "security" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, "219": { "number": 219, "title": "[Bug] /admin/stats response shape doesn't match docs/api.md", @@ -3892,26 +3877,30 @@ "repo": "ChronoAIProject/Ornn" }, "issues": { - "567": { - "number": 567, - "title": "Enforce skill visibility checks on JSON package endpoint", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/567", - "labels": [], + "661": { + "number": 661, + "title": "[Infra] Enable anonymous proxy passthrough on NyxID for public-read Ornn endpoints", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/661", + "labels": [ + "infra" + ], "deps": { "blocked_by": [], - "blocks": [], + "blocks": [ + 467 + ], "tracks": [], "tracked_by": [] } }, - "563": { - "number": 563, - "title": "[Bug] [Permissions] Non-owner account can access and run another account's private skill through Playground URL", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/563", + "657": { + "number": 657, + "title": "[Misc] Enable exactOptionalPropertyTypes on ornn-api + ornn-web (follow-up to #450)", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/657", "labels": [ - "bug" + "dx" ], "deps": { "blocked_by": [], @@ -3920,15 +3909,15 @@ "tracked_by": [] } }, - "474": { - "number": 474, - "title": "[Docs] API stability commitment + breaking-change & deprecation policy", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/474", + "633": { + "number": 633, + "title": "[Bug] Backend /skills upload accepts large uncompressed ZIPs — mirror #443 cap server-side", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/633", "labels": [ - "documentation", + "bug", "api", - "review:auto" + "security" ], "deps": { "blocked_by": [], @@ -3937,16 +3926,15 @@ "tracked_by": [] } }, - "473": { - "number": 473, - "title": "[Bug] SDK publish status — TS SDK has private:true, clarify npm/PyPI publication strategy", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/473", + "586": { + "number": 586, + "title": "[Bug] API URL and header patterns violate CONVENTIONS.md §2–7 (:idOrName on writes, query vs q param, /json suffix, X- custom headers)", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/586", "labels": [ "bug", "dx", - "sdk", - "review:auto" + "api" ], "deps": { "blocked_by": [], @@ -3955,14 +3943,15 @@ "tracked_by": [] } }, - "472": { - "number": 472, - "title": "[Docs] Positioning / comparison table vs MCP servers + Smithery + npm in README", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/472", + "585": { + "number": 585, + "title": "[Bug] Error codes use SCREAMING_SNAKE_CASE — CONVENTIONS.md §1.4 mandates lowercase_snake_case", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/585", "labels": [ - "documentation", - "review:auto" + "bug", + "dx", + "api" ], "deps": { "blocked_by": [], @@ -3971,11 +3960,254 @@ "tracked_by": [] } }, - "471": { - "number": 471, - "title": "[CI/CD] Codecov integration + coverage badge + stated coverage target", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/471", + "584": { + "number": 584, + "title": "[Bug] Auth store console.log leaks token metadata to browser devtools in production", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/584", + "labels": [ + "bug", + "security", + "web" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "583": { + "number": 583, + "title": "[CI/CD] Add ruff + mypy to Python SDK CI pipeline", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/583", + "labels": [ + "ci", + "sdk" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "582": { + "number": 582, + "title": "[CI/CD] Run integration tests in CI with MongoDB service container", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/582", + "labels": [ + "dx", + "ci" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "581": { + "number": 581, + "title": "[Misc] Remove legacy ownerId field, unused createErrorHandler and INTERNAL_AUTH_HEADER", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/581", + "labels": [ + "dx", + "api" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "580": { + "number": 580, + "title": "[Misc] Decompose bootstrap.ts (1061 lines) into per-domain bootstrappers", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/580", + "labels": [ + "dx", + "api" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "579": { + "number": 579, + "title": "[Misc] 31 bare catch {} blocks silently swallow errors across backend", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/579", + "labels": [ + "dx", + "api" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "578": { + "number": 578, + "title": "[Bug] ornn-web apiDelete duplicates fetchWithRetry token-refresh logic", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/578", + "labels": [ + "bug", + "dx", + "web" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "577": { + "number": 577, + "title": "[Misc] Delete dead skill repository — domains/skills/crud/repositories/ is unused", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/577", + "labels": [ + "dx", + "api" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "576": { + "number": 576, + "title": "[Docs] Create docs/ERRORS.md and docs/DEPRECATIONS.md required by CONVENTIONS.md", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/576", + "labels": [ + "documentation", + "api" + ], + "deps": { + "blocked_by": [ + 456 + ], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "575": { + "number": 575, + "title": "[Misc] 62 standalone pino loggers bypass redaction rules and LOG_LEVEL config", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/575", + "labels": [ + "dx", + "api" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "567": { + "number": 567, + "title": "Enforce skill visibility checks on JSON package endpoint", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/567", + "labels": [], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "563": { + "number": 563, + "title": "[Bug] [Permissions] Non-owner account can access and run another account's private skill through Playground URL", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/563", + "labels": [ + "bug" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "474": { + "number": 474, + "title": "[Docs] API stability commitment + breaking-change & deprecation policy", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/474", + "labels": [ + "documentation", + "api", + "review:auto" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "473": { + "number": 473, + "title": "[Bug] SDK publish status — TS SDK has private:true, clarify npm/PyPI publication strategy", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/473", + "labels": [ + "bug", + "dx", + "sdk", + "review:auto" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "472": { + "number": 472, + "title": "[Docs] Positioning / comparison table vs MCP servers + Smithery + npm in README", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/472", + "labels": [ + "documentation", + "review:auto" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "471": { + "number": 471, + "title": "[CI/CD] Codecov integration + coverage badge + stated coverage target", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/Ornn/issues/471", "labels": [ "dx", "ci", @@ -3991,7 +4223,7 @@ "470": { "number": 470, "title": "[Docs] SDK quickstart (5-line copy-paste) in main README", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/470", "labels": [ "documentation", @@ -4008,7 +4240,7 @@ "469": { "number": 469, "title": "[Docs] examples/ directory with 2-3 minimal starter skills (TS + Python)", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/469", "labels": [ "documentation", @@ -4025,7 +4257,7 @@ "468": { "number": 468, "title": "[Misc] Add npm/PyPI keywords + GitHub repo topics for discoverability", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/468", "labels": [ "dx", @@ -4039,27 +4271,10 @@ "tracked_by": [] } }, - "467": { - "number": 467, - "title": "[Feature] Public hosted demo / playground for try-before-install", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/Ornn/issues/467", - "labels": [ - "dx", - "infra", - "review:auto" - ], - "deps": { - "blocked_by": [], - "blocks": [], - "tracks": [], - "tracked_by": [] - } - }, "466": { "number": 466, "title": "[Feature] docker-compose.yml for one-command local dev — replace K8s-only onboarding", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/466", "labels": [ "dx", @@ -4076,7 +4291,7 @@ "465": { "number": 465, "title": "[Feature] SDK ergonomics — auto-pagination iterator + exponential-backoff retry wrapper", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/465", "labels": [ "dx", @@ -4093,7 +4308,7 @@ "464": { "number": 464, "title": "[Feature] Publish versioned JSON Schema for SKILL.md frontmatter", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/464", "labels": [ "documentation", @@ -4111,7 +4326,7 @@ "463": { "number": 463, "title": "[Feature] Dist-tags (latest / stable / next) for skill version resolution", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/463", "labels": [ "api", @@ -4127,7 +4342,7 @@ "462": { "number": 462, "title": "[CI/CD] OpenAPI contract tests — assert every route appears in spec with declared errors", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/462", "labels": [ "dx", @@ -4145,7 +4360,7 @@ "461": { "number": 461, "title": "[Feature] Surface integrity hash (sha256-base64) on skill version manifest like npm", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/461", "labels": [ "api", @@ -4162,7 +4377,7 @@ "460": { "number": 460, "title": "[Feature] RFC 9239 rate-limit response headers (RateLimit-Limit/Remaining/Retry-After)", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/460", "labels": [ "api", @@ -4178,7 +4393,7 @@ "459": { "number": 459, "title": "[Feature] Idempotency-Key middleware (24h cache) per CONVENTIONS.md §3.4", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/459", "labels": [ "api", @@ -4194,7 +4409,7 @@ "458": { "number": 458, "title": "[Bug] POST create endpoints return 200 OK without Location header (should be 201 Created)", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/458", "labels": [ "bug", @@ -4211,7 +4426,7 @@ "457": { "number": 457, "title": "[Feature] Cursor-based pagination for list endpoints (drop offset page/pageSize/total)", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/457", "labels": [ "api", @@ -4227,7 +4442,7 @@ "456": { "number": 456, "title": "[Bug] Error responses violate RFC 7807 — implementation uses { data, error } envelope instead of problem+json", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/456", "labels": [ "bug", @@ -4244,7 +4459,7 @@ "454": { "number": 454, "title": "[Feature] Backfill unit tests for 7 untested domain services + 8 repositories", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/454", "labels": [ "dx", @@ -4261,7 +4476,7 @@ "453": { "number": 453, "title": "[Misc] Decompose god-files: SkillDetailPage (1133L), DocsPage (857L), PlaygroundPage (802L)", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/453", "labels": [ "dx", @@ -4278,7 +4493,7 @@ "452": { "number": 452, "title": "[Misc] Replace hardcoded hex colors in landing pages with design tokens", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/452", "labels": [ "documentation", @@ -4296,7 +4511,7 @@ "451": { "number": 451, "title": "[Bug] Array index as React key in skeleton/grid components — list reorder bugs", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/451", "labels": [ "bug", @@ -4314,7 +4529,7 @@ "450": { "number": 450, "title": "[Misc] Enable stricter TS flags: noUncheckedIndexedAccess, noImplicitOverride, exactOptionalPropertyTypes", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/450", "labels": [ "dx", @@ -4330,7 +4545,7 @@ "449": { "number": 449, "title": "[Misc] Type playground chat events with Zod discriminated union (drop \"as any\")", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/449", "labels": [ "dx", @@ -4347,7 +4562,7 @@ "448": { "number": 448, "title": "[Misc] Eliminate \"as any\" on MongoDB _id — introduce toObjectId(guid) helper", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/448", "labels": [ "dx", @@ -4364,7 +4579,7 @@ "447": { "number": 447, "title": "[Misc] Migration scripts — replace Number(env) with validated parseInt + fail-fast", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/447", "labels": [ "dx", @@ -4381,7 +4596,7 @@ "446": { "number": 446, "title": "[Misc] Admin search MongoDB regex — add maxTimeMS + ensure name/description indexes", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/446", "labels": [ "api", @@ -4398,7 +4613,7 @@ "445": { "number": 445, "title": "[CI/CD] Lock + audit Python SDK dependencies (lockfile + pip-audit in CI)", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/445", "labels": [ "infra", @@ -4417,7 +4632,7 @@ "444": { "number": 444, "title": "[Bug] LLM re-ranker output parsed without Zod schema (cast as Array)", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/444", "labels": [ "bug", @@ -4435,7 +4650,7 @@ "443": { "number": 443, "title": "[Misc] ZIP validator — add total-uncompressed-size cap + explicit zip-slip check", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/443", "labels": [ "security", @@ -4452,7 +4667,7 @@ "442": { "number": 442, "title": "[Bug] AgentSeal subprocess: validate python/script paths at boot + unref child after kill", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/442", "labels": [ "bug", @@ -4470,7 +4685,7 @@ "441": { "number": 441, "title": "[Misc] Validate GitHub App private key shape on mirror config write", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/441", "labels": [ "api", @@ -4487,7 +4702,7 @@ "440": { "number": 440, "title": "[Misc] Tighten Mermaid SVG rendering — replace dangerouslySetInnerHTML with iframe sandbox", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/440", "labels": [ "security", @@ -4504,7 +4719,7 @@ "439": { "number": 439, "title": "[Feature] Rate limiting on /skill-search (semantic mode) + auth/upload endpoints", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/439", "labels": [ "api", @@ -4522,7 +4737,7 @@ "438": { "number": 438, "title": "[Bug] Some routes bypass validateBody middleware — raw c.req.json() reads break RFC 7807 errors", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/Ornn/issues/438", "labels": [ "bug", @@ -4547,6 +4762,39 @@ "repo": "ChronoAIProject/Ornn" }, "issues": { + "467": { + "number": 467, + "title": "[Feature] Public hosted demo / playground for try-before-install", + "state": "OPEN", + "url": "https://github.com/ChronoAIProject/Ornn/issues/467", + "labels": [ + "blocker", + "dx", + "infra", + "review:auto" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, + "106": { + "number": 106, + "title": "[Feature] NyxID permission catalog flip — post-NyxID-rename", + "state": "OPEN", + "url": "https://github.com/ChronoAIProject/Ornn/issues/106", + "labels": [ + "security" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, "37": { "number": 37, "title": "[Feature] Skill templates & starter kits", @@ -5014,10 +5262,25 @@ "tracked_by": [] } }, + "694": { + "number": 694, + "title": "[Bug] [Lark OAuth] Same-account CLI Wizard authorization can fail with generic `An internal error occurred` after provider approval", + "state": "OPEN", + "url": "https://github.com/ChronoAIProject/NyxID/issues/694", + "labels": [ + "bug" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } + }, "711": { "number": 711, "title": "[Bug] [CLI Wizard] Service creation timeout restores the form without showing an actionable error", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/NyxID/issues/711", "labels": [ "bug" @@ -5032,7 +5295,7 @@ "706": { "number": 706, "title": "[Bug] [CLI Wizard Device Code] Expired device-code flow times out in CLI but leaves a `pending_auth` service", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/NyxID/issues/706", "labels": [ "bug" @@ -5047,7 +5310,7 @@ "695": { "number": 695, "title": "[Bug] [CLI Wizard OAuth] Account-mismatch callback redirects to the browser account's AI Services page instead of showing the mismatch error immediately", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/NyxID/issues/695", "labels": [ "bug" @@ -5058,21 +5321,6 @@ "tracks": [], "tracked_by": [] } - }, - "694": { - "number": 694, - "title": "[Bug] [Lark OAuth] Same-account CLI Wizard authorization can fail with generic `An internal error occurred` after provider approval", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/NyxID/issues/694", - "labels": [ - "bug" - ], - "deps": { - "blocked_by": [], - "blocks": [], - "tracks": [], - "tracked_by": [] - } } } }, @@ -5084,19 +5332,6 @@ "repo": "ChronoAIProject/NyxID" }, "issues": { - "772": { - "number": 772, - "title": "[UX] Explain credential_type=node_managed inline in service show / list", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/NyxID/issues/772", - "labels": [], - "deps": { - "blocked_by": [], - "blocks": [], - "tracks": [], - "tracked_by": [] - } - }, "686": { "number": 686, "title": "[UX] Agent isolation setup lacks a guided flow from key creation to service binding and scope verification", @@ -5135,6 +5370,19 @@ "tracks": [], "tracked_by": [] } + }, + "772": { + "number": 772, + "title": "[UX] Explain credential_type=node_managed inline in service show / list", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/NyxID/issues/772", + "labels": [], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } } } }, @@ -5488,23 +5736,6 @@ "tracked_by": [] } }, - "778": { - "number": 778, - "title": "feat(catalog): replace gcp_service_account with OAuth user-account flow", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/NyxID/issues/778", - "labels": [ - "enhancement", - "todo", - "backend" - ], - "deps": { - "blocked_by": [], - "blocks": [], - "tracks": [], - "tracked_by": [] - } - }, "716": { "number": 716, "title": "feat(catalog): 接入云账单 / Chrono LLM / k8s metrics — 基础设施成本可见性", @@ -5538,6 +5769,23 @@ "tracks": [], "tracked_by": [] } + }, + "778": { + "number": 778, + "title": "feat(catalog): replace gcp_service_account with OAuth user-account flow", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/NyxID/issues/778", + "labels": [ + "enhancement", + "todo", + "backend" + ], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } } } }, @@ -5577,11 +5825,11 @@ "repo": "ChronoAIProject/NyxID" }, "issues": { - "775": { - "number": 775, - "title": "[Doc] CLI surface split: `nyxid node credentials` exists on addon-side runtime, not user-side CLI", + "773": { + "number": 773, + "title": "[Feature] Remote credential injection path for org admins (no SSH-to-node required)", "state": "OPEN", - "url": "https://github.com/ChronoAIProject/NyxID/issues/775", + "url": "https://github.com/ChronoAIProject/NyxID/issues/773", "labels": [], "deps": { "blocked_by": [], @@ -5590,11 +5838,31 @@ "tracked_by": [] } }, - "774": { - "number": 774, - "title": "[Feature] node show should expose connection source IP / last-seen-from for admin debugging", + "769": { + "number": 769, + "title": "[Feature] Org-admin onboarding for shared-node services — friction tracking", "state": "OPEN", - "url": "https://github.com/ChronoAIProject/NyxID/issues/774", + "url": "https://github.com/ChronoAIProject/NyxID/issues/769", + "labels": [], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [ + 770, + 771, + 772, + 773, + 774, + 775 + ], + "tracked_by": [] + } + }, + "775": { + "number": 775, + "title": "[Doc] CLI surface split: `nyxid node credentials` exists on addon-side runtime, not user-side CLI", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/NyxID/issues/775", "labels": [], "deps": { "blocked_by": [], @@ -5603,11 +5871,11 @@ "tracked_by": [] } }, - "773": { - "number": 773, - "title": "[Feature] Remote credential injection path for org admins (no SSH-to-node required)", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/NyxID/issues/773", + "774": { + "number": 774, + "title": "[Feature] node show should expose connection source IP / last-seen-from for admin debugging", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/NyxID/issues/774", "labels": [], "deps": { "blocked_by": [], @@ -5619,7 +5887,7 @@ "771": { "number": 771, "title": "[Feature] Surface stale-node binding when proxy returns node_offline", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/NyxID/issues/771", "labels": [], "deps": { @@ -5632,7 +5900,7 @@ "770": { "number": 770, "title": "[Feature] node-credential push: allow internal target_url for node-side reachability", - "state": "OPEN", + "state": "CLOSED", "url": "https://github.com/ChronoAIProject/NyxID/issues/770", "labels": [], "deps": { @@ -5641,26 +5909,6 @@ "tracks": [], "tracked_by": [] } - }, - "769": { - "number": 769, - "title": "[Feature] Org-admin onboarding for shared-node services — friction tracking", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/NyxID/issues/769", - "labels": [], - "deps": { - "blocked_by": [], - "blocks": [], - "tracks": [ - 770, - 771, - 772, - 773, - 774, - 775 - ], - "tracked_by": [] - } } } }, @@ -5672,19 +5920,6 @@ "repo": "ChronoAIProject/NyxID" }, "issues": { - "766": { - "number": 766, - "title": "竞品观察 · ArmorerLabs/Armorer code-level 对比分析", - "state": "OPEN", - "url": "https://github.com/ChronoAIProject/NyxID/issues/766", - "labels": [], - "deps": { - "blocked_by": [], - "blocks": [], - "tracks": [], - "tracked_by": [] - } - }, "657": { "number": 657, "title": "README v2 redesign proposal — would love input from the dev side", @@ -5723,6 +5958,19 @@ "tracks": [], "tracked_by": [] } + }, + "766": { + "number": 766, + "title": "竞品观察 · ArmorerLabs/Armorer code-level 对比分析", + "state": "CLOSED", + "url": "https://github.com/ChronoAIProject/NyxID/issues/766", + "labels": [], + "deps": { + "blocked_by": [], + "blocks": [], + "tracks": [], + "tracked_by": [] + } } } }, diff --git a/regions.json b/regions.json index 0e16d98..cbd1cce 100644 --- a/regions.json +++ b/regions.json @@ -945,15 +945,15 @@ "zh": "营销 — 预启动预热" }, "desc": { - "en": "Content + positioning that establishes presence before Show HN: README v2 (first-impression anchor), demo brainstorm finalized into demo script + video, lark-cli comparison material, competitive analysis, CDN for asset hosting. Foundation that makes Show HN viable.\n\n\n**GitHub issues** — [Marketing — Prelaunch warmup](https://github.com/ChronoAIProject/NyxID/milestone/16) · 4 open / 0 closed\n\n_Open:_\n- [#766](https://github.com/ChronoAIProject/NyxID/issues/766) 竞品观察 · ArmorerLabs/Armorer code-level 对比分析\n- [#657](https://github.com/ChronoAIProject/NyxID/issues/657) README v2 redesign proposal — would love input from the dev side\n- [#619](https://github.com/ChronoAIProject/NyxID/issues/619) Reference · NyxID Cool Demo Brainstorm v3 (Marketing strategy doc)\n- [#183](https://github.com/ChronoAIProject/NyxID/issues/183) 市场素材:NyxID 相比 lark-cli 直连模式的核心价值\n\n", - "zh": "Show HN 之前建立存在感的内容与定位: README v2 (第一印象锚点), demo 头脑风暴产出脚本 + 视频, lark-cli 对比材料, 竞品分析, 资源 CDN。Show HN 可行性的基础\n\n\n**GitHub issues** — [Marketing — Prelaunch warmup](https://github.com/ChronoAIProject/NyxID/milestone/16) · 4 进行中 / 0 已关闭\n\n_进行中:_\n- [#766](https://github.com/ChronoAIProject/NyxID/issues/766) 竞品观察 · ArmorerLabs/Armorer code-level 对比分析\n- [#657](https://github.com/ChronoAIProject/NyxID/issues/657) README v2 redesign proposal — would love input from the dev side\n- [#619](https://github.com/ChronoAIProject/NyxID/issues/619) Reference · NyxID Cool Demo Brainstorm v3 (Marketing strategy doc)\n- [#183](https://github.com/ChronoAIProject/NyxID/issues/183) 市场素材:NyxID 相比 lark-cli 直连模式的核心价值\n\n" + "en": "Content + positioning that establishes presence before Show HN: README v2 (first-impression anchor), demo brainstorm finalized into demo script + video, lark-cli comparison material, competitive analysis, CDN for asset hosting. Foundation that makes Show HN viable.\n\n\n**GitHub issues** — [Marketing — Prelaunch warmup](https://github.com/ChronoAIProject/NyxID/milestone/16) · 3 open / 1 closed\n\n_Open:_\n- [#657](https://github.com/ChronoAIProject/NyxID/issues/657) README v2 redesign proposal — would love input from the dev side\n- [#619](https://github.com/ChronoAIProject/NyxID/issues/619) Reference · NyxID Cool Demo Brainstorm v3 (Marketing strategy doc)\n- [#183](https://github.com/ChronoAIProject/NyxID/issues/183) 市场素材:NyxID 相比 lark-cli 直连模式的核心价值\n\n_Closed (most recent first):_\n- [#766](https://github.com/ChronoAIProject/NyxID/issues/766) ~~竞品观察 · ArmorerLabs/Armorer code-level 对比分析~~\n", + "zh": "Show HN 之前建立存在感的内容与定位: README v2 (第一印象锚点), demo 头脑风暴产出脚本 + 视频, lark-cli 对比材料, 竞品分析, 资源 CDN。Show HN 可行性的基础\n\n\n**GitHub issues** — [Marketing — Prelaunch warmup](https://github.com/ChronoAIProject/NyxID/milestone/16) · 3 进行中 / 1 已关闭\n\n_进行中:_\n- [#657](https://github.com/ChronoAIProject/NyxID/issues/657) README v2 redesign proposal — would love input from the dev side\n- [#619](https://github.com/ChronoAIProject/NyxID/issues/619) Reference · NyxID Cool Demo Brainstorm v3 (Marketing strategy doc)\n- [#183](https://github.com/ChronoAIProject/NyxID/issues/183) 市场素材:NyxID 相比 lark-cli 直连模式的核心价值\n\n_已关闭 (most recent first):_\n- [#766](https://github.com/ChronoAIProject/NyxID/issues/766) ~~竞品观察 · ArmorerLabs/Armorer code-level 对比分析~~\n" }, "closure": "obligation", "formal": "none", "product": "nyxid", "milestone": "M1", "owner": "kaiweijw", - "issue_count": 4, + "issue_count": 3, "focus": true, "archived": false, "promoted_at": { @@ -1036,15 +1036,15 @@ "zh": "CLI 向导 (交互式 service add)" }, "desc": { - "en": "nyxid service add interactive wizard covering OAuth / device-code / bearer / catalog flows. Heavy investment W18-W20 (10+ bugs closed, e.g. #429 #430 #441 #448 #449 #506 #565 #647 #648 #710). 5 open hardening bugs (#695 OAuth account-mismatch, #706 expired device-code, #710 WSL auto-open, #711 service-creation timeout, #713 cross-OS regression test).\n\n\n**GitHub issues** — [CLI Wizard hardening](https://github.com/ChronoAIProject/NyxID/milestone/9) · 5 open / 0 closed\n\n_Open:_\n- [#713](https://github.com/ChronoAIProject/NyxID/issues/713) [Test] CLI Wizard — Service Add / OAuth / Device Code / Windows WSL Regression\n- [#711](https://github.com/ChronoAIProject/NyxID/issues/711) [Bug] [CLI Wizard] Service creation timeout restores the form without showing an actionable error\n- [#706](https://github.com/ChronoAIProject/NyxID/issues/706) [Bug] [CLI Wizard Device Code] Expired device-code flow times out in CLI but leaves a `pending_auth` service\n- [#695](https://github.com/ChronoAIProject/NyxID/issues/695) [Bug] [CLI Wizard OAuth] Account-mismatch callback redirects to the browser account's AI Services page instead of showing the mismatch error immediately\n- [#694](https://github.com/ChronoAIProject/NyxID/issues/694) [Bug] [Lark OAuth] Same-account CLI Wizard authorization can fail with generic `An internal error occurred` after provider approval\n\n", - "zh": "nyxid service add 交互式向导, 覆盖 OAuth / device-code / bearer / catalog 流程。W18-W20 高频投入 (10+ bug 修复, 含 #429 #430 #441 #448 #449 #506 #565 #647 #648 #710)。5 个未修硬化 bug (#695 OAuth 账号错配 / #706 device-code 过期 / #710 WSL 自动打开 / #711 service 创建超时 / #713 跨 OS 回归测试)\n\n\n**GitHub issues** — [CLI Wizard hardening](https://github.com/ChronoAIProject/NyxID/milestone/9) · 5 进行中 / 0 已关闭\n\n_进行中:_\n- [#713](https://github.com/ChronoAIProject/NyxID/issues/713) [Test] CLI Wizard — Service Add / OAuth / Device Code / Windows WSL Regression\n- [#711](https://github.com/ChronoAIProject/NyxID/issues/711) [Bug] [CLI Wizard] Service creation timeout restores the form without showing an actionable error\n- [#706](https://github.com/ChronoAIProject/NyxID/issues/706) [Bug] [CLI Wizard Device Code] Expired device-code flow times out in CLI but leaves a `pending_auth` service\n- [#695](https://github.com/ChronoAIProject/NyxID/issues/695) [Bug] [CLI Wizard OAuth] Account-mismatch callback redirects to the browser account's AI Services page instead of showing the mismatch error immediately\n- [#694](https://github.com/ChronoAIProject/NyxID/issues/694) [Bug] [Lark OAuth] Same-account CLI Wizard authorization can fail with generic `An internal error occurred` after provider approval\n\n" + "en": "nyxid service add interactive wizard covering OAuth / device-code / bearer / catalog flows. Heavy investment W18-W20 (10+ bugs closed, e.g. #429 #430 #441 #448 #449 #506 #565 #647 #648 #710). 5 open hardening bugs (#695 OAuth account-mismatch, #706 expired device-code, #710 WSL auto-open, #711 service-creation timeout, #713 cross-OS regression test).\n\n\n**GitHub issues** — [CLI Wizard hardening](https://github.com/ChronoAIProject/NyxID/milestone/9) · 2 open / 3 closed\n\n_Open:_\n- [#713](https://github.com/ChronoAIProject/NyxID/issues/713) [Test] CLI Wizard — Service Add / OAuth / Device Code / Windows WSL Regression\n- [#694](https://github.com/ChronoAIProject/NyxID/issues/694) [Bug] [Lark OAuth] Same-account CLI Wizard authorization can fail with generic `An internal error occurred` after provider approval\n\n_Closed (most recent first):_\n- [#711](https://github.com/ChronoAIProject/NyxID/issues/711) ~~[Bug] [CLI Wizard] Service creation timeout restores the form without showing an actionable error~~\n- [#706](https://github.com/ChronoAIProject/NyxID/issues/706) ~~[Bug] [CLI Wizard Device Code] Expired device-code flow times out in CLI but leaves a `pending_auth` service~~\n- [#695](https://github.com/ChronoAIProject/NyxID/issues/695) ~~[Bug] [CLI Wizard OAuth] Account-mismatch callback redirects to the browser account's AI Services page instead of showing the mismatch error immediately~~\n", + "zh": "nyxid service add 交互式向导, 覆盖 OAuth / device-code / bearer / catalog 流程。W18-W20 高频投入 (10+ bug 修复, 含 #429 #430 #441 #448 #449 #506 #565 #647 #648 #710)。5 个未修硬化 bug (#695 OAuth 账号错配 / #706 device-code 过期 / #710 WSL 自动打开 / #711 service 创建超时 / #713 跨 OS 回归测试)\n\n\n**GitHub issues** — [CLI Wizard hardening](https://github.com/ChronoAIProject/NyxID/milestone/9) · 2 进行中 / 3 已关闭\n\n_进行中:_\n- [#713](https://github.com/ChronoAIProject/NyxID/issues/713) [Test] CLI Wizard — Service Add / OAuth / Device Code / Windows WSL Regression\n- [#694](https://github.com/ChronoAIProject/NyxID/issues/694) [Bug] [Lark OAuth] Same-account CLI Wizard authorization can fail with generic `An internal error occurred` after provider approval\n\n_已关闭 (most recent first):_\n- [#711](https://github.com/ChronoAIProject/NyxID/issues/711) ~~[Bug] [CLI Wizard] Service creation timeout restores the form without showing an actionable error~~\n- [#706](https://github.com/ChronoAIProject/NyxID/issues/706) ~~[Bug] [CLI Wizard Device Code] Expired device-code flow times out in CLI but leaves a `pending_auth` service~~\n- [#695](https://github.com/ChronoAIProject/NyxID/issues/695) ~~[Bug] [CLI Wizard OAuth] Account-mismatch callback redirects to the browser account's AI Services page instead of showing the mismatch error immediately~~\n" }, "closure": "public", "formal": "checked", "product": "nyxid", "milestone": "M1", "owner": "ctkm-aelf", - "issue_count": 5, + "issue_count": 2, "focus": true, "archived": false, "promoted_at": { @@ -1065,15 +1065,15 @@ "zh": "UX / 信息架构重做" }, "desc": { - "en": "Information-architecture redesign of dashboard, key detail, and agent isolation flows. Open: #684 (first-time AI service flow), #685 (key detail progressive IA), #686 (agent isolation guided flow), #772 (explain credential_type=node_managed inline). Closed W20: #687 dashboard nav, #688 consistency + responsive standards.\n\n\n**GitHub issues** — [UX Redesign](https://github.com/ChronoAIProject/NyxID/milestone/10) · 4 open / 0 closed\n\n_Open:_\n- [#772](https://github.com/ChronoAIProject/NyxID/issues/772) [UX] Explain credential_type=node_managed inline in service show / list\n- [#686](https://github.com/ChronoAIProject/NyxID/issues/686) [UX] Agent isolation setup lacks a guided flow from key creation to service binding and scope verification\n- [#685](https://github.com/ChronoAIProject/NyxID/issues/685) [UX] Key detail page is overloaded and needs progressive information architecture\n- [#684](https://github.com/ChronoAIProject/NyxID/issues/684) [UX] First-time AI service setup flow is fragmented and does not clearly lead users to first proxy success\n\n", - "zh": "Dashboard / Key 详情 / Agent 隔离流程的信息架构重做。未修: #684 (首次 AI service 流程), #685 (Key 详情渐进式 IA), #686 (Agent 隔离引导), #772 (在 service show/list 内联解释 credential_type=node_managed)。W20 已修: #687 Dashboard 导航, #688 一致性 + 响应式\n\n\n**GitHub issues** — [UX Redesign](https://github.com/ChronoAIProject/NyxID/milestone/10) · 4 进行中 / 0 已关闭\n\n_进行中:_\n- [#772](https://github.com/ChronoAIProject/NyxID/issues/772) [UX] Explain credential_type=node_managed inline in service show / list\n- [#686](https://github.com/ChronoAIProject/NyxID/issues/686) [UX] Agent isolation setup lacks a guided flow from key creation to service binding and scope verification\n- [#685](https://github.com/ChronoAIProject/NyxID/issues/685) [UX] Key detail page is overloaded and needs progressive information architecture\n- [#684](https://github.com/ChronoAIProject/NyxID/issues/684) [UX] First-time AI service setup flow is fragmented and does not clearly lead users to first proxy success\n\n" + "en": "Information-architecture redesign of dashboard, key detail, and agent isolation flows. Open: #684 (first-time AI service flow), #685 (key detail progressive IA), #686 (agent isolation guided flow), #772 (explain credential_type=node_managed inline). Closed W20: #687 dashboard nav, #688 consistency + responsive standards.\n\n\n**GitHub issues** — [UX Redesign](https://github.com/ChronoAIProject/NyxID/milestone/10) · 3 open / 1 closed\n\n_Open:_\n- [#686](https://github.com/ChronoAIProject/NyxID/issues/686) [UX] Agent isolation setup lacks a guided flow from key creation to service binding and scope verification\n- [#685](https://github.com/ChronoAIProject/NyxID/issues/685) [UX] Key detail page is overloaded and needs progressive information architecture\n- [#684](https://github.com/ChronoAIProject/NyxID/issues/684) [UX] First-time AI service setup flow is fragmented and does not clearly lead users to first proxy success\n\n_Closed (most recent first):_\n- [#772](https://github.com/ChronoAIProject/NyxID/issues/772) ~~[UX] Explain credential_type=node_managed inline in service show / list~~\n", + "zh": "Dashboard / Key 详情 / Agent 隔离流程的信息架构重做。未修: #684 (首次 AI service 流程), #685 (Key 详情渐进式 IA), #686 (Agent 隔离引导), #772 (在 service show/list 内联解释 credential_type=node_managed)。W20 已修: #687 Dashboard 导航, #688 一致性 + 响应式\n\n\n**GitHub issues** — [UX Redesign](https://github.com/ChronoAIProject/NyxID/milestone/10) · 3 进行中 / 1 已关闭\n\n_进行中:_\n- [#686](https://github.com/ChronoAIProject/NyxID/issues/686) [UX] Agent isolation setup lacks a guided flow from key creation to service binding and scope verification\n- [#685](https://github.com/ChronoAIProject/NyxID/issues/685) [UX] Key detail page is overloaded and needs progressive information architecture\n- [#684](https://github.com/ChronoAIProject/NyxID/issues/684) [UX] First-time AI service setup flow is fragmented and does not clearly lead users to first proxy success\n\n_已关闭 (most recent first):_\n- [#772](https://github.com/ChronoAIProject/NyxID/issues/772) ~~[UX] Explain credential_type=node_managed inline in service show / list~~\n" }, "closure": "obligation", "formal": "none", "product": "nyxid", "milestone": "M1", "owner": "dannick-aelf", - "issue_count": 4, + "issue_count": 3, "focus": true, "archived": false, "promoted_at": { @@ -1182,15 +1182,15 @@ "zh": "内部数据源 (admin service 目录)" }, "desc": { - "en": "Make company-internal data queryable via NyxID admin services. Without this, CEO PARK/KILL calls for products like GodGPT have no real cost baseline. Parent #352 covers all sources; sub-epic #716 split out the cost-visibility track.\n\n**Depends on CLI Wizard hardening**: the intended `nyxid service add` flow for registering new admin services hits the same wizard bugs (#695 OAuth account-mismatch, #706 device-code timeout, #711 service-creation timeout, #694 Lark generic error). Until those land, users have to fall back to manual command entry — that's not the UX we want for the catalog rollout.\n\n\n**GitHub issues** — [Internal Datasources](https://github.com/ChronoAIProject/NyxID/milestone/12) · 5 open / 0 closed\n\n_Open:_\n- [#780](https://github.com/ChronoAIProject/NyxID/issues/780) feat(catalog): integrate chronoai-platform k8s metrics (Prometheus / k8s API)\n- [#779](https://github.com/ChronoAIProject/NyxID/issues/779) feat(catalog): integrate Chrono LLM Gateway admin API (llm.aelf.dev)\n- [#778](https://github.com/ChronoAIProject/NyxID/issues/778) feat(catalog): replace gcp_service_account with OAuth user-account flow\n- [#716](https://github.com/ChronoAIProject/NyxID/issues/716) feat(catalog): 接入云账单 / Chrono LLM / k8s metrics — 基础设施成本可见性\n- [#352](https://github.com/ChronoAIProject/NyxID/issues/352) feat: 接入公司全部数据源到 NyxID scope — 全员可通过 NyxID 访问公司数据\n\n", - "zh": "让公司内部数据可通过 NyxID admin service 查询。否则 CEO 对 GodGPT 等产品的 PARK/KILL 决策没有真实成本基线。父 issue #352 覆盖全部数据源; 子 epic #716 拆出成本可见性子线\n\n**依赖 CLI Wizard 硬化**: 注册新 admin service 的标准流程是 `nyxid service add`, 这条路径正好踩到 wizard 的 bug (#695 OAuth 账号错配, #706 device-code 超时, #711 service 创建超时, #694 Lark 通用错)。修复前用户只能 fallback 到手动敲命令 — 不是 catalog rollout 想要的 UX。\n\n\n**GitHub issues** — [Internal Datasources](https://github.com/ChronoAIProject/NyxID/milestone/12) · 5 进行中 / 0 已关闭\n\n_进行中:_\n- [#780](https://github.com/ChronoAIProject/NyxID/issues/780) feat(catalog): integrate chronoai-platform k8s metrics (Prometheus / k8s API)\n- [#779](https://github.com/ChronoAIProject/NyxID/issues/779) feat(catalog): integrate Chrono LLM Gateway admin API (llm.aelf.dev)\n- [#778](https://github.com/ChronoAIProject/NyxID/issues/778) feat(catalog): replace gcp_service_account with OAuth user-account flow\n- [#716](https://github.com/ChronoAIProject/NyxID/issues/716) feat(catalog): 接入云账单 / Chrono LLM / k8s metrics — 基础设施成本可见性\n- [#352](https://github.com/ChronoAIProject/NyxID/issues/352) feat: 接入公司全部数据源到 NyxID scope — 全员可通过 NyxID 访问公司数据\n\n" + "en": "Make company-internal data queryable via NyxID admin services. Without this, CEO PARK/KILL calls for products like GodGPT have no real cost baseline. Parent #352 covers all sources; sub-epic #716 split out the cost-visibility track.\n\n**Depends on CLI Wizard hardening**: the intended `nyxid service add` flow for registering new admin services hits the same wizard bugs (#695 OAuth account-mismatch, #706 device-code timeout, #711 service-creation timeout, #694 Lark generic error). Until those land, users have to fall back to manual command entry — that's not the UX we want for the catalog rollout.\n\n\n**GitHub issues** — [Internal Datasources](https://github.com/ChronoAIProject/NyxID/milestone/12) · 4 open / 1 closed\n\n_Open:_\n- [#780](https://github.com/ChronoAIProject/NyxID/issues/780) feat(catalog): integrate chronoai-platform k8s metrics (Prometheus / k8s API)\n- [#779](https://github.com/ChronoAIProject/NyxID/issues/779) feat(catalog): integrate Chrono LLM Gateway admin API (llm.aelf.dev)\n- [#716](https://github.com/ChronoAIProject/NyxID/issues/716) feat(catalog): 接入云账单 / Chrono LLM / k8s metrics — 基础设施成本可见性\n- [#352](https://github.com/ChronoAIProject/NyxID/issues/352) feat: 接入公司全部数据源到 NyxID scope — 全员可通过 NyxID 访问公司数据\n\n_Closed (most recent first):_\n- [#778](https://github.com/ChronoAIProject/NyxID/issues/778) ~~feat(catalog): replace gcp_service_account with OAuth user-account flow~~\n", + "zh": "让公司内部数据可通过 NyxID admin service 查询。否则 CEO 对 GodGPT 等产品的 PARK/KILL 决策没有真实成本基线。父 issue #352 覆盖全部数据源; 子 epic #716 拆出成本可见性子线\n\n**依赖 CLI Wizard 硬化**: 注册新 admin service 的标准流程是 `nyxid service add`, 这条路径正好踩到 wizard 的 bug (#695 OAuth 账号错配, #706 device-code 超时, #711 service 创建超时, #694 Lark 通用错)。修复前用户只能 fallback 到手动敲命令 — 不是 catalog rollout 想要的 UX。\n\n\n**GitHub issues** — [Internal Datasources](https://github.com/ChronoAIProject/NyxID/milestone/12) · 4 进行中 / 1 已关闭\n\n_进行中:_\n- [#780](https://github.com/ChronoAIProject/NyxID/issues/780) feat(catalog): integrate chronoai-platform k8s metrics (Prometheus / k8s API)\n- [#779](https://github.com/ChronoAIProject/NyxID/issues/779) feat(catalog): integrate Chrono LLM Gateway admin API (llm.aelf.dev)\n- [#716](https://github.com/ChronoAIProject/NyxID/issues/716) feat(catalog): 接入云账单 / Chrono LLM / k8s metrics — 基础设施成本可见性\n- [#352](https://github.com/ChronoAIProject/NyxID/issues/352) feat: 接入公司全部数据源到 NyxID scope — 全员可通过 NyxID 访问公司数据\n\n_已关闭 (most recent first):_\n- [#778](https://github.com/ChronoAIProject/NyxID/issues/778) ~~feat(catalog): replace gcp_service_account with OAuth user-account flow~~\n" }, "closure": "obligation", "formal": "none", "product": "nyxid", "milestone": "M1+", "owner": "kaiweijw", - "issue_count": 5, + "issue_count": 4, "focus": true, "archived": false, "promoted_at": { @@ -1243,15 +1243,15 @@ "zh": "组织托管 Node (凭证推送)" }, "desc": { - "en": "Org admins operating shared NyxID nodes at scale: shared-node onboarding friction tracking (#769), node-credential push with internal target_url for node-side reachability (#770), surface stale-node binding on node_offline (#771), inline node_managed credential type explanation (#772), remote credential injection path so admins don't need SSH-to-node (#773), node show exposing source IP / last-seen for admin debug (#774), CLI surface split docs (#775). 7 issues seeded 2026-05-15 by loning.\n\n\n**GitHub issues** — [Org-Managed Nodes](https://github.com/ChronoAIProject/NyxID/milestone/11) · 6 open / 0 closed\n\n_Open:_\n- [#775](https://github.com/ChronoAIProject/NyxID/issues/775) [Doc] CLI surface split: `nyxid node credentials` exists on addon-side runtime, not user-side CLI\n- [#774](https://github.com/ChronoAIProject/NyxID/issues/774) [Feature] node show should expose connection source IP / last-seen-from for admin debugging\n- [#773](https://github.com/ChronoAIProject/NyxID/issues/773) [Feature] Remote credential injection path for org admins (no SSH-to-node required)\n- [#771](https://github.com/ChronoAIProject/NyxID/issues/771) [Feature] Surface stale-node binding when proxy returns node_offline\n- [#770](https://github.com/ChronoAIProject/NyxID/issues/770) [Feature] node-credential push: allow internal target_url for node-side reachability\n- [#769](https://github.com/ChronoAIProject/NyxID/issues/769) [Feature] Org-admin onboarding for shared-node services — friction tracking\n\n", - "zh": "组织管理员在 org 规模下运营共享 NyxID node: 共享 node 上手摩擦追踪 (#769), node-credential push 支持 internal target_url 节点侧可达 (#770), node_offline 时显式 stale-node 绑定提示 (#771), 在 service show/list 内联解释 node_managed (#772), 远程 credential injection 让 admin 不需 SSH 到 node (#773), node show 暴露源 IP / 最后连接时间 (#774), CLI surface 拆分文档 (#775)。2026-05-15 由 loning 开 7 个 issue\n\n\n**GitHub issues** — [Org-Managed Nodes](https://github.com/ChronoAIProject/NyxID/milestone/11) · 6 进行中 / 0 已关闭\n\n_进行中:_\n- [#775](https://github.com/ChronoAIProject/NyxID/issues/775) [Doc] CLI surface split: `nyxid node credentials` exists on addon-side runtime, not user-side CLI\n- [#774](https://github.com/ChronoAIProject/NyxID/issues/774) [Feature] node show should expose connection source IP / last-seen-from for admin debugging\n- [#773](https://github.com/ChronoAIProject/NyxID/issues/773) [Feature] Remote credential injection path for org admins (no SSH-to-node required)\n- [#771](https://github.com/ChronoAIProject/NyxID/issues/771) [Feature] Surface stale-node binding when proxy returns node_offline\n- [#770](https://github.com/ChronoAIProject/NyxID/issues/770) [Feature] node-credential push: allow internal target_url for node-side reachability\n- [#769](https://github.com/ChronoAIProject/NyxID/issues/769) [Feature] Org-admin onboarding for shared-node services — friction tracking\n\n" + "en": "Org admins operating shared NyxID nodes at scale: shared-node onboarding friction tracking (#769), node-credential push with internal target_url for node-side reachability (#770), surface stale-node binding on node_offline (#771), inline node_managed credential type explanation (#772), remote credential injection path so admins don't need SSH-to-node (#773), node show exposing source IP / last-seen for admin debug (#774), CLI surface split docs (#775). 7 issues seeded 2026-05-15 by loning.\n\n\n**GitHub issues** — [Org-Managed Nodes](https://github.com/ChronoAIProject/NyxID/milestone/11) · 2 open / 4 closed\n\n_Open:_\n- [#773](https://github.com/ChronoAIProject/NyxID/issues/773) [Feature] Remote credential injection path for org admins (no SSH-to-node required)\n- [#769](https://github.com/ChronoAIProject/NyxID/issues/769) [Feature] Org-admin onboarding for shared-node services — friction tracking\n\n_Closed (most recent first):_\n- [#775](https://github.com/ChronoAIProject/NyxID/issues/775) ~~[Doc] CLI surface split: `nyxid node credentials` exists on addon-side runtime, not user-side CLI~~\n- [#774](https://github.com/ChronoAIProject/NyxID/issues/774) ~~[Feature] node show should expose connection source IP / last-seen-from for admin debugging~~\n- [#771](https://github.com/ChronoAIProject/NyxID/issues/771) ~~[Feature] Surface stale-node binding when proxy returns node_offline~~\n- [#770](https://github.com/ChronoAIProject/NyxID/issues/770) ~~[Feature] node-credential push: allow internal target_url for node-side reachability~~\n", + "zh": "组织管理员在 org 规模下运营共享 NyxID node: 共享 node 上手摩擦追踪 (#769), node-credential push 支持 internal target_url 节点侧可达 (#770), node_offline 时显式 stale-node 绑定提示 (#771), 在 service show/list 内联解释 node_managed (#772), 远程 credential injection 让 admin 不需 SSH 到 node (#773), node show 暴露源 IP / 最后连接时间 (#774), CLI surface 拆分文档 (#775)。2026-05-15 由 loning 开 7 个 issue\n\n\n**GitHub issues** — [Org-Managed Nodes](https://github.com/ChronoAIProject/NyxID/milestone/11) · 2 进行中 / 4 已关闭\n\n_进行中:_\n- [#773](https://github.com/ChronoAIProject/NyxID/issues/773) [Feature] Remote credential injection path for org admins (no SSH-to-node required)\n- [#769](https://github.com/ChronoAIProject/NyxID/issues/769) [Feature] Org-admin onboarding for shared-node services — friction tracking\n\n_已关闭 (most recent first):_\n- [#775](https://github.com/ChronoAIProject/NyxID/issues/775) ~~[Doc] CLI surface split: `nyxid node credentials` exists on addon-side runtime, not user-side CLI~~\n- [#774](https://github.com/ChronoAIProject/NyxID/issues/774) ~~[Feature] node show should expose connection source IP / last-seen-from for admin debugging~~\n- [#771](https://github.com/ChronoAIProject/NyxID/issues/771) ~~[Feature] Surface stale-node binding when proxy returns node_offline~~\n- [#770](https://github.com/ChronoAIProject/NyxID/issues/770) ~~[Feature] node-credential push: allow internal target_url for node-side reachability~~\n" }, "closure": "seed", "formal": "none", "product": "nyxid", "milestone": "M1+", "owner": "kaiweijw", - "issue_count": 6, + "issue_count": 2, "focus": true, "archived": false, "promoted_at": { @@ -1659,8 +1659,8 @@ "zh": "M1 — Skill 全生命周期核心" }, "desc": { - "en": "Agent-facing skill lifecycle: search → pull → install → execute → build → upload → share. MCP-native discovery, versioning + version history, sandboxed execution (Playground), local dev with hot reload, NyxID-services pages, system-skills auto-generation, organization-scope visibility. **Outcome**: any AI agent can do the full lifecycle through one API surface.\n\n\n**GitHub issues** — [M1 — Skill Lifecycle Core](https://github.com/ChronoAIProject/Ornn/milestone/15) · 7 open / 29 closed\n\n_Open:_\n- [#565](https://github.com/ChronoAIProject/Ornn/issues/565) [Bug] [Skill Edit] Owner updating an existing skill package is blocked by CORS\n- [#564](https://github.com/ChronoAIProject/Ornn/issues/564) [Bug] [Playground] Missing skill still opens an interactive Playground page after API returns 404\n- [#531](https://github.com/ChronoAIProject/Ornn/issues/531) [Bug] [Playground Sandbox] Installed CLI state is not preserved across tool calls\n- [#530](https://github.com/ChronoAIProject/Ornn/issues/530) [Bug] [Playground Sandbox] nyxid skill tool execution returns 500 internal_error\n- [#529](https://github.com/ChronoAIProject/Ornn/issues/529) [Bug] [GitHub Import] Skip validation still fails on Ornn frontmatter validation\n- [#528](https://github.com/ChronoAIProject/Ornn/issues/528) [Bug] [Skill Creation] Saving AI-generated or guided skills fails with CORS error\n- [#243](https://github.com/ChronoAIProject/Ornn/issues/243) [Feature] Service-binding agent prompt — encourage agents to promote repeated service operations into a reusable Ornn skill bound to that service\n\n_Closed (most recent first):_\n- [#562](https://github.com/ChronoAIProject/Ornn/issues/562) ~~[Bug] [Playground] nyxid LIST CAPABILITIES response is delayed and follow-up command is not executed~~\n- [#72](https://github.com/ChronoAIProject/Ornn/issues/72) ~~[CI/CD] Epic 4: Ops, testing, observability~~\n- [#71](https://github.com/ChronoAIProject/Ornn/issues/71) ~~[Feature] Epic 3: Frontend modernization~~\n- [#70](https://github.com/ChronoAIProject/Ornn/issues/70) ~~[Feature] Epic 2 prep: NyxID permission catalog rollout (cross-team)~~\n- [#69](https://github.com/ChronoAIProject/Ornn/issues/69) ~~[Feature] Epic 2 prep: Reserved-verb DB audit~~\n- [#68](https://github.com/ChronoAIProject/Ornn/issues/68) ~~[Feature] Epic 2: /api/v1/ cut (breaking external contract)~~\n- [#67](https://github.com/ChronoAIProject/Ornn/issues/67) ~~Epic 1 [first step]: Topic domain teardown~~\n- [#66](https://github.com/ChronoAIProject/Ornn/issues/66) ~~Epic 1: Architecture refactor (no external API change)~~\n- [#65](https://github.com/ChronoAIProject/Ornn/issues/65) ~~Epic 0: Convention freeze (foundations)~~\n- [#64](https://github.com/ChronoAIProject/Ornn/issues/64) ~~[Feature] API endpoint standardization & refactor (prep for Ornn Manual v1)~~\n- [#56](https://github.com/ChronoAIProject/Ornn/issues/56) ~~Skill Topics: group skills under named topics, with API CRUD~~\n- [#44](https://github.com/ChronoAIProject/Ornn/issues/44) ~~[M1] NyxID Services pages: My Services + Admin Services with skill generation~~\n- [#43](https://github.com/ChronoAIProject/Ornn/issues/43) ~~[M1] System Skills: auto-generate skills from NyxID service catalog~~\n- [#40](https://github.com/ChronoAIProject/Ornn/issues/40) ~~[Docs] Move docs to frontend static build, remove /api/docs backend routes~~\n- [#28](https://github.com/ChronoAIProject/Ornn/issues/28) ~~[M1] MCP-native skill discovery~~\n- [#27](https://github.com/ChronoAIProject/Ornn/issues/27) ~~[M1] Local dev server with hot-reload for skill authoring~~\n- [#25](https://github.com/ChronoAIProject/Ornn/issues/25) ~~[M1] Skill versioning & version history~~\n- [#24](https://github.com/ChronoAIProject/Ornn/issues/24) ~~[Feature] End-to-end skill lifecycle: build -> search -> pull -> execute~~\n- [#23](https://github.com/ChronoAIProject/Ornn/issues/23) ~~[M1] API route refactor: merge /api/web + /api/agent into unified /api~~\n- [#12](https://github.com/ChronoAIProject/Ornn/issues/12) ~~feat: daily-briefing skill — 移植 /daily 逻辑为 Ornn skill~~\n- [#11](https://github.com/ChronoAIProject/Ornn/issues/11) ~~feat: Skill Registry API — supply skill definitions + metadata to Aevatar~~\n- [#9](https://github.com/ChronoAIProject/Ornn/issues/9) ~~[CI/CD] CI/CD pipeline — 自动测试 + 部署~~\n- [#8](https://github.com/ChronoAIProject/Ornn/issues/8) ~~feat: Organization scope skills — 支持公司/团队级共享 skills~~\n- [#7](https://github.com/ChronoAIProject/Ornn/issues/7) ~~Skill page should provide a copyable install URL for LLMs~~\n- [#6](https://github.com/ChronoAIProject/Ornn/issues/6) ~~[Bug] Ornn authoring is not usable from the Nyx CLI / proxy path and the required auth boundary is unclear~~\n- _… and 4 more closed_\n", - "zh": "面向 agent 的 skill 全生命周期: 搜索 → 拉取 → 安装 → 执行 → 构建 → 上传 → 分享。MCP 原生发现 / 版本化 / 版本历史 / sandbox 执行 (Playground) / 本地热重载 / NyxID services 页 / system skills 自动生成 / 组织级可见性。**产出**: 任何 AI agent 都能通过一个 API surface 完成全生命周期\n\n\n**GitHub issues** — [M1 — Skill Lifecycle Core](https://github.com/ChronoAIProject/Ornn/milestone/15) · 7 进行中 / 29 已关闭\n\n_进行中:_\n- [#565](https://github.com/ChronoAIProject/Ornn/issues/565) [Bug] [Skill Edit] Owner updating an existing skill package is blocked by CORS\n- [#564](https://github.com/ChronoAIProject/Ornn/issues/564) [Bug] [Playground] Missing skill still opens an interactive Playground page after API returns 404\n- [#531](https://github.com/ChronoAIProject/Ornn/issues/531) [Bug] [Playground Sandbox] Installed CLI state is not preserved across tool calls\n- [#530](https://github.com/ChronoAIProject/Ornn/issues/530) [Bug] [Playground Sandbox] nyxid skill tool execution returns 500 internal_error\n- [#529](https://github.com/ChronoAIProject/Ornn/issues/529) [Bug] [GitHub Import] Skip validation still fails on Ornn frontmatter validation\n- [#528](https://github.com/ChronoAIProject/Ornn/issues/528) [Bug] [Skill Creation] Saving AI-generated or guided skills fails with CORS error\n- [#243](https://github.com/ChronoAIProject/Ornn/issues/243) [Feature] Service-binding agent prompt — encourage agents to promote repeated service operations into a reusable Ornn skill bound to that service\n\n_已关闭 (most recent first):_\n- [#562](https://github.com/ChronoAIProject/Ornn/issues/562) ~~[Bug] [Playground] nyxid LIST CAPABILITIES response is delayed and follow-up command is not executed~~\n- [#72](https://github.com/ChronoAIProject/Ornn/issues/72) ~~[CI/CD] Epic 4: Ops, testing, observability~~\n- [#71](https://github.com/ChronoAIProject/Ornn/issues/71) ~~[Feature] Epic 3: Frontend modernization~~\n- [#70](https://github.com/ChronoAIProject/Ornn/issues/70) ~~[Feature] Epic 2 prep: NyxID permission catalog rollout (cross-team)~~\n- [#69](https://github.com/ChronoAIProject/Ornn/issues/69) ~~[Feature] Epic 2 prep: Reserved-verb DB audit~~\n- [#68](https://github.com/ChronoAIProject/Ornn/issues/68) ~~[Feature] Epic 2: /api/v1/ cut (breaking external contract)~~\n- [#67](https://github.com/ChronoAIProject/Ornn/issues/67) ~~Epic 1 [first step]: Topic domain teardown~~\n- [#66](https://github.com/ChronoAIProject/Ornn/issues/66) ~~Epic 1: Architecture refactor (no external API change)~~\n- [#65](https://github.com/ChronoAIProject/Ornn/issues/65) ~~Epic 0: Convention freeze (foundations)~~\n- [#64](https://github.com/ChronoAIProject/Ornn/issues/64) ~~[Feature] API endpoint standardization & refactor (prep for Ornn Manual v1)~~\n- [#56](https://github.com/ChronoAIProject/Ornn/issues/56) ~~Skill Topics: group skills under named topics, with API CRUD~~\n- [#44](https://github.com/ChronoAIProject/Ornn/issues/44) ~~[M1] NyxID Services pages: My Services + Admin Services with skill generation~~\n- [#43](https://github.com/ChronoAIProject/Ornn/issues/43) ~~[M1] System Skills: auto-generate skills from NyxID service catalog~~\n- [#40](https://github.com/ChronoAIProject/Ornn/issues/40) ~~[Docs] Move docs to frontend static build, remove /api/docs backend routes~~\n- [#28](https://github.com/ChronoAIProject/Ornn/issues/28) ~~[M1] MCP-native skill discovery~~\n- [#27](https://github.com/ChronoAIProject/Ornn/issues/27) ~~[M1] Local dev server with hot-reload for skill authoring~~\n- [#25](https://github.com/ChronoAIProject/Ornn/issues/25) ~~[M1] Skill versioning & version history~~\n- [#24](https://github.com/ChronoAIProject/Ornn/issues/24) ~~[Feature] End-to-end skill lifecycle: build -> search -> pull -> execute~~\n- [#23](https://github.com/ChronoAIProject/Ornn/issues/23) ~~[M1] API route refactor: merge /api/web + /api/agent into unified /api~~\n- [#12](https://github.com/ChronoAIProject/Ornn/issues/12) ~~feat: daily-briefing skill — 移植 /daily 逻辑为 Ornn skill~~\n- [#11](https://github.com/ChronoAIProject/Ornn/issues/11) ~~feat: Skill Registry API — supply skill definitions + metadata to Aevatar~~\n- [#9](https://github.com/ChronoAIProject/Ornn/issues/9) ~~[CI/CD] CI/CD pipeline — 自动测试 + 部署~~\n- [#8](https://github.com/ChronoAIProject/Ornn/issues/8) ~~feat: Organization scope skills — 支持公司/团队级共享 skills~~\n- [#7](https://github.com/ChronoAIProject/Ornn/issues/7) ~~Skill page should provide a copyable install URL for LLMs~~\n- [#6](https://github.com/ChronoAIProject/Ornn/issues/6) ~~[Bug] Ornn authoring is not usable from the Nyx CLI / proxy path and the required auth boundary is unclear~~\n- _… and 4 more closed_\n" + "en": "Agent-facing skill lifecycle: search → pull → install → execute → build → upload → share. MCP-native discovery, versioning + version history, sandboxed execution (Playground), local dev with hot reload, NyxID-services pages, system-skills auto-generation, organization-scope visibility. **Outcome**: any AI agent can do the full lifecycle through one API surface.\n\n\n**GitHub issues** — [M1 — Skill Lifecycle Core](https://github.com/ChronoAIProject/Ornn/milestone/15) · 3 open / 33 closed\n\n_Open:_\n- [#531](https://github.com/ChronoAIProject/Ornn/issues/531) [Bug] [Playground Sandbox] Installed CLI state is not preserved across tool calls\n- [#530](https://github.com/ChronoAIProject/Ornn/issues/530) [Bug] [Playground Sandbox] nyxid skill tool execution returns 500 internal_error\n- [#243](https://github.com/ChronoAIProject/Ornn/issues/243) [Feature] Service-binding agent prompt — encourage agents to promote repeated service operations into a reusable Ornn skill bound to that service\n\n_Closed (most recent first):_\n- [#565](https://github.com/ChronoAIProject/Ornn/issues/565) ~~[Bug] [Skill Edit] Owner updating an existing skill package is blocked by CORS~~\n- [#564](https://github.com/ChronoAIProject/Ornn/issues/564) ~~[Bug] [Playground] Missing skill still opens an interactive Playground page after API returns 404~~\n- [#562](https://github.com/ChronoAIProject/Ornn/issues/562) ~~[Bug] [Playground] nyxid LIST CAPABILITIES response is delayed and follow-up command is not executed~~\n- [#529](https://github.com/ChronoAIProject/Ornn/issues/529) ~~[Bug] [GitHub Import] Skip validation still fails on Ornn frontmatter validation~~\n- [#528](https://github.com/ChronoAIProject/Ornn/issues/528) ~~[Bug] [Skill Creation] Saving AI-generated or guided skills fails with CORS error~~\n- [#72](https://github.com/ChronoAIProject/Ornn/issues/72) ~~[CI/CD] Epic 4: Ops, testing, observability~~\n- [#71](https://github.com/ChronoAIProject/Ornn/issues/71) ~~[Feature] Epic 3: Frontend modernization~~\n- [#70](https://github.com/ChronoAIProject/Ornn/issues/70) ~~[Feature] Epic 2 prep: NyxID permission catalog rollout (cross-team)~~\n- [#69](https://github.com/ChronoAIProject/Ornn/issues/69) ~~[Feature] Epic 2 prep: Reserved-verb DB audit~~\n- [#68](https://github.com/ChronoAIProject/Ornn/issues/68) ~~[Feature] Epic 2: /api/v1/ cut (breaking external contract)~~\n- [#67](https://github.com/ChronoAIProject/Ornn/issues/67) ~~Epic 1 [first step]: Topic domain teardown~~\n- [#66](https://github.com/ChronoAIProject/Ornn/issues/66) ~~Epic 1: Architecture refactor (no external API change)~~\n- [#65](https://github.com/ChronoAIProject/Ornn/issues/65) ~~Epic 0: Convention freeze (foundations)~~\n- [#64](https://github.com/ChronoAIProject/Ornn/issues/64) ~~[Feature] API endpoint standardization & refactor (prep for Ornn Manual v1)~~\n- [#56](https://github.com/ChronoAIProject/Ornn/issues/56) ~~Skill Topics: group skills under named topics, with API CRUD~~\n- [#44](https://github.com/ChronoAIProject/Ornn/issues/44) ~~[M1] NyxID Services pages: My Services + Admin Services with skill generation~~\n- [#43](https://github.com/ChronoAIProject/Ornn/issues/43) ~~[M1] System Skills: auto-generate skills from NyxID service catalog~~\n- [#40](https://github.com/ChronoAIProject/Ornn/issues/40) ~~[Docs] Move docs to frontend static build, remove /api/docs backend routes~~\n- [#28](https://github.com/ChronoAIProject/Ornn/issues/28) ~~[M1] MCP-native skill discovery~~\n- [#27](https://github.com/ChronoAIProject/Ornn/issues/27) ~~[M1] Local dev server with hot-reload for skill authoring~~\n- [#25](https://github.com/ChronoAIProject/Ornn/issues/25) ~~[M1] Skill versioning & version history~~\n- [#24](https://github.com/ChronoAIProject/Ornn/issues/24) ~~[Feature] End-to-end skill lifecycle: build -> search -> pull -> execute~~\n- [#23](https://github.com/ChronoAIProject/Ornn/issues/23) ~~[M1] API route refactor: merge /api/web + /api/agent into unified /api~~\n- [#12](https://github.com/ChronoAIProject/Ornn/issues/12) ~~feat: daily-briefing skill — 移植 /daily 逻辑为 Ornn skill~~\n- [#11](https://github.com/ChronoAIProject/Ornn/issues/11) ~~feat: Skill Registry API — supply skill definitions + metadata to Aevatar~~\n- _… and 8 more closed_\n", + "zh": "面向 agent 的 skill 全生命周期: 搜索 → 拉取 → 安装 → 执行 → 构建 → 上传 → 分享。MCP 原生发现 / 版本化 / 版本历史 / sandbox 执行 (Playground) / 本地热重载 / NyxID services 页 / system skills 自动生成 / 组织级可见性。**产出**: 任何 AI agent 都能通过一个 API surface 完成全生命周期\n\n\n**GitHub issues** — [M1 — Skill Lifecycle Core](https://github.com/ChronoAIProject/Ornn/milestone/15) · 3 进行中 / 33 已关闭\n\n_进行中:_\n- [#531](https://github.com/ChronoAIProject/Ornn/issues/531) [Bug] [Playground Sandbox] Installed CLI state is not preserved across tool calls\n- [#530](https://github.com/ChronoAIProject/Ornn/issues/530) [Bug] [Playground Sandbox] nyxid skill tool execution returns 500 internal_error\n- [#243](https://github.com/ChronoAIProject/Ornn/issues/243) [Feature] Service-binding agent prompt — encourage agents to promote repeated service operations into a reusable Ornn skill bound to that service\n\n_已关闭 (most recent first):_\n- [#565](https://github.com/ChronoAIProject/Ornn/issues/565) ~~[Bug] [Skill Edit] Owner updating an existing skill package is blocked by CORS~~\n- [#564](https://github.com/ChronoAIProject/Ornn/issues/564) ~~[Bug] [Playground] Missing skill still opens an interactive Playground page after API returns 404~~\n- [#562](https://github.com/ChronoAIProject/Ornn/issues/562) ~~[Bug] [Playground] nyxid LIST CAPABILITIES response is delayed and follow-up command is not executed~~\n- [#529](https://github.com/ChronoAIProject/Ornn/issues/529) ~~[Bug] [GitHub Import] Skip validation still fails on Ornn frontmatter validation~~\n- [#528](https://github.com/ChronoAIProject/Ornn/issues/528) ~~[Bug] [Skill Creation] Saving AI-generated or guided skills fails with CORS error~~\n- [#72](https://github.com/ChronoAIProject/Ornn/issues/72) ~~[CI/CD] Epic 4: Ops, testing, observability~~\n- [#71](https://github.com/ChronoAIProject/Ornn/issues/71) ~~[Feature] Epic 3: Frontend modernization~~\n- [#70](https://github.com/ChronoAIProject/Ornn/issues/70) ~~[Feature] Epic 2 prep: NyxID permission catalog rollout (cross-team)~~\n- [#69](https://github.com/ChronoAIProject/Ornn/issues/69) ~~[Feature] Epic 2 prep: Reserved-verb DB audit~~\n- [#68](https://github.com/ChronoAIProject/Ornn/issues/68) ~~[Feature] Epic 2: /api/v1/ cut (breaking external contract)~~\n- [#67](https://github.com/ChronoAIProject/Ornn/issues/67) ~~Epic 1 [first step]: Topic domain teardown~~\n- [#66](https://github.com/ChronoAIProject/Ornn/issues/66) ~~Epic 1: Architecture refactor (no external API change)~~\n- [#65](https://github.com/ChronoAIProject/Ornn/issues/65) ~~Epic 0: Convention freeze (foundations)~~\n- [#64](https://github.com/ChronoAIProject/Ornn/issues/64) ~~[Feature] API endpoint standardization & refactor (prep for Ornn Manual v1)~~\n- [#56](https://github.com/ChronoAIProject/Ornn/issues/56) ~~Skill Topics: group skills under named topics, with API CRUD~~\n- [#44](https://github.com/ChronoAIProject/Ornn/issues/44) ~~[M1] NyxID Services pages: My Services + Admin Services with skill generation~~\n- [#43](https://github.com/ChronoAIProject/Ornn/issues/43) ~~[M1] System Skills: auto-generate skills from NyxID service catalog~~\n- [#40](https://github.com/ChronoAIProject/Ornn/issues/40) ~~[Docs] Move docs to frontend static build, remove /api/docs backend routes~~\n- [#28](https://github.com/ChronoAIProject/Ornn/issues/28) ~~[M1] MCP-native skill discovery~~\n- [#27](https://github.com/ChronoAIProject/Ornn/issues/27) ~~[M1] Local dev server with hot-reload for skill authoring~~\n- [#25](https://github.com/ChronoAIProject/Ornn/issues/25) ~~[M1] Skill versioning & version history~~\n- [#24](https://github.com/ChronoAIProject/Ornn/issues/24) ~~[Feature] End-to-end skill lifecycle: build -> search -> pull -> execute~~\n- [#23](https://github.com/ChronoAIProject/Ornn/issues/23) ~~[M1] API route refactor: merge /api/web + /api/agent into unified /api~~\n- [#12](https://github.com/ChronoAIProject/Ornn/issues/12) ~~feat: daily-briefing skill — 移植 /daily 逻辑为 Ornn skill~~\n- [#11](https://github.com/ChronoAIProject/Ornn/issues/11) ~~feat: Skill Registry API — supply skill definitions + metadata to Aevatar~~\n- _… and 8 more closed_\n" }, "milestone_ref": { "repo": "ChronoAIProject/Ornn", @@ -1671,7 +1671,7 @@ "product": "ornn", "milestone": "M1", "owner": "chronoai-shining", - "issue_count": 7, + "issue_count": 3, "focus": false, "archived": false, "promoted_at": { @@ -1719,8 +1719,8 @@ "zh": "M3 — 信任与质量" }, "desc": { - "en": "LLM-based skill audit + waiver flow + per-version audit history + share workflows + in-product notifications + analytics dashboards. Audit-as-label pivot (share is unconditional, audit is a badge). Frontend UIs for audit/shares/notifications/analytics/github-sync. **Outcome**: every published skill carries trust + usage signals users can see and act on.\n\n\n**GitHub issues** — [M3 — Trust & Quality](https://github.com/ChronoAIProject/Ornn/milestone/17) · 3 open / 33 closed\n\n_Open:_\n- [#566](https://github.com/ChronoAIProject/Ornn/issues/566) [Bug] [Registry] Anonymous users cannot load public and system skills because public Registry APIs return 401\n- [#254](https://github.com/ChronoAIProject/Ornn/issues/254) [Bug] backfill-skill-author-display-names.ts uses $last for activity labels — same root cause as #238 runtime aggregator\n- [#106](https://github.com/ChronoAIProject/Ornn/issues/106) [Feature] NyxID permission catalog flip — post-NyxID-rename\n\n_Closed (most recent first):_\n- [#271](https://github.com/ChronoAIProject/Ornn/issues/271) ~~[Feature] PostHog-only platform analytics — wire DB-driven telemetry, remove custom audit infrastructure~~\n- [#247](https://github.com/ChronoAIProject/Ornn/issues/247) ~~[Feature] Admin audit + analytics dashboard — pageviews, API audit, caller-type breakdown~~\n- [#246](https://github.com/ChronoAIProject/Ornn/issues/246) ~~[Feature] Frontend pageview tracking + caller-type header — cookie-free analytics with consent~~\n- [#244](https://github.com/ChronoAIProject/Ornn/issues/244) ~~[Feature] Skill auditing — Gen Agent Trust Hub integration~~\n- [#218](https://github.com/ChronoAIProject/Ornn/issues/218) ~~[Bug] Legacy share/audit-gated data leaks through /notifications and /admin/activities after PR #198~~\n- [#197](https://github.com/ChronoAIProject/Ornn/issues/197) ~~[Feature] Pivot share/audit relationship — share is unconditional, audit is a label~~\n- [#188](https://github.com/ChronoAIProject/Ornn/issues/188) ~~[Feature] Per-version audit badges + share semantics (scheme B)~~\n- [#187](https://github.com/ChronoAIProject/Ornn/issues/187) ~~[Feature] SkillDetailPage layout rework + usage charts with time range~~\n- [#186](https://github.com/ChronoAIProject/Ornn/issues/186) ~~[Bug] Reviewer cannot approve or reject a share request from the review page~~\n- [#185](https://github.com/ChronoAIProject/Ornn/issues/185) ~~[Bug] Review queue page missing top-left back nav~~\n- [#184](https://github.com/ChronoAIProject/Ornn/issues/184) ~~[Bug] My sharing requests page missing top-left back nav~~\n- [#183](https://github.com/ChronoAIProject/Ornn/issues/183) ~~[Feature] Delete non-latest skill versions~~\n- [#182](https://github.com/ChronoAIProject/Ornn/issues/182) ~~[Feature] Skill JSON pull tracking + time-bucket aggregation~~\n- [#181](https://github.com/ChronoAIProject/Ornn/issues/181) ~~[Feature] Per-version audit history + analytics filter~~\n- [#172](https://github.com/ChronoAIProject/Ornn/issues/172) ~~[Feature] Fold audit-gated share initiation into PermissionsModal (single entry point)~~\n- [#161](https://github.com/ChronoAIProject/Ornn/issues/161) ~~[Feature] Frontend UI for skill analytics (per-skill card on SkillDetailPage)~~\n- [#160](https://github.com/ChronoAIProject/Ornn/issues/160) ~~[Feature] Frontend UI for audit-gated sharing workflow (share modal + justification + review queue + admin review)~~\n- [#159](https://github.com/ChronoAIProject/Ornn/issues/159) ~~[Feature] Frontend UI for GitHub skill import + 'Refresh from GitHub' re-sync~~\n- [#158](https://github.com/ChronoAIProject/Ornn/issues/158) ~~[Feature] Frontend UI for skill audit findings (SkillDetailPage banner + admin rerun)~~\n- [#157](https://github.com/ChronoAIProject/Ornn/issues/157) ~~[Feature] Frontend UI for in-product notifications (bell + /notifications page + unread badge + mark-read)~~\n- [#156](https://github.com/ChronoAIProject/Ornn/issues/156) ~~[Feature] Phase-3 frontend catch-up — audit / shares / notifications / analytics / github-sync UI~~\n- [#104](https://github.com/ChronoAIProject/Ornn/issues/104) ~~[Feature] Resource-grouped page layout~~\n- [#103](https://github.com/ChronoAIProject/Ornn/issues/103) ~~[Feature] RR7 data router migration~~\n- [#98](https://github.com/ChronoAIProject/Ornn/issues/98) ~~[Feature] In-Ornn notification center for audit + share-review events~~\n- [#97](https://github.com/ChronoAIProject/Ornn/issues/97) ~~[Feature] Target-based review routing for failed-audit shares (org admin / recipient / Ornn admin)~~\n- _… and 8 more closed_\n", - "zh": "LLM 驱动的 skill 审核 + waiver 流程 + per-version 审核历史 + 分享工作流 + 站内通知 + 分析 dashboard。Audit-as-label 转向 (分享无门槛, 审核是 badge)。审核/分享/通知/分析/github-sync 的前端 UI。**产出**: 每个 public skill 都带 trust + usage 信号, 用户可见可决策\n\n\n**GitHub issues** — [M3 — Trust & Quality](https://github.com/ChronoAIProject/Ornn/milestone/17) · 3 进行中 / 33 已关闭\n\n_进行中:_\n- [#566](https://github.com/ChronoAIProject/Ornn/issues/566) [Bug] [Registry] Anonymous users cannot load public and system skills because public Registry APIs return 401\n- [#254](https://github.com/ChronoAIProject/Ornn/issues/254) [Bug] backfill-skill-author-display-names.ts uses $last for activity labels — same root cause as #238 runtime aggregator\n- [#106](https://github.com/ChronoAIProject/Ornn/issues/106) [Feature] NyxID permission catalog flip — post-NyxID-rename\n\n_已关闭 (most recent first):_\n- [#271](https://github.com/ChronoAIProject/Ornn/issues/271) ~~[Feature] PostHog-only platform analytics — wire DB-driven telemetry, remove custom audit infrastructure~~\n- [#247](https://github.com/ChronoAIProject/Ornn/issues/247) ~~[Feature] Admin audit + analytics dashboard — pageviews, API audit, caller-type breakdown~~\n- [#246](https://github.com/ChronoAIProject/Ornn/issues/246) ~~[Feature] Frontend pageview tracking + caller-type header — cookie-free analytics with consent~~\n- [#244](https://github.com/ChronoAIProject/Ornn/issues/244) ~~[Feature] Skill auditing — Gen Agent Trust Hub integration~~\n- [#218](https://github.com/ChronoAIProject/Ornn/issues/218) ~~[Bug] Legacy share/audit-gated data leaks through /notifications and /admin/activities after PR #198~~\n- [#197](https://github.com/ChronoAIProject/Ornn/issues/197) ~~[Feature] Pivot share/audit relationship — share is unconditional, audit is a label~~\n- [#188](https://github.com/ChronoAIProject/Ornn/issues/188) ~~[Feature] Per-version audit badges + share semantics (scheme B)~~\n- [#187](https://github.com/ChronoAIProject/Ornn/issues/187) ~~[Feature] SkillDetailPage layout rework + usage charts with time range~~\n- [#186](https://github.com/ChronoAIProject/Ornn/issues/186) ~~[Bug] Reviewer cannot approve or reject a share request from the review page~~\n- [#185](https://github.com/ChronoAIProject/Ornn/issues/185) ~~[Bug] Review queue page missing top-left back nav~~\n- [#184](https://github.com/ChronoAIProject/Ornn/issues/184) ~~[Bug] My sharing requests page missing top-left back nav~~\n- [#183](https://github.com/ChronoAIProject/Ornn/issues/183) ~~[Feature] Delete non-latest skill versions~~\n- [#182](https://github.com/ChronoAIProject/Ornn/issues/182) ~~[Feature] Skill JSON pull tracking + time-bucket aggregation~~\n- [#181](https://github.com/ChronoAIProject/Ornn/issues/181) ~~[Feature] Per-version audit history + analytics filter~~\n- [#172](https://github.com/ChronoAIProject/Ornn/issues/172) ~~[Feature] Fold audit-gated share initiation into PermissionsModal (single entry point)~~\n- [#161](https://github.com/ChronoAIProject/Ornn/issues/161) ~~[Feature] Frontend UI for skill analytics (per-skill card on SkillDetailPage)~~\n- [#160](https://github.com/ChronoAIProject/Ornn/issues/160) ~~[Feature] Frontend UI for audit-gated sharing workflow (share modal + justification + review queue + admin review)~~\n- [#159](https://github.com/ChronoAIProject/Ornn/issues/159) ~~[Feature] Frontend UI for GitHub skill import + 'Refresh from GitHub' re-sync~~\n- [#158](https://github.com/ChronoAIProject/Ornn/issues/158) ~~[Feature] Frontend UI for skill audit findings (SkillDetailPage banner + admin rerun)~~\n- [#157](https://github.com/ChronoAIProject/Ornn/issues/157) ~~[Feature] Frontend UI for in-product notifications (bell + /notifications page + unread badge + mark-read)~~\n- [#156](https://github.com/ChronoAIProject/Ornn/issues/156) ~~[Feature] Phase-3 frontend catch-up — audit / shares / notifications / analytics / github-sync UI~~\n- [#104](https://github.com/ChronoAIProject/Ornn/issues/104) ~~[Feature] Resource-grouped page layout~~\n- [#103](https://github.com/ChronoAIProject/Ornn/issues/103) ~~[Feature] RR7 data router migration~~\n- [#98](https://github.com/ChronoAIProject/Ornn/issues/98) ~~[Feature] In-Ornn notification center for audit + share-review events~~\n- [#97](https://github.com/ChronoAIProject/Ornn/issues/97) ~~[Feature] Target-based review routing for failed-audit shares (org admin / recipient / Ornn admin)~~\n- _… and 8 more closed_\n" + "en": "LLM-based skill audit + waiver flow + per-version audit history + share workflows + in-product notifications + analytics dashboards. Audit-as-label pivot (share is unconditional, audit is a badge). Frontend UIs for audit/shares/notifications/analytics/github-sync. **Outcome**: every published skill carries trust + usage signals users can see and act on.\n\n\n**GitHub issues** — [M3 — Trust & Quality](https://github.com/ChronoAIProject/Ornn/milestone/17) · 0 open / 35 closed\n\n_Closed (most recent first):_\n- [#566](https://github.com/ChronoAIProject/Ornn/issues/566) ~~[Bug] [Registry] Anonymous users cannot load public and system skills because public Registry APIs return 401~~\n- [#271](https://github.com/ChronoAIProject/Ornn/issues/271) ~~[Feature] PostHog-only platform analytics — wire DB-driven telemetry, remove custom audit infrastructure~~\n- [#254](https://github.com/ChronoAIProject/Ornn/issues/254) ~~[Bug] backfill-skill-author-display-names.ts uses $last for activity labels — same root cause as #238 runtime aggregator~~\n- [#247](https://github.com/ChronoAIProject/Ornn/issues/247) ~~[Feature] Admin audit + analytics dashboard — pageviews, API audit, caller-type breakdown~~\n- [#246](https://github.com/ChronoAIProject/Ornn/issues/246) ~~[Feature] Frontend pageview tracking + caller-type header — cookie-free analytics with consent~~\n- [#244](https://github.com/ChronoAIProject/Ornn/issues/244) ~~[Feature] Skill auditing — Gen Agent Trust Hub integration~~\n- [#218](https://github.com/ChronoAIProject/Ornn/issues/218) ~~[Bug] Legacy share/audit-gated data leaks through /notifications and /admin/activities after PR #198~~\n- [#197](https://github.com/ChronoAIProject/Ornn/issues/197) ~~[Feature] Pivot share/audit relationship — share is unconditional, audit is a label~~\n- [#188](https://github.com/ChronoAIProject/Ornn/issues/188) ~~[Feature] Per-version audit badges + share semantics (scheme B)~~\n- [#187](https://github.com/ChronoAIProject/Ornn/issues/187) ~~[Feature] SkillDetailPage layout rework + usage charts with time range~~\n- [#186](https://github.com/ChronoAIProject/Ornn/issues/186) ~~[Bug] Reviewer cannot approve or reject a share request from the review page~~\n- [#185](https://github.com/ChronoAIProject/Ornn/issues/185) ~~[Bug] Review queue page missing top-left back nav~~\n- [#184](https://github.com/ChronoAIProject/Ornn/issues/184) ~~[Bug] My sharing requests page missing top-left back nav~~\n- [#183](https://github.com/ChronoAIProject/Ornn/issues/183) ~~[Feature] Delete non-latest skill versions~~\n- [#182](https://github.com/ChronoAIProject/Ornn/issues/182) ~~[Feature] Skill JSON pull tracking + time-bucket aggregation~~\n- [#181](https://github.com/ChronoAIProject/Ornn/issues/181) ~~[Feature] Per-version audit history + analytics filter~~\n- [#172](https://github.com/ChronoAIProject/Ornn/issues/172) ~~[Feature] Fold audit-gated share initiation into PermissionsModal (single entry point)~~\n- [#161](https://github.com/ChronoAIProject/Ornn/issues/161) ~~[Feature] Frontend UI for skill analytics (per-skill card on SkillDetailPage)~~\n- [#160](https://github.com/ChronoAIProject/Ornn/issues/160) ~~[Feature] Frontend UI for audit-gated sharing workflow (share modal + justification + review queue + admin review)~~\n- [#159](https://github.com/ChronoAIProject/Ornn/issues/159) ~~[Feature] Frontend UI for GitHub skill import + 'Refresh from GitHub' re-sync~~\n- [#158](https://github.com/ChronoAIProject/Ornn/issues/158) ~~[Feature] Frontend UI for skill audit findings (SkillDetailPage banner + admin rerun)~~\n- [#157](https://github.com/ChronoAIProject/Ornn/issues/157) ~~[Feature] Frontend UI for in-product notifications (bell + /notifications page + unread badge + mark-read)~~\n- [#156](https://github.com/ChronoAIProject/Ornn/issues/156) ~~[Feature] Phase-3 frontend catch-up — audit / shares / notifications / analytics / github-sync UI~~\n- [#104](https://github.com/ChronoAIProject/Ornn/issues/104) ~~[Feature] Resource-grouped page layout~~\n- [#103](https://github.com/ChronoAIProject/Ornn/issues/103) ~~[Feature] RR7 data router migration~~\n- _… and 10 more closed_\n", + "zh": "LLM 驱动的 skill 审核 + waiver 流程 + per-version 审核历史 + 分享工作流 + 站内通知 + 分析 dashboard。Audit-as-label 转向 (分享无门槛, 审核是 badge)。审核/分享/通知/分析/github-sync 的前端 UI。**产出**: 每个 public skill 都带 trust + usage 信号, 用户可见可决策\n\n\n**GitHub issues** — [M3 — Trust & Quality](https://github.com/ChronoAIProject/Ornn/milestone/17) · 0 进行中 / 35 已关闭\n\n_已关闭 (most recent first):_\n- [#566](https://github.com/ChronoAIProject/Ornn/issues/566) ~~[Bug] [Registry] Anonymous users cannot load public and system skills because public Registry APIs return 401~~\n- [#271](https://github.com/ChronoAIProject/Ornn/issues/271) ~~[Feature] PostHog-only platform analytics — wire DB-driven telemetry, remove custom audit infrastructure~~\n- [#254](https://github.com/ChronoAIProject/Ornn/issues/254) ~~[Bug] backfill-skill-author-display-names.ts uses $last for activity labels — same root cause as #238 runtime aggregator~~\n- [#247](https://github.com/ChronoAIProject/Ornn/issues/247) ~~[Feature] Admin audit + analytics dashboard — pageviews, API audit, caller-type breakdown~~\n- [#246](https://github.com/ChronoAIProject/Ornn/issues/246) ~~[Feature] Frontend pageview tracking + caller-type header — cookie-free analytics with consent~~\n- [#244](https://github.com/ChronoAIProject/Ornn/issues/244) ~~[Feature] Skill auditing — Gen Agent Trust Hub integration~~\n- [#218](https://github.com/ChronoAIProject/Ornn/issues/218) ~~[Bug] Legacy share/audit-gated data leaks through /notifications and /admin/activities after PR #198~~\n- [#197](https://github.com/ChronoAIProject/Ornn/issues/197) ~~[Feature] Pivot share/audit relationship — share is unconditional, audit is a label~~\n- [#188](https://github.com/ChronoAIProject/Ornn/issues/188) ~~[Feature] Per-version audit badges + share semantics (scheme B)~~\n- [#187](https://github.com/ChronoAIProject/Ornn/issues/187) ~~[Feature] SkillDetailPage layout rework + usage charts with time range~~\n- [#186](https://github.com/ChronoAIProject/Ornn/issues/186) ~~[Bug] Reviewer cannot approve or reject a share request from the review page~~\n- [#185](https://github.com/ChronoAIProject/Ornn/issues/185) ~~[Bug] Review queue page missing top-left back nav~~\n- [#184](https://github.com/ChronoAIProject/Ornn/issues/184) ~~[Bug] My sharing requests page missing top-left back nav~~\n- [#183](https://github.com/ChronoAIProject/Ornn/issues/183) ~~[Feature] Delete non-latest skill versions~~\n- [#182](https://github.com/ChronoAIProject/Ornn/issues/182) ~~[Feature] Skill JSON pull tracking + time-bucket aggregation~~\n- [#181](https://github.com/ChronoAIProject/Ornn/issues/181) ~~[Feature] Per-version audit history + analytics filter~~\n- [#172](https://github.com/ChronoAIProject/Ornn/issues/172) ~~[Feature] Fold audit-gated share initiation into PermissionsModal (single entry point)~~\n- [#161](https://github.com/ChronoAIProject/Ornn/issues/161) ~~[Feature] Frontend UI for skill analytics (per-skill card on SkillDetailPage)~~\n- [#160](https://github.com/ChronoAIProject/Ornn/issues/160) ~~[Feature] Frontend UI for audit-gated sharing workflow (share modal + justification + review queue + admin review)~~\n- [#159](https://github.com/ChronoAIProject/Ornn/issues/159) ~~[Feature] Frontend UI for GitHub skill import + 'Refresh from GitHub' re-sync~~\n- [#158](https://github.com/ChronoAIProject/Ornn/issues/158) ~~[Feature] Frontend UI for skill audit findings (SkillDetailPage banner + admin rerun)~~\n- [#157](https://github.com/ChronoAIProject/Ornn/issues/157) ~~[Feature] Frontend UI for in-product notifications (bell + /notifications page + unread badge + mark-read)~~\n- [#156](https://github.com/ChronoAIProject/Ornn/issues/156) ~~[Feature] Phase-3 frontend catch-up — audit / shares / notifications / analytics / github-sync UI~~\n- [#104](https://github.com/ChronoAIProject/Ornn/issues/104) ~~[Feature] Resource-grouped page layout~~\n- [#103](https://github.com/ChronoAIProject/Ornn/issues/103) ~~[Feature] RR7 data router migration~~\n- _… and 10 more closed_\n" }, "milestone_ref": { "repo": "ChronoAIProject/Ornn", @@ -1731,7 +1731,7 @@ "product": "ornn", "milestone": "M3", "owner": "chronoai-shining", - "issue_count": 3, + "issue_count": 0, "focus": false, "archived": false, "promoted_at": { @@ -1748,8 +1748,8 @@ "zh": "M4 — 上线准备" }, "desc": { - "en": "Make Ornn publicly usable. Per-user quota with admin redemption codes, admin model selection from Chrono LLM catalog, AgentSeal security scan on every public skill, PostHog analytics, GitHub auto-mirror of public skills to `ornn-skills`, unified agent manuals (CLI + HTTP), full i18n (zh + en parity), Editorial Forge UI migration, landing/legal/contact/News pages, launch-celebration popup, admin broadcasts, release engineering for v0.4 → v0.8. **Outcome**: a launch-ready hosted instance at ornn.chrono-ai.fun.\n\n\n**GitHub issues** — [M4 — Go Live Prep](https://github.com/ChronoAIProject/Ornn/milestone/18) · 6 open / 106 closed\n\n_Open:_\n- [#507](https://github.com/ChronoAIProject/Ornn/issues/507) [Bug] Recipients tooltip on BroadcastsPage unreadable for many recipients\n- [#506](https://github.com/ChronoAIProject/Ornn/issues/506) [Misc] Decide whether admins can be broadcast recipients (UserEmailPicker role scope)\n- [#505](https://github.com/ChronoAIProject/Ornn/issues/505) [Feature] Admin user-id-to-email lookup endpoint for picker resolution\n- [#286](https://github.com/ChronoAIProject/Ornn/issues/286) [Misc] Migrate residual neon-input class to semantic input tokens\n- [#220](https://github.com/ChronoAIProject/Ornn/issues/220) [Bug] NyxID service registry: 'ornn' slug had wrong upstream + identity-mode mismatch with 'ornn-api' slug\n- [#22](https://github.com/ChronoAIProject/Ornn/issues/22) [Misc] Owner 自主目标: 定义 Ornn O1 路径 + 开发者触达计划\n\n_Closed (most recent first):_\n- [#572](https://github.com/ChronoAIProject/Ornn/issues/572) ~~[Docs] Surface Ornn official website link in README~~\n- [#560](https://github.com/ChronoAIProject/Ornn/issues/560) ~~[Docs] Refresh ornn-agent-manual-cli skill to v1.2 against develop API~~\n- [#553](https://github.com/ChronoAIProject/Ornn/issues/553) ~~[Feature] Pin launch-celebration content to top of /news page~~\n- [#551](https://github.com/ChronoAIProject/Ornn/issues/551) ~~[Misc] Playground Package drawer absorbs Skill drawer; gen-page pulses on new iterations; drawer-width / scroll polish~~\n- [#549](https://github.com/ChronoAIProject/Ornn/issues/549) ~~[Misc] Redemption-code note masking — replace ambiguous ellipsis with **** so users don't think text is truncated~~\n- [#547](https://github.com/ChronoAIProject/Ornn/issues/547) ~~[Misc] Skill package preview + chat drawers — flatten layout, pin actions, fix navbar overlap~~\n- [#532](https://github.com/ChronoAIProject/Ornn/issues/532) ~~[Bug] Quota credit notifications can't be opened — dead clicks on /notifications and bell~~\n- [#526](https://github.com/ChronoAIProject/Ornn/issues/526) ~~[Misc] LaunchCelebrationPopup — polish (offer-tile flow + caption consistency)~~\n- [#524](https://github.com/ChronoAIProject/Ornn/issues/524) ~~[Misc] LaunchCelebrationPopup — add fulfillment note (24h delivery, where to redeem, support link)~~\n- [#522](https://github.com/ChronoAIProject/Ornn/issues/522) ~~[Bug] Playground / skill-gen rail tab labels render upside-down for CJK~~\n- [#517](https://github.com/ChronoAIProject/Ornn/issues/517) ~~[Bug] LaunchCelebrationPopup — letterpress plate paints OVER card surface, breaks light mode~~\n- [#515](https://github.com/ChronoAIProject/Ornn/issues/515) ~~[Bug] LaunchCelebrationPopup — light-theme broken, design not launch-worthy~~\n- [#513](https://github.com/ChronoAIProject/Ornn/issues/513) ~~[Bug] LaunchCelebrationPopup — low contrast on ember surface, GitHub link invisible~~\n- [#511](https://github.com/ChronoAIProject/Ornn/issues/511) ~~[Feature] Landing-page launch-celebration popup (hardcoded, every-visit)~~\n- [#509](https://github.com/ChronoAIProject/Ornn/issues/509) ~~[Bug] Clicking broadcast notification triggers update-depth loop (React error #185)~~\n- [#503](https://github.com/ChronoAIProject/Ornn/issues/503) ~~[Bug] Playground + Generative skill builder — i18n gaps in hero, starters, drawer, quota chip, model picker~~\n- [#502](https://github.com/ChronoAIProject/Ornn/issues/502) ~~[Feature] Targeted broadcasts + click-to-popup markdown viewer~~\n- [#500](https://github.com/ChronoAIProject/Ornn/issues/500) ~~[Feature] Admin broadcast notifications — author/edit/delete inbox messages for all users~~\n- [#493](https://github.com/ChronoAIProject/Ornn/issues/493) ~~[Feature] Bilingual announcements (EN + ZH)~~\n- [#491](https://github.com/ChronoAIProject/Ornn/issues/491) ~~[Bug] Contact page — Discussion category cards inconsistent height in same row~~\n- [#484](https://github.com/ChronoAIProject/Ornn/issues/484) ~~[Misc] Contact page — route between Discussions, Issues/PRs, and support email~~\n- [#482](https://github.com/ChronoAIProject/Ornn/issues/482) ~~[Misc] Cookie consent banner — drop PostHog vendor name from body copy~~\n- [#475](https://github.com/ChronoAIProject/Ornn/issues/475) ~~[Feature] Surface last-run status of the scheduled mirror reconcile~~\n- [#437](https://github.com/ChronoAIProject/Ornn/issues/437) ~~[Feature] In-process mirror reconcile scheduler with admin-configurable schedule~~\n- [#418](https://github.com/ChronoAIProject/Ornn/issues/418) ~~[Bug] Install card stretches too wide on desktop — cap its max-width~~\n- _… and 81 more closed_\n", - "zh": "让 Ornn 对外可用。per-user 配额 + admin 兑换码 / admin 从 Chrono LLM 目录选模型 / 每个 public skill 都过 AgentSeal 安全扫描 / PostHog 分析 / public skill 自动镜像到 `ornn-skills` 仓库 / 统一 agent manual (CLI + HTTP) / 完整 i18n (zh+en 对等) / Editorial Forge UI 迁移 / 落地+法务+联系+News 页 / launch celebration popup / admin 广播 / v0.4 → v0.8 的发布工程。**产出**: ornn.chrono-ai.fun 上一个 launch-ready 的托管实例\n\n\n**GitHub issues** — [M4 — Go Live Prep](https://github.com/ChronoAIProject/Ornn/milestone/18) · 6 进行中 / 106 已关闭\n\n_进行中:_\n- [#507](https://github.com/ChronoAIProject/Ornn/issues/507) [Bug] Recipients tooltip on BroadcastsPage unreadable for many recipients\n- [#506](https://github.com/ChronoAIProject/Ornn/issues/506) [Misc] Decide whether admins can be broadcast recipients (UserEmailPicker role scope)\n- [#505](https://github.com/ChronoAIProject/Ornn/issues/505) [Feature] Admin user-id-to-email lookup endpoint for picker resolution\n- [#286](https://github.com/ChronoAIProject/Ornn/issues/286) [Misc] Migrate residual neon-input class to semantic input tokens\n- [#220](https://github.com/ChronoAIProject/Ornn/issues/220) [Bug] NyxID service registry: 'ornn' slug had wrong upstream + identity-mode mismatch with 'ornn-api' slug\n- [#22](https://github.com/ChronoAIProject/Ornn/issues/22) [Misc] Owner 自主目标: 定义 Ornn O1 路径 + 开发者触达计划\n\n_已关闭 (most recent first):_\n- [#572](https://github.com/ChronoAIProject/Ornn/issues/572) ~~[Docs] Surface Ornn official website link in README~~\n- [#560](https://github.com/ChronoAIProject/Ornn/issues/560) ~~[Docs] Refresh ornn-agent-manual-cli skill to v1.2 against develop API~~\n- [#553](https://github.com/ChronoAIProject/Ornn/issues/553) ~~[Feature] Pin launch-celebration content to top of /news page~~\n- [#551](https://github.com/ChronoAIProject/Ornn/issues/551) ~~[Misc] Playground Package drawer absorbs Skill drawer; gen-page pulses on new iterations; drawer-width / scroll polish~~\n- [#549](https://github.com/ChronoAIProject/Ornn/issues/549) ~~[Misc] Redemption-code note masking — replace ambiguous ellipsis with **** so users don't think text is truncated~~\n- [#547](https://github.com/ChronoAIProject/Ornn/issues/547) ~~[Misc] Skill package preview + chat drawers — flatten layout, pin actions, fix navbar overlap~~\n- [#532](https://github.com/ChronoAIProject/Ornn/issues/532) ~~[Bug] Quota credit notifications can't be opened — dead clicks on /notifications and bell~~\n- [#526](https://github.com/ChronoAIProject/Ornn/issues/526) ~~[Misc] LaunchCelebrationPopup — polish (offer-tile flow + caption consistency)~~\n- [#524](https://github.com/ChronoAIProject/Ornn/issues/524) ~~[Misc] LaunchCelebrationPopup — add fulfillment note (24h delivery, where to redeem, support link)~~\n- [#522](https://github.com/ChronoAIProject/Ornn/issues/522) ~~[Bug] Playground / skill-gen rail tab labels render upside-down for CJK~~\n- [#517](https://github.com/ChronoAIProject/Ornn/issues/517) ~~[Bug] LaunchCelebrationPopup — letterpress plate paints OVER card surface, breaks light mode~~\n- [#515](https://github.com/ChronoAIProject/Ornn/issues/515) ~~[Bug] LaunchCelebrationPopup — light-theme broken, design not launch-worthy~~\n- [#513](https://github.com/ChronoAIProject/Ornn/issues/513) ~~[Bug] LaunchCelebrationPopup — low contrast on ember surface, GitHub link invisible~~\n- [#511](https://github.com/ChronoAIProject/Ornn/issues/511) ~~[Feature] Landing-page launch-celebration popup (hardcoded, every-visit)~~\n- [#509](https://github.com/ChronoAIProject/Ornn/issues/509) ~~[Bug] Clicking broadcast notification triggers update-depth loop (React error #185)~~\n- [#503](https://github.com/ChronoAIProject/Ornn/issues/503) ~~[Bug] Playground + Generative skill builder — i18n gaps in hero, starters, drawer, quota chip, model picker~~\n- [#502](https://github.com/ChronoAIProject/Ornn/issues/502) ~~[Feature] Targeted broadcasts + click-to-popup markdown viewer~~\n- [#500](https://github.com/ChronoAIProject/Ornn/issues/500) ~~[Feature] Admin broadcast notifications — author/edit/delete inbox messages for all users~~\n- [#493](https://github.com/ChronoAIProject/Ornn/issues/493) ~~[Feature] Bilingual announcements (EN + ZH)~~\n- [#491](https://github.com/ChronoAIProject/Ornn/issues/491) ~~[Bug] Contact page — Discussion category cards inconsistent height in same row~~\n- [#484](https://github.com/ChronoAIProject/Ornn/issues/484) ~~[Misc] Contact page — route between Discussions, Issues/PRs, and support email~~\n- [#482](https://github.com/ChronoAIProject/Ornn/issues/482) ~~[Misc] Cookie consent banner — drop PostHog vendor name from body copy~~\n- [#475](https://github.com/ChronoAIProject/Ornn/issues/475) ~~[Feature] Surface last-run status of the scheduled mirror reconcile~~\n- [#437](https://github.com/ChronoAIProject/Ornn/issues/437) ~~[Feature] In-process mirror reconcile scheduler with admin-configurable schedule~~\n- [#418](https://github.com/ChronoAIProject/Ornn/issues/418) ~~[Bug] Install card stretches too wide on desktop — cap its max-width~~\n- _… and 81 more closed_\n" + "en": "Make Ornn publicly usable. Per-user quota with admin redemption codes, admin model selection from Chrono LLM catalog, AgentSeal security scan on every public skill, PostHog analytics, GitHub auto-mirror of public skills to `ornn-skills`, unified agent manuals (CLI + HTTP), full i18n (zh + en parity), Editorial Forge UI migration, landing/legal/contact/News pages, launch-celebration popup, admin broadcasts, release engineering for v0.4 → v0.8. **Outcome**: a launch-ready hosted instance at ornn.chrono-ai.fun.\n\n\n**GitHub issues** — [M4 — Go Live Prep](https://github.com/ChronoAIProject/Ornn/milestone/18) · 4 open / 108 closed\n\n_Open:_\n- [#506](https://github.com/ChronoAIProject/Ornn/issues/506) [Misc] Decide whether admins can be broadcast recipients (UserEmailPicker role scope)\n- [#505](https://github.com/ChronoAIProject/Ornn/issues/505) [Feature] Admin user-id-to-email lookup endpoint for picker resolution\n- [#286](https://github.com/ChronoAIProject/Ornn/issues/286) [Misc] Migrate residual neon-input class to semantic input tokens\n- [#22](https://github.com/ChronoAIProject/Ornn/issues/22) [Misc] Owner 自主目标: 定义 Ornn O1 路径 + 开发者触达计划\n\n_Closed (most recent first):_\n- [#572](https://github.com/ChronoAIProject/Ornn/issues/572) ~~[Docs] Surface Ornn official website link in README~~\n- [#560](https://github.com/ChronoAIProject/Ornn/issues/560) ~~[Docs] Refresh ornn-agent-manual-cli skill to v1.2 against develop API~~\n- [#553](https://github.com/ChronoAIProject/Ornn/issues/553) ~~[Feature] Pin launch-celebration content to top of /news page~~\n- [#551](https://github.com/ChronoAIProject/Ornn/issues/551) ~~[Misc] Playground Package drawer absorbs Skill drawer; gen-page pulses on new iterations; drawer-width / scroll polish~~\n- [#549](https://github.com/ChronoAIProject/Ornn/issues/549) ~~[Misc] Redemption-code note masking — replace ambiguous ellipsis with **** so users don't think text is truncated~~\n- [#547](https://github.com/ChronoAIProject/Ornn/issues/547) ~~[Misc] Skill package preview + chat drawers — flatten layout, pin actions, fix navbar overlap~~\n- [#532](https://github.com/ChronoAIProject/Ornn/issues/532) ~~[Bug] Quota credit notifications can't be opened — dead clicks on /notifications and bell~~\n- [#526](https://github.com/ChronoAIProject/Ornn/issues/526) ~~[Misc] LaunchCelebrationPopup — polish (offer-tile flow + caption consistency)~~\n- [#524](https://github.com/ChronoAIProject/Ornn/issues/524) ~~[Misc] LaunchCelebrationPopup — add fulfillment note (24h delivery, where to redeem, support link)~~\n- [#522](https://github.com/ChronoAIProject/Ornn/issues/522) ~~[Bug] Playground / skill-gen rail tab labels render upside-down for CJK~~\n- [#517](https://github.com/ChronoAIProject/Ornn/issues/517) ~~[Bug] LaunchCelebrationPopup — letterpress plate paints OVER card surface, breaks light mode~~\n- [#515](https://github.com/ChronoAIProject/Ornn/issues/515) ~~[Bug] LaunchCelebrationPopup — light-theme broken, design not launch-worthy~~\n- [#513](https://github.com/ChronoAIProject/Ornn/issues/513) ~~[Bug] LaunchCelebrationPopup — low contrast on ember surface, GitHub link invisible~~\n- [#511](https://github.com/ChronoAIProject/Ornn/issues/511) ~~[Feature] Landing-page launch-celebration popup (hardcoded, every-visit)~~\n- [#509](https://github.com/ChronoAIProject/Ornn/issues/509) ~~[Bug] Clicking broadcast notification triggers update-depth loop (React error #185)~~\n- [#507](https://github.com/ChronoAIProject/Ornn/issues/507) ~~[Bug] Recipients tooltip on BroadcastsPage unreadable for many recipients~~\n- [#503](https://github.com/ChronoAIProject/Ornn/issues/503) ~~[Bug] Playground + Generative skill builder — i18n gaps in hero, starters, drawer, quota chip, model picker~~\n- [#502](https://github.com/ChronoAIProject/Ornn/issues/502) ~~[Feature] Targeted broadcasts + click-to-popup markdown viewer~~\n- [#500](https://github.com/ChronoAIProject/Ornn/issues/500) ~~[Feature] Admin broadcast notifications — author/edit/delete inbox messages for all users~~\n- [#493](https://github.com/ChronoAIProject/Ornn/issues/493) ~~[Feature] Bilingual announcements (EN + ZH)~~\n- [#491](https://github.com/ChronoAIProject/Ornn/issues/491) ~~[Bug] Contact page — Discussion category cards inconsistent height in same row~~\n- [#484](https://github.com/ChronoAIProject/Ornn/issues/484) ~~[Misc] Contact page — route between Discussions, Issues/PRs, and support email~~\n- [#482](https://github.com/ChronoAIProject/Ornn/issues/482) ~~[Misc] Cookie consent banner — drop PostHog vendor name from body copy~~\n- [#475](https://github.com/ChronoAIProject/Ornn/issues/475) ~~[Feature] Surface last-run status of the scheduled mirror reconcile~~\n- [#437](https://github.com/ChronoAIProject/Ornn/issues/437) ~~[Feature] In-process mirror reconcile scheduler with admin-configurable schedule~~\n- _… and 83 more closed_\n", + "zh": "让 Ornn 对外可用。per-user 配额 + admin 兑换码 / admin 从 Chrono LLM 目录选模型 / 每个 public skill 都过 AgentSeal 安全扫描 / PostHog 分析 / public skill 自动镜像到 `ornn-skills` 仓库 / 统一 agent manual (CLI + HTTP) / 完整 i18n (zh+en 对等) / Editorial Forge UI 迁移 / 落地+法务+联系+News 页 / launch celebration popup / admin 广播 / v0.4 → v0.8 的发布工程。**产出**: ornn.chrono-ai.fun 上一个 launch-ready 的托管实例\n\n\n**GitHub issues** — [M4 — Go Live Prep](https://github.com/ChronoAIProject/Ornn/milestone/18) · 4 进行中 / 108 已关闭\n\n_进行中:_\n- [#506](https://github.com/ChronoAIProject/Ornn/issues/506) [Misc] Decide whether admins can be broadcast recipients (UserEmailPicker role scope)\n- [#505](https://github.com/ChronoAIProject/Ornn/issues/505) [Feature] Admin user-id-to-email lookup endpoint for picker resolution\n- [#286](https://github.com/ChronoAIProject/Ornn/issues/286) [Misc] Migrate residual neon-input class to semantic input tokens\n- [#22](https://github.com/ChronoAIProject/Ornn/issues/22) [Misc] Owner 自主目标: 定义 Ornn O1 路径 + 开发者触达计划\n\n_已关闭 (most recent first):_\n- [#572](https://github.com/ChronoAIProject/Ornn/issues/572) ~~[Docs] Surface Ornn official website link in README~~\n- [#560](https://github.com/ChronoAIProject/Ornn/issues/560) ~~[Docs] Refresh ornn-agent-manual-cli skill to v1.2 against develop API~~\n- [#553](https://github.com/ChronoAIProject/Ornn/issues/553) ~~[Feature] Pin launch-celebration content to top of /news page~~\n- [#551](https://github.com/ChronoAIProject/Ornn/issues/551) ~~[Misc] Playground Package drawer absorbs Skill drawer; gen-page pulses on new iterations; drawer-width / scroll polish~~\n- [#549](https://github.com/ChronoAIProject/Ornn/issues/549) ~~[Misc] Redemption-code note masking — replace ambiguous ellipsis with **** so users don't think text is truncated~~\n- [#547](https://github.com/ChronoAIProject/Ornn/issues/547) ~~[Misc] Skill package preview + chat drawers — flatten layout, pin actions, fix navbar overlap~~\n- [#532](https://github.com/ChronoAIProject/Ornn/issues/532) ~~[Bug] Quota credit notifications can't be opened — dead clicks on /notifications and bell~~\n- [#526](https://github.com/ChronoAIProject/Ornn/issues/526) ~~[Misc] LaunchCelebrationPopup — polish (offer-tile flow + caption consistency)~~\n- [#524](https://github.com/ChronoAIProject/Ornn/issues/524) ~~[Misc] LaunchCelebrationPopup — add fulfillment note (24h delivery, where to redeem, support link)~~\n- [#522](https://github.com/ChronoAIProject/Ornn/issues/522) ~~[Bug] Playground / skill-gen rail tab labels render upside-down for CJK~~\n- [#517](https://github.com/ChronoAIProject/Ornn/issues/517) ~~[Bug] LaunchCelebrationPopup — letterpress plate paints OVER card surface, breaks light mode~~\n- [#515](https://github.com/ChronoAIProject/Ornn/issues/515) ~~[Bug] LaunchCelebrationPopup — light-theme broken, design not launch-worthy~~\n- [#513](https://github.com/ChronoAIProject/Ornn/issues/513) ~~[Bug] LaunchCelebrationPopup — low contrast on ember surface, GitHub link invisible~~\n- [#511](https://github.com/ChronoAIProject/Ornn/issues/511) ~~[Feature] Landing-page launch-celebration popup (hardcoded, every-visit)~~\n- [#509](https://github.com/ChronoAIProject/Ornn/issues/509) ~~[Bug] Clicking broadcast notification triggers update-depth loop (React error #185)~~\n- [#507](https://github.com/ChronoAIProject/Ornn/issues/507) ~~[Bug] Recipients tooltip on BroadcastsPage unreadable for many recipients~~\n- [#503](https://github.com/ChronoAIProject/Ornn/issues/503) ~~[Bug] Playground + Generative skill builder — i18n gaps in hero, starters, drawer, quota chip, model picker~~\n- [#502](https://github.com/ChronoAIProject/Ornn/issues/502) ~~[Feature] Targeted broadcasts + click-to-popup markdown viewer~~\n- [#500](https://github.com/ChronoAIProject/Ornn/issues/500) ~~[Feature] Admin broadcast notifications — author/edit/delete inbox messages for all users~~\n- [#493](https://github.com/ChronoAIProject/Ornn/issues/493) ~~[Feature] Bilingual announcements (EN + ZH)~~\n- [#491](https://github.com/ChronoAIProject/Ornn/issues/491) ~~[Bug] Contact page — Discussion category cards inconsistent height in same row~~\n- [#484](https://github.com/ChronoAIProject/Ornn/issues/484) ~~[Misc] Contact page — route between Discussions, Issues/PRs, and support email~~\n- [#482](https://github.com/ChronoAIProject/Ornn/issues/482) ~~[Misc] Cookie consent banner — drop PostHog vendor name from body copy~~\n- [#475](https://github.com/ChronoAIProject/Ornn/issues/475) ~~[Feature] Surface last-run status of the scheduled mirror reconcile~~\n- [#437](https://github.com/ChronoAIProject/Ornn/issues/437) ~~[Feature] In-process mirror reconcile scheduler with admin-configurable schedule~~\n- _… and 83 more closed_\n" }, "milestone_ref": { "repo": "ChronoAIProject/Ornn", @@ -1760,7 +1760,7 @@ "product": "ornn", "milestone": "M4", "owner": "chronoai-shining", - "issue_count": 6, + "issue_count": 4, "focus": false, "archived": false, "promoted_at": { @@ -1808,23 +1808,24 @@ "zh": "M6 — 代码审计收尾" }, "desc": { - "en": "Resolve all findings from the 2026-05-13 automated code-review pass across five axes: Security (auth/secrets/SSRF/sandbox), Vulnerability (dep audit, ZIP slip, regex DoS, Zod-less LLM parsing), Coding Standards (TS strictness, god-file decomposition, test coverage), Industry Standards (RFC 7807, cursor pagination, integrity hash, dist-tags, Idempotency-Key), OSS Readiness (docker-compose, examples/, SDK npm+PyPI publish, public demo). **Outcome**: 36 findings closed; project clears the \"is this safe to point HN at?\" bar.\n\n\n**GitHub issues** — [M6 — Code Review Hardening](https://github.com/ChronoAIProject/Ornn/milestone/20) · 38 open / 0 closed\n\n_Open:_\n- [#567](https://github.com/ChronoAIProject/Ornn/issues/567) Enforce skill visibility checks on JSON package endpoint\n- [#563](https://github.com/ChronoAIProject/Ornn/issues/563) [Bug] [Permissions] Non-owner account can access and run another account's private skill through Playground URL\n- [#474](https://github.com/ChronoAIProject/Ornn/issues/474) [Docs] API stability commitment + breaking-change & deprecation policy\n- [#473](https://github.com/ChronoAIProject/Ornn/issues/473) [Bug] SDK publish status — TS SDK has private:true, clarify npm/PyPI publication strategy\n- [#472](https://github.com/ChronoAIProject/Ornn/issues/472) [Docs] Positioning / comparison table vs MCP servers + Smithery + npm in README\n- [#471](https://github.com/ChronoAIProject/Ornn/issues/471) [CI/CD] Codecov integration + coverage badge + stated coverage target\n- [#470](https://github.com/ChronoAIProject/Ornn/issues/470) [Docs] SDK quickstart (5-line copy-paste) in main README\n- [#469](https://github.com/ChronoAIProject/Ornn/issues/469) [Docs] examples/ directory with 2-3 minimal starter skills (TS + Python)\n- [#468](https://github.com/ChronoAIProject/Ornn/issues/468) [Misc] Add npm/PyPI keywords + GitHub repo topics for discoverability\n- [#467](https://github.com/ChronoAIProject/Ornn/issues/467) [Feature] Public hosted demo / playground for try-before-install\n- [#466](https://github.com/ChronoAIProject/Ornn/issues/466) [Feature] docker-compose.yml for one-command local dev — replace K8s-only onboarding\n- [#465](https://github.com/ChronoAIProject/Ornn/issues/465) [Feature] SDK ergonomics — auto-pagination iterator + exponential-backoff retry wrapper\n- [#464](https://github.com/ChronoAIProject/Ornn/issues/464) [Feature] Publish versioned JSON Schema for SKILL.md frontmatter\n- [#463](https://github.com/ChronoAIProject/Ornn/issues/463) [Feature] Dist-tags (latest / stable / next) for skill version resolution\n- [#462](https://github.com/ChronoAIProject/Ornn/issues/462) [CI/CD] OpenAPI contract tests — assert every route appears in spec with declared errors\n- [#461](https://github.com/ChronoAIProject/Ornn/issues/461) [Feature] Surface integrity hash (sha256-base64) on skill version manifest like npm\n- [#460](https://github.com/ChronoAIProject/Ornn/issues/460) [Feature] RFC 9239 rate-limit response headers (RateLimit-Limit/Remaining/Retry-After)\n- [#459](https://github.com/ChronoAIProject/Ornn/issues/459) [Feature] Idempotency-Key middleware (24h cache) per CONVENTIONS.md §3.4\n- [#458](https://github.com/ChronoAIProject/Ornn/issues/458) [Bug] POST create endpoints return 200 OK without Location header (should be 201 Created)\n- [#457](https://github.com/ChronoAIProject/Ornn/issues/457) [Feature] Cursor-based pagination for list endpoints (drop offset page/pageSize/total)\n- [#456](https://github.com/ChronoAIProject/Ornn/issues/456) [Bug] Error responses violate RFC 7807 — implementation uses { data, error } envelope instead of problem+json\n- [#454](https://github.com/ChronoAIProject/Ornn/issues/454) [Feature] Backfill unit tests for 7 untested domain services + 8 repositories\n- [#453](https://github.com/ChronoAIProject/Ornn/issues/453) [Misc] Decompose god-files: SkillDetailPage (1133L), DocsPage (857L), PlaygroundPage (802L)\n- [#452](https://github.com/ChronoAIProject/Ornn/issues/452) [Misc] Replace hardcoded hex colors in landing pages with design tokens\n- [#451](https://github.com/ChronoAIProject/Ornn/issues/451) [Bug] Array index as React key in skeleton/grid components — list reorder bugs\n- [#450](https://github.com/ChronoAIProject/Ornn/issues/450) [Misc] Enable stricter TS flags: noUncheckedIndexedAccess, noImplicitOverride, exactOptionalPropertyTypes\n- [#449](https://github.com/ChronoAIProject/Ornn/issues/449) [Misc] Type playground chat events with Zod discriminated union (drop \"as any\")\n- [#448](https://github.com/ChronoAIProject/Ornn/issues/448) [Misc] Eliminate \"as any\" on MongoDB _id — introduce toObjectId(guid) helper\n- [#447](https://github.com/ChronoAIProject/Ornn/issues/447) [Misc] Migration scripts — replace Number(env) with validated parseInt + fail-fast\n- [#446](https://github.com/ChronoAIProject/Ornn/issues/446) [Misc] Admin search MongoDB regex — add maxTimeMS + ensure name/description indexes\n- [#445](https://github.com/ChronoAIProject/Ornn/issues/445) [CI/CD] Lock + audit Python SDK dependencies (lockfile + pip-audit in CI)\n- [#444](https://github.com/ChronoAIProject/Ornn/issues/444) [Bug] LLM re-ranker output parsed without Zod schema (cast as Array)\n- [#443](https://github.com/ChronoAIProject/Ornn/issues/443) [Misc] ZIP validator — add total-uncompressed-size cap + explicit zip-slip check\n- [#442](https://github.com/ChronoAIProject/Ornn/issues/442) [Bug] AgentSeal subprocess: validate python/script paths at boot + unref child after kill\n- [#441](https://github.com/ChronoAIProject/Ornn/issues/441) [Misc] Validate GitHub App private key shape on mirror config write\n- [#440](https://github.com/ChronoAIProject/Ornn/issues/440) [Misc] Tighten Mermaid SVG rendering — replace dangerouslySetInnerHTML with iframe sandbox\n- [#439](https://github.com/ChronoAIProject/Ornn/issues/439) [Feature] Rate limiting on /skill-search (semantic mode) + auth/upload endpoints\n- [#438](https://github.com/ChronoAIProject/Ornn/issues/438) [Bug] Some routes bypass validateBody middleware — raw c.req.json() reads break RFC 7807 errors\n\n", - "zh": "解决 2026-05-13 一轮自动代码审计的所有 finding, 5 个维度: Security (auth/secrets/SSRF/sandbox), Vulnerability (依赖审计 / ZIP slip / regex DoS / Zod 缺失), Coding Standards (TS 严格 / god-file 拆分 / 测试覆盖), Industry Standards (RFC 7807 / cursor 分页 / integrity hash / dist-tags / Idempotency-Key), OSS Readiness (docker-compose / examples / SDK 上 npm+PyPI / 公开 demo)。**产出**: 36 个 finding 全部关闭, 项目过得了 \"敢拿去 HN show\" 这关\n\n\n**GitHub issues** — [M6 — Code Review Hardening](https://github.com/ChronoAIProject/Ornn/milestone/20) · 38 进行中 / 0 已关闭\n\n_进行中:_\n- [#567](https://github.com/ChronoAIProject/Ornn/issues/567) Enforce skill visibility checks on JSON package endpoint\n- [#563](https://github.com/ChronoAIProject/Ornn/issues/563) [Bug] [Permissions] Non-owner account can access and run another account's private skill through Playground URL\n- [#474](https://github.com/ChronoAIProject/Ornn/issues/474) [Docs] API stability commitment + breaking-change & deprecation policy\n- [#473](https://github.com/ChronoAIProject/Ornn/issues/473) [Bug] SDK publish status — TS SDK has private:true, clarify npm/PyPI publication strategy\n- [#472](https://github.com/ChronoAIProject/Ornn/issues/472) [Docs] Positioning / comparison table vs MCP servers + Smithery + npm in README\n- [#471](https://github.com/ChronoAIProject/Ornn/issues/471) [CI/CD] Codecov integration + coverage badge + stated coverage target\n- [#470](https://github.com/ChronoAIProject/Ornn/issues/470) [Docs] SDK quickstart (5-line copy-paste) in main README\n- [#469](https://github.com/ChronoAIProject/Ornn/issues/469) [Docs] examples/ directory with 2-3 minimal starter skills (TS + Python)\n- [#468](https://github.com/ChronoAIProject/Ornn/issues/468) [Misc] Add npm/PyPI keywords + GitHub repo topics for discoverability\n- [#467](https://github.com/ChronoAIProject/Ornn/issues/467) [Feature] Public hosted demo / playground for try-before-install\n- [#466](https://github.com/ChronoAIProject/Ornn/issues/466) [Feature] docker-compose.yml for one-command local dev — replace K8s-only onboarding\n- [#465](https://github.com/ChronoAIProject/Ornn/issues/465) [Feature] SDK ergonomics — auto-pagination iterator + exponential-backoff retry wrapper\n- [#464](https://github.com/ChronoAIProject/Ornn/issues/464) [Feature] Publish versioned JSON Schema for SKILL.md frontmatter\n- [#463](https://github.com/ChronoAIProject/Ornn/issues/463) [Feature] Dist-tags (latest / stable / next) for skill version resolution\n- [#462](https://github.com/ChronoAIProject/Ornn/issues/462) [CI/CD] OpenAPI contract tests — assert every route appears in spec with declared errors\n- [#461](https://github.com/ChronoAIProject/Ornn/issues/461) [Feature] Surface integrity hash (sha256-base64) on skill version manifest like npm\n- [#460](https://github.com/ChronoAIProject/Ornn/issues/460) [Feature] RFC 9239 rate-limit response headers (RateLimit-Limit/Remaining/Retry-After)\n- [#459](https://github.com/ChronoAIProject/Ornn/issues/459) [Feature] Idempotency-Key middleware (24h cache) per CONVENTIONS.md §3.4\n- [#458](https://github.com/ChronoAIProject/Ornn/issues/458) [Bug] POST create endpoints return 200 OK without Location header (should be 201 Created)\n- [#457](https://github.com/ChronoAIProject/Ornn/issues/457) [Feature] Cursor-based pagination for list endpoints (drop offset page/pageSize/total)\n- [#456](https://github.com/ChronoAIProject/Ornn/issues/456) [Bug] Error responses violate RFC 7807 — implementation uses { data, error } envelope instead of problem+json\n- [#454](https://github.com/ChronoAIProject/Ornn/issues/454) [Feature] Backfill unit tests for 7 untested domain services + 8 repositories\n- [#453](https://github.com/ChronoAIProject/Ornn/issues/453) [Misc] Decompose god-files: SkillDetailPage (1133L), DocsPage (857L), PlaygroundPage (802L)\n- [#452](https://github.com/ChronoAIProject/Ornn/issues/452) [Misc] Replace hardcoded hex colors in landing pages with design tokens\n- [#451](https://github.com/ChronoAIProject/Ornn/issues/451) [Bug] Array index as React key in skeleton/grid components — list reorder bugs\n- [#450](https://github.com/ChronoAIProject/Ornn/issues/450) [Misc] Enable stricter TS flags: noUncheckedIndexedAccess, noImplicitOverride, exactOptionalPropertyTypes\n- [#449](https://github.com/ChronoAIProject/Ornn/issues/449) [Misc] Type playground chat events with Zod discriminated union (drop \"as any\")\n- [#448](https://github.com/ChronoAIProject/Ornn/issues/448) [Misc] Eliminate \"as any\" on MongoDB _id — introduce toObjectId(guid) helper\n- [#447](https://github.com/ChronoAIProject/Ornn/issues/447) [Misc] Migration scripts — replace Number(env) with validated parseInt + fail-fast\n- [#446](https://github.com/ChronoAIProject/Ornn/issues/446) [Misc] Admin search MongoDB regex — add maxTimeMS + ensure name/description indexes\n- [#445](https://github.com/ChronoAIProject/Ornn/issues/445) [CI/CD] Lock + audit Python SDK dependencies (lockfile + pip-audit in CI)\n- [#444](https://github.com/ChronoAIProject/Ornn/issues/444) [Bug] LLM re-ranker output parsed without Zod schema (cast as Array)\n- [#443](https://github.com/ChronoAIProject/Ornn/issues/443) [Misc] ZIP validator — add total-uncompressed-size cap + explicit zip-slip check\n- [#442](https://github.com/ChronoAIProject/Ornn/issues/442) [Bug] AgentSeal subprocess: validate python/script paths at boot + unref child after kill\n- [#441](https://github.com/ChronoAIProject/Ornn/issues/441) [Misc] Validate GitHub App private key shape on mirror config write\n- [#440](https://github.com/ChronoAIProject/Ornn/issues/440) [Misc] Tighten Mermaid SVG rendering — replace dangerouslySetInnerHTML with iframe sandbox\n- [#439](https://github.com/ChronoAIProject/Ornn/issues/439) [Feature] Rate limiting on /skill-search (semantic mode) + auth/upload endpoints\n- [#438](https://github.com/ChronoAIProject/Ornn/issues/438) [Bug] Some routes bypass validateBody middleware — raw c.req.json() reads break RFC 7807 errors\n\n" + "en": "Resolve all findings from the 2026-05-13 automated code-review pass across five axes: Security (auth/secrets/SSRF/sandbox), Vulnerability (dep audit, ZIP slip, regex DoS, Zod-less LLM parsing), Coding Standards (TS strictness, god-file decomposition, test coverage), Industry Standards (RFC 7807, cursor pagination, integrity hash, dist-tags, Idempotency-Key), OSS Readiness (docker-compose, examples/, SDK npm+PyPI publish, public demo). **Outcome**: 36 findings closed; project clears the \"is this safe to point HN at?\" bar.\n\n\n**GitHub issues** — [M6 — Code Review Hardening](https://github.com/ChronoAIProject/Ornn/milestone/20) · 0 open / 52 closed\n\n_Closed (most recent first):_\n- [#661](https://github.com/ChronoAIProject/Ornn/issues/661) ~~[Infra] Enable anonymous proxy passthrough on NyxID for public-read Ornn endpoints~~\n- [#657](https://github.com/ChronoAIProject/Ornn/issues/657) ~~[Misc] Enable exactOptionalPropertyTypes on ornn-api + ornn-web (follow-up to #450)~~\n- [#633](https://github.com/ChronoAIProject/Ornn/issues/633) ~~[Bug] Backend /skills upload accepts large uncompressed ZIPs — mirror #443 cap server-side~~\n- [#586](https://github.com/ChronoAIProject/Ornn/issues/586) ~~[Bug] API URL and header patterns violate CONVENTIONS.md §2–7 (:idOrName on writes, query vs q param, /json suffix, X- custom headers)~~\n- [#585](https://github.com/ChronoAIProject/Ornn/issues/585) ~~[Bug] Error codes use SCREAMING_SNAKE_CASE — CONVENTIONS.md §1.4 mandates lowercase_snake_case~~\n- [#584](https://github.com/ChronoAIProject/Ornn/issues/584) ~~[Bug] Auth store console.log leaks token metadata to browser devtools in production~~\n- [#583](https://github.com/ChronoAIProject/Ornn/issues/583) ~~[CI/CD] Add ruff + mypy to Python SDK CI pipeline~~\n- [#582](https://github.com/ChronoAIProject/Ornn/issues/582) ~~[CI/CD] Run integration tests in CI with MongoDB service container~~\n- [#581](https://github.com/ChronoAIProject/Ornn/issues/581) ~~[Misc] Remove legacy ownerId field, unused createErrorHandler and INTERNAL_AUTH_HEADER~~\n- [#580](https://github.com/ChronoAIProject/Ornn/issues/580) ~~[Misc] Decompose bootstrap.ts (1061 lines) into per-domain bootstrappers~~\n- [#579](https://github.com/ChronoAIProject/Ornn/issues/579) ~~[Misc] 31 bare catch {} blocks silently swallow errors across backend~~\n- [#578](https://github.com/ChronoAIProject/Ornn/issues/578) ~~[Bug] ornn-web apiDelete duplicates fetchWithRetry token-refresh logic~~\n- [#577](https://github.com/ChronoAIProject/Ornn/issues/577) ~~[Misc] Delete dead skill repository — domains/skills/crud/repositories/ is unused~~\n- [#576](https://github.com/ChronoAIProject/Ornn/issues/576) ~~[Docs] Create docs/ERRORS.md and docs/DEPRECATIONS.md required by CONVENTIONS.md~~\n- [#575](https://github.com/ChronoAIProject/Ornn/issues/575) ~~[Misc] 62 standalone pino loggers bypass redaction rules and LOG_LEVEL config~~\n- [#567](https://github.com/ChronoAIProject/Ornn/issues/567) ~~Enforce skill visibility checks on JSON package endpoint~~\n- [#563](https://github.com/ChronoAIProject/Ornn/issues/563) ~~[Bug] [Permissions] Non-owner account can access and run another account's private skill through Playground URL~~\n- [#474](https://github.com/ChronoAIProject/Ornn/issues/474) ~~[Docs] API stability commitment + breaking-change & deprecation policy~~\n- [#473](https://github.com/ChronoAIProject/Ornn/issues/473) ~~[Bug] SDK publish status — TS SDK has private:true, clarify npm/PyPI publication strategy~~\n- [#472](https://github.com/ChronoAIProject/Ornn/issues/472) ~~[Docs] Positioning / comparison table vs MCP servers + Smithery + npm in README~~\n- [#471](https://github.com/ChronoAIProject/Ornn/issues/471) ~~[CI/CD] Codecov integration + coverage badge + stated coverage target~~\n- [#470](https://github.com/ChronoAIProject/Ornn/issues/470) ~~[Docs] SDK quickstart (5-line copy-paste) in main README~~\n- [#469](https://github.com/ChronoAIProject/Ornn/issues/469) ~~[Docs] examples/ directory with 2-3 minimal starter skills (TS + Python)~~\n- [#468](https://github.com/ChronoAIProject/Ornn/issues/468) ~~[Misc] Add npm/PyPI keywords + GitHub repo topics for discoverability~~\n- [#466](https://github.com/ChronoAIProject/Ornn/issues/466) ~~[Feature] docker-compose.yml for one-command local dev — replace K8s-only onboarding~~\n- _… and 27 more closed_\n", + "zh": "解决 2026-05-13 一轮自动代码审计的所有 finding, 5 个维度: Security (auth/secrets/SSRF/sandbox), Vulnerability (依赖审计 / ZIP slip / regex DoS / Zod 缺失), Coding Standards (TS 严格 / god-file 拆分 / 测试覆盖), Industry Standards (RFC 7807 / cursor 分页 / integrity hash / dist-tags / Idempotency-Key), OSS Readiness (docker-compose / examples / SDK 上 npm+PyPI / 公开 demo)。**产出**: 36 个 finding 全部关闭, 项目过得了 \"敢拿去 HN show\" 这关\n\n\n**GitHub issues** — [M6 — Code Review Hardening](https://github.com/ChronoAIProject/Ornn/milestone/20) · 0 进行中 / 52 已关闭\n\n_已关闭 (most recent first):_\n- [#661](https://github.com/ChronoAIProject/Ornn/issues/661) ~~[Infra] Enable anonymous proxy passthrough on NyxID for public-read Ornn endpoints~~\n- [#657](https://github.com/ChronoAIProject/Ornn/issues/657) ~~[Misc] Enable exactOptionalPropertyTypes on ornn-api + ornn-web (follow-up to #450)~~\n- [#633](https://github.com/ChronoAIProject/Ornn/issues/633) ~~[Bug] Backend /skills upload accepts large uncompressed ZIPs — mirror #443 cap server-side~~\n- [#586](https://github.com/ChronoAIProject/Ornn/issues/586) ~~[Bug] API URL and header patterns violate CONVENTIONS.md §2–7 (:idOrName on writes, query vs q param, /json suffix, X- custom headers)~~\n- [#585](https://github.com/ChronoAIProject/Ornn/issues/585) ~~[Bug] Error codes use SCREAMING_SNAKE_CASE — CONVENTIONS.md §1.4 mandates lowercase_snake_case~~\n- [#584](https://github.com/ChronoAIProject/Ornn/issues/584) ~~[Bug] Auth store console.log leaks token metadata to browser devtools in production~~\n- [#583](https://github.com/ChronoAIProject/Ornn/issues/583) ~~[CI/CD] Add ruff + mypy to Python SDK CI pipeline~~\n- [#582](https://github.com/ChronoAIProject/Ornn/issues/582) ~~[CI/CD] Run integration tests in CI with MongoDB service container~~\n- [#581](https://github.com/ChronoAIProject/Ornn/issues/581) ~~[Misc] Remove legacy ownerId field, unused createErrorHandler and INTERNAL_AUTH_HEADER~~\n- [#580](https://github.com/ChronoAIProject/Ornn/issues/580) ~~[Misc] Decompose bootstrap.ts (1061 lines) into per-domain bootstrappers~~\n- [#579](https://github.com/ChronoAIProject/Ornn/issues/579) ~~[Misc] 31 bare catch {} blocks silently swallow errors across backend~~\n- [#578](https://github.com/ChronoAIProject/Ornn/issues/578) ~~[Bug] ornn-web apiDelete duplicates fetchWithRetry token-refresh logic~~\n- [#577](https://github.com/ChronoAIProject/Ornn/issues/577) ~~[Misc] Delete dead skill repository — domains/skills/crud/repositories/ is unused~~\n- [#576](https://github.com/ChronoAIProject/Ornn/issues/576) ~~[Docs] Create docs/ERRORS.md and docs/DEPRECATIONS.md required by CONVENTIONS.md~~\n- [#575](https://github.com/ChronoAIProject/Ornn/issues/575) ~~[Misc] 62 standalone pino loggers bypass redaction rules and LOG_LEVEL config~~\n- [#567](https://github.com/ChronoAIProject/Ornn/issues/567) ~~Enforce skill visibility checks on JSON package endpoint~~\n- [#563](https://github.com/ChronoAIProject/Ornn/issues/563) ~~[Bug] [Permissions] Non-owner account can access and run another account's private skill through Playground URL~~\n- [#474](https://github.com/ChronoAIProject/Ornn/issues/474) ~~[Docs] API stability commitment + breaking-change & deprecation policy~~\n- [#473](https://github.com/ChronoAIProject/Ornn/issues/473) ~~[Bug] SDK publish status — TS SDK has private:true, clarify npm/PyPI publication strategy~~\n- [#472](https://github.com/ChronoAIProject/Ornn/issues/472) ~~[Docs] Positioning / comparison table vs MCP servers + Smithery + npm in README~~\n- [#471](https://github.com/ChronoAIProject/Ornn/issues/471) ~~[CI/CD] Codecov integration + coverage badge + stated coverage target~~\n- [#470](https://github.com/ChronoAIProject/Ornn/issues/470) ~~[Docs] SDK quickstart (5-line copy-paste) in main README~~\n- [#469](https://github.com/ChronoAIProject/Ornn/issues/469) ~~[Docs] examples/ directory with 2-3 minimal starter skills (TS + Python)~~\n- [#468](https://github.com/ChronoAIProject/Ornn/issues/468) ~~[Misc] Add npm/PyPI keywords + GitHub repo topics for discoverability~~\n- [#466](https://github.com/ChronoAIProject/Ornn/issues/466) ~~[Feature] docker-compose.yml for one-command local dev — replace K8s-only onboarding~~\n- _… and 27 more closed_\n" }, "milestone_ref": { "repo": "ChronoAIProject/Ornn", "milestone": "M6 — Code Review Hardening" }, - "closure": "obligation", + "closure": "bridged", "formal": "checked", "product": "ornn", "milestone": "M6", "owner": "chronoai-shining", - "issue_count": 38, - "focus": true, + "issue_count": 0, + "focus": false, "archived": false, "promoted_at": { - "obligation": "2026-05-13" + "obligation": "2026-05-13", + "bridged": "2026-05-22" }, "deps": [ "Ornn-M4-Go-Live-Prep" @@ -1837,8 +1838,8 @@ "zh": "M7 — 平台力" }, "desc": { - "en": "Skills compose into workflows. Skill chaining (declarative pipelines), webhook + event system for skill-lifecycle events, templates & starter kits for common patterns. Deferred behind QA + Code Review hardening — comes after the launch gate. **Outcome**: a skill is no longer a leaf; it is a composable building block.\n\n\n**GitHub issues** — [M7 — Platform Power](https://github.com/ChronoAIProject/Ornn/milestone/21) · 3 open / 0 closed\n\n_Open:_\n- [#37](https://github.com/ChronoAIProject/Ornn/issues/37) [Feature] Skill templates & starter kits\n- [#36](https://github.com/ChronoAIProject/Ornn/issues/36) [Feature] Webhook & event system for skill lifecycle\n- [#35](https://github.com/ChronoAIProject/Ornn/issues/35) [Feature] Skill composition & chaining\n\n", - "zh": "Skill 能组合成 workflow。Skill chaining (声明式 pipeline) / webhook + event 系统 (skill 生命周期事件) / 模板 & starter kit。排在 QA + Code Review 收尾之后, 在 launch gate 之后才启动。**产出**: skill 不再是叶子节点, 是可组合的积木\n\n\n**GitHub issues** — [M7 — Platform Power](https://github.com/ChronoAIProject/Ornn/milestone/21) · 3 进行中 / 0 已关闭\n\n_进行中:_\n- [#37](https://github.com/ChronoAIProject/Ornn/issues/37) [Feature] Skill templates & starter kits\n- [#36](https://github.com/ChronoAIProject/Ornn/issues/36) [Feature] Webhook & event system for skill lifecycle\n- [#35](https://github.com/ChronoAIProject/Ornn/issues/35) [Feature] Skill composition & chaining\n\n" + "en": "Skills compose into workflows. Skill chaining (declarative pipelines), webhook + event system for skill-lifecycle events, templates & starter kits for common patterns. Deferred behind QA + Code Review hardening — comes after the launch gate. **Outcome**: a skill is no longer a leaf; it is a composable building block.\n\n\n**GitHub issues** — [M7 — Platform Power](https://github.com/ChronoAIProject/Ornn/milestone/21) · 5 open / 0 closed\n\n_Open:_\n- [#467](https://github.com/ChronoAIProject/Ornn/issues/467) [Feature] Public hosted demo / playground for try-before-install\n- [#106](https://github.com/ChronoAIProject/Ornn/issues/106) [Feature] NyxID permission catalog flip — post-NyxID-rename\n- [#37](https://github.com/ChronoAIProject/Ornn/issues/37) [Feature] Skill templates & starter kits\n- [#36](https://github.com/ChronoAIProject/Ornn/issues/36) [Feature] Webhook & event system for skill lifecycle\n- [#35](https://github.com/ChronoAIProject/Ornn/issues/35) [Feature] Skill composition & chaining\n\n", + "zh": "Skill 能组合成 workflow。Skill chaining (声明式 pipeline) / webhook + event 系统 (skill 生命周期事件) / 模板 & starter kit。排在 QA + Code Review 收尾之后, 在 launch gate 之后才启动。**产出**: skill 不再是叶子节点, 是可组合的积木\n\n\n**GitHub issues** — [M7 — Platform Power](https://github.com/ChronoAIProject/Ornn/milestone/21) · 5 进行中 / 0 已关闭\n\n_进行中:_\n- [#467](https://github.com/ChronoAIProject/Ornn/issues/467) [Feature] Public hosted demo / playground for try-before-install\n- [#106](https://github.com/ChronoAIProject/Ornn/issues/106) [Feature] NyxID permission catalog flip — post-NyxID-rename\n- [#37](https://github.com/ChronoAIProject/Ornn/issues/37) [Feature] Skill templates & starter kits\n- [#36](https://github.com/ChronoAIProject/Ornn/issues/36) [Feature] Webhook & event system for skill lifecycle\n- [#35](https://github.com/ChronoAIProject/Ornn/issues/35) [Feature] Skill composition & chaining\n\n" }, "milestone_ref": { "repo": "ChronoAIProject/Ornn", @@ -1849,7 +1850,7 @@ "product": "ornn", "milestone": "M7", "owner": "chronoai-shining", - "issue_count": 3, + "issue_count": 5, "focus": false, "archived": false, "promoted_at": {