Conversation
…nges (apache#2474) * ci(test): auto-enable storage stress rounds for WAL recovery race changes Refs apache#2388. apache#2459 gated the 12-round fresh-WAL race amplification behind MAKA_STORAGE_STRESS, but sqlite-recovery-concurrency.test.ts was not in STORAGE_STRESS_FILES, so CI never re-enabled the amplified rounds even when the recovery race surface itself changed. Add the test, its spawned worker fixture, and sqlite-runtime-store.ts (the store the race exercises) to the stress set, matching how the other multi-process storage probes are wired. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ac5rv6WUKWtMZgQb5QPN16 * ci(test): cover the WAL race's production owners and pin the stress routing Review follow-up: the amplified race path runs through acquireOperationalStateDatabase(), so operational-state-store.ts and sqlite-runtime-schema.ts own the fresh-WAL initialization, locking, and migration it exercises. Add both to STORAGE_STRESS_FILES, and extend the planner test's stress table with all five WAL-race paths so the routing contract stays executable. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ac5rv6WUKWtMZgQb5QPN16 * ci(test): trigger storage stress on every migration the WAL race executes Review follow-up: acquireOperationalStateDatabase() runs the migrations owned by the six sqlite-*-schema modules inside the amplified fresh-WAL race, so all six join STORAGE_STRESS_FILES and the planner's stress table. sqlite-runtime-store.ts leaves the set - the amplified operational_open_only branch never constructs it - and a negative planner case pins that boundary. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ac5rv6WUKWtMZgQb5QPN16 --------- Co-authored-by: Claude <noreply@anthropic.com>
zhiiw
force-pushed
the
codex/managed-dependency-storage-authority
branch
from
August 9, 2026 02:59
708acc1 to
6b9943a
Compare
…2548) * fix(desktop): stabilize session lifecycle mutations * test(desktop): isolate side chat dismissal lifecycle
* test(storybook): report daily review bounds * fix(desktop): bound settings selector menus
npm run dev only tsc --build tsconfig.lib.json. After the Runtime Host cutover, desktop main imports @maka/runtime-host/protocol at runtime, but that package was missing from the lib graph — stale dist then crashed Electron with missing named exports such as decodeExternalSessionCatalogQueryInput.
DESIGN.md is read by agents as much as by people, so a line that has gone stale is worse than a line that was never written — it gets adopted as fact. Two kinds of line in this file cannot stay true, and both are removed here. FIRST: prose that describes the current state of the migration. - §3's One Colorspace exception, "until T4 unified it" - §4's --ring-soft, "was called --shadow-minimal-flat until T4" - §5's Floating Recipe, "currently enforced ... a transitional implementation" - §11's wash ban, "T4 migrated fourteen such sites ... the rest are debt" - §3's link rule, "--link currently resolves to raw --accent" This branch is its own evidence for why. An earlier revision of it documented the srgb exception, the shadow-minimal-flat rename and the unenforced Floating Recipe as open items; apache#2536 closed all three the same day, and every one of those lines had to be rewritten before this could land. A spec that tracks progress has to be rebased against progress. The rules themselves are unchanged and read stronger without the timestamps: the ladder derives in one space, --ring-soft is a border, the recipe binds every portal including Astryx's own. Where a rule and the code genuinely disagree, that belongs in an issue, not in a clause hedging the rule. SECOND: values and inventories that source already owns. - The surface pixel table and the ink contrast columns. Their caption claimed the contract tests held them; ink-ladder-contract pins two structural invariants and no number. - The seven-alias legacy surface list, which the file's own last Don't forbids copying in. Its one load-bearing fact — --background is the card fill, not the page color — moves into §2's opening sentence. Frontmatter stays. It is the machine-readable half of the DESIGN.md convention, and its consumer is the agent reading it rather than a build script, so the fix for a wrong entry is to correct it, not to delete the block. And the assertions that were simply wrong: - The radius table listed a 4px inner tier and a 16px page tier. Neither exists: --radius-inner resolves to 6px and --radius-page to 28px. Removed from the table and from the frontmatter. What replaces them is the relationship those rows were hiding — control/card/container are the same numbers as Astryx inner/element/container — now an Astryx column plus the Two-Name Rule, which says the pairs agree today as independent literals and can still be split by an upstream bump. - "There is no info status semantic" fused the color families with the dot semantics. --info is live in eleven palettes; what has no info is StatusSemantic. Read as written it told the next reader to delete a token the source deliberately keeps. Split across §8 and §9. - Astryx's Badge and StatusDot carry fixed literals from the neutral theme, so an Astryx info pill and Maka's --info are unrelated blues. Recorded. - Astryx's Text color="secondary" is not this ladder's secondary: it reads --color-text-secondary, a fixed literal outside the bridged containers and --muted-foreground inside them. Three results for one word, with live call sites on both sides. - §1 said maka-tokens.css owns "the Astryx bridge". It owns one third of it. - §7 listed Heading 1-5, omitting heading-6 and large. - §4's --border-strong and §9's scrollbar thumb contradicted each other. Reconciled on §9's side, since T5 shipped the thumb. 248 -> 238 lines. Doc-only; no token or product CSS changes.
* feat(code-mode): serialize cell execution * chore: align AI SDK for CodeMode * feat(code-mode): replace Self with QuickJS * fix(code-mode): fail closed across tool boundaries * fix(licenses): fail closed on embedded upgrades * fix(code-mode): bound execution admission
…#2574) Keep only real blocking patches (blank UA-CH, ai-sdk tool-call tracker). Product code uses stock ChatToolCalls + Astryx Button for linked sessions, and remounts ChatLayout on session switch instead of conversationKey. Shell sidebar shares the canvas base so the floating plate gap is not a third colour. Remove patch-guard tests and the floating-recipe CSS hook.
* fix(runtime): recover idle provider streams * test(runtime): bound idle stream recovery * fix(runtime): keep retry step identity current * fix(runtime): keep idle recovery fail-closed * fix(runtime): close idle replay safety gaps
* fix(headless): accept canonical trajectory refs * fix(headless): preserve token usage provenance * fix(headless): timestamp settled benchmark events * fix(headless): require explicit final usage evidence * fix(headless): derive usage provenance at producers * fix(headless): keep incomplete usage provisional * fix(headless): downgrade unsettled native usage * test(headless): mark harness fixtures as final * refactor(headless): clarify usage reconciliation * fix(headless): retain error response usage
…he#2584) * fix(desktop): restore composer drafts after apache#2574 remount Drop the session-keyed ChatLayout remount that wiped the in-composer draft Map, and point patch-era e2e/story selectors at stock Astryx DOM. * fix(desktop): sticky tool-call rows on stock ChatToolCalls DOM apache#2574 dropped the data-slot patch; nested sticky CSS still targeted it, so expanded call headers scrolled away. Bind sticky to role=button instead.
* fix(ui): restore conversation-safe Astryx seams * fix(code-mode): start admitted tools without deferral * test(code-mode): remove scheduler-dependent assertions
* ci: reduce Storybook to render smoke * ci: skip Electron E2E for Storybook-only changes
* test: drop Astryx DOM geometry and CSS string contracts Remove suites that pinned vendor class names, sticky px offsets, List aria-label, and CSS-grep structure after apache#2574 dropped ceremonial patches. Keep product journeys, classifier logic, and the real blank-UA-CH patch gate. * test: drop more layout geometry and vendor class pins Second pass: Daily Review bounds play, Astryx Skeleton class checks, astryx-codeblock markup matches, MCP field Y-order, and workbar CSS pixel widths. Keep accessible values, journeys, and product signals. * fix(ci): allowlist Astryx tool-call and CodeBlock CSS hooks Removing test greps for astryx-chat-tool-calls / astryx-codeblock made check-dead-css treat product CSS overrides as dead. Mark them as runtime themeProps classes like the other Astryx hooks. * test(e2e): slash desktop suite to core product journeys Drop flaky/geometry/vendor-heavy specs (quote-companion, mermaid layout, mention grammar, workbar resize, providers/MCP/onboarding surfaces, etc.). Keep send+IME, draft survival, skill revision drafts, blank-UA-CH help, settings theme shell, and artifact list navigation. Prune unused fixtures. * fix(e2e): drop unused e2eHomeDir export after suite cull Knip typecheck failed: skill-delete e2e was the last consumer.
* feat(ui): align high-traffic chrome with Astryx primitives Scan product surfaces against the Astryx wiki (Design / API-Styling / Theming / Container Padding) and close high-severity gaps: composer actions, inspector filter, import dialog source/rows, plan execution expand, and workbar launcher menu now use published Astryx components. Bring control min-heights onto the 28/32/36 rhythm and add a structural alignment gate with inventory docs. * fix(ui): correct a11y contracts after Astryx chrome pass - Workbar launcher: keep AT text on aria-description, not Item description - Disabled launcher rows target [aria-disabled] from Astryx Item menuitems - Import session pick uses listbox/option so rows stay keyboard-activatable - Selected import rows style aria-selected/aria-current, not aria-pressed - Inventory and height gate name skeleton rows, not the module page bar * fix(ui): keep import session rows keyboard-reachable Drop the listbox/option parent-role path that forced selected-only tabIndex and left every option at -1 when nothing was selected. Item without a parent role renders a real button for onClick, so rows are focusable after catalog load. Tighten the alignment gate to reject the trap pattern. * docs(ui): file-level Astryx inventory for every product surface Replace family-batch claims with one inventory row per on-disk product .tsx/.css under renderer and packages/ui. Generator analyzes raw controls and Astryx usage; coverage gate and tests enforce path-set equality with disk. * fix(docs): claim Astryx usage only from imports and JSX Stop matching component names in comments. The surface inventory analyzer now binds names from @astryxdesign/core (and narrow @maka/ui re-exports) and counts only JSX tags using those bindings. Regenerated inventory and added a regression test for comment-only false positives. * feat(ui): replace remaining product controls with Astryx primitives Quote chips, prompt-rail ticks, titlebar rename, and workbar tabs now use Button/IconButton/TextInput instead of raw HTML. Product CSS only strips control chrome where the surface needs chip/rail/tab geometry. * feat(ui): finish Astryx empty/loading surfaces and clear inventory blockers Replace remaining hand-rolled empty and loading chrome with EmptyState, Spinner, and Banner; drop noise comments; regenerate surface inventory to 0 blockers. * feat(ui): align residual empty/loading/error after full surface audit Deep-read all product settings, shell, module, and packages/ui surfaces. Convert remaining hand-rolled error/empty/loading chrome to Banner, EmptyState, and Spinner; document intentional exceptions and backlog. * fix(ui): repair Astryx migration regressions from adversarial review Restore workbar launcher Enter/Space activation, quote-chip overflow measure on the clipped text node, tab accessible names that include counts, unsupported-artifact meta, and custom-pet loading empty state. * fix(ui): type ChatSurfaceLayout conversationKey after main rebase Main switches sessions via conversationKey (Astryx patch). Explicitly declare and forward the prop so desktop typecheck no longer depends on ComponentProps seeing only the stock ChatLayout destructure list. * style: biome-format Astryx inventory scripts for CI typecheck job The CI typecheck workflow runs biome format checks; keep inventory generators and gates formatted so the job can proceed past format. * fix(ui): remove dead CSS left by Astryx empty/error migrations Drop unused preview/import/launcher/connection helpers and the unused warning-wash-strong tokens so check-dead-css stays at baseline 0.
…e#2590) Full-stack frontend analysis after apache#2580: architecture smells with severities, remaining Astryx gaps beyond raw controls, and a ranked P0–P3 backlog. Regenerated surface inventory baseline (0 blockers).
* ci: cut wall-clock via impact gates and single e2e job - Skip Storybook and Electron e2e for packages/ui (and renderer) unit-test-only paths; keep product-source gates. - Collapse dual e2e shards plus a separate alignment job into one e2e job that reuses install and the built renderer for the CDP audit. * style: format ci-test-plan unit assertion for biome CI format:check rejected the multi-line assert.equal added for the packages/ui product e2e gate.
…ache#2593) * fix(ui): close Astryx review debt for elevation, rhythm, and primitives Align plan/agent-graph plates to surface-raised without stacked shadows, map status washes to design tokens, fix the four inventory polish heights to the 28/32/36 control rhythm, and adopt Toolbar/Kbd/Heading/Link on the remaining chrome gaps. Refresh inventory baseline to 0 polish. * fix(ui): repair browser Toolbar flex and Kbd chrome after review Address adversarial findings: keep address field in Toolbar start slot with a flex grow row, drop product shadow on quote companion composer, and stop wrapping Astryx Kbd in a second pill.
* feat(runtime-host): add authenticated WebSocket access * fix(runtime-host): harden WebSocket access boundaries
* fix(runtime): preserve full access in plan mode * fix(runtime): carry full access through plan previews
* feat(desktop): consume task submission readiness * chore: retrigger CI * fix(desktop): align readiness with send authority * fix(desktop): bind readiness to send owner
* feat(runtime-host): own project catalog * fix(runtime-host): preserve project membership consistency
…pache#2608) * feat(runtime-host): preserve capability providers across reconnect * fix(runtime-host): fence superseded capability connections
* ci(windows): scope baseline by affected surface * fix(ci): preserve scoped Windows smoke evidence * chore: retrigger Windows release check
* feat: route DeepSeek V4 Flash through ApplyPatch * refactor: declare apply patch protocols on providers * fix: preserve apply patch execution facts * fix: preserve cross-profile patch history * fix: route child editing through tool alternatives * test: cover routed apply patch contracts * fix: stop cancelled apply patch batches * fix: preserve all apply patch replay facts * fix: snapshot resolved child tools
…tes (apache#2615) * fix(oauth,desktop): recover stuck xAI login and stale connection deletes Supersede in-progress Host OAuth when the user starts login again so SuperGrok authorization is not blocked after the browser already approved. Retry connection delete on connection_stale and map conflict errors to actionable Chinese UX copy. * fix(desktop): harden connection delete error paths Narrow idempotent delete to missing connections only, fix RemoveCatalogConnectionResult exhaustiveness for typecheck, and cover invalid slug rejection. * fix(oauth): serialize starts and preserve admitted grants on supersede Queue concurrent oauth.login.start admissions so supersede cannot dual-open active logins, wait out deferred polls/commits instead of dropping tokens, and fix misleading error toast plus locale-safe delete stale copy. * style: format oauth-coordinator supersede tests for biome
* fix(desktop): restore slash command discovery * fix(desktop): harden slash command discovery * fix(desktop): centralize slash command routing * test(desktop): verify slash context compaction
* feat: make changes panel Git-authoritative * feat: simplify Git changes workbar * refactor: reduce changes panel to branch facts * fix: clarify Git change summaries * refactor: align changes panel with Astryx IDE * fix: keep review styles within owned hooks * fix: compare branch changes from merge base * fix: make Git changes review resilient
* ci: retry transient Electron downloads * ci: classify Electron retries from structured causes --------- Co-authored-by: sdxiaomage <sdxiaomage@users.noreply.github.com>
* fix(desktop): hide session chrome behind settings * fix(desktop): settle shell state before settings
* fix: render subagent sessions as compact rows * test: strengthen subagent session row contracts
* feat(runtime-host): recover clients across host restarts * fix(runtime-host): close reconnect recovery gaps * fix(runtime-host): reject stale desktop candidates
zhiiw
force-pushed
the
codex/managed-dependency-storage-authority
branch
from
August 10, 2026 00:48
6b9943a to
0d1f349
Compare
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.
Summary
Introduces the durable storage authority for Maka-owned dependency artifacts. This slice owns publication, immutable receipts, leases, garbage collection, and crash convergence for dependency trees. It has no Runtime Host composition or production tool consumer.
Primary invariant
An artifact may be published only after the producer filesystem capability has been revoked, the authority-owned copy has been sealed, and its receipt can be committed. Active or pending leases prevent collection.
Stack
Verification
Focused storage tests cover duplicate owners, acquire/close races, producer inode revocation, tree sealing, readonly artifacts, leases, and GC.
中文说明
本切片只引入 Maka 自有依赖产物的 durable storage authority,负责依赖树发布、不可变 receipt、lease、GC 与崩溃收敛;不接 Runtime Host,也不提供生产工具入口。
主要不变量:只有在 producer 的文件系统能力被撤销、内容复制到 authority 自有 inode、完整树完成 seal,并且 receipt 可提交后,artifact 才能发布。active/pending lease 期间绝不能被 GC 删除。
堆叠顺序:本 PR → 受约束 npm producer → bundled npm attestation → 可取消 managed admission → 生产 managed inspection 与 crash/replay 证明。