Skip to content

Commit 7d7ba7f

Browse files
committed
feat: add guided identity-only enrollment
1 parent 03aa4fa commit 7d7ba7f

53 files changed

Lines changed: 3782 additions & 206 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -204,11 +204,24 @@ substituting the local synthetic profile.
204204

205205
Unreleased source includes `agentnet approval`: a separately runnable,
206206
loopback-bound WebAuthn-UV ceremony service using pinned `webauthn==3.0.0`.
207-
It has strict owner-only config/key custody, encrypted exact-catalog SQLite
208-
state, one-time fragment capabilities, bounded no-store browser/API routes,
209-
exact transaction display, stable signed-receipt retry, expiry/audit, and
210-
credential revocation. It grants no authority during provisioning and does not
211-
change core receipt consumers.
207+
It has strict owner-only config/key custody, encrypted versioned SQLite state,
208+
one-time fragment capabilities, bounded no-store browser/API routes, exact
209+
transaction display, stable signed-receipt retry, expiry/audit, and credential
210+
revocation. Optional disabled-by-default broker routes let an authenticated
211+
Core create/status requests and retrieve only already-issued receipts after a
212+
WebAuthn-approved human claim code. Approval URLs stay encrypted on approval
213+
host and open only through `agentnet approval pending|watch|open`. This grants
214+
no authority during provisioning and does not let Core approve or sign.
215+
216+
Unreleased source also adds `agentnet join guided`: one resumable command opens
217+
the system browser without printing its authorization URL, polls Core with an
218+
owner-only opaque continuation, prompts only for the short-lived human claim
219+
code, proves the locally retained candidate key, and writes an owner-only
220+
identity profile. Core retrieves the signed receipt directly from the approval
221+
service; the candidate never receives it. Completion retries converge after
222+
response loss. Enrollment remains identity-only and reports
223+
`first_message_blocked_explicit_authority_required` until an administrator
224+
issues exact messaging entitlements.
212225

