@rosthq/cli 0.5.6 → 0.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -41486,7 +41486,7 @@ var referenceDocuments = [
41486
41486
  order: 10,
41487
41487
  title: "{{brand}} implementation method",
41488
41488
  summary: "The staged operating-system setup path used by humans, CLI sessions, MCP clients, and in-app agents.",
41489
- version: "2026-06-16.1",
41489
+ version: "2026-06-18.1",
41490
41490
  public: true,
41491
41491
  audiences: ["human", "cli", "mcp", "in_app_agent"],
41492
41492
  stages: ["company_setup", "graph_design", "charter_design", "staffing", "operating_rhythm"],
@@ -41584,14 +41584,14 @@ The Compass is drafted, then activated by a human through supersession.
41584
41584
 
41585
41585
  ## When to stop for confirmation
41586
41586
 
41587
- \`onboarding.advance_step\`, \`onboarding.finish\`, \`onboarding.create_invite\`, \`compass.approve_version\`, \`compass.reject_draft\`, \`compass.answer_gap\`, and \`compass.set\` are \`human_required\`. Attaching a reference document (\`onboarding.attach_reference\`) and drafting a Compass are safe for an agent; approving a version (a supersession) is a human act. The agent drafts and surfaces the approve link. See the confirmations guide.`
41587
+ \`onboarding.finish\`, \`compass.approve_version\`, \`compass.reject_draft\`, and \`compass.set\` are \`human_required\`. \`onboarding.advance_step\`, \`onboarding.create_invite\`, \`onboarding.attach_reference\`, \`compass.answer_gap\`, and drafting a Compass are \`none\` \u2014 none of them returns a pending confirmation. \`none\` is not the same as "agent-callable", though: \`onboarding.create_invite\` and \`compass.answer_gap\` record the human who ran them, so they run as a person, not from an agent session, while advancing a step, attaching a reference, and drafting a Compass are safe for an agent. Approving a version (a supersession) is a human act. The agent drafts and surfaces the approve link. See the confirmations guide.`
41588
41588
  },
