Skip to content

a-provider-carries-the-contract-natively — Each agent client carries the contract through its own extension points, generated once and checked for drift

One generated Claude plugin, the edit guard wired and then refusing, a Stop-time owed report, extension provenance in doctor, bounded hooks and MCP listing, Codex hook parity where Codex offers the hook, Zed schema associations.

PLANNED 0 of 11 issues done

ready
6
blocked
5
active
0
verify
0
done
0
cancelled
0

Problem

The Claude integration is four mechanisms installed three ways; Codex has no hook adapter; nothing checks an installed extension against what was generated; the stop of a session owes nothing. Proposed in ADR 0214 (A provider's native extension points carry the contract as generated projections; Majordomus neither embeds nor patches the worker's runtime) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c174#18, chatgpt-majordomus:c194#3, chatgpt-majordomus:c236#4, chatgpt-majordomus:c261#7, chatgpt-majordomus:c193#1, chatgpt-majordomus:c109#3, chatgpt-majordomus:c222#2.

Outcome

One generated Claude plugin, the edit guard wired and then refusing, a Stop-time owed report, extension provenance in doctor, bounded hooks and MCP listing, Codex hook parity where Codex offers the hook, Zed schema associations.

Current state

Verified on master 707a04c: ADR 0146/0165 accepted, .claude/skills generated per domain; .claude/hooks/majordomus-edit-guard exists and case 3069 pipes payloads into it, but .claude/settings.json wires only UserPromptSubmit, SessionStart, SessionEnd and PreCompact, so Claude Code never calls it; share/mods/claude-code/{majordomus-brief,majordomus-handover} (ADR 0136); editors/{claude,zed,antigravity}.rs (ADR 0140); codex `unadapted` in share/providers.yaml.

Desired state

As the outcome, with every artefact stamped and drift-gated.

Scope

  • apps/majordomus-cli/src/editors
  • share/mods
  • lib/capture.sh
  • .claude/hooks
  • share/providers.yaml

Out of scope

  • Patching a client
  • Projecting permission modes

Acceptance criteria

  • Intent a-provider-carries-the-contract-natively criteria

Validation

  • majordomus plan validate

Risks

  • Client versions move monthly; every claim cites the version verified

Issues

Each one is an execution contract with its own acceptance criteria, validation command and required evidence. The wave column is the layer of the dependency graph it sits in.

issuestatuswavedepends ontitle
I3300 BLOCKED 1 I3322 Majordomus installs into Claude Code as one generated plugin carrying its skills, hooks, mods and MCP server
I3301 BLOCKED 1 I3304 A Claude Code session that stops with an active task is told what the task still owes
I3302 BLOCKED 2 I3300 An installed plugin or mod that differs from what the repository generated is a doctor finding
I3303 READY 1 I2734 Codex's hooks draw its episodes and refuse an edit no claim covers, as Claude Code's do
I3304 READY 0 — A prompt reaches the model within a declared capture budget, and no captured record is lost
I3307 READY 0 — The default MCP tools/list stays within a declared byte budget, and a full schema is fetched per tool
I3308 READY 0 — Zed validates and completes .ai files against the repository's own schemas
I3322 READY 0 — capture install wires the edit guard into Claude Code's PreToolUse, first in an advisory mode, and doctor reports it unwired
I3323 BLOCKED 1 I3322 An unclaimed edit is refused in Claude Code once no live peer edits without a claim
I3410 BLOCKED 2 I3303, I3406 A Codex prompt is captured through Codex's own UserPromptSubmit hook, and capture status stops calling Codex prompts unadapted
I3829 READY 0 — A provider declares whether its client drives a browser beside the server, and preflight says when this machine's bridge is missing

The graph

a-provider-carries-the-contract-natively dependency graphfrom .ai/repo/project
flowchart LR
    I3300["I3300<br/>Majordomus installs into Claude Code as one generated plugin carrying its skills, hooks, mods and MCP server"]:::blocked
    I3301["I3301<br/>A Claude Code session that stops with an active task is told what the task still owes"]:::blocked
    I3302["I3302<br/>An installed plugin or mod that differs from what the repository generated is a doctor finding"]:::blocked
    I3303["I3303<br/>Codex's hooks draw its episodes and refuse an edit no claim covers, as Claude Code's do"]:::ready
    I3304["I3304<br/>A prompt reaches the model within a declared capture budget, and no captured record is lost"]:::ready
    I3307["I3307<br/>The default MCP tools/list stays within a declared byte budget, and a full schema is fetched per tool"]:::ready
    I3308["I3308<br/>Zed validates and completes .ai files against the repository's own schemas"]:::ready
    I3322["I3322<br/>capture install wires the edit guard into Claude Code's PreToolUse, first in an advisory mode, and doctor reports it unwired"]:::ready
    I3323["I3323<br/>An unclaimed edit is refused in Claude Code once no live peer edits without a claim"]:::blocked
    I3410["I3410<br/>A Codex prompt is captured through Codex's own UserPromptSubmit hook, and capture status stops calling Codex prompts unadapted"]:::blocked
    I3829["I3829<br/>A provider declares whether its client drives a browser beside the server, and preflight says when this machine's bridge is missing"]:::ready
    I3300 --> I3302
    I3303 --> I3410
    I3304 --> I3301
    I3322 --> I3300
    I3322 --> I3323
    classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
    classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px

Canonical record: .ai/repo/project/milestones/a-provider-carries-the-contract-natively.yaml. Read it back with majordomus plan show a-provider-carries-the-contract-natively.

Searches the titles and descriptions of every page this site publishes.