gh-inari 0.17.1 → 0.19.0

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.
Files changed (149) hide show
  1. package/.codex-plugin/plugin.json +1 -1
  2. package/README.md +128 -137
  3. package/dist/admission/authorization.d.ts +9 -1
  4. package/dist/admission/authorization.js +179 -33
  5. package/dist/admission/authorization.js.map +1 -1
  6. package/dist/admission/server.js +20 -7
  7. package/dist/admission/server.js.map +1 -1
  8. package/dist/agent-authority/capability-admission.js +17 -1
  9. package/dist/agent-authority/capability-admission.js.map +1 -1
  10. package/dist/agent-authority/session-certificate.js +35 -3
  11. package/dist/agent-authority/session-certificate.js.map +1 -1
  12. package/dist/artifact-contract-governance.d.ts +4 -2
  13. package/dist/artifact-contract-governance.js +82 -14
  14. package/dist/artifact-contract-governance.js.map +1 -1
  15. package/dist/artifact-observation-identity.d.ts +25 -0
  16. package/dist/artifact-observation-identity.js +65 -0
  17. package/dist/artifact-observation-identity.js.map +1 -0
  18. package/dist/artifact-reconciliation-executor.d.ts +40 -0
  19. package/dist/artifact-reconciliation-executor.js +281 -0
  20. package/dist/artifact-reconciliation-executor.js.map +1 -0
  21. package/dist/artifact.d.ts +14 -5
  22. package/dist/artifact.js +978 -152
  23. package/dist/artifact.js.map +1 -1
  24. package/dist/cli/runtime/admission-client.d.ts +2 -0
  25. package/dist/cli/runtime/admission-client.js +65 -21
  26. package/dist/cli/runtime/admission-client.js.map +1 -1
  27. package/dist/cli/runtime/branch-observation.d.ts +14 -2
  28. package/dist/cli/runtime/branch-observation.js +56 -1
  29. package/dist/cli/runtime/branch-observation.js.map +1 -1
  30. package/dist/cli/runtime/session-launcher.d.ts +9 -3
  31. package/dist/cli/runtime/session-launcher.js +146 -40
  32. package/dist/cli/runtime/session-launcher.js.map +1 -1
  33. package/dist/cli-composition.d.ts +98 -0
  34. package/dist/cli-composition.js +242 -0
  35. package/dist/cli-composition.js.map +1 -0
  36. package/dist/cli-core.d.ts +15 -0
  37. package/dist/cli-core.js +81 -30
  38. package/dist/cli-core.js.map +1 -1
  39. package/dist/cli.d.ts +4 -5
  40. package/dist/cli.js +220 -20
  41. package/dist/cli.js.map +1 -1
  42. package/dist/command-contract.d.ts +55 -0
  43. package/dist/command-contract.js +144 -10
  44. package/dist/command-contract.js.map +1 -1
  45. package/dist/contract/artifact-contract.d.ts +44 -6
  46. package/dist/contract/artifact-contract.js +352 -0
  47. package/dist/contract/artifact-contract.js.map +1 -1
  48. package/dist/contract/effective-artifact-contract.d.ts +2 -1
  49. package/dist/contract/effective-artifact-contract.js +89 -10
  50. package/dist/contract/effective-artifact-contract.js.map +1 -1
  51. package/dist/contract/index.d.ts +1 -0
  52. package/dist/contract/index.js +1 -0
  53. package/dist/contract/index.js.map +1 -1
  54. package/dist/contract/json-schema-runtime.d.ts +24 -0
  55. package/dist/contract/json-schema-runtime.js +172 -0
  56. package/dist/contract/json-schema-runtime.js.map +1 -0
  57. package/dist/contract/native-template-projection.d.ts +7 -1
  58. package/dist/contract/native-template-projection.js +294 -0
  59. package/dist/contract/native-template-projection.js.map +1 -1
  60. package/dist/contract/semantic-artifact.js +298 -20
  61. package/dist/contract/semantic-artifact.js.map +1 -1
  62. package/dist/executor/execution.d.ts +10 -0
  63. package/dist/executor/execution.js +90 -22
  64. package/dist/executor/execution.js.map +1 -1
  65. package/dist/executor/task-termination.d.ts +11 -0
  66. package/dist/executor/task-termination.js +64 -0
  67. package/dist/executor/task-termination.js.map +1 -0
  68. package/dist/github/adapter-core.d.ts +3 -2
  69. package/dist/github/adapter-core.js +7 -3
  70. package/dist/github/adapter-core.js.map +1 -1
  71. package/dist/github/adapter.d.ts +1 -0
  72. package/dist/github/adapter.js +1 -0
  73. package/dist/github/adapter.js.map +1 -1
  74. package/dist/github/effect-authorizer.d.ts +1 -1
  75. package/dist/github/pr-publication-provider.js +11 -1
  76. package/dist/github/pr-publication-provider.js.map +1 -1
  77. package/dist/github/source-acceptance-review.d.ts +31 -0
  78. package/dist/github/source-acceptance-review.js +144 -0
  79. package/dist/github/source-acceptance-review.js.map +1 -0
  80. package/dist/github/task-termination-record.d.ts +19 -0
  81. package/dist/github/task-termination-record.js +174 -0
  82. package/dist/github/task-termination-record.js.map +1 -0
  83. package/dist/governance.d.ts +3 -2
  84. package/dist/governance.js +4 -4
  85. package/dist/governance.js.map +1 -1
  86. package/dist/implementation-contract.js +26 -26
  87. package/dist/implementation-contract.js.map +1 -1
  88. package/dist/implementation-lifecycle.d.ts +11 -1
  89. package/dist/implementation-lifecycle.js +54 -10
  90. package/dist/implementation-lifecycle.js.map +1 -1
  91. package/dist/implementation-session-binding.d.ts +9 -0
  92. package/dist/implementation-session-binding.js +36 -2
  93. package/dist/implementation-session-binding.js.map +1 -1
  94. package/dist/implementation-task-termination.d.ts +86 -0
  95. package/dist/implementation-task-termination.js +346 -0
  96. package/dist/implementation-task-termination.js.map +1 -0
  97. package/dist/index.d.ts +2 -0
  98. package/dist/index.js +2 -0
  99. package/dist/index.js.map +1 -1
  100. package/dist/integration-publication-plan.d.ts +63 -0
  101. package/dist/integration-publication-plan.js +207 -0
  102. package/dist/integration-publication-plan.js.map +1 -0
  103. package/dist/integration-routing.js +69 -29
  104. package/dist/integration-routing.js.map +1 -1
  105. package/dist/local-control/config.js +74 -41
  106. package/dist/local-control/config.js.map +1 -1
  107. package/dist/local-control/executor-client.js +56 -0
  108. package/dist/local-control/executor-client.js.map +1 -1
  109. package/dist/local-control/executor-http.d.ts +3 -0
  110. package/dist/local-control/executor-http.js +85 -5
  111. package/dist/local-control/executor-http.js.map +1 -1
  112. package/dist/local-control/operator-key-registry.d.ts +34 -0
  113. package/dist/local-control/operator-key-registry.js +192 -0
  114. package/dist/local-control/operator-key-registry.js.map +1 -0
  115. package/dist/local-control/runtime-log.d.ts +29 -0
  116. package/dist/local-control/runtime-log.js +198 -0
  117. package/dist/local-control/runtime-log.js.map +1 -0
  118. package/dist/local-control/session-binding.d.ts +7 -0
  119. package/dist/local-control/session-binding.js +10 -0
  120. package/dist/local-control/session-binding.js.map +1 -1
  121. package/dist/local-control/supervisor.js +44 -2
  122. package/dist/local-control/supervisor.js.map +1 -1
  123. package/dist/mcp/tools.d.ts +2 -2
  124. package/dist/pr-publication.d.ts +26 -3
  125. package/dist/pr-publication.js +321 -52
  126. package/dist/pr-publication.js.map +1 -1
  127. package/dist/reconciliation.d.ts +4 -1
  128. package/dist/reconciliation.js +17 -6
  129. package/dist/reconciliation.js.map +1 -1
  130. package/dist/remote/repository-access-assertion.d.ts +146 -0
  131. package/dist/remote/repository-access-assertion.js +624 -0
  132. package/dist/remote/repository-access-assertion.js.map +1 -0
  133. package/dist/semantic-issue-closure.d.ts +2 -0
  134. package/dist/semantic-issue-closure.js +52 -10
  135. package/dist/semantic-issue-closure.js.map +1 -1
  136. package/dist/semantic-template.d.ts +10 -0
  137. package/dist/semantic-template.js +165 -2
  138. package/dist/semantic-template.js.map +1 -1
  139. package/dist/source-acceptance-policy.d.ts +65 -0
  140. package/dist/source-acceptance-policy.js +250 -0
  141. package/dist/source-acceptance-policy.js.map +1 -0
  142. package/dist/source-acceptance-reviewer.d.ts +96 -0
  143. package/dist/source-acceptance-reviewer.js +410 -0
  144. package/dist/source-acceptance-reviewer.js.map +1 -0
  145. package/dist/source-acceptance.d.ts +115 -0
  146. package/dist/source-acceptance.js +485 -0
  147. package/dist/source-acceptance.js.map +1 -0
  148. package/package.json +4 -3
  149. package/skills/inari/SKILL.md +38 -82
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "inari",
3
- "version": "0.17.1",
3
+ "version": "0.19.0",
4
4
  "description": "Governed GitHub Issue/PR/template workflows via the inari CLI. Prefer inari over raw gh for operations it owns; use inari skill for operational playbooks.",