41589
41589
  {
41590
41590
  slug: "responsibility-graph-playbook",
41591
41591
  order: 20,
41592
41592
  title: "Responsibility Graph playbook",
41593
41593
  summary: "How to build a functions-first graph with seats, owners, Stewards, vacancies, and clean authority.",
41594
- version: "2026-06-17.1",
41594
+ version: "2026-06-18.1",
41595
41595
  public: true,
41596
41596
  audiences: ["human", "cli", "mcp", "in_app_agent"],
41597
41597
  stages: ["graph_design", "staffing"],
@@ -41688,7 +41688,7 @@ It ends every occupancy, archives the seat's active Charter, revokes the seat's
41688
41688
 
41689
41689
  ## When to stop for confirmation
41690
41690
 
41691
- \`seat.create\`, \`seat.rename\`, \`seat.reparent\`, \`seat.set_type\`, and \`seat.decommission\` are \`human_required\`. Over MCP they return a pending confirmation with an approve link instead of mutating; the human approves with \`confirmation.approve\`. Never approve your own structural change from an agent session \u2014 surface the pending confirmation to a human. When a seat-targeted command does execute, its audit row is scoped to that seat (queryable by \`seat_id\`); on the deferred MCP path the executed audit is recorded against the human's \`confirmation.approve\`. See the confirmations guide.
41691
+ \`seat.reparent\`, \`seat.set_type\`, and \`seat.decommission\` are \`human_required\`; \`seat.create\` and \`seat.rename\` are \`none\`, so an agent can add and rename seats directly. The structural commands return a pending confirmation with an approve link over MCP instead of mutating; the human approves with \`confirmation.approve\`. Never approve your own structural change from an agent session \u2014 surface the pending confirmation to a human. When a seat-targeted command does execute, its audit row is scoped to that seat (queryable by \`seat_id\`); on the deferred MCP path the executed audit is recorded against the human's \`confirmation.approve\`. See the confirmations guide.
41692
41692
 
41693
41693
  ## Agent guidance
41694
41694
 
@@ -41769,7 +41769,7 @@ Drafting can be assisted by agents. Activation is a human decision. When authori
41769
41769
  order: 40,
41770
41770
  title: "Agent staffing playbook",
41771
41771
  summary: "How to decide whether a seat should be human, agent, or hybrid, and how to go live safely.",
41772
- version: "2026-06-13.1",
41772
+ version: "2026-06-18.1",
41773
41773
  public: true,
41774
41774
  audiences: ["human", "cli", "mcp", "in_app_agent"],
41775
41775
  stages: ["staffing"],
@@ -41824,7 +41824,7 @@ Two creation paths, both draft-first. Read the stock-agents guide for templates
41824
41824
 
41825
41825
  ## When to stop for confirmation
41826
41826
 
41827
- \`agent.create_from_template\`, \`agent.create_custom\`, \`agent.configure_tools\`, \`staffing.assign_user\`, \`agent.go_live\`, \`agent.update_schedule\`, and \`agent.decommission\` are \`human_required\`; \`mcp_token.create\` and \`credential.ingress\` are \`dangerous\`. An agent may draft, configure (with vault refs), and dry-run; the human approves go-live, credentials, schedule changes, and decommission. \`run_dry_run\` is ungated by human approval, but it is **precondition-gated**: the seat's permission manifest must be signed first (\`charter.sign_manifest\`). Attempting a dry run before sign-off returns a clean \`COMMAND_PRECONDITION_FAILED\` naming \`charter.sign_manifest\`, not a generic failure. Go-live after a passed dry run is \`human_required\`. See the confirmations guide.
41827
+ \`agent.create_from_template\`, \`agent.create_custom\`, \`staffing.assign_user\`, \`agent.go_live\`, \`agent.update_schedule\`, and \`mcp_token.create\` are \`human_required\`; \`agent.configure_tools\` and \`credential.ingress\` are \`credential_flow\` (both gate through the vault-backed credential path with human approval; \`agent.configure_tools\` stages the request and only \`credential.ingress\` takes the raw secret, as a vault reference); \`agent.decommission\` is \`dangerous\`. An agent may draft, configure (with vault refs), and dry-run; the human approves go-live, credentials, schedule changes, and decommission. \`run_dry_run\` is ungated by human approval, but it is **precondition-gated**: the seat's permission manifest must be signed first (\`charter.sign_manifest\`). Attempting a dry run before sign-off returns a clean \`COMMAND_PRECONDITION_FAILED\` naming \`charter.sign_manifest\`, not a generic failure. Go-live after a passed dry run is \`human_required\`. See the confirmations guide.
41828
41828
 
41829
41829
  ## Non-negotiables
41830
41830
 
@@ -41915,7 +41915,7 @@ In read-only or demo mode the **Add agent** affordance is disabled or routes to
41915
41915
  order: 42,
41916
41916
  title: "Design a custom agent",
41917
41917
  summary: "How to build a custom agent from operational questions through the Charter Builder, tools, dry run, and go-live without writing prompts.",
41918
- version: "2026-06-17.1",
41918
+ version: "2026-06-18.2",
41919
41919
  public: true,
41920
41920
  audiences: ["human", "cli", "mcp", "in_app_agent"],
41921
41921
  stages: ["staffing", "charter_design"],
@@ -41971,18 +41971,18 @@ The same path is command-backed:
41971
41971
 
41972
41972
  ## Dry run and go-live
41973
41973
 
41974
- The agent rehearses a representative task in a sandbox and is expected to escalate where the Charter requires it. A failed dry run keeps the draft and shows the reason so you can edit and rerun. When the dry run passes, a human promotes the agent live. The dry run rehearses the specific model tier you chose, so once it passes the model is locked \u2014 changing the model requires re-running the dry run on the new model before go-live.
41974
+ The dry run is a real sandbox rehearsal, not a stamp. It executes a mock-provider run derived from the Charter \u2014 the agent works against sandbox data only and is expected to escalate where the Charter's must-escalate clause requires it. The result is earned: a run that escalates the must-escalate boundary passes; a run that acts on that boundary instead of escalating fails. A failed dry run keeps the draft and shows the reason so you can edit and rerun. The rehearsal returns a transcript \u2014 the steps the agent took and the escalation it raised \u2014 shown step by step in the builder and printed by the CLI, so you can see the governance model working before anything goes live. When the dry run passes, a human promotes the agent live. The dry run rehearses the specific model tier you chose, so once it passes the model is locked \u2014 changing the model requires re-running the dry run on the new model before go-live.
41975
41975
 
41976
41976
  ## When to stop for confirmation
41977
41977
 
41978
- \`agent.create_custom\`, \`agent.configure_tools\`, \`charter.sign_manifest\`, \`staffing.assign_user\`, and \`agent.go_live\` are \`human_required\`; \`credential.ingress\` is \`dangerous\`. \`agent.run_dry_run\` is ungated by human approval but **requires a signed manifest first** \u2014 a dry run before \`charter.sign_manifest\` returns a clean \`COMMAND_PRECONDITION_FAILED\` pointing at \`charter.sign_manifest\`. The go-live after a passed dry run is \`human_required\`. An agent may draft, configure (with vault refs), and dry-run; only a human approves the Charter, manifest, credentials, and go-live. A seat token can never create or approve its own setup. See the confirmations guide.`
41978
+ \`agent.create_custom\`, \`charter.sign_manifest\`, \`staffing.assign_user\`, and \`agent.go_live\` are \`human_required\`; \`agent.configure_tools\` and \`credential.ingress\` are \`credential_flow\` (both gate through the vault-backed credential path with human approval; \`agent.configure_tools\` stages the request and only \`credential.ingress\` takes the raw secret, as a vault reference). \`agent.run_dry_run\` is ungated by human approval but **requires a signed manifest first** \u2014 a dry run before \`charter.sign_manifest\` returns a clean \`COMMAND_PRECONDITION_FAILED\` pointing at \`charter.sign_manifest\`. The go-live after a passed dry run is \`human_required\`. An agent may draft, configure (with vault refs), and dry-run; only a human approves the Charter, manifest, credentials, and go-live. A seat token can never create or approve its own setup. See the confirmations guide.`
41979
41979
  },
