Merged
Conversation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Plans can now declare explicit sequential (after) or alternative (fallback) relationships, enabling cross-session ordering recovery. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ManifestNode was missing a links field, causing plan-to-plan after/fallback links to be lost on save. Now links are serialized and restored at all tree depths, not just the root entity. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Context (focusedGoalId, focusedPlanId) is now saved to context/{roleId}.json
on every focus-changing operation and restored on activate. Each role has
independent context. Also adds renderState fold option so activate can
show focused goal expanded while collapsing others.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove the legacy knowledge container node from the individual hierarchy. Principle and procedure are now direct children of individual, matching the actual runtime behavior of realize/master/teach/train. Add concept hierarchy ordering to renderState so children are always rendered in structure-definition order (identity → encounter → experience → principle → procedure → goal) regardless of creation time. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Position is now an independent entity under society (not a child of organization). OrgNamespace split into OrgNamespace (found, charter, dissolve, hire, fire) and PositionNamespace (establish, abolish, charge, appoint, dismiss). CLI adds `pos` subcommand group. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Promote `use` from RoleNamespace to Rolex class as the unified execution entry point. `!namespace.method` locators dispatch to RoleX runtime (org, position, individual); regular locators delegate to ResourceX. Add process and world descriptions. Remove prototypes/ directory — moved to DeepracticeX repo. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Upgrade Prototype interface: resolve, summon, banish, list. Add PrototypeNamespace on Rolex (rolex.proto.summon/banish/list). Activate auto-borns individual when prototype exists but runtime doesn't. Builtin nuwa prototype points to DeepracticeX GitHub URL. Remove registerPrototype from Platform, seeds/scanSeeds mechanism. CLI subcommands use full names (organization, position, prototype). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summon throws if id conflicts with a builtin. ReadRegistry merges with builtins taking precedence over stale file entries. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… descriptions - Add AuthorNamespace (rolex.author) with born/teach/train for writing prototype files directly to disk (individual.json + .feature files) - Wire author tools through MCP (author-born/teach/train) and CLI (rolex author born/teach/train) - Reorganize description .feature files into namespace subdirectories (world/, role/, individual/, org/, position/, prototype/, author/) - Update gen-descriptions.ts to scan subdirectories - Add Nuwa world description to MCP instructions - Simplify use-protocol to describe the ! routing pattern only - Fix outdated descriptions (reflect, realize, cognitive-priority) - Add prototype descriptions (summon, banish) - 9 new tests for AuthorNamespace (93 total passing) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- MCP server gains `use` tool for unified execution entry point - Rolex dispatch gains `resource` namespace proxying ResourceX ops - BUILTINS nuwa source changed from GitHub URL to registry locator Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add generic `tag` field to Structure (e.g., "done", "abandoned") - Add `tag(node, tag)` operation to Runtime - finish() tags task as "done" instead of removing it - complete() tags plan as "done" instead of removing it - abandon() tags plan as "abandoned" instead of removing it - Render tag as `#done` / `#abandoned` in heading - Persist tag in manifest serialization/deserialization Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…idual - replayState was dropping tag field when rebuilding Structure from disk - finish without encounter now projects the task node (not entire individual) - Updated test assertions: nodes are tagged, not removed Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- finish: task is tagged #done and stays in tree, not removed - complete: plan is tagged #done and stays in tree - abandon: plan is tagged #abandoned and stays in tree - state-origin: heading format includes #tag Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…node Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Stale focusedGoalId/focusedPlanId pointing to forgotten nodes caused focus to crash. Now activate checks if nodes still exist before restoring persisted focus. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ollision When multiple MCP server processes connect to the same rolex.db, each holds its own module-level counter copy. They independently increment and generate duplicate refs, causing UNIQUE constraint failures on node creation. Replace the in-memory counter with a per-insert DB query that reads the current max ref atomically. SQLite write serialization ensures no race conditions between processes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New read-only namespace accessible via !census.list through the use tool. Lists individuals, organizations, and positions under society, with optional type filtering and past/archive support. Output is rendered as grouped, human-readable text instead of raw JSON. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…/sqlite Replace drizzle-orm/bun-sqlite with cross-runtime @deepracticex packages. SQLite-backed runtime now works on both Bun and Node.js 22+. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…equirement type - Merge AuthorNamespace into PrototypeNamespace (born/teach/train + found/charter/establish/charge/require) - Rename summon/banish to settle/evict for prototype registry - Add Initializer interface and LocalPlatform implementation for bootstrap - Add requirement as independent structure type (avoid JS reserved word 'require') - Add member method and members/appointments fields to PrototypeManifest - Delete author-specific MCP tools and description files - Update CLI, MCP server, and world descriptions - Update README with simplified documentation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…to RoleX
- New @rolexjs/prototype package with PrototypeInstruction type, Prototype interface, and ResourceX resolver
- Instruction format: { op, args } with @ prefix for file references
- Unified rolex prototype (prototype.json) contains complete world blueprint: born nuwa + train + found rolex + hire + establish + appoint
- Move skills from DeepracticeX to RoleX/skills/
- Move prototype from DeepracticeX to RoleX/prototypes/rolex/
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix transform to reparent nodes preserving subtree (was incorrectly creating new nodes) - archive/rehire/dissolve/abolish now use transform for proper subtree preservation - Remove prototypeType from local-platform (now built-in to ResourceX 2.16.1) - Bootstrap from remote registry (registry.deepractice.dev/rolex-world) - Remove Nuwa's redundant train for position-level skills - Rename prototype resource to rolex-world - Upgrade resourcexjs to 2.16.1 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add @rolexjs/rolex-prototype package for the rolex world prototype - Add prototypes/* to workspace configuration - MCP server bootstrap changed from registry URL to npm: locator - Upgrade resourcexjs to 2.17.2 (NpmSourceLoader support) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tool Move all tool descriptions from rolexjs to prototype package as the single source of truth. Add direct tool for stateless world-level operations. Update mcp-server and ops to support the new direct tool alongside use. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rename the foundational prototype package and directory from rolex to genesis. Update all references in mcp-server, changeset config, and tests. Add changeset for dev snapshot release. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move @rolexjs/genesis into packages/ directory to align with the standard workspace layout. Remove prototypes/ workspace entry. This ensures the CI workspace:* replacement step covers genesis correctly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously census and use-protocol were missing from the manually maintained list. Now uses Object.values(world) so new descriptions are included automatically. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Link targets (positions, organizations) now project with full subtree instead of empty snapshots. Render displays them as expanded heading trees instead of one-line references. Fixes #22. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SQLite runtime now uses projectLinked (full subtree without links) instead of projectRef (snapshot) for link targets, matching the in-memory runtime fix. Requirement nodes are folded by default since their content duplicates auto-trained procedures. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
AI agents were guessing !namespace.method commands not seen in any loaded skill or world description, wasting tokens and causing errors. Added a NEVER guess scenario to use-protocol.feature. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ender (#23, #24) - Enforce required parameter validation in toArgs — missing required args now throw instead of silently passing undefined - Add isEmpty helper to renderState — nodes without id, information, or children are excluded from rendered output Closes #23, Closes #24 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- position.appoint no longer copies requirements as procedures — requirements are rendered through position links, like organization charters - Unfold requirement nodes in renderState so content is visible - Updating position requirements now automatically reflects on all individuals Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Both in-memory and SQLite runtimes reject duplicate IDs at create time
- Same ID under same parent remains idempotent (returns existing node)
- Identity nodes use {id}-identity suffix to avoid conflicting with individual ID
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Allow realize and reflect to be called with empty source IDs, enabling direct creation of principles and experiences from conversational insights without requiring the full cognition chain. Also sets up BDD test infrastructure with @deepracticex/bdd and @modelcontextprotocol/sdk for MCP E2E testing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add identity-ethics.feature as the foundational world instruction (@priority-critical) establishing that roles must refuse work outside their duties and suggest Nuwa as fallback. Build directive system for enforcing boundaries at decision points: - gen-directives.ts parses Gherkin into topic/scenario structure - directive() API in rolexjs for contextual retrieval - Wire on-unknown-command directive into error handling Clean up command knowledge leaks: - Remove nuwa.feature (leaked world-building commands to all roles) - Update use-protocol (commands from own skills only) - Update census (help find people, not teach operations) - Remove teach/train from cognition.feature Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move render() into rolexjs so Role methods return rendered 3-layer text directly. MCP server becomes a pure pass-through with no render logic. RolexResult replaced by string returns; fold logic for activate now lives inside Role.project(). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…nce, and rendering improvements - Relax global ID uniqueness to same-parent idempotence in both runtimes - Add priority-based findInState for disambiguating duplicate IDs - Auto-train position requirements as individual procedures on appoint - Fold requirement nodes on activate to avoid duplicate content - Enhance error messages with skill-loading hints in dispatch and direct - Update identity-ethics on-unknown-command directive to distinguish skill-not-loaded vs outside-duties - Unify use-protocol and use tool descriptions, add mandatory skill-loading rule - Fix plan link rendering: compact references for after/before/fallback, expanded subtrees for organizational links - Preserve focused plan when re-focusing same goal - Add goal progress summary in headings (e.g. [2/2 plans, 4/4 tasks]) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
reflect, realize, and master now accept arrays of encounter/experience IDs instead of a single ID. All IDs in the array are consumed: the first goes through ops (creates output + removes source), remaining are removed via forget. Previously only ids[0] was consumed, leaving orphan nodes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Define RoleXRepository and PrototypeRegistry interfaces in @rolexjs/core - Platform now uses `repository: RoleXRepository` instead of separate runtime/prototype/saveContext/loadContext properties - Implement SqliteRepository in local-platform with prototypes and contexts tables (replacing JSON file storage) - Simplify localPlatform to thin config layer (~80 lines from ~177) - Update Rolex to consume platform.repository - Update all tests to use new Platform shape Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Platform now declares resourcexProvider instead of resourcex. Rolex creates the ResourceX instance internally from the injected provider, making storage backend swappable for cloud deployment. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Convert all Runtime methods to return Promises, propagating async/await through system → local-platform → prototype → rolexjs → mcp-server. This removes the synchronous constraint and enables cloud-native async storage backends (D1, Turso HTTP, PostgreSQL) without architectural workarounds. - Runtime interface: 8 methods now return Promise - createRuntime() and createSqliteRuntime(): all methods async - RoleXRepository: saveContext/loadContext now async - Rolex: constructor split into private constructor + static async create() - createRoleX() now returns Promise<Rolex> - Role: all public methods async (want, plan, todo, finish, etc.) - ops: 30+ operations async with await on all Runtime calls - MCP server handlers: await on all Role method calls - Tests: all Runtime/Role calls updated with await Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add skill to guide Nuwa through migrating pre-1.0 RoleX data (~/.rolex) to the new format. Covers individuals, knowledge, organizations, and assignments. - skills/version-migration/SKILL.md — 7-step migration process - genesis prototype updated to train Nuwa with the procedure - Published to registry.deepractice.dev Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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
Breaking changes
Runtimeinterface: all 8 methods now returnPromise(async)createRoleX()now returnsPromise<Rolex>— must be awaitedRoleclass: all public methods now async (want, plan, todo, finish, etc.)RoleXRepository.saveContext/loadContextnow asyncPlatform.resourcex→Platform.resourcexProvider(ResourceXProvider type from @resourcexjs/core)Platformnow requiresrepository: RoleXRepositoryinstead of scattered runtime/prototype/context fields@rolexjs/rolex-prototyperenamed to@rolexjs/genesisTest plan
🤖 Generated with Claude Code