5
5
  "skills": "skills/inari"
6
6
  }
package/README.md CHANGED
@@ -2,26 +2,28 @@
2
2
  <img src="./docs/assets/readme/inari-hero.webp" alt="Inari — GitHub Governance CLI. Standardize your workflow. Keep your project healthy." width="100%">
3
3
  </p>
4
4
 
5
- <p align="center">
6
- <a href="https://github.com/yohn-jp/gh-inari/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/yohn-jp/gh-inari/actions/workflows/ci.yml/badge.svg"></a>
7
- <a href="https://www.npmjs.com/package/gh-inari"><img alt="npm" src="https://img.shields.io/npm/v/gh-inari"></a>
8
- <a href="https://www.npmjs.com/package/gh-inari"><img alt="Node" src="https://img.shields.io/node/v/gh-inari"></a>
9
- <a href="./LICENSE"><img alt="License" src="https://img.shields.io/npm/l/gh-inari"></a>
10
- </p>
11
-
12
5
  # Inari
13
6
 
14
7
  **Deterministic GitHub Governance**
15
8
 
16
- Inari (`inari`, published as `gh-inari`) turns repository-governed GitHub workflows into typed, deterministic contracts. It compiles repository-native Issue Forms and pull request templates, validates semantic input, renders canonical artifacts, and mediates governed work from **Issue → Change → PR → Merge**.
9
+ Inari (`inari`, published as `gh-inari`) turns repository-governed GitHub work
10
+ into typed, deterministic contracts. It resolves repository policy, validates
11
+ semantic intent, renders canonical artifacts, admits bounded operations, and
12
+ verifies their actual outcomes.
13
+
14
+ The short lifecycle is **Issue → Change → PR → Merge**. A Source outcome,
15
+ Implementation task, Session, leaf PR, and integration PR remain distinct
16
+ identities within that workflow.
17
17
 