213226
This software component is not proof of independence. Production enrollment,
214227
recovery, elevation, revocation, or relationship consent still requires a real
@@ -238,12 +251,13 @@ always-on deployment—see the [implementation guide](docs/implementation-guide.
238251
## Project status
239252

240253
AgentNet is an early public implementation; latest published package is
241-
`0.1.7`. This branch prepares confidential-OIDC correction candidate `0.1.8`;
242-
it is not published until Sergey performs the separate npm publication step.
243-
The candidate adds explicit public, `client_secret_post`, and
244-
`client_secret_basic` token-endpoint profiles with runtime-only secret
245-
resolution. The repository contains a broad executable local kernel and
246-
adversarial test suite, but it does **not** claim production certification.
254+
`0.1.8`. This branch prepares the next guided-enrollment candidate; it is not
255+
published until Sergey performs the separate npm publication step. The
256+
candidate preserves `0.1.8` confidential OIDC and adds versioned approval-host
257+
broker state, Core continuation polling, direct receipt retrieval, response-loss
258+
recovery, and the resumable `join guided` CLI. The repository contains a broad
259+
executable local kernel and adversarial test suite, but it does **not** claim
260+
production certification or a completed live cross-host ceremony.
247261

248262
Production adoption still requires deployment-specific evidence such as a real
249263
workforce identity provider and independent approval channel, protected key

RELEASE_MANIFEST.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"snapshot_date": "2026-07-16",
55
"release": {
66
"name": "agentnet",
7-
"version": "0.1.8",
7+
"version": "0.1.9",
88
"profile": "self_hosted_local_conformance_candidate",
99
"status": "BLOCKED",
1010
"production_ready": false,
@@ -32,12 +32,12 @@
3232
},
3333
"dependency_lock": {
3434
"path": "uv.lock",
35-
"sha256": "b3b0b1cf4a8dd3e44fa6af80f87bf96420fb74ddd16ff2dd212993d2aa5e004e",
35+
"sha256": "de9a202f786abd4cdf1311e8506756bfcb12b418437a61c095f3d3e5744550de",
3636
"format_version": 1,
3737
"revision": 3,
3838
"pyproject": {
3939
"path": "pyproject.toml",
40-
"sha256": "5c69f3fbffa9f395b55480c84ebaffd781e08cfe1c4d0ecf78e70ba4a199e5dd"
40+
"sha256": "110af4570f4d65de460242dedf651dc6cea6d81252e1b8489bc0c3a72407344d"
4141
},
4242
"direct_dependencies": {
4343
"build": {
@@ -169,19 +169,19 @@
169169
"release_inputs": {
170170
"README.md": {
171171
"path": "README.md",
172-
"sha256": "9f93c5ef1f04bb2f1809fceda34d6fac279c828855290a1087b4a26d0c7c1fe1"
172+
"sha256": "94d76398bafc1961603da6bc1b2fa894682aab8b8b2df9a2a8daa0c35a3d8168"
173173
},
174174
"REQUIREMENTS_STATUS.md": {
175175
"path": "REQUIREMENTS_STATUS.md",
176-
"sha256": "815be0b5fdecfef5f5159d8e261efa33de6badd175925c329e6594feb3c6d034"
176+
"sha256": "cd37f8ac753d0feb2f092fa9523854bd5af89805ceb315594bd04bca668cc22a"
177177
},
178178
"deploy/Dockerfile": {
179179
"path": "deploy/Dockerfile",
180180
"sha256": "e0e6d42368772ecb420625d36555400e7b15ee0a4b250a2c7e6ded107f27cd37"
181181
},
182182
"deploy/compose.production.json": {
183183
"path": "deploy/compose.production.json",
184-
"sha256": "10ff8426d407bac62f36f15570fc687f249099593fcd5a1ff94a28a8c2251a50"
184+
"sha256": "420f1b1e94d9c9d3ef73034ec72d70b2c2fb226d7aea3cc12862d97b1937f412"
185185
},
186186
"deploy/nginx-agent.conf": {
187187
"path": "deploy/nginx-agent.conf",
@@ -193,11 +193,11 @@
193193
},
194194
"docs/GATE_EVIDENCE.md": {
195195
"path": "docs/GATE_EVIDENCE.md",
196-
"sha256": "305da3b9048e29d35db7062c6fa1387c3c5203f4c68a5fe7d7327e332463ebe8"
196+
"sha256": "fa6e437d2309eebce9be42031552d313c9f2f09ec688be352f9a32a19bef9c90"
197197
},
198198
"docs/RELEASE_MANIFEST.md": {
199199
"path": "docs/RELEASE_MANIFEST.md",
200-
"sha256": "54606a4260e26d05f131073522a598fce6643c2c97cef7a5e61f34362a830033"
200+
"sha256": "c9aab21744f23d7f486dccbb92c415b0d0aa8b5cfd4348e5fe099e7041e88682"
201201
},
202202
"evidence/gates/G01/2026-07-13-installed-harnesses/manifest.json": {
203203
"path": "evidence/gates/G01/2026-07-13-installed-harnesses/manifest.json",
@@ -221,13 +221,13 @@
221221
},
222222
"scripts/verify_release.py": {
223223
"path": "scripts/verify_release.py",
224-
"sha256": "5c1cb05d7008b51487f8ff92f9ab4c1f085525c0fc71c68ee343316462c6cfe5"
224+
"sha256": "7f35eac89479df906dece84b903fc6bd9cd35af9c1169c84bd3a237ebb8ffc61"
225225
}
226226
},
227227
"release_source_tree": {
228228
"path": "src",
229229
"algorithm": "sha256(path NUL bytes NUL)",
230-
"sha256": "c61921291d29d0d07a2917e690f928ae454777d7c71fa9d3e5e03a2a7629e10c"
230+
"sha256": "b44223c7de857b9bae5485562b2b4cf3a888a8b348e0c61145025ae4dd9a7239"
231231
},
232232
"protocols": {
233233
"a2a": {
@@ -386,7 +386,7 @@
386386
},
387387
"supervisor_harness_lifecycle": {
388388
"status": "BUILD_OWN_INTEGRATION",
389-
"pin": "agentnet-0.1.8",
389+
"pin": "agentnet-0.1.9",
390390
"boundary": "Exact human plus harness binding and foreground isolation remain owned."
391391
},
392392
"a2a_gateway": {

0 commit comments

Comments
 (0)