feat(pm): expand MCP, routines, work items, inbox, and skills - #844
Open
Neonforge98 wants to merge 17 commits into
Open
feat(pm): expand MCP, routines, work items, inbox, and skills#844Neonforge98 wants to merge 17 commits into
Neonforge98 wants to merge 17 commits into
Conversation
Pre-commit hook ran. Total eslint: 5, total circular: 0
Pre-commit hook ran. Total eslint: 5, total circular: 0
Pre-commit hook ran. Total eslint: 5, total circular: 0
Pre-commit hook ran. Total eslint: 5, total circular: 0
… edit Pre-commit hook ran. Total eslint: 5, total circular: 0
Pre-commit hook ran. Total eslint: 5, total circular: 0
Pre-commit hook ran. Total eslint: 5, total circular: 0
Neonforge98
marked this pull request as draft
August 20, 2026 03:15
Pre-commit hook ran. Total eslint: 5, total circular: 0
Neonforge98
marked this pull request as ready for review
August 20, 2026 05:15
Neonforge98
marked this pull request as draft
August 20, 2026 05:15
…batch Pre-commit hook ran. Total eslint: 5, total circular: 0
Neonforge98
marked this pull request as ready for review
August 20, 2026 05:31
Neonforge98
marked this pull request as draft
August 20, 2026 07:27
Pre-commit hook ran. Total eslint: 5, total circular: 0
…batch Pre-commit hook ran. Total eslint: 5, total circular: 0
Neonforge98
marked this pull request as ready for review
August 20, 2026 07:42
Neonforge98
marked this pull request as draft
August 20, 2026 08:34
Pre-commit hook ran. Total eslint: 5, total circular: 0
Neonforge98
marked this pull request as ready for review
August 20, 2026 08:48
Pre-commit hook ran. Total eslint: 5, total circular: 0
Neonforge98
force-pushed
the
feat/pm-expansion-batch
branch
from
August 20, 2026 21:48
437b322 to
a7e9043
Compare
…batch Pre-commit hook ran. Total eslint: 5, total circular: 0
…cesses Pre-commit hook ran. Total eslint: 5, total circular: 0
Pre-commit hook ran. Total eslint: 5, total circular: 0
Pre-commit hook ran. Total eslint: 5, total circular: 0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The parity audit was written against
develop@ee7860c31, while this branch had only landed the first vertical slices. Important product and safety boundaries were still open: external CLI agents could miss MCP policy, MCP secrets could be returned by read APIs, assignee escalation could wake or cancel against the wrong agent, legacy and portable routines could diverge, saved-view layout could bleed across users or views, typed properties and Inbox lifecycle were not end to end, Skills had no durable provenance/consent snapshot, and stale Work Item edits or context-overflow retries could corrupt user intent.This PR intentionally completes the existing parity batch on the current branch so the eight audited areas are reviewable as one integrated checkpoint. True-device testing then found that the current Project-panel route still exposed only List/Kanban, detail entry points could retain a stale org, actor properties could offer non-member agents, Inbox mute controls could appear to save without a viewer identity, and local Inbox reads omitted the exact local actor/Git identities used by Work Item comments and subscriptions.
Solution
command/args/cwd/url/env/headerswrite-only through scoped sentinels; atomically persist 0600 config; redact transport errors/logs; repair Antigravity resume identity and headless hooks.--root-workinvocation; add projectless webhooks, one-time/policy conversion, durable cancellation, UUID Run ids, a single bounded scheduler pass, transactional activation CAS/leases, queued promotion, and minimum schedule watermark updates.blocked; preserve historical archived statuses while rejecting new assignment; add org-shared saved queries with per-user display preferences and?view=identity; prevent cross-view display inheritance; add Table columns, semantic sorting, property filter/group/batch update, member values, multi-select values, and__none__filtering. The authoritative Project-panel route now exposes List/Table/Kanban/Gantt/Calendar, Saved Views, property controls, batch property editing, and status management rather than leaving those features on an unreachable legacy page..orgii/skillsworkspace sharing; record credential-free origin and stable identity; refresh through staged atomic replacement; fail closed on provenance/consent drift; freeze the effective skill manifest digest at Run enqueue and verify it again before dispatch.Potential risks
gpt-5.6-solwere true-device exercised successfully. Live Claude and ACP provider launches were not available in this profile, so those provider-specific MCP launch paths remain covered by their owning automated suites.Architecture and performance audit
The Rust/TypeScript ownership, wire, persistence, initialization, resolver, failure, and compatibility layers were checked across the affected paths. For the Inbox identity fix, the write path and read path now consume the same local identity resolver output: project aliases, the actual local mutation actor id, Git email, and the active cloud account id are deduplicated into one viewer set. No new wire format or schema was introduced by the true-device fixes.
Performance verdict: pass for the changed UI paths. Work-item and property reads are event-driven with generation/unmount guards; no timer, polling loop, hidden-tab worker, cache, or subscription was added by the identity fix. Property snapshots and derived Sets/Maps are limited to the active project, refresh bursts coalesce to one active plus at most one trailing read, saved-view preferences retain the existing 128-entry bound, and Table/Gantt/Calendar chunks mount only after first visit. The configured
frontend-ui-auditskill was unavailable, so the rendered Tauri UI was manually checked for design-system use, keyboard/a11y labels, scope isolation, loading/empty states, and narrow-header layout.Verification
Automated
cargo test -p project_management --lib --no-fail-fast— 662 passed.cargo test -p agent_core --lib --no-fail-fast— 3198 passed, 2 explicitly ignored stress tests.cargo test -p key_vault --lib— 357 passed.cargo clippy --workspace --all-targets -- -D warnings— passed; only the existing future-incompatibility notice forblock v0.1.6remains.cargo check -p org2— passed.pnpm test -- --reporter=dotbefore the final true-device fixes — 1126 files and 8826 tests passed.develop@b9331da7e:pnpm run typecheckpassed; 29 focused frontend files / 184 tests passed;cargo test -p orgtrack_core sources::codex::app --libpassed 59 tests with 1 fixture-dependent test explicitly ignored.cargo test -p agent_core follow_up_suggestions --libpassed 6 tests;cargo test -p org2 follow_up_suggestions --libpassed 1 test;cargo check -p org2, changed-file ESLint, scoped pre-commit TypeScript, and scoped Clippy all passed.pnpm test -- src/modules/MainApp/TeamInbox— 23 files / 157 tests passed;pnpm run typecheck, changed-file ESLint, andgit diff --checkpassed.jq empty; staged files were inspected for secrets, personal paths, debug artifacts, generated output, and unrelated formatting.True-device Tauri app
.app; verified Project-panel layout at 1350 px without tab/toolbar overlap.builtin:sdeto the existing OpenAI OAuth account andgpt-5.6-sol; Quick Action Runwir_cf996c9d561946c9a026d29493adc03dsucceeded and the real agent wrotePARITY_CODEX_OK.gpt-5.6-sol; the real Responses API round-trip returned exactly three valid suggestions with one primary in 5.28 seconds. The temporary live-test hook was removed before commit.@modelcontextprotocol/server-everything@2026.7.4; Test Connection discovered 13 tools. A second real Codex Runwir_476bd281f3774a33b4c068302a2ae9fdcalledmcp__parity-smoke-20260819__echoand persistedPARITY_MCP_CODEX_OK. Only synthetic smoke-test secret values were used.cu-routine-timezone-0808against rootORG-0841, created step Work ItemORG-0842, cancelled Runrun_f9918c6645704e32908bdf9242c70e7a, then cancelled it again to verify the idempotentchanged: falseresult.1 queued, then automatically dispatched it after the first turn. Durable event order was first user → MCP tool →BUSYFIRSTOK→ queued user →BUSYSECONDOK..orgii/skills.ORG-0841, created and edited a comment, created then tombstone-deleted disposable commentparity-delete-20260820-0136, created and invoked Quick Actions through the Discussion/Run path, and verified real Codex success rather than treating the initial unbound-agent error as a provider absence.No value(__none__) filter.org2-pm, and restored Todo.status_changedevent forORG-0841appeared as1 unreadafter the viewer-alias fix; opening it marked it read and renderedStatus changed / In review. Archive moved it into Archived, and Restore to inbox returned it to Updates. Mute categories were also persisted and read back throughpm_inbox_prefs.PM_ERR:REVISION_CONFLICT:expected=2:actual=3; the rejected content did not persist. The modal's two-version choice is covered by frontend tests but was not claimed as a stable true-device race reproduction.The smoke-test MCP server, Routine, Work Item, Quick Actions, Saved View, status, and property definitions remain in the local test profile for inspection; no destructive cleanup was performed without confirmation.
Compatibility and rollback
Existing Work Item/Routine/Run payloads remain readable through serde defaults and the legacy-to-portable Routine bridge. Custom statuses continue to store raw text, so no Work Item status backfill is needed. Saved-view display preference is best-effort local state and shared query identity is unchanged. Revert the eventual PR merge commit to roll back code; additive schema objects may remain unused without deleting user data.