18
- Inari is intentionally not a general `gh` wrapper. Governed operations run through a closed, versioned command surface; unsupported or ambiguous behavior fails closed.
18
+ Inari is not a general `gh` wrapper, arbitrary remote shell, credential
19
+ sharing service, or agent scheduler. Unsupported or ambiguous authority fails
20
+ closed rather than falling back to a broader credential.
19
21
 
20
22
  ## Quick start
21
23
 
22
24
  Requires Node.js 24 or newer.
23
25
 
24
- ```bash
26
+ ```sh
25
27
  npm install --global gh-inari
26
28
 
27
29
  inari --version --json
@@ -29,186 +31,175 @@ inari template list
29
31
  inari issue schema feature --json
30
32
  ```
31
33
 
32
- For an ephemeral or PATH-independent invocation:
34
+ An ephemeral invocation is also available:
33
35
 
34
- ```bash
36
+ ```sh
35
37
  npx --yes gh-inari --version --json
36
38
  ```
37
39
 
38
- Inari uses the current GitHub authentication and repository context. Use `--repository owner/name` when the target is not the current checkout.
39
-
40
- To connect a repository Runtime, install the Inari GitHub App, then run the
41
- repository setup Golden Path:
42
-
43
- ```bash
44
- inari setup
45
- # If setup reports trust-pending, open the printed Runtime Authority record
46
- # in a governed trust PR and merge it on the protected default branch.
47
- inari setup
48
- inari runtime connect
49
- ```
50
-
51
- Setup stores only a repository-scoped, secret-free Runtime profile. It never
52
- commits, pushes, approves, or merges Runtime Authority trust; `ready` is
53
- reported only after canonical protected-ref readiness succeeds.
54
-
55
- The local setup state is shared by the CLI and a loopback browser console:
56
-
57
- ```bash
58
- inari setup status # canonical state and the one next action
59
- inari setup next # perform exactly that action through its owner
60
- inari setup console # owned loopback setup host; works before any key or trust
61
- ```
62
-
63
- ## The governed path
64
-
65
- ```text
66
- Issue → Change → PR → Merge
67
- intent governed review explicit
68
- execution outcome
69
- ```
70
-
71
- A repository defines the contracts. Inari resolves those authorities, validates structured intent, produces canonical GitHub artifacts, and keeps lifecycle transitions bounded by explicit semantics rather than free-form CLI mutation.
72
-
73
- The Change surface exposes bounded lifecycle operations:
74
-
75
- ```bash
76
- inari change issue <number> --json
77
- inari change show <number> --json
78
- inari change ready <number> --json
79
- inari change abort <number> --json
80
- ```
40
+ `inari` is the canonical executable; `gh-inari` is its npm binary alias.
41
+ Use installed Help for the exact versioned command contract and explicit
42
+ repository selection. Common shell behavior is being converged to CLI Canon;
43
+ that migration does not change repository authorization.
81
44
 