41980
41980
  {
41981
41981
  slug: "sync-rhythm-playbook",
41982
41982
  order: 80,
41983
41983
  title: "Sync rhythm playbook",
41984
41984
  summary: "How Signal, Friction, Cascade, and Sync Briefs turn weekly meetings into decision time.",
41985
- version: "2026-06-17.1",
41985
+ version: "2026-06-18.1",
41986
41986
  public: true,
41987
41987
  audiences: ["human", "cli", "mcp", "in_app_agent"],
41988
41988
  stages: ["operating_rhythm"],
@@ -42041,7 +42041,7 @@ Start with the exceptions, not a tour of every seat. Resolve the highest-value F
42041
42041
 
42042
42042
  ## When to stop for confirmation
42043
42043
 
42044
- \`sync.run.start\`, \`sync.run.complete\`, and \`sync.item.assign\` are \`human_required\`; \`sync.brief.compile\` and \`sync.brief.get\` are not gated. Compiling the brief is safe for an agent to do before the meeting; starting, completing, and assigning follow-ups are human acts. An agent prepares the brief and proposed assignments and stops.
42044
+ \`sync.brief.compile\`, \`sync.brief.get\`, \`sync.run.start\`, \`sync.run.complete\`, and \`sync.item.assign\` are all \`none\`, so a tenant-admin seat runs the weekly rhythm directly without a per-action human gate. An agent can compile the brief and propose assignments ahead of the meeting; the human still owns the meeting and the decisions made in it, but {{brand}} does not force a confirmation on these commands themselves.
42045
42045
 
42046
42046
  ## After Sync
42047
42047
 
@@ -42052,7 +42052,7 @@ Decisions should be recorded as human decisions. Handoffs should attach to seats
42052
42052
  order: 45,
42053
42053
  title: "How agents work",
42054
42054
  summary: "How {{brand}} agents operate inside seats, use Charters, report work, and escalate beyond authority.",
42055
- version: "2026-06-13.1",
42055
+ version: "2026-06-18.1",
42056
42056
  public: true,
42057
42057
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42058
42058
  stages: ["staffing", "operating_rhythm"],
@@ -42123,7 +42123,7 @@ A seat-scoped MCP token or the CLI runs the hand-shaped protocol. The server sti
42123
42123
 
42124
42124
  A seat-scoped MCP token already carries the seat, so its tools (\`rost_get_tasks\`, \u2026) need no seat argument. A tenant or owner CLI **session** does not, so pass \`--seat <seat-id>\` on seat-operating wrappers (an owner can target any seat in the tenant; a member only a seat they occupy). See "Seat scope" below.
42125
42125
 
42126
- \`task.accept\`, \`task.decline\`, and \`task.complete\` are \`human_required\` for the acting human on the seat; \`status.record\`, \`work.log\`, and \`escalation.raise\` are not gated. An agent never approves a confirmation on behalf of a human.
42126
+ \`task.accept\`, \`task.decline\`, \`task.complete\`, \`status.record\`, \`work.log\`, and \`escalation.raise\` are all \`none\` \u2014 a seat operates its own queue and reports its own work directly. None of these carry a confirmation gate. An agent still never approves a human's confirmation on another seat's behalf; these are simply the acting seat's own reversible actions.
42127
42127
 
42128
42128
  ## What humans should review
42129
42129
 
@@ -42134,7 +42134,7 @@ Review the first dry runs, tool-call audit rows, escalations, and Signal impact.
42134
42134
  order: 46,
42135
42135
  title: "Tool access and vault",
42136
42136
  summary: "How to give agents access to tools without exposing raw credentials or expanding authority by accident.",
42137
- version: "2026-06-13.1",
42137
+ version: "2026-06-18.1",
42138
42138
  public: true,
42139
42139
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42140
42140
  stages: ["staffing"],
@@ -42185,13 +42185,13 @@ Connecting a tool is a human-controlled step. The agent can recommend a tool, ex
42185
42185
  ## Connect tools and credentials from CLI or MCP
42186
42186
 
42187
42187
  - Stage tools on a draft agent: \`agent.configure_tools\` / \`rost_configure_agent_tools\` \u2014 connect or decline proposed tools and stage credential-ingress requests. Pass vault references, never raw secret material.
42188
- - Store a secret: \`credential.ingress\` / \`rost_store_credential\` (scope: seat) persists only a vault reference. This command is \`dangerous\` \u2014 it returns a pending confirmation and runs only with a real human-provided secret.
42188
+ - Store a secret: \`credential.ingress\` / \`rost_store_credential\` (scope: seat) persists only a vault reference. \`credential.ingress\` is \`credential_flow\` \u2014 it returns a pending confirmation and runs only with a real human-provided secret, captured as a vault reference. (Because it redacts that secret, the pending confirmation also shows a high-risk badge \u2014 see the confirmations guide for badge-versus-level.)
42189
42189
  - Sign the manifest: \`charter.sign_manifest\` / \`rost_sign_charter_manifest\` requests human confirmation for the seat's permission manifest.
42190
- - Mint local access: prefer \`{{cli}} mcp install\` for users; \`mcp_token.create\` is \`dangerous\` and returns the token once. List metadata with \`mcp_token.list\` (never token material); revoke with \`mcp_token.revoke\`.
42190
+ - Mint local access: prefer \`{{cli}} mcp install\` for users; \`mcp_token.create\` is \`human_required\` and returns the token once. List metadata with \`mcp_token.list\` (never token material); revoke with \`mcp_token.revoke\`.
42191
42191
 
42192
42192
  ## When to stop for confirmation
42193
42193
 
42194
- \`credential.ingress\` and \`mcp_token.create\` are \`dangerous\`; \`charter.sign_manifest\`, \`agent.configure_tools\`, and \`mcp_token.revoke\` are \`human_required\`. Connecting a tool, storing a credential, or minting a token is a human-approved act. An agent drafts and explains; a human approves through the confirmation flow. Secrets never appear in prompts, logs, tool arguments, or an \`args_summary\`. See the confirmations guide.`
42194
+ \`credential.ingress\` and \`agent.configure_tools\` are \`credential_flow\`; \`charter.sign_manifest\`, \`mcp_token.create\`, and \`mcp_token.revoke\` are \`human_required\`. Connecting a tool, storing a credential, or minting a token is a human-approved act. An agent drafts and explains; a human approves through the confirmation flow. Secrets never appear in prompts, logs, tool arguments, or an \`args_summary\`. See the confirmations guide.`
42195
42195
  },