82
- The normative end-to-end model lives in [Inari Golden Path Architecture](./docs/GOLDEN_PATH_ARCHITECTURE.md).
45
+ ## Architecture status
83
46
 
84
- ### Integration routing
85
-
86
- Epic work may use three governed integration levels:
87
-
88
- ```text
89
- Epic (epic/<number>-<slug>)
90
- <- source Issue (issue/<number>-<slug>)
91
- <- Implementation (feat|fix|refactor|test|docs|chore/<number>-<slug>)
92
- ```
47
+ The [Product Architecture Canon](./docs/ARCHITECTURE.md) records the approved
48
+ 2026-09-27 target. The [convergence ledger](./docs/ARCHITECTURE_CONVERGENCE.md)
49
+ distinguishes current implementation, accepted changes, remaining integration,
50
+ and required certification.
93
51
 
94
- Implementation PRs target the source-Issue branch, source-Issue integration PRs
95
- target the parent Epic branch, and Epic integration PRs target the governed
96
- default branch. The canonical routing projection validates relationships and
97
- uses branch names only as identity/consistency evidence. Sibling Implementations
98
- may proceed concurrently; merge order is not a dependency DAG. Standalone
99
- Issues and explicitly legacy in-flight Epic routes remain compatible.
52
+ Documentation of a target is not a claim that every advertised interface or
53
+ live deployment already implements it. In particular, the new Hosted
54
+ assertion/Relay profile and retirement of independent Direct App execution
55
+ require their governed implementation and public-path proof.
100
56
 
101
57
  ## Design principles
102
58
 
103
- | Principle | Contract |
104
- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
105
- | **Canonical** | One governed semantic input produces one canonical projection. Native GitHub artifacts remain interoperable, while ambiguity fails closed. |
106
- | **Deterministic** | Resolution, validation, rendering, reconciliation, and lifecycle decisions are explicit and reproducible. |
107
- | **Machine-verifiable** | Schemas, structured diagnostics, bounded JSON projections, and lifecycle evidence are designed for both humans and agents. |
59
+ **Canonical:** each semantic fact has one owner; native GitHub artifacts and
60
+ client interfaces are projections, not competing policy.
108
61
 
109
- ## Core workflows
62
+ **Deterministic:** the same admitted contract/input/evidence yields the same
63
+ projection and plan. Unavailable evidence is not treated as absence.
110
64
 
111
- | Surface | Purpose | Start here |
112
- | ------------- | ------------------------------------------------------------------------------ | -------------------------------------------- |
113
- | Templates | Discover and synchronize repository governance | `inari template list`, `inari template sync` |
114
- | Issues | Schema, validate, render, create, read, observe, and reconcile governed Issues | `inari issue --help` |
115
- | Pull requests | Apply the same semantic pipeline to governed PRs | `inari pr --help` |
116
- | Change | Enter and inspect the governed execution lifecycle | `inari change --help` |
117
- | Diagnostics | Verify the installed runtime and required capabilities | `inari --diagnose --json` |
65
+ **Machine-verifiable:** typed schemas, bounded diagnostics, current identity,
66
+ and execution evidence support both humans and agents without exposing
67
+ provider credentials.
118
68
 
119
- Typical structured preparation remains explicit:
69
+ ## Templates and semantic artifacts
120
70
 
121
- ```bash
71
+ Repositories define authoring contracts under `.github/inari/` or use the
72
+ supported native-template compatibility path. Semantic source owns meaning;
73
+ GitHub Issue Forms and PR Markdown are generated projections.
74
+
75
+ ```sh
122
76
  inari issue schema feature --json
123
77
  inari issue validate --template feature --from issue.json
124
78
  inari issue render --template feature --from issue.json
125
79
  inari issue create --template feature --from issue.json
126
80
  ```
127
81
 
128
- Use `--from -` to read JSON from stdin. Use `inari <domain> --help` for the exact versioned command contract rather than relying on a duplicated command catalog in this README.
82
+ `--from -` selects stdin where supported. Pure schema/validation/rendering is
83
+ not implicit provider mutation. Creation follows semantic validation,
84
+ canonical rendering, freshness, and the admitted provider boundary.
129
85
 
130
- ## Repository governance
86
+ See [Semantic Templates](./docs/SEMANTIC_TEMPLATES.md) for exact discovery
87
+ paths, native synchronization, import, and current compatibility. The
88
+ schema-native target makes JSON Schema the generic data-shape authority while
89
+ Inari retains value authority, relations, derivation, and provenance.
131
90
 
132
- Repository-native governance remains the interoperability boundary. Issue Forms under `.github/ISSUE_TEMPLATE/**` and supported pull request templates are compiled into typed contracts. Repositories using Inari's semantic template authority can define contracts under `.github/inari/` and regenerate their GitHub-native projections with:
91
+ Existing artifact observation and reconciliation preserve human intent and
92
+ free text. Automatic convergence may only perform proven semantics-preserving
93
+ repair; missing intent or ambiguous template selection remains explicit.
133
94
 
134
- ```bash
135
- inari template sync
136
- ```
95
+ ## Source and Implementation
137
96
 
138
- See [Semantic template authority](./docs/SEMANTIC_TEMPLATES.md) for the authority and projection rules.
97
+ A Source Issue defines the desired outcome and acceptance. An Implementation
98
+ is the separate bounded task contract with scope, constraints, base/branch,
99
+ dependencies, tests, and postconditions.
139
100
 
140
- Existing artifacts use the same compiler-owned semantic pipeline for validation and remediation. `get`, `view`, and `observe` deliberately expose different bounded projections; `check`, `edit`, `normalize`, and `sync` preserve explicit semantic intent and fail closed when preservation cannot be proven.
101
+ Session task and leaf publication bind the Implementation. Source Change
102
+ operations select a canonical Source in both the signed and current
103
+ Implementation Source sets. Multiple Sources do not imply a primary Source
104
+ or multiple implicit PR bases.
141
105
 
142
- ## Implementation contracts
106
+ WRITE never implies CREATE or DELETE. DENY and protected paths remain
107
+ additional restrictions. Completion of one task/PR is not completion of its
108
+ Source or Epic.
143
109
 
144
- One bounded execution session can be represented as a versioned `Implementation` contract. It records the objective, architecture decision, explicit `READONLY` / `WRITE` / `CREATE` / `DELETE` / `DENY` scopes, verification requirements, and base binding.
110
+ See [Implementation Contract](./docs/IMPLEMENTATION_CONTRACT.md) and
111
+ [Golden Path Composition](./docs/GOLDEN_PATH_ARCHITECTURE.md).
145
112
 
146
- `WRITE` is fail-closed and never implies `CREATE` or `DELETE`.
113
+ ## Runtime and operator experience
147
114
 
148
- The normative contract is documented in [Implementation Contract](./docs/IMPLEMENTATION_CONTRACT.md).
115
+ Admission authenticates and authorizes. Executor owns Inari Access App custody,
116
+ repository/installation binding, provider reads, and admitted effects.
117
+ Authority owns delegation-signing keys. Setup and Console consume public owner
118
+ ports and retain secret-free repository references.
149
119
 
150
- ## Agents, Codex Plugin, and MCP
120
+ The current local Setup entrypoints include:
151
121
 
152
- The published `gh-inari` package also contains the Codex Plugin manifest and bundled Inari Skill. There is no second package artifact. Codex plugin activation remains explicit; a normal npm install does not silently activate the plugin for an agent.
122
+ ```sh
123
+ inari setup status
124
+ inari setup next
125
+ inari setup console
126
+ ```
153
127
 
154
- The bundled Skill stays deliberately thin: it routes governed workflows to `inari skill`, scenario-specific guidance, and the CLI's versioned help rather than duplicating operational policy.
128
+ These expose canonical state and next action. Configuration, health, provider
129
+ binding, repository trust, and Session readiness are not one ready flag.
130
+ A trust PR must receive independent human approval/merge and protected-ref
131
+ reread before trust is established.
155
132
 
156
- Inari also exposes MCP-facing capabilities backed by the same Core contracts and bounded projections used by the CLI. MCP is not a raw GitHub API pass-through.
133
+ The target unified machine Console serves multiple isolated repository
134
+ contexts. Connect, Disconnect, and rotation are recoverable owner operations,
135
+ not implicit directory deletion or silent key regeneration.
157
136
 
158
- ## Architecture
137
+ Detailed key/bootstrap/recovery procedures are in
138
+ [Delegator Operations](./docs/DELEGATOR_OPERATIONS.md). Explicit non-loopback
139
+ transport is described in [Remote Runtime Transport](./docs/LOCAL_RUNTIME_NON_LOOPBACK.md).
159
140
 
160
- The README is an entry point, not a second architecture authority. Use these documents for normative detail:
141
+ ## Remote access target
161
142
 
162
- | Authority | Scope |
163
- | -------------------------------------------------------------- | --------------------------------------------------------------------- |
164
- | [Golden Path Architecture](./docs/GOLDEN_PATH_ARCHITECTURE.md) | End-to-end governed lifecycle and composition |
165
- | [Architecture Vocabulary](./docs/ARCHITECTURE.md) | Canonical provider, credential, principal, and observation vocabulary |
166
- | [Semantic Templates](./docs/SEMANTIC_TEMPLATES.md) | Semantic template authority and GitHub-native projections |
167
- | [Implementation Contract](./docs/IMPLEMENTATION_CONTRACT.md) | Bounded implementation-session contract and scope model |
143
+ Hosted authenticates through Inari Access user OAuth, verifies caller and
144
+ repository eligibility, and relays a short-lived signed request-bound
145
+ assertion. It does not persist or forward the user's GitHub token.
168
146
 
169
- ## Safety model
147
+ A stable public Relay locator is derived from a separate user-owned transport
148
+ key and bound to an authenticated live connection. The locator grants no
149
+ repository permission. Private repositories do not require public discovery.
170
150
 
171
- Inari keeps mutation behind validated semantic boundaries:
151
+ All repository semantics and subject/operation admission terminate on the
152
+ user-owned Runtime. Normal provider effects use Executor-owned installation
153
+ credentials. Hosted has no repository work database or alternate executor.
172
154
 
173
- ```text
174
- resolve authority
175
- → compile contract
176
- → validate semantic input
177
- → render canonical artifact
178
- → verify round-trip
179
- → perform the governed provider operation
180
- ```
155
+ See [Hosted Relay](./docs/HOSTED_RELAY_DEPLOYMENT.md) and
156
+ [Repository Access Assertion](./docs/REPOSITORY_ACCESS_ASSERTION.md) for the
157
+ approved boundaries and remaining implementation/certification gates.
181
158
 
182
- Schema, validation, rendering, observation, and dry-run paths do not become implicit mutation paths. Unsupported, ambiguous, unparseable, or semantically invalid state fails closed before provider mutation.
159
+ ## Agents, MCP, and packaged Skill
183
160
 
184
- Inari does not maintain a second credential store. Provider credentials and authority remain explicit parts of the architecture; see [Architecture Vocabulary](./docs/ARCHITECTURE.md).
161
+ The published package contains the Codex Plugin manifest and bundled Inari
162
+ Skill; activation is explicit. An npm installation does not silently activate
163
+ an agent plugin.
185
164
 
186
- ## Installation and diagnostics
165
+ The Skill is a thin router to canonical playbooks, Help, and repository
166
+ execution governance. It does not override a repository's active restrictions
167
+ or maintain a second command/permission catalog.
187
168
 
188
- Update or remove a global installation with npm:
169
+ MCP exposes the same typed operation contracts. Hosted MCP relays rather than
170
+ running a second semantic backend. Protocol access grants no shell, raw GitHub
171
+ proxy, review, merge, or operator-enrollment authority.
189
172
 
190
- ```bash
191
- npm install --global gh-inari@latest
192
- npm uninstall --global gh-inari
193
- ```
173
+ ## Security boundaries
194
174
 
195
- Run the bounded standalone diagnostic without changing repository files:
175
+ Caller identity is not provider execution identity. App credentials remain
176
+ inside Executor, delegation keys at Authority, and Relay transport keys at
177
+ the user-owned client. Admission receives validated evidence, not provider
178
+ credentials.
196
179
 
197
- ```bash
198
- inari --diagnose --json
199
- npx --yes gh-inari --diagnose --json
200
- ```
180
+ A successful provider response is not enough: execution rereads authoritative
181
+ state and verifies the planned postcondition. Timeouts after possible effects
182
+ retain uncertainty and require safe reconciliation, not blind replay.
201
183
 
202
- `inari --version --json` is the machine-readable self-check. The canonical executable is `inari`; `gh-inari` is an npm bin alias resolving to the same entry point.
184
+ See [Security Policy](./SECURITY.md),
185
+ [Caller Authentication](./docs/AGENT_CAPABILITY_AUTHORIZATION.md), and
186
+ [Inari Access](./docs/INARI_ISSUER_APP.md).
203
187
 
204
- ## Development
188
+ ## Development and verification
205
189
 
206
- ```bash
190
+ ```sh
207
191
  pnpm install --frozen-lockfile
208
192
  pnpm run verify
209
193
  ```
210
194
 
211
- `pnpm run verify` is the repository's authoritative local verification entry point.
195
+ `pnpm run verify` remains the authoritative local entrypoint. Source, built,
196
+ installed-package, process, browser, and live-provider evidence are different
197
+ proof classes. The target removes duplicate execution at the same boundary
198
+ and separates routine verification from release-preparation certification.
199
+
200
+ Read [Verification Architecture](./docs/VERIFICATION_ARCHITECTURE.md) and
201
+ [Contributing](./CONTRIBUTING.md). A pending, environment-blocked, or unexecuted
202
+ check is never reported as passed.
212
203
 
213
204
  ## License
214
205
 
@@ -28,7 +28,15 @@ export interface AdmissionAuthorizationOptions {
28
28
  */
29
29
  readonly readBranchPolicy?: (request: LocalExecutorBranchPolicyRequest) => Promise<unknown>;
30
30
  }
31
- /** Current, owner-acquired branch-policy input for one governed Implementation. */
31
+ /**
32
+ * Current, owner-acquired branch-policy input for one governed Implementation.
33
+ *
34
+ * #1213: when the owner projects the Implementation's canonical Source set,
35
+ * Admission attaches the certificate-safe projection of the current authorized
36
+ * Implementation carrying that set. The Session launcher signs it as the upper
37
+ * bound of Source-rooted change.* capabilities; the Session task stays the
38
+ * Implementation. The projected set must equal the owner's parsed set.
39
+ */
32
40
  export declare function currentBranchPolicyInput(repository: SessionCertificateRepository, implementation: number, options: AdmissionAuthorizationOptions, stage: RuntimeFailureStage): Promise<LocalBranchPolicyInput>;
33
41
  export interface AdmittedSession {
34
42
  readonly id: string;