42196
42196
  {
42197
42197
  slug: "available-tools-guide",
@@ -42241,7 +42241,7 @@ Agents should explain the job, the required tool category, the minimum permissio
42241
42241
  order: 48,
42242
42242
  title: "CLI and MCP installation guide",
42243
42243
  summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
42244
- version: "2026-06-18.8",
42244
+ version: "2026-06-18.10",
42245
42245
  public: true,
42246
42246
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42247
42247
  stages: ["company_setup", "staffing"],
@@ -42755,6 +42755,8 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
42755
42755
  | \`rost_update_agent_setup\` | \`agent_setup.update\` | Update parent, steward, lane, schedule, or answers on a setup draft. | Tenant | Call with \`setup_id\` and the fields to change. |
42756
42756
  | \`rost_update_agent_schedule\` | \`agent.update_schedule\` | Update a draft or live agent's scheduled execution. | Tenant | Call with \`agent_id\` and \`schedule_cron\`; expect human confirmation. |
42757
42757
  | \`rost_decommission_agent\` | \`agent.decommission\` | Retire an agent occupancy safely (no-orphan guarded). | Tenant | Call with \`agent_id\`; expect human confirmation. |
42758
+ | \`rost_pause_agent\` | \`agent.pause\` | Pause a live agent so it stops scheduled and on-demand runs; reversible. | Tenant | Call with \`seat_id\`; expect human confirmation. |
42759
+ | \`rost_resume_agent\` | \`agent.resume\` | Resume a paused agent back to live (no-orphan guarded). | Tenant | Call with \`seat_id\`; expect human confirmation. |
42758
42760
  | \`rost_create_custom_agent\` | \`agent.create_custom\` | Create a draft custom agent shell and draft Charter seed from operational answers. | Tenant | Call with \`seat_id\` and operational answers; expect human confirmation. |
42759
42761
  | \`rost_configure_agent_tools\` | \`agent.configure_tools\` | Connect or decline proposed tools and stage credential-ingress requests (vault refs only). | Seat or tenant-admin | Never send raw secrets; expect a credential confirmation. |
42760
42762
  | \`rost_run_agent_dry_run\` | \`agent.run_dry_run\` | Run the sandbox dry run for a draft agent; durable and idempotent per Charter version. | Seat or tenant-admin | Call after the manifest is signed; ungated by human approval, but precondition-gated on a signed manifest. |
@@ -42791,7 +42793,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
42791
42793
  | \`rost_update_friction_issue_status\` | \`friction.update_status\` | Move a non-terminal issue between open and diagnosing. | Seat or tenant-admin | Call with \`issue_id\` and \`status\`. |
42792
42794
  | \`rost_resolve_friction_issue\` | \`friction.resolve\` | Resolve an issue with a root cause and remediation task. | Tenant | Human decision; expect confirmation. |
42793
42795
  | \`rost_link_task_to_friction_issue\` | \`friction.link_task\` | Attach an existing task as an issue's action task. | Seat or tenant-admin | Call with \`issue_id\` and \`task_id\`. |
42794
- | \`rost_create_task\` | \`task.create\` | Create a task (a commitment between seats). | Seat or tenant-admin | Agent proposals land in draft for confirmation. |
42796
+ | \`rost_create_task\` | \`task.create\` | Create a task (a commitment between seats). | Seat or tenant-admin | \`none\` \u2014 created directly; the owning seat accepts or declines. |
42795
42797
  | \`rost_compile_sync_brief\` | \`sync.brief.compile\` | Compile the weekly Sync Brief (idempotent per period). | Tenant | Call with \`{}\`. |
42796
42798
  | \`rost_get_sync_brief\` | \`sync.brief.get\` | Read the latest or a specific Sync Brief and agenda. | Seat or tenant-admin | Call with \`{}\` or \`{"sync_brief_id":"<id>"}\`. |
42797
42799
  | \`rost_start_sync_run\` | \`sync.run.start\` | Ensure a Sync Brief exists so the meeting can begin. | Tenant | Call with \`{}\`. |
@@ -42859,7 +42861,7 @@ These rows are quick, at-a-glance triage. For deeper auth, tenant, scope, confir
42859
42861
  order: 49,
42860
42862
  title: "Agent reference map",
42861
42863
  summary: "Where CLI sessions, MCP clients, and in-app agents should retrieve {{brand}} guidance before recommending setup changes.",
42862
- version: "2026-06-13.1",
42864
+ version: "2026-06-18.1",
42863
42865
  public: true,
42864
42866
  audiences: ["cli", "mcp", "in_app_agent"],
42865
42867
  stages: ["company_setup", "graph_design", "charter_design", "staffing", "operating_rhythm"],
@@ -42910,7 +42912,7 @@ Never guess a command's JSON shape. Before calling a command that changes state,
42910
42912
  - List every callable command: {{cli}} command list (CLI) or rost_list_commands (MCP)
42911
42913
  - Read one command's exact input/output schema, help pointer, and a worked example: {{cli}} command schema <id> (CLI) or rost_describe_command with {"command_id":"<id>"} (MCP)
42912
42914
  - List the tool catalog the agent builder reads (id, scope tiers, credential requirement, access policy \u2014 configuration only; the tools do not execute yet): {{cli}} tools list (CLI) or rost_list_tool_catalog (MCP)
42913
- - Show a Compass, Charter, or agent setup as a markdown card to review with your human: {{cli}} compass show --markdown, {{cli}} charter show <seat> --markdown, {{cli}} agent show <seat> --markdown
42915
+ - Show a Compass, Charter, or agent setup as a markdown card to review with your human: {{cli}} compass show --markdown, {{cli}} charter show --seat-id <id> --markdown, {{cli}} agent show --seat-id <id> --markdown
42914
42916
 
42915
42917
  When a command fails, the error returns a machine-readable code, a message, and a help field naming the exact command to run next. Read the help field and run the command it points at \u2014 do not retry the same call blindly. A failed precondition (for example a manifest not yet signed, or a dry run that has not passed) returns COMMAND_PRECONDITION_FAILED with a help pointer, not an opaque internal error.
42916
42918
 
@@ -42978,7 +42980,7 @@ Retrieve the narrowest relevant guide before making a setup recommendation. Pref
42978
42980
  order: 60,
42979
42981
  title: "Cascade guide",
42980
42982
  summary: "How to connect company goals to seat-level work without turning {{brand}} into a project-management tool.",
42981
- version: "2026-06-13.1",
42983
+ version: "2026-06-18.1",
42982
42984
  public: true,
42983
42985
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42984
42986
  stages: ["operating_rhythm"],
@@ -43032,7 +43034,7 @@ Do not put every task into Cascade. Small errands, private notes, and work with
43032
43034
 
43033
43035
  ## When to stop for confirmation
43034
43036
 
43035
- \`goal.create\`, \`goal.set_status\`, \`goal.reparent\`, and \`goal.drop\` are \`human_required\`. Moving or dropping a goal changes how the company reads its own progress, so it returns a pending confirmation over MCP. An agent proposes the branch and surfaces the approve link; a human decides.
43037
+ \`goal.reparent\` and \`goal.drop\` are \`human_required\`; \`goal.create\`, \`goal.set_status\`, and \`goal.update\` are \`none\`, so a seat can add goals and update their status directly. Moving or dropping a goal changes how the company reads its own progress, so it returns a pending confirmation over MCP. An agent proposes the branch and surfaces the approve link; a human decides.
43036
43038
 
43037
43039
  ## Agent guidance
43038
43040
 
@@ -43043,7 +43045,7 @@ Agents can suggest commitments and report progress. They should not create a new
43043
43045
  order: 61,
43044
43046
  title: "Signal guide",
43045
43047
  summary: "How to define and read measurables so the company runs on evidence instead of status theater.",
43046
- version: "2026-06-13.1",
43048
+ version: "2026-06-18.1",
43047
43049
  public: true,
43048
43050
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43049
43051
  stages: ["operating_rhythm"],
@@ -43093,7 +43095,7 @@ Avoid vanity numbers, manual-only status fields, and metrics nobody can act on.
43093
43095
 
43094
43096
  ## When to stop for confirmation
43095
43097
 
43096
- \`signal.confirm_reading\` and \`signal.correct_reading\` are \`human_required\` \u2014 verifying or overwriting a measurable is a human judgment. An agent records readings with evidence; a human confirms or corrects.
43098
+ \`signal.correct_reading\` is \`human_required\`; overwriting a recorded measurable is a human judgment. \`signal.confirm_reading\` is \`none\`, so a seat can confirm its own readings directly. An agent records readings with evidence; a human corrects when a value is wrong.
43097
43099
 
43098
43100
  ## Agent guidance
43099
43101
 
@@ -43104,7 +43106,7 @@ Agents may record readings when the Charter allows it. Agent-reported readings s
43104
43106
  order: 62,
43105
43107
  title: "Friction guide",
43106
43108
  summary: "How to capture issues with evidence, rank them, and resolve them without losing ownership.",
43107
- version: "2026-06-13.1",
43109
+ version: "2026-06-18.1",
43108
43110
  public: true,
43109
43111
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43110
43112
  stages: ["operating_rhythm"],
@@ -43158,12 +43160,12 @@ Agents should file Friction when a measurable breaks, a tool fails, a repeated e
43158
43160
  Friction, tasks, and escalations are the issue-to-action loop. A seat files, a task carries the work, and an escalation routes a decision a seat cannot make alone.
43159
43161
 
43160
43162
  - File and triage: \`{{cli}} friction file ...\` / \`friction.file_issue\` (seat) / \`rost_file_issue\`; list with \`{{cli}} friction list --status open --json\` / \`friction.list\` / \`rost_list_friction_issues\`; move between open and diagnosing with \`friction.update_status\` / \`rost_update_friction_issue_status\`.
43161
- - Carry the work as a task: \`task.create\` / \`rost_create_task\` (a commitment between seats; agent proposals land in draft for confirmation). A seat runs its queue with \`{{cli}} task list|accept|decline|complete\` (\`task.list\`, \`task.accept\`, \`task.decline\`, \`task.complete\`). Link a task to an issue with \`friction.link_task\` / \`rost_link_task_to_friction_issue\`.
43163
+ - Carry the work as a task: \`task.create\` / \`rost_create_task\` (a commitment between seats). \`task.create\` is \`none\` (no confirmation gate), so an agent can file one directly; an agent's task lands as a **draft** proposal (\`origin: agent_proposal\`) for a human to review and hand off \u2014 not a live offer in the owning seat's accept/decline queue. A seat runs its queue with \`{{cli}} task list|accept|decline|complete\` (\`task.list\`, \`task.accept\`, \`task.decline\`, \`task.complete\`). Link a task to an issue with \`friction.link_task\` / \`rost_link_task_to_friction_issue\`.
43162
43164
  - Route a decision: \`escalation.raise\` (seat) / \`rost_escalate\` sends approval-scope or must-escalate work to the Steward queue. Reads are \`escalation.list\` / \`escalation.get\`. See the steward queue guide for resolution.
43163
43165
 
43164
43166
  ## When to stop for confirmation
43165
43167
 
43166
- \`friction.resolve\`, \`friction.link_task\`, \`task.create\`, \`task.accept\`, \`task.decline\`, and \`task.complete\` are \`human_required\`; \`friction.update_status\`, \`escalation.raise\`, \`friction.file_issue\`, and \`friction.list\` are not gated. Resolving an issue or creating a cross-seat commitment is a human decision. An agent files Friction, proposes the task, and escalates; a human resolves and accepts.
43168
+ \`friction.resolve\` is \`human_required\`; resolving an issue is a human decision. \`friction.link_task\`, \`task.create\`, \`task.accept\`, \`task.decline\`, and \`task.complete\` are \`none\`, so a seat files issues, creates commitments, and runs its own task queue directly. \`friction.update_status\`, \`escalation.raise\`, \`friction.file_issue\`, and \`friction.list\` are also not gated. An agent files Friction, proposes the task, and escalates; a human resolves.
43167
43169
 
43168
43170
  ## Resolution rule
43169
43171
 
@@ -43174,7 +43176,7 @@ Resolving Friction should produce one of four outcomes: a decision, a task, a Ch
43174
43176
  order: 70,
43175
43177
  title: "Steward queue guide",
43176
43178
  summary: "How Stewards review escalations, approve agent boundaries, and keep agents accountable.",
43177
- version: "2026-06-13.1",
43179
+ version: "2026-06-18.1",
43178
43180
  public: true,
43179
43181
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43180
43182
  stages: ["staffing", "operating_rhythm"],
@@ -43214,7 +43216,7 @@ Read the seat, Charter, evidence, and recommended action. Decide the narrow ques
43214
43216
  The Steward reads the queue from any surface but decides as a human.
43215
43217
 
43216
43218
  - Read: \`{{cli}} escalation list --json\` / \`escalation.list\` / \`rost_list_escalations\` (own steward chain for humans, own seat for agents). Read one with \`{{cli}} escalation get\` / \`escalation.get\` / \`rost_get_escalation\` \u2014 evidence, recommendation, and decision state.
43217
- - Decide: \`{{cli}} escalation resolve\` / \`escalation.resolve\` and \`{{cli}} escalation reject\` / \`escalation.reject\`. These commands are \`human_required\` and are deliberately NOT exposed over MCP \u2014 \`decisions.decided_by\` must be a human, so there is no \`rost_resolve_escalation\` tool. The CLI runs them as the authenticated human; an agent session must hand the decision to a person.
43219
+ - Decide: \`{{cli}} escalation resolve\` / \`escalation.resolve\` and \`{{cli}} escalation reject\` / \`escalation.reject\`. \`escalation.resolve\` and \`escalation.reject\` are \`none\` at the confirmation layer, but they are deliberately NOT exposed over MCP \u2014 \`decisions.decided_by\` must be a human, so there is no \`rost_resolve_escalation\` tool. They are kept human-only by that MCP exclusion plus the human-only \`decided_by\`, not by a confirmation gate. The CLI runs them as the authenticated human; an agent session must hand the decision to a person.
43218
43220
  - Approve gated requests: when an escalation or Charter change produces a pending confirmation, the human approves with \`confirmation.approve\` (or rejects with \`confirmation.reject\`). Go-live runs through \`agent.go_live\`.
43219
43221
 
43220
43222
  ## When to stop for confirmation
@@ -43230,7 +43232,7 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
43230
43232
  order: 71,
43231
43233
  title: "Confirmations and human gates guide",
43232
43234
  summary: "How {{brand}} routes authority-changing work through human confirmation, and why agents never approve their own requests.",
43233
- version: "2026-06-15.1",
43235
+ version: "2026-06-18.1",
43234
43236
  public: true,
43235
43237
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43236
43238
  stages: ["graph_design", "charter_design", "staffing", "operating_rhythm"],
@@ -43254,10 +43256,12 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
43254
43256
 
43255
43257
  ## Confirmation levels
43256
43258
 
43257
- - \`none\`: safe to run directly. Reads and reversible drafts (graph reads, \`charter.draft\`, \`status.record\`, \`sync.brief.compile\`).
43258
- - \`human_required\`: a human must approve. Structural, staffing, resolution, and go-live commands (\`seat.create\`, \`charter.approve\`, \`goal.reparent\`, \`friction.resolve\`, \`agent.go_live\`, \`escalation.resolve\`).
43259
- - \`dangerous\`: a human must approve and the request is flagged high-risk because it touches secrets or tokens (\`credential.ingress\`, \`mcp_token.create\`, \`tenant.anthropic_key.save\`, \`confirmation.approve\` itself).
43260
- - \`credential_flow\`: routes through the vault-backed credential path so a secret is captured as a vault reference, never stored or logged in the clear.
43259
+ - \`none\`: no confirmation gate \u2014 the command never returns a pending confirmation. Most are reads or reversible drafts an agent can run directly, including over MCP (graph reads, \`charter.draft\`, \`status.record\`, \`sync.brief.compile\`, \`sync.run.start\`, \`task.complete\`). A few \`none\` commands still require a human actor or an interactive channel \u2014 \`confirmation.approve\` is \`none\` (approving a gate cannot itself be gated) yet runs only as a human in the UI or CLI \u2014 so \`none\` means "no confirmation gate", not always "agent-callable".
43260
+ - \`human_required\`: a human must approve. Structural, staffing, resolution, and go-live commands (\`seat.reparent\`, \`charter.approve\`, \`goal.reparent\`, \`friction.resolve\`, \`agent.go_live\`, \`mcp_token.create\`).
43261
+ - \`credential_flow\`: routes through the vault-backed credential path so a secret is captured as a vault reference, never stored or logged in the clear (\`credential.ingress\`, \`tenant.anthropic_key.save\`; \`agent.configure_tools\` is \`credential_flow\` too \u2014 it stages credential-ingress requests through the same path without ever taking raw secret material).
43262
+ - \`dangerous\`: the highest-risk human gate. Only two commands carry it \u2014 \`settings.update\` and \`agent.decommission\`.
43263
+
43264
+ The \`dangerous\` confirmation **level** is rare and is not the same as the **risk badge** a pending confirmation can display. The badge shows "dangerous" whenever a command's confirmation level is \`dangerous\` **or** the command redacts secrets (its audit redaction is \`secret_strict\`), so a \`credential_flow\` command such as \`credential.ingress\` shows the dangerous badge while still gating through the credential path \u2014 not the \`dangerous\` level. Read the badge as "handle with care" and the confirmation level as "who must approve". \`confirmation.approve\` and \`confirmation.reject\` are themselves \`none\` \u2014 approving a gate cannot itself require approval.
43261
43265
 
43262
43266
  ## What a gated command returns over MCP
43263
43267
 
@@ -43396,7 +43400,7 @@ Every notification should include the seat, cause, evidence, and requested decis
43396
43400
  order: 75,
43397
43401
  title: "Local runner guide",
43398
43402
  summary: "How local agent sessions and runner surfaces should operate through {{brand}} without bypassing Charters or audit.",
43399
- version: "2026-06-13.1",
43403
+ version: "2026-06-18.1",
43400
43404
  public: true,
43401
43405
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43402
43406
  stages: ["staffing", "operating_rhythm"],
@@ -43431,7 +43435,7 @@ The local runner is for human-controlled local agent work. It should retrieve {{
43431
43435
 
43432
43436
  ## When to stop for confirmation
43433
43437
 
43434
- \`runner.pairing.start\`, \`runner.revoke\`, \`work_order.enqueue\`, and \`work_order.cancel\` are \`human_required\`; list and status reads are not gated. Pairing, revoking, and queuing or cancelling work are human-approved. An agent inspects runner state and proposes the action.
43438
+ \`runner.revoke\` and \`work_order.cancel\` are \`human_required\`; \`runner.pairing.start\` and \`work_order.enqueue\` are \`none\`, so an operator can pair a runner and queue work directly. List and status reads are not gated. Revoking a runner or cancelling work is the human-approved act. An agent inspects runner state and proposes the action.
43435
43439
 
43436
43440
  ## Guardrails
43437
43441
 
@@ -43552,7 +43556,7 @@ Templates may draft. Humans approve. A stock agent should not go live until a hu
43552
43556
  order: 77,
43553
43557
  title: "Troubleshooting guide",
43554
43558
  summary: "How users and agents should diagnose common setup, tool, Signal, Friction, and MCP problems.",
43555
- version: "2026-06-18.3",
43559
+ version: "2026-06-18.4",
43556
43560
  public: true,
43557
43561
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43558
43562
  stages: ["company_setup", "staffing", "operating_rhythm"],
@@ -43611,7 +43615,7 @@ These are the common blockers when adding an agent (see the add-agents guide and
43611
43615
 
43612
43616
  ## When to stop for confirmation
43613
43617
 
43614
- Most reads are safe to run while diagnosing. Any fix that changes authority, credentials, go-live state, or a durable decision is \`human_required\` or \`dangerous\` and routes through \`confirmation.approve\`. Diagnose freely; stop before approving.
43618
+ Most reads are safe to run while diagnosing. Any fix that changes authority, credentials, go-live state, or a durable decision is gated \u2014 \`human_required\`, \`credential_flow\`, or \`dangerous\` \u2014 and routes through a human confirmation (\`confirmation.approve\`). Diagnose freely; stop before approving.
43615
43619
 
43616
43620
  ## Agent guidance
43617
43621
 
@@ -43850,7 +43854,7 @@ A consultancy's purpose might be "Make expert tax guidance affordable for first-
43850
43854
  order: 31,
43851
43855
  title: "Charter authoring deep-dive",
43852
43856
  summary: "The full Charter document contract field by field \u2014 decision authority, escalation, measurables, budget, permissions \u2014 with worked examples for human, agent, and hybrid seats.",
43853
- version: "2026-06-16.1",
43857
+ version: "2026-06-18.1",
43854
43858
  public: true,
43855
43859
  audiences: ["cli", "mcp", "in_app_agent"],
43856
43860
  stages: ["charter_design", "staffing"],
@@ -43894,7 +43898,7 @@ A Charter is a seat's executable operating contract. On the CLI and MCP path you
43894
43898
  - **decision_authority** \u2014 the heart of the contract, split three ways:
43895
43899
  - **autonomous** \u2014 what the seat may do without asking. Each item is \`{ action, condition, rationale, unanswered_boundary }\`. Only reversible, low-risk, in-scope actions belong here. An autonomous item must have \`unanswered_boundary: false\` \u2014 the schema rejects an autonomous item with an unanswered boundary (push it to escalate instead).
43896
43900
  - **approval** \u2014 the can-do-with-a-yes set: durable, money-moving, external-send, staffing, or policy actions that require explicit human approval. Name the **threshold** in the \`condition\` (e.g. "before posting or sending," "over $5,000").
43897
- - **escalate** (1+) \u2014 the must-ask set: ambiguous authority, irreversible actions, credentials, legal or financial exposure, customer-impacting exceptions. At least one escalate item must carry \`unanswered_boundary: true\` so unresolved boundaries default conservative.
43901
+ - **escalate** (1+) \u2014 the must-ask set: ambiguous authority, irreversible actions, credentials, legal or financial exposure, customer-impacting exceptions. At least one escalate item should carry \`unanswered_boundary: true\` so unresolved boundaries default conservative. The submit schema does not strictly require it, but the direct submit path (\`charter.update_draft\` / \`charter.set\`) does not add one for you \u2014 it only records the boundaries you flag \u2014 so include one whenever a boundary is unresolved.
43898
43902
  - **escalation_rules** (1+) \u2014 plain-language rules that trigger escalation, beyond the structured authority items. "Escalate any invoice over $5,000 or from a vendor not already in the ledger."
43899
43903
  - **measurables** (1+) \u2014 each \`{ name, target, cadence, source }\`. A measurable must measure the accountability, not vanity. \`cadence\` is \`daily|weekly|monthly|quarterly\`; \`source\` is \`human|agent|integration\`. Agent-sourced readings are unconfirmed until a human confirms them.
43900
43904
  - **permission_manifest** \u2014 each \`{ tool, scope, granted, rationale }\`. Map each accountability to the narrowest tool scope that performs it. Prefer draft/read scopes; a send or spend scope is a deliberate, justified grant. The manifest is what the tool-guard enforces and what a human signs.
@@ -44946,6 +44950,20 @@ function field(record2, key) {
44946
44950
  }
44947
44951
  return String(value);
44948
44952
  }
44953
+ function formatDryRunTranscript(value) {
44954
+ const transcript = asRecord(value);
44955
+ const steps = asArray(transcript.steps);
44956
+ if (steps.length === 0) {
44957
+ return "";
44958
+ }
44959
+ const lines = steps.map((step) => {
44960
+ const record2 = asRecord(step);
44961
+ const kind = field(record2, "kind");
44962
+ const guard = record2.guard === null || record2.guard === void 0 ? "" : ` [${field(record2, "guard")}]`;
44963
+ return ` ${kind}: ${field(record2, "text")}${guard}`;
44964
+ });
44965
+ return ["rehearsal:", ...lines].join("\n");
44966
+ }
44949
44967
  function markdownLine(output) {
44950
44968
  const markdown = asRecord(output).markdown;
44951
44969
  return typeof markdown === "string" ? markdown : JSON.stringify(output, null, 2);
@@ -45663,8 +45681,9 @@ var agentWrapper = (context, args) => dispatch(context, "agent", args, {
45663
45681
  };
45664
45682
  return execute(ctx, parsed, "agent.run_dry_run", body, (output) => {
45665
45683
  const record2 = asRecord(output);
45666
- return `dry run for seat ${field(record2, "seat_id")} (charter ${field(record2, "charter_version_id")}): ${field(record2, "status")} (reused=${field(record2, "reused")})
45684
+ const header = `dry run for seat ${field(record2, "seat_id")} (charter ${field(record2, "charter_version_id")}): ${field(record2, "status")} (reused=${field(record2, "reused")})
45667
45685
  ${field(record2, "summary")}`;
45686
+ return [header, formatDryRunTranscript(record2.transcript)].filter((part) => part.length > 0).join("\n");
45668
45687
  });
45669
45688
  },
45670
45689
  "go-live": (ctx, rest) => {