diff --git a/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-build-provenance.json b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-build-provenance.json new file mode 100644 index 00000000..6b48a0f5 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-build-provenance.json @@ -0,0 +1,8 @@ +{ + "builder_repo_head": "53f800c4f7a9c91469834d04ef6f58e906b0bd49", + "builder_last_change": "81b5fcff8e881263c885ea1a7e5c0d442f956610", + "builder_script_sha256": "07e9a180dee4e27bb52f4ca2ba13f314ccc8f09a52155e084dc6e88c1e6c36ec", + "execution": "existing sand-boxer builder --owner-runtime, PYTHONPATH set to clean pinned sandboxer221126 source; uv frozen/no-editable/local refresh + tracked source contents verified", + "runtime_path": "/tmp/netkingdom-runtime-canonical-20261016/runtime", + "native_install": false +} diff --git a/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-build-result.json b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-build-result.json new file mode 100644 index 00000000..c864c8a7 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-build-result.json @@ -0,0 +1,91 @@ +{ + "runtime": { + "path": "/tmp/netkingdom-runtime-canonical-20261016/runtime", + "sha256": "f59959b605a51abd2901becde14e7abd852c2bd3f848004b51d250d1cb81af6d" + }, + "build": { + "python": "3.12.3", + "packages": { + "h11": "0.16.0", + "httpcore": "1.0.9", + "llm-connect": "0.1.0", + "fastapi": "0.141.1", + "anyio": "4.14.2", + "annotated-doc": "0.0.5", + "idna": "3.18", + "shellingham": "1.5.4", + "certifi": "2026.7.22", + "starlette": "1.6.0", + "PyYAML": "6.0.3", + "typer": "0.27.1", + "toml": "0.10.2", + "pydantic_core": "2.46.4", + "sandboxer": "0.0.0", + "typing_extensions": "4.16.0", + "httpx": "0.28.1", + "Pygments": "2.20.0", + "markdown-it-py": "4.2.0", + "pydantic": "2.13.4", + "rich": "15.0.0", + "rein-aharness": "0.1.0", + "annotated-types": "0.8.0", + "glas-harness": "0.1.0", + "typing-inspection": "0.4.4", + "mdurl": "0.1.2" + }, + "claude": { + "path": "/opt/sandboxer/runtime/bin/claude", + "sha256": "19842705e989393fce936804df6d2ab034860e24b8f8880357981d87ffd83fac", + "expected_version": "2.1.266", + "source": "/home/worsch/.local/share/sandboxer/runtimes/818b1b7c8292e904a05e3f215fef9b67a61e7c00d34bfa36689352e8003df359/bin/claude" + }, + "relocated_entrypoints": [ + "fastapi", + "glas-harness", + "httpx", + "idna", + "llm-connect", + "markdown-it", + "pygmentize", + "rein-aharness", + "sandboxer", + "typer" + ], + "source_revisions": { + "rein-aharness": "9b88cadaa817e5abea7950b4a264d4e2739a5ddb", + "llm-connect": "37436bb562a3f20abc3b88defc5bae6508c32e7e", + "glas-harness": "7357115c8311e55ee3d495f5266f501a17ec3c89", + "sandboxer": "221126cb77ea41ec283598a23d628f760a51bdea" + }, + "source_contents": { + "files_verified": 168, + "manifest_sha256": "3c5cfd95c0accce81f59fbf06f501db238cca38975cf75d518a7c51986b28968" + }, + "owner_runtime": true, + "runtime_contract": { + "dependencies": [ + { + "clean": true, + "commit": "37436bb562a3f20abc3b88defc5bae6508c32e7e", + "distribution": "llm-connect", + "version": "0.1.0" + }, + { + "clean": true, + "commit": "7357115c8311e55ee3d495f5266f501a17ec3c89", + "distribution": "glas-harness", + "version": "0.1.0" + }, + { + "clean": true, + "commit": "221126cb77ea41ec283598a23d628f760a51bdea", + "distribution": "sandboxer", + "version": "0.0.0" + } + ], + "ok": true, + "schema_version": "1" + }, + "uv_lock_sha256": "8775904b5c0b19aa16e09c25f7e33d1877abeef894b2d0127843c94fcff32683" + } +} diff --git a/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-lock-check.json b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-lock-check.json new file mode 100644 index 00000000..c0e5ecfe --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-lock-check.json @@ -0,0 +1,24 @@ +{ + "dependencies": [ + { + "clean": true, + "commit": "37436bb562a3f20abc3b88defc5bae6508c32e7e", + "distribution": "llm-connect", + "version": "0.1.0" + }, + { + "clean": true, + "commit": "7357115c8311e55ee3d495f5266f501a17ec3c89", + "distribution": "glas-harness", + "version": "0.1.0" + }, + { + "clean": true, + "commit": "221126cb77ea41ec283598a23d628f760a51bdea", + "distribution": "sandboxer", + "version": "0.0.0" + } + ], + "ok": true, + "schema_version": "1" +} diff --git a/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-publication.json b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-publication.json new file mode 100644 index 00000000..adc3a815 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-publication.json @@ -0,0 +1,20 @@ +{ + "repo": "rein-aharness", + "source_revision": "9b88cadaa817e5abea7950b4a264d4e2739a5ddb", + "command": "statehub fix-consistency --repo rein-aharness --repo-path /home/worsch/rein-aharness --json", + "result": "warn", + "fail": 0, + "automation_error": 0, + "fixes_applied": [ + "bindings: synced 9/9", + "C-17 cleared: pushed 1 backlogged commit(s)", + "C-22 fixed: task 80318842 description updated", + "push: pushed" + ], + "retained_warnings": [ + "C-20 existing ACTIVITY-WP-0026 dependency unlinked", + "C-39 existing T07 needs_human without decision_id" + ], + "local_head_equals_origin_main": true, + "working_tree_clean": true +} diff --git a/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-rein-tests.txt b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-rein-tests.txt new file mode 100644 index 00000000..9f52698e --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-rein-tests.txt @@ -0,0 +1,2 @@ +....... [100%] +7 passed in 0.61s diff --git a/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-source-inputs.json b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-source-inputs.json new file mode 100644 index 00000000..1e3e516d --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/canonical-source-inputs.json @@ -0,0 +1,6 @@ +{ + "rein-aharness": "9b88cadaa817e5abea7950b4a264d4e2739a5ddb", + "llm-connect": "37436bb562a3f20abc3b88defc5bae6508c32e7e", + "glas-harness": "7357115c8311e55ee3d495f5266f501a17ec3c89", + "sand-boxer": "221126cb77ea41ec283598a23d628f760a51bdea" +} diff --git a/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/coordinator-canonical-digest.json b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/coordinator-canonical-digest.json new file mode 100644 index 00000000..0415d407 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/coordinator-canonical-digest.json @@ -0,0 +1,7 @@ +{ + "runtime_sha256": "sha256:f59959b605a51abd2901becde14e7abd852c2bd3f848004b51d250d1cb81af6d", + "records_hashed": 1447, + "method": "independent coordinator hashlib; exact owner serialization includes modes, files, directories and symlink targets", + "after_independent_manager_proof": true, + "native_admission": false +} diff --git a/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/coordinator-canonical-manager-proof.json b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/coordinator-canonical-manager-proof.json new file mode 100644 index 00000000..10a8e5ec --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/coordinator-canonical-manager-proof.json @@ -0,0 +1,66 @@ +{ + "ok": true, + "runtime_sha256": "f59959b605a51abd2901becde14e7abd852c2bd3f848004b51d250d1cb81af6d", + "gateway": { + "ok": true, + "profile": "harness.agent-dev-local@1.1.1", + "readiness": "unverified", + "proof": { + "installed_packages": true, + "host_file_denied": true, + "inherited_env_and_child_denied": true, + "runtime_readonly": true, + "rein_cli_started": true, + "glas_cli_started": true, + "claude_version": "2.1.266", + "loopback_only": true, + "task_mode": "0600", + "identity_exact": true, + "credential_refs": [], + "private_home": true + }, + "task_removed_before_teardown": true, + "workspace_removed": true, + "state": "destroyed", + "source_unchanged": true, + "deterministic_commit": true, + "model_run_proven": false + }, + "synthetic_route_fixture": { + "scope": "separate synthetic credential-route fixture using actual manager and gateway", + "routes_by_owner_command": [ + [], + [], + [], + [ + "synthetic" + ], + [], + [], + [], + [], + [], + [] + ], + "exactly_one_explicit_workload_delivery": true, + "provider_output_redacted": true, + "subsequent_housekeeping_clean": true, + "workspace_removed": true, + "readiness_changed": false + }, + "manager": { + "wrong_consumer_refused": { + "actor": true, + "project": true, + "run_id": true + }, + "expired_execution_refused": true, + "expiry_cleanup": true, + "cancellation_cleanup": true, + "execution_after_cancellation_refused": true + }, + "model_calls": 0, + "real_credentials_read": false, + "native_admission": false, + "interactive_assignment_migrated": false +} diff --git a/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/prove-candidate-manager.py b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/prove-candidate-manager.py new file mode 100644 index 00000000..377002d4 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/agent-isolation-next/prove-candidate-manager.py @@ -0,0 +1,178 @@ +"""Actual installed manager/gateway proof; deterministic dispatch, no model call. + +Run using the candidate Python with -I -B. Only owner configuration directories +are redirected to disposable fixtures; manager, gateway, bwrap, profile and +runtime implementations are the installed, pinned code. +""" +import hashlib +import json +import os +import subprocess +import sys +import tempfile +from datetime import timedelta +from pathlib import Path +import yaml +import sandboxer.extensions.registry as registry +from sandboxer.extensions.runtime import runtime_digest +from sandboxer.core.manager import SandboxManager +from sandboxer.lifecycle.store import SandboxStore, utcnow +from sandboxer.payments.credits import CreditsStore +from sandboxer.snapshots.store import SnapshotStore +from sandboxer.models import Consumer, SandboxCreateRequest, SandboxExecRequest +from glas_harness.contract import ExecutionRequest, ToolResult +from glas_harness.gateway import run_execution +from glas_harness.profiles import ProfileCatalog +from glas_harness.reins.rein_aharness import ReinAharness + +RUNTIME = Path(sys.prefix).resolve() +DIGEST = sys.argv[1] +assert runtime_digest(RUNTIME) == DIGEST +os.environ['SANDBOXER_NO_STATE_HUB'] = '1' +DENIED = ('BAO_TOKEN','VAULT_TOKEN','AWS_SECRET_ACCESS_KEY','SSH_AUTH_SOCK') +for key in DENIED: + os.environ[key] = 'synthetic-inherited-only' + +class RecordingManager(SandboxManager): + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.routes=[] + def execute(self, sandbox_id, request): + self.routes.append(list(request.credential_route_refs)) + return super().execute(sandbox_id, request) + +class CredentialRein(ReinAharness): + def dispatch_tool(self,session,tool_call): + t=session['transport'] + for workload in (False,True,False): + code=("import os; assert os.environ['ANTHROPIC_API_KEY']=='synthetic-provider-only'; print(os.environ['ANTHROPIC_API_KEY'])" if workload else "import os; assert 'ANTHROPIC_API_KEY' not in os.environ; print('clean')") + result=(t.run_workload if workload else t.run)(['python3','-c',code],timeout=15) + assert result.returncode==0, result.stderr + assert result.stdout==('[REDACTED]\n' if workload else 'clean\n') + result=t.run(['sh','-c',"printf 'synthetic tool effect\\n' > proof.txt"],timeout=15) + assert result.returncode==0 + for command in (['git','add','proof.txt'],['git','commit','-q','-m','synthetic route fixture']): + assert t.run(command,timeout=30).returncode==0 + return ToolResult(ok=True) + +class ProofRein(ReinAharness): + def __init__(self, source, sentinel): + super().__init__() + self.source, self.sentinel = source, sentinel + self.proof, self.task_removed, self.workspace = {}, False, None + def start_session(self, profile, inputs, sandbox): + self.workspace = sandbox.reachability['workspace_dir'] + return super().start_session(profile, inputs, sandbox) + def dispatch_tool(self, session, tool_call): + code = r''' +import json, os, subprocess, sys, stat +from pathlib import Path +import rein_aharness, glas_harness, sandboxer, llm_connect +runtime = Path('/opt/sandboxer/runtime') +assert all(Path(x.__file__).resolve().is_relative_to(runtime) for x in (rein_aharness,glas_harness,sandboxer,llm_connect)) +source, sentinel, task = map(Path, sys.argv[1:]) +assert not source.exists() and not sentinel.exists() +assert all(x not in os.environ for x in ('BAO_TOKEN','VAULT_TOKEN','AWS_SECRET_ACCESS_KEY','SSH_AUTH_SOCK','ANTHROPIC_API_KEY')) +child = subprocess.run(['python3','-c',"import os; assert all(k not in os.environ for k in ('BAO_TOKEN','VAULT_TOKEN','AWS_SECRET_ACCESS_KEY','SSH_AUTH_SOCK')); print('clean')"],capture_output=True,text=True) +assert child.returncode == 0 and child.stdout == 'clean\n' +assert stat.S_IMODE(task.stat().st_mode)==0o600 +assert json.loads(task.read_text())['max_budget_usd']==5.0 +assert os.environ['SANDBOXER_RUN_ID']=='tsa06-candidate-gateway' +assert os.environ['SANDBOXER_ACTOR']=='agt' +assert os.environ['SANDBOXER_PROJECT']=='tsa06-runtime-proof' +assert json.loads(os.environ['SANDBOXER_CREDENTIAL_ROUTE_REFS']) == [] +for name in ('rein-aharness','glas-harness'): + proc=subprocess.run([str(runtime/'bin'/name),'--help'],capture_output=True,text=True,timeout=30) + assert proc.returncode==0 and 'usage:' in proc.stdout.lower(), name +proc=subprocess.run([str(runtime/'bin/claude'),'--version'],capture_output=True,text=True,timeout=30) +assert proc.returncode==0 and proc.stdout.strip()=='2.1.266 (Claude Code)' +try: (runtime/'write-probe').write_text('refuse') +except OSError: pass +else: raise AssertionError('runtime writable') +assert [x.split(':',1)[0].strip() for x in Path('/proc/net/dev').read_text().splitlines()[2:]]==['lo'] +home=Path(os.environ['HOME']); assert not home.is_relative_to(Path.cwd()); assert stat.S_IMODE(home.stat().st_mode)==0o700 +(home/'private-proof').write_text('synthetic') +Path('proof.txt').write_text('disposable deterministic tool effect\n') +print(json.dumps(dict(installed_packages=True,host_file_denied=True,inherited_env_and_child_denied=True,runtime_readonly=True,rein_cli_started=True,glas_cli_started=True,claude_version='2.1.266',loopback_only=True,task_mode='0600',identity_exact=True,credential_refs=[],private_home=True))) +''' + transport=session['transport'] + result=transport.run_workload(['python3','-c',code,str(self.source),str(self.sentinel),session['task_file']],timeout=90) + assert result.returncode==0, result.stderr + self.proof=json.loads(result.stdout) + check=transport.run(['python3','-c',"import os,pathlib; assert (pathlib.Path(os.environ['HOME'])/'private-proof').is_file(); assert 'ANTHROPIC_API_KEY' not in os.environ"],timeout=15) + assert check.returncode==0, check.stderr + for command in (['git','add','proof.txt'],['git','commit','-q','-m','disposable deterministic proof']): + check=transport.run(command,timeout=30) + assert check.returncode==0, check.stderr + return ToolResult(ok=True,output=result.stdout) + def cleanup_session(self,session): + super().cleanup_session(session) + self.task_removed=session['transport'].run(['test','!','-e',session['task_file']],timeout=15).returncode==0 + assert self.task_removed + +with tempfile.TemporaryDirectory(prefix='tsa06-manager-') as temporary: + root=Path(temporary); source=root/'source'; source.mkdir() + for args in (['init','-q'],['config','user.name','Disposable Proof'],['config','user.email','proof@example.invalid']): + subprocess.run(['git','-C',str(source),*args],check=True) + (source/'sentinel').write_text('unchanged') + subprocess.run(['git','-C',str(source),'add','sentinel'],check=True) + subprocess.run(['git','-C',str(source),'commit','-qm','fixture'],check=True) + original_head=subprocess.check_output(['git','-C',str(source),'rev-parse','HEAD']) + sentinel=root/'admin-file-synthetic'; sentinel.write_text('synthetic-file-only') + # Owner config selects the exact artifact. No native owner config is changed. + owner=root/'extensions'; owner.mkdir() + extension=yaml.safe_load((registry.extensions_dir()/'ext.bwrap.yaml').read_text()) + extension['config']={'base_dir':str(root/'sandboxes'),'runtime':{'path':str(RUNTIME),'sha256':DIGEST}} + (owner/'ext.bwrap.yaml').write_text(yaml.safe_dump(extension)) + registry._EXTENSIONS_DIR=owner + manager=RecordingManager(store=SandboxStore(path=root/'store.json'),credits=CreditsStore(path=root/'credits.json'),snapshots=SnapshotStore(path=root/'snapshots.json')) + catalog=ProfileCatalog(); profile,_=catalog.resolve('harness.agent-dev-local@1.1.1') + assert profile.operational_readiness.status=='unverified' and profile.credential_route_refs==[] + rein=ProofRein(source,sentinel) + result=run_execution(ExecutionRequest(harness_profile_ref=str(profile.ref),repo=str(source),title='candidate runtime proof',description='deterministic no-model acceptance preparation',actor='agt',project='tsa06-runtime-proof',request_id='tsa06-candidate-gateway',report_to_hub=False),catalog=catalog,rein=rein,manager=manager) + assert result.ok, result.tool_error + state=manager.get(result.evidence.sandbox_id) + assert state.state.value=='destroyed' and not Path(rein.workspace).exists() and rein.task_removed + assert subprocess.check_output(['git','-C',str(source),'rev-parse','HEAD'])==original_head and not (source/'proof.txt').exists() + gateway={'ok':True,'profile':str(profile.ref),'readiness':profile.operational_readiness.status,'proof':rein.proof,'task_removed_before_teardown':rein.task_removed,'workspace_removed':True,'state':state.state.value,'source_unchanged':True,'deterministic_commit':True,'model_run_proven':False} + # Separate synthetic route fixture; profile readiness is still unchanged. + provider=root/'provider.py' + provider.write_text("import os,subprocess,sys\nenv={**os.environ,'ANTHROPIC_API_KEY':'synthetic-provider-only'}\nraise SystemExit(subprocess.call(sys.argv[sys.argv.index('--')+1:],env=env))\n") + extension['config']['credential_routes']={'synthetic':{'profiles':['profile.bwrap-local'],'projects':['tsa06-route-fixture'],'actors':['agt'],'exec_argv':['/usr/bin/python3',str(provider),'--']}} + (owner/'ext.bwrap.yaml').write_text(yaml.safe_dump(extension)) + fixture_profile=profile.model_copy(update={'credential_route_refs':['synthetic']}) + catalog.profiles()[(profile.id,profile.version)]=fixture_profile + before=len(manager.routes) + fixture=run_execution(ExecutionRequest(harness_profile_ref=str(profile.ref),repo=str(source),title='synthetic credential proof',description='synthetic provider only',actor='agt',project='tsa06-route-fixture',request_id='tsa06-synthetic-route',report_to_hub=False),catalog=catalog,rein=CredentialRein(),manager=manager) + assert fixture.ok, fixture.tool_error + fixture_routes=manager.routes[before:] + assert fixture_routes.count(['synthetic'])==1 and all(route in ([],['synthetic']) for route in fixture_routes) + fixture_state=manager.get(fixture.evidence.sandbox_id) + assert fixture_state.state.value=='destroyed' and not Path(fixture_state.inputs['workspace_dir']).exists() + route_proof={'scope':'separate synthetic credential-route fixture using actual manager and gateway','routes_by_owner_command':fixture_routes,'exactly_one_explicit_workload_delivery':True,'provider_output_redacted':True,'subsequent_housekeeping_clean':True,'workspace_removed':True,'readiness_changed':False} + # Actual manager identity, expiry, cancellation, and execution-after-removal checks. + consumer=Consumer(actor='agt',project='tsa06-runtime-proof',run_id='tsa06-cancel') + status=manager.create(SandboxCreateRequest(profile=profile.sandbox_profile,inputs={'repo':str(source)},consumer=consumer),host='localhost') + workspace=Path(status.inputs['workspace_dir']) + try: + refused={} + for field,value in [('actor','adm'),('project','another-project'),('run_id','another-run')]: + try: manager.execute(status.sandbox_id,SandboxExecRequest(command=['true'],consumer=consumer.model_copy(update={field:value}))) + except (ValueError,RuntimeError,PermissionError): refused[field]=True + else: raise AssertionError('wrong consumer accepted: '+field) + status.expires_at=utcnow()-timedelta(seconds=1); manager.store.save(status) + try: manager.execute(status.sandbox_id,SandboxExecRequest(command=['true'],consumer=consumer)) + except RuntimeError as exc: assert 'expired' in str(exc) + else: raise AssertionError('expired execution accepted') + expiration=manager.expire(apply=True) + assert any(x.sandbox_id==status.sandbox_id and x.action=='destroyed' for x in expiration) + assert not workspace.exists() + finally: + manager.destroy(status.sandbox_id) + cancel=manager.create(SandboxCreateRequest(profile=profile.sandbox_profile,inputs={'repo':str(source)},consumer=consumer.model_copy(update={'run_id':'tsa06-cancel-2'})),host='localhost') + cancel_workspace=Path(cancel.inputs['workspace_dir']); manager.destroy(cancel.sandbox_id) + assert not cancel_workspace.exists() + try: manager.execute(cancel.sandbox_id,SandboxExecRequest(command=['true'],consumer=cancel.consumer)) + except RuntimeError: pass + else: raise AssertionError('destroyed sandbox executed') + print(json.dumps({'ok':True,'runtime_sha256':DIGEST,'gateway':gateway,'synthetic_route_fixture':route_proof,'manager':{'wrong_consumer_refused':refused,'expired_execution_refused':True,'expiry_cleanup':True,'cancellation_cleanup':True,'execution_after_cancellation_refused':True},'model_calls':0,'real_credentials_read':False,'native_admission':False,'interactive_assignment_migrated':False},indent=2)) diff --git a/docs/changes/netkingdom-target-2026-10-16/browser-acceptance-next/README.md b/docs/changes/netkingdom-target-2026-10-16/browser-acceptance-next/README.md new file mode 100644 index 00000000..22f70097 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/browser-acceptance-next/README.md @@ -0,0 +1,34 @@ +# Browser acceptance dependency checkpoint + +NK-WP-0048 source repair, 16 October 2026. Source commit `015694e`. + +The current owner-local blocker was a contract mismatch: Warden's existing +`execution_descriptors` map was forbidden by NetKingdom's closed JSON schema, +while NetKingdom's Python validator silently accepted malformed map values. +That would prevent valid future descriptor source integration and could crash +the evidence compatibility path. The repair adds the optional bounded exact-byte +pin map to the schema and semantic validation, binds keys to declared steps, and +makes the direct evidence API refuse malformed maps. It supplies no descriptors, +owner acknowledgment, admission callback or execution authority. + +Validation: 21 new contract checks; all 127 affected tests pass in an isolated +checkout and canonical owner source. The canonical run reports two read-only +pytest cache warnings. Focused diff whitespace checking passes. The normal Git +scanner accepted all six committed files. Existing staged brief and unrelated +changes are preserved. Exact base/file hashes and preserved type/case hashes are +in `validation.json`; `implementation.patch` retains the source repair. + +The workplan now records completed checker source (T10), completed pin-contract +repair (T11), and the independently actionable next source task: NetKingdom-owned +attended registration/config/env/group adapters or receipt-only steps (T12). +T06 retains native acceptance and T07 remains dependent. This records outcomes +without counting fixtures as operational proof. + +The first browser case still lacks exact independently admitted owner descriptors +and adapters, authenticated native structural/status-binding receipts for all six +1.2 objects, exact broker/case source reconciliation, separately authorized +mint/delivery, attended registry/group execution, real human sign-in and denied +groups, revocation and created-only rollback. Canonical 1.1 remains acknowledged +with its historical accepted case; 1.2 remains acknowledged with a proposed case. +Ordinary admission refuses both unimplemented types. TSA-04 and TSA-05 remain open. +No credentials, live security changes or other owner's assent were requested. diff --git a/docs/changes/netkingdom-target-2026-10-16/browser-acceptance-next/coordinator-review.json b/docs/changes/netkingdom-target-2026-10-16/browser-acceptance-next/coordinator-review.json new file mode 100644 index 00000000..338e7769 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/browser-acceptance-next/coordinator-review.json @@ -0,0 +1,16 @@ +{ + "observed_at": "2026-10-16T19:26:32.083837+00:00", + "commit": "015694ee414c802dc2ef1fa0120dfed610086e69", + "exact_committed_files_verified": [ + "canon/schemas/security-case-type_v0.1.schema.json", + "tools/security-case-types/security_case_validator.py", + "tools/security-case-types/security_case_evidence.py", + "tools/security-case-types/README.md", + "tools/security-case-types/tests/test_descriptor_pins.py", + "workplans/NK-WP-0048-security-case-types.md" + ], + "origin_ancestry_verified": true, + "independent_test_command": "python3 -m pytest -q -p no:cacheprovider tools/security-case-types/tests/test_descriptor_pins.py", + "independent_passed": 21, + "native_acceptance": false +} diff --git a/docs/changes/netkingdom-target-2026-10-16/browser-acceptance-next/validation.json b/docs/changes/netkingdom-target-2026-10-16/browser-acceptance-next/validation.json new file mode 100644 index 00000000..f9b67861 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/browser-acceptance-next/validation.json @@ -0,0 +1,49 @@ +{ + "schema": "netkingdom.browser-source-checkpoint.v1", + "source_base": "8ae5150d4d43c8dd39175f0ba260198a3c022843", + "changed_files": { + "canon/schemas/security-case-type_v0.1.schema.json": "313bc162c1d1ea44895d14a2db9d56b89e48a274f0ff7dba23d72c861e452556", + "tools/security-case-types/security_case_validator.py": "1bcc62e9bc374c711363295549f3cd5bb0b32952671ed4b08fddc7f74742959b", + "tools/security-case-types/security_case_evidence.py": "da8efa59c52ad73283397ebe639ae259d0cb9c6348b5cb829135c24230dcdc75", + "tools/security-case-types/README.md": "27bcc2f341a80f034f61ab7a5f317117dabc833d415ad58a93526c7639da3e9d", + "tools/security-case-types/tests/test_descriptor_pins.py": "e3b6fe077f4a74bd3458d19b105797da339d1fdbc6dab71079e75111da2f2fb4", + "workplans/NK-WP-0048-security-case-types.md": "47453bdd6743f3a02676bda4c21b15985dc446e4733ad92ab192a21a71b7bb61" + }, + "unchanged_case_type_files": { + "security-case-types/oidc-browser-relying-party/type.yaml": "f705c64e4875e9b8e18a912fb51c135e77898926d6a451f5cb74ab3c0cbe4d1c", + "security-cases/forgejo-netkingdom-oidc.yaml": "bcc2c6d5bae0d28242b3cdb71e74d8ca297c2afe04766b55d53597f86893351d", + "security-case-type-revisions/1.2/oidc-browser-relying-party/type.yaml": "9e60ff569fb0d860a2bbde7bbb0991a54d4b0688f62b56df0fa5d161fd624578", + "security-case-type-revisions/1.2/oidc-browser-relying-party/examples/forgejo.yaml": "1c868c1da7d9077fae97bc6bc029706ec3dc418cfeaae30dc0f92b5b4ba6f2ab" + }, + "tests": { + "new_pin_contract": 21, + "affected_suite": 127 + }, + "reproduced_original_gap": { + "python_accepts_valid_pin": true, + "schema_refuses_valid_pin": "additionalProperties", + "python_accepts_list_instead_of_map": true + }, + "native_complete": false, + "execution_permitted": false, + "knowledge_package": { + "version": "0.2.6", + "digest": "8d1d6a9d4d07fec7b619618de7dfe2be2254c1790f85f4198c7fe19db9751c02", + "status": "withheld; source reviewed directly" + }, + "source_commit": "015694ee414c802dc2ef1fa0120dfed610086e69", + "canonical_suite": { + "passed": 127, + "warnings": "two pytest cache writes refused by canonical read-only filesystem", + "native_acceptance": false + }, + "publication": { + "remote_main": "015694ee414c802dc2ef1fa0120dfed610086e69", + "staged_scanner": "clean; six blobs", + "receive_scanner": "clean; fourteen objects / one ref", + "preexisting_staging_preserved": [ + ".custodian-brief.md" + ], + "projection_sync": "coordinating final combined owner sync with root; no index mutation by this worker" + } +} diff --git a/docs/changes/netkingdom-target-2026-10-16/checkpoint-publication-r1.json b/docs/changes/netkingdom-target-2026-10-16/checkpoint-publication-r1.json new file mode 100644 index 00000000..52dde74b --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/checkpoint-publication-r1.json @@ -0,0 +1,25 @@ +{ + "schema": "custodian.netkingdom-checkpoint-publication.v1", + "commit": "cf59a5f9aba994058adfde57bbaa37b93c4b6ebe", + "head_equals_origin_main": true, + "normal_command": "statehub fix-consistency --repo the-custodian --repo-path /home/worsch/the-custodian --no-writeback --json", + "exit_code": 0, + "summary": { + "fail": 0, + "automation_error": 0, + "warn": 7, + "info": 4 + }, + "fixes_applied": [ + "bindings: synced 89/89", + "C-17 cleared: pushed 1 backlogged commit(s)", + "C-22 fixed: task 6aca534c\u2026 description updated", + "push: pushed" + ], + "source_revision_reason": "dirty_workplans", + "scope": "25 public metadata/preflight/owner-review artifacts; followup implementation/workplan edits were still uncommitted at this first publication.", + "original_staged_brief_and_worktree_restored": true, + "initial_commit_refusal": "Public source hashes triggered unchanged scanner; typed SHA-256 formatting preserved values and passed. Original refusal and hashes retained.", + "no_scanner_bypass": true, + "native_gate_completion": false +} diff --git a/docs/changes/netkingdom-target-2026-10-16/improvement-loop-next/coordinator-canonical-cohort.json b/docs/changes/netkingdom-target-2026-10-16/improvement-loop-next/coordinator-canonical-cohort.json new file mode 100644 index 00000000..bd688192 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/improvement-loop-next/coordinator-canonical-cohort.json @@ -0,0 +1,370 @@ +{ + "providers": 60, + "entries": 71, + "errors": 0, + "warnings": 0, + "results": [ + { + "repo": "access-engine", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "activity-core", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "agentic-resources", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "approval-engine", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "audit-core", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "coordination-engine", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "emergent-security", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "fin-hub", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "gate-house", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "glas-harness", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "info-tech-canon", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "informed-decision", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "issue-core", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "key-cape", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "kings-guard", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "maturity-engine", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "net-kingdom", + "entries": 6, + "errors": [], + "warnings": [] + }, + { + "repo": "ops-bridge", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "ops-mason", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "ops-warden", + "entries": 3, + "errors": [], + "warnings": [] + }, + { + "repo": "policy-nexus", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "rail-knative", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "rail-kubernetes", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "railiance-apps", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "railiance-bootstrap", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "railiance-cluster", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "railiance-enablement", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "railiance-fabric", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "railiance-forge", + "entries": 2, + "errors": [], + "warnings": [] + }, + { + "repo": "railiance-infra", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "railiance-master", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "railiance-platform", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "railiance-telemetry", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "rapp-openbao", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "rapp-playwright", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "rapp-policy-nexus", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "rapp-postgres", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "rapp-sbom-nexus", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "rapp-telemetry", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "rapp-tenant-engine", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "rapp-user-engine", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "reef-railiance", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "rein-aharness", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "rein-openweights", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "repo-manager", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "resource-control", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "reuse-surface", + "entries": 3, + "errors": [], + "warnings": [] + }, + { + "repo": "risk-nexus", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "role-engine", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "runbook-tutorials", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "sand-boxer", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "sbom-nexus", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "secrets-engine", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "security-canon", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "state-hub", + "entries": 2, + "errors": [], + "warnings": [] + }, + { + "repo": "tenant-engine", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "the-custodian", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "user-engine", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "whitehat-security", + "entries": 1, + "errors": [], + "warnings": [] + }, + { + "repo": "zone-engine", + "entries": 1, + "errors": [], + "warnings": [] + } + ], + "scope": "Current canonical native validator function across all reviewed provider roots; not hosted refresh or native capability acceptance", + "retained_probe_refinement": "First coordinator invocation used incorrect function arguments and produced no validation result; corrected to inspected signature." +} diff --git a/docs/changes/netkingdom-target-2026-10-16/improvement-loop-next/coordinator-hosted-refresh.json b/docs/changes/netkingdom-target-2026-10-16/improvement-loop-next/coordinator-hosted-refresh.json new file mode 100644 index 00000000..0efa325e --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/improvement-loop-next/coordinator-hosted-refresh.json @@ -0,0 +1,26 @@ +{ + "observed_at": "2026-10-16T19:25:10.598961+00:00", + "url": "https://reuse.coulomb.social/v1/federated?refresh=true", + "composed_at": "2026-10-16T19:25:11+00:00", + "stale": false, + "federation_warnings": null, + "total": 114, + "reviewed": 70, + "reviewed_exactly_once_correct_owner": true, + "errors": [], + "corrected_fields": [ + { + "id": "capability.security.bootstrap-recovery", + "summary_equal": true, + "tags_equal": true, + "hosted_summary": "Guarded bootstrap custody, encrypted identity backup capture, independent retrieval and isolated recovery verification." + }, + { + "id": "capability.railiance.bootstrap-sequencing", + "summary_equal": true, + "tags_equal": true, + "hosted_summary": "Bare-VM to estate sequence and handoff contract." + } + ], + "scope": "Discovery/index parity only; no runtime acceptance or maturity promotion." +} diff --git a/docs/changes/netkingdom-target-2026-10-16/improvement-loop-next/integration-r2.json b/docs/changes/netkingdom-target-2026-10-16/improvement-loop-next/integration-r2.json new file mode 100644 index 00000000..3743bee6 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/improvement-loop-next/integration-r2.json @@ -0,0 +1,96 @@ +{ + "source_commits": { + "reuse-surface": "dd00b27b4ce77180b01c5756c2a3841819fcac76", + "net-kingdom": "49ddde451a69818b9558654fbc7d5744a80777fb", + "railiance-bootstrap": "6927f5ec6406fd975530f469d949901d968c1afb" + }, + "record_commits": { + "reuse-surface": "01af18964b170eaa87f8560ce9285518e8dc6d7e", + "railiance-bootstrap": "8d23103af2d5ff0da4eb5f612ea2bf09d8ff7344", + "net-kingdom": "3223039 (normal concurrent identifier assignment)" + }, + "new_cli_tests": 23, + "root_independent_checks": "30 parity/native-registry checks passed across 27 initial passing tests and 3 required filesystem-approved reruns; sandbox write failures retained.", + "malformed_regression_scope": [ + "index schema is not validated before _check_index_drift; validate mappings/list/string id/path before Counter", + "availability null/list: do not call .get on nonmapping", + "null/list frontmatter: retain parser failure, no projection traceback", + "malformed YAML frontmatter/index: normal validation error" + ], + "normal_publication": { + "reuse_initial": { + "exit": 0, + "fail": 0, + "automation_error": 0, + "warn": 8, + "source_pushed": true + }, + "net-kingdom": { + "exit": 0, + "fail": 0, + "automation_error": 0, + "warn": 26, + "source_pushed": true + }, + "bootstrap_initial": { + "exit": 1, + "fail": 11, + "automation_error": 0, + "warn": 38, + "source_pushed": true + }, + "reuse_final": { + "source_revision": "01af18964b170eaa87f8560ce9285518e8dc6d7e", + "summary": { + "fail": 0, + "automation_error": 0, + "warn": 7, + "info": 0 + }, + "result": "warn", + "fixes_applied": [ + "bindings: synced 27/27", + "C-17 cleared: pushed 1 backlogged commit(s)", + "C-22 fixed: task 63c0e025\u2026 description updated", + "push: pushed" + ] + }, + "bootstrap_final": { + "source_revision": "8d23103af2d5ff0da4eb5f612ea2bf09d8ff7344", + "summary": { + "fail": 11, + "automation_error": 0, + "warn": 36, + "info": 0 + }, + "result": "fail", + "fixes_applied": [ + "bindings: synced 12/12", + "C-17 cleared: pushed 1 backlogged commit(s)", + "push: pushed" + ] + } + }, + "limits": "No production deployment, model spend, credential access or external messages. Root independently refreshed/read hosted federation after normal source publication. This bounded parity/uniqueness repair does not close all TSA-11 requirements or the TSA-12 runtime schedule.", + "preserved_state": { + "net-kingdom_brief": "Exact original staged blob/mode and worktree restored after observed post-sync hash/index race checks. Other staging untouched.", + "net-kingdom_work_records": "Current file preserved amid concurrent recovery owner sync; original preimage retained in /tmp/netkingdom-discovery-preexisting-state.", + "test_generated_outputs": "Six originally clean Reuse graph/catalog/federation outputs restored after checks; no generated test output staged.", + "guard_refusal": "Automatic brief-only commit refusals retained without bypass. Generated brief/WORK-RECORDS changes may remain from normal sync." + }, + "hosted_readback": { + "root_receipt": "coordinator-hosted-refresh.json", + "composed_at": "2026-10-16T19:25:11+00:00", + "reviewed_exactly_once": 70, + "reviewed_correct_owner": 70, + "cohort_local_errors": 0, + "cohort_local_warnings": 0, + "both_owner_metadata_corrections_match_entries": true, + "warning_header": null + }, + "ci_readback": { + "status": "unverified", + "public_actions_api_http_status": 404, + "receipt": "public-ci-readback.json" + } +} diff --git a/docs/changes/netkingdom-target-2026-10-16/recovery-acceptance-next/README.md b/docs/changes/netkingdom-target-2026-10-16/recovery-acceptance-next/README.md new file mode 100644 index 00000000..273ff94d --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/recovery-acceptance-next/README.md @@ -0,0 +1,79 @@ +# KeyCape recovery acceptance next — 2026-10-16 + +Published owner source: key-cape `3c71226a1a7b8a2bdb710e9c497e1a1f7f8a3987` +(`origin/main` matched after push). Only KEY-WP-0040 changed; preexisting staged +`.custodian-brief.md` and unstaged `WORK-RECORDS.md` remain outside this commit. +The patch is retained alongside this note. + +KEY-WP-0040-T02 did **not** still need publication: the founder's October15 +release of image `cdec9dd7…` from `8c6c071` already includes `205a1c0`, the help +link. Corrected the stale source-only statements by dated reconciliation with +references to `key-cape/docs/operations.md` and KEY-WP-0041-T02. Existing +user-engine attended procedure now has an exact resume point in KEY-WP-0040: +observe the OTP link, then use platform-root's own fresh AAL2 session to preview +tegwick through the supported recovery form. A changed factor must be reconciled, +not forced to the historical suffix. T01 and T02 remain progress, and U08 remains +open until the attended audited recovery, replacement enrollment and fresh login. +No authenticated preview or factor change was performed. + +Validation: 20 existing recovery tests passed; source ancestry confirms +`205a1c0` is in `8c6c071`; exact-file diff check passed. These are preparation +checks, not estate acceptance. Required `statehub fix-consistency --repo key-cape +--repo-path /home/worsch/key-cape --no-writeback --json` exited0, synced44/44 +bindings, reported zero failures/automation errors and eight warnings (existing +classification/legacy task/dependency/inbox issues). It did not write statuses +back into the preexisting owner work. + +## Exact dependency for NetKingdom T18 + +Use the existing shipped `keycape verify-client` and `keycape login`, documented +in `key-cape/docs/native-authentication.md`; do not add a second verifier. +`src/internal/authclient/verify.go` is the authoritative CLI/check contract. + +The isolated restore owner must supply privately: + +- The exact admitted archive/manifest/image/target lineage; original signing key, + KeyCape config, client secret deliveries, authentication policy store and + receipt store. Compare archive identity/integrity privately; do not copy their + contents into this evidence directory. +- An isolated transport preserving the **original HTTPS issuer hostname**, trust + and same-origin discovery/token/JWKS endpoints, with only reviewed internal + dependency routes. These commands offer no insecure TLS or plainHTTP bypass. + Restored config must not accidentally reach production LDAP/Authelia/privacyIDEA, + tenant-engine, notification or consumer endpoints. `/readyz` checks LDAP, + Authelia, privacyIDEA and the factor reader; `/healthz` proves only process life. +- A selected already-registered current service consumer with original private + secret delivered to the command environment and exact client ID, audience, + requested scopes, expected subject/tenant/roles and denied scope. No new + registration or grant. `verify-client` emits bounded PASS/FAIL lines and exits + nonzero on failure; it keeps JWTs in memory. Preserve results, not token bodies. +- For human/browser continuity, selected existing owner-held account/factor, + existing approved public-PKCE client/callback and a private browser route. + `keycape login` writes private token output outside Git; it is not the OpenBao + login command. T19 actual retained-token MFA still gates the selected flow. + +`verify-client` proves issuance/JWKS/claim/scope behavior for its named +registration. It does not compare the complete archived registry, policy and +receipt identity, demonstrate an actual downstream consumer reconnect, or prove +human MFA. Its optional `-previous-secret-env` is specifically a predecessor +rotation check, not evidence that recovery rotated a secret. The native isolated +adapter must separately demonstrate explicit wrong-secret refusal and selected +consumer outcomes without exporting secrets, and capture public signing-key +fingerprint, exact-source/target binding, registry/policy/receipt comparison +booleans, isolation and cleanup. A discovery or TLS failure is not wrong-secret +refusal. All are required before T18 closes. + +No isolated KeyCape restore adapter exists in the inspected current NetKingdom +recovery toolchain. Its archive/containment integration belongs to NetKingdom, +with KeyCape/consumer owner acceptance. This work did not fabricate that assent, +read keys/credentials, execute credential exchange, or make production changes. + +## Current recovery boundary + +The fresh NetKingdom `actual-isolated-privacyidea-review.json` accepts T20 stored +row audit continuity and T31 retained-token-material readback (five token +materials;279209 historical signatures; no unsigned/invalid rows). This is +stronger than the older archive-only summary. Its explicit +`existing_token_mfa_proven:false` remains binding: T19 actual existing-token MFA, +T17 Authelia authentication/storage and T18 KeyCape/consumer continuity remain +open. Stored-signature continuity does not claim event completeness. diff --git a/docs/changes/netkingdom-target-2026-10-16/recovery-acceptance-next/result.json b/docs/changes/netkingdom-target-2026-10-16/recovery-acceptance-next/result.json new file mode 100644 index 00000000..4e60571b --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/recovery-acceptance-next/result.json @@ -0,0 +1,51 @@ +{ + "schema": "custodian.keycape-recovery-acceptance-next.v1", + "date": "2026-10-16", + "owner_commit": "3c71226a1a7b8a2bdb710e9c497e1a1f7f8a3987", + "published": true, + "source_tests": { + "existing_recovery_unittests_passed": 20, + "estate_acceptance": false + }, + "gate_status": { + "KEY-WP-0040-T01": "progress; actual authenticated preview pending", + "KEY-WP-0040-T02": "progress; published, attended OTP link observation pending", + "NK-WP-0049-T18": "wait; isolated adapter, consumer owner proof and T19 pending", + "NK-WP-0049-T19": "wait; real retained-token MFA pending", + "NK-WP-0049-T20": "done per current independent owner receipt", + "NK-WP-0049-T31": "done per current independent owner receipt" + }, + "credentials_accessed": false, + "production_mutated": false, + "live_acceptance_claimed": false, + "sources": [ + { + "path": "key-cape/workplans/KEY-WP-0040-mfa-attended-run-findings.md", + "sha256": "c213d8ad5ef2471d1ab8672502b561b9fee84b110575366c09148add83ad9d79" + }, + { + "path": "key-cape/docs/operations.md", + "sha256": "e68ec32073b7731214308ccd2fceb522d934b00f1d76e6d438e2870030497cfc" + }, + { + "path": "key-cape/workplans/KEY-WP-0041-sign-in-diagnosis-page.md", + "sha256": "7e44f46acd6b3942c1852b49e0d64b205dfd7d9bb378aed5241b1bf22d7ce88a" + }, + { + "path": "key-cape/docs/native-authentication.md", + "sha256": "378a5fa8174580bde811b716ec8e987339013b9f8d7725cb398fa3b9f8d95655" + }, + { + "path": "key-cape/src/internal/authclient/verify.go", + "sha256": "804735be927ba7d0228ac378056730040d3ccf2ed020b4da0714085bae972f25" + }, + { + "path": "net-kingdom/docs/identity-service-restore-packet.md", + "sha256": "6cdcbd113c58b7f0baef327f00caad03a641e81076d1fb06874fad9923ab6d90" + }, + { + "path": "net-kingdom/docs/evidence/2026-10-16-identity-outage-recovery/actual-isolated-privacyidea-review.json", + "sha256": "39d274ce99bb8c89281899821a5674d3ef5bbb35f824623cd2c4e08493f85cad" + } + ] +} diff --git a/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/actual-prekey-install.json b/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/actual-prekey-install.json new file mode 100644 index 00000000..57412722 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/actual-prekey-install.json @@ -0,0 +1,50 @@ +{ + "schema": "secrets-engine.inert-local-prekey-install.v1", + "observed_at": "2026-10-16T19:01:36.301727+00:00", + "installer_runner_sha256": "sha256:64fb4746aead56d7ddd45af17c38d2b6a45e3e7123b94d216d748741c9d18dec", + "owner_review_sha256": "sha256:76eca7bc884bf4e5985330bcb0fbe3ff4a544fd4e5fc9367dbe306483069ec38", + "baseline_sha256": "sha256:72521ff7729f8ddf5176092f3949cd50ac5f9241b0a5d1d30f3c63ce1d83091b", + "install_receipt": { + "admission": "artifact integrity only; trust and keys not admitted", + "helper_sha256": "ed922b62533e4d33ae2d5f11175111f6f28e684a19e63ac704d43b63f0e0e12e", + "launcher_sha256": "f642944e23b2379e870cce68758c2ba42a3d7b16a52948e9ac1a826301c9a1c9", + "manifest_sha256": "105dcebe6f03e9799f91ea75175e20500df2aa7f08b5e32d39c1c367593ca47e", + "prefix": "/home/worsch/.local/share/secrets-engine/releases/4dd004a22501-105dcebe6f03", + "schema": "secrets-engine.cli-install.v1" + }, + "configuration_parent": "/home/worsch/.config/secrets-engine/native-lifecycle/lifecycle-20261016-pre-key-r1", + "configuration_files_sha256": { + "catalog/activity-core-metered-worker-token.yaml": "sha256:67d6235bbf6e28b7d1392ff26fd13ce4933843d11407a8fe2b1c793b3748a1f5", + "catalog/email-connect-transactional.yaml": "sha256:7869e96a7fca4c508f8a2a11a9b614db8c8a4100c2402597bde48a06aef77f97", + "catalog/example-build-test-token.yaml": "sha256:6e2396af8c711c10a5af83edb3925227c251e82d16a5d5a7b7a87948e2229f54", + "catalog/forgejo-admin-api-token.yaml": "sha256:193e231c5dbc175e82614fe35092ab649cf4152878f2679332b37888f176a991", + "catalog/glas-claude-agent-dev-anthropic.yaml": "sha256:61f40b124d937516b18b77b3ae3253079f024f4522191e22a81fae3d859abb63", + "catalog/issue-core-ingestion-api-key.yaml": "sha256:401b8c7a57d3e9a54e98711387577ecc6fc0674f2e32759a5c675e1d4adf176f", + "catalog/openrouter-llm-connect.yaml": "sha256:3d46e4896aa3b2a9838f72d4f2e3b1afc9deb2c7b1be0c62ae1900eb9cb1713b", + "catalog/reuse-surface-hub-write-token.yaml": "sha256:6f2ab0e31ba71bffb5d48b8ac787dee52b73f865af1c9f155d5046067a841111", + "catalog/warden-sign.yaml": "sha256:54a9ec01bf87fa3cc6ab75fa6c818c4977f2f70800a16890a836a509ad5c73c9", + "catalog/whynot-design-npm-publish.yaml": "sha256:18ada66f109a5532462b70b4d213bb73c7ab2e0ef9a4a2a149b7f9fcd77b034f", + "environment.proposed.json": "sha256:78a19a1a33f1faf61353ce674048826c89c45e84f15467992fca347679c4908d", + "pep-stance.yaml": "sha256:969ffd12506e2954c273e19ed6505692c1bacbe97a262a85862793254263e737", + "policies/netkingdom-publication-scope.yaml": "sha256:018000cb29edf7707f3885bec2f54285adef1e5a71c749b6b7ab6044203de89b", + "policies/secrets-engine-build.hcl": "sha256:ec5ce1987fbf2818f1ecd612d280cc419990dce12f85d7f5f38b621f4f9dbf69", + "policies/secrets-engine-prod.hcl": "sha256:1d12ca47e4f3ab234370ddfadad2aca8ae0943d95833798be5af0ea09860c6ce", + "policies/secrets-engine-test.hcl": "sha256:53c1d4146116784ba0024cc2c9f318e6443471ee97b7b1d2056ea840eb4ff6f6", + "trust/lifecycle-pre-key.json": "sha256:5f01b418cccef03326c424a1de649a4bde42811aa1e2041a6d0417c8d65a3f6a" + }, + "configuration_files_mode": "0600", + "new_directories_mode": "0700", + "evidence_root": "/home/worsch/.local/state/secrets-engine/native-lifecycle/lifecycle-20261016-r1", + "installed_cli_help": true, + "proof": { + "catalog_rows": 10, + "empty_key_refusal_before_caller_or_socket": true, + "backend_configured": false, + "approval_configured": false + }, + "source_files_checked": 53, + "caller_created": false, + "native_key_admitted": false, + "protected_effect_authority": false, + "same_uid_code_isolation_established": false +} diff --git a/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/coordinator-install-preflight-history.json b/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/coordinator-install-preflight-history.json new file mode 100644 index 00000000..d3f7a852 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/coordinator-install-preflight-history.json @@ -0,0 +1,6 @@ +{ + "initial_sandbox_preflight": "refused root/home UID65534 mapping; no writes", + "host_preflight": "passed after required filesystem escalation with unchanged owner checks", + "actual_install": "passed using normal reviewed installer and filesystem escalation", + "same_uid_isolation": false +} diff --git a/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/install-public-prekey.py b/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/install-public-prekey.py new file mode 100644 index 00000000..c6fa516b --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/install-public-prekey.py @@ -0,0 +1,127 @@ +"""One-off coordinator installation of the selected inert public CLI/config. + +Uses the existing owner installer. No caller, key admission or backend access. +""" +import datetime +import hashlib +import json +import os +from pathlib import Path +import stat +import subprocess +import sys +import tempfile + +ROOT = Path('/home/worsch/the-custodian') +WAVE = ROOT / 'docs/changes/netkingdom-target-2026-10-16' +REVIEW = WAVE / 'secrets-native-admission-next' +SOURCE = WAVE / 'decision-native-preparation/consumer-admission-r1' +BUNDLE = Path('/tmp/secrets-native-cli-4dd004a-one') +MANIFEST = '105dcebe6f03e9799f91ea75175e20500df2aa7f08b5e32d39c1c367593ca47e' +BASELINE = '72521ff7729f8ddf5176092f3949cd50ac5f9241b0a5d1d30f3c63ce1d83091b' + +def sha(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + +def controlled_chain(path): + for item in reversed((path, *path.parents)): + if not os.path.lexists(item): + continue + s = item.lstat() + assert stat.S_ISDIR(s.st_mode), f'non-directory parent: {item}' + assert s.st_uid in (0, 1000) and not s.st_mode & 0o022, f'uncontrolled parent: {item}' + +def make_parents(path): + controlled_chain(path) + missing = [] + item = path + while not item.exists(): + missing.append(item) + item = item.parent + for item in reversed(missing): + item.mkdir(mode=0o700) + controlled_chain(path) + +assert os.getuid() == os.getgid() == 1000 +assert sha(SOURCE / 'consumer-baseline.json') == BASELINE +baseline = json.loads((SOURCE / 'consumer-baseline.json').read_bytes()) +assert sha(BUNDLE / 'manifest.json') == MANIFEST +manifest = json.loads((BUNDLE / 'manifest.json').read_bytes()) +assert (BUNDLE / 'manifest.json').read_bytes() == (WAVE / 'decision-native-preparation/r2/canonical-bundle-manifest.json').read_bytes() +assert not BUNDLE.is_symlink() and BUNDLE.stat().st_uid == 1000 and stat.S_IMODE(BUNDLE.stat().st_mode) == 0o700 +assert {str(p.relative_to(BUNDLE)) for p in BUNDLE.rglob('*') if p.is_file()} == set(manifest['artifacts']) | {'manifest.json'} +for name, expected in manifest['artifacts'].items(): + p = BUNDLE / name + assert not any(x.is_symlink() for x in (p, *p.parents)) + assert sha(p) == expected, name +for name, expected in manifest['source_files'].items(): + assert sha(Path('/home/worsch/secrets-engine') / name) == expected, name +assert sha(BUNDLE / 'install.py') == sha(Path('/home/worsch/secrets-engine/scripts/install_release_bundle.py')) +files = baseline['configuration']['files_sha256'] +for name, expected in files.items(): + p = SOURCE / 'configuration' / name + assert not any(x.is_symlink() for x in (p, *p.parents)) + assert sha(p) == expected.removeprefix('sha256:'), name +assert json.loads((SOURCE / 'configuration/trust/lifecycle-pre-key.json').read_bytes())['keys'] == {} +prefix = Path(baseline['release']['prefix']) +config = Path(baseline['configuration']['parent']) +evidence = Path(baseline['configuration']['evidence_root']) +for path in (prefix, config, evidence): + controlled_chain(path.parent) + assert not os.path.lexists(path), f'selected destination already exists: {path}' +review = json.loads((REVIEW / 'owner-review.json').read_bytes()) +assert review['disposition'] == 'select-exact-public-source-bundle-and-empty-key-configuration-for-preparatory-install' +assert review['native_key_admission'] is False and review['effect_authority'] is False +if sys.argv[1:] == ['--check']: + print(json.dumps({'preflight': 'pass', 'source_files': len(manifest['source_files']), 'public_configuration_files': len(files), 'fresh_destinations': True, 'controlled_parent_chains': True})) + raise SystemExit(0) +assert sys.argv[1:] == ['--install'] +os.umask(0o077) +for path in (prefix, config, evidence): + make_parents(path.parent) +env = {'PATH': '/usr/bin:/bin', 'UV_CACHE_DIR': tempfile.mkdtemp(prefix='secrets-prekey-install-cache-')} + +def checked(argv): + result = subprocess.run(argv, cwd='/tmp', env=env, capture_output=True, text=True, timeout=120) + if result.returncode: + raise RuntimeError(f'public installation/proof command failed, exit {result.returncode}; partial prefixes retained') + return result.stdout + +installed = json.loads(checked(['/usr/bin/python3', str(BUNDLE / 'install.py'), '--bundle', str(BUNDLE), '--prefix', str(prefix), '--manifest-sha256', MANIFEST, '--python', '/usr/bin/python3', '--uv', '/home/worsch/.local/bin/uv'])) +config.mkdir(mode=0o700) +evidence.mkdir(mode=0o700) +for name in files: + destination = config / name + make_parents(destination.parent) + fd = os.open(destination, os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_NOFOLLOW, 0o600) + with os.fdopen(fd, 'wb') as output: + output.write((SOURCE / 'configuration' / name).read_bytes()) + s = destination.lstat() + assert s.st_uid == 1000 and stat.S_IMODE(s.st_mode) == 0o600 + assert sha(destination) == files[name].removeprefix('sha256:') +help_output = checked([str(prefix / 'bin/secrets-engine'), '--help']) +probe = '''import json,os,pathlib,sys +from secrets_engine.config import Config +from secrets_engine.catalog import load_catalog +from secrets_engine.approval_consume import authorize_action +from secrets_engine.errors import DecisionError +env=json.loads(pathlib.Path(sys.argv[1]).read_bytes());os.environ.update(env) +events=[] +def refuse_io(event,args): + if event.startswith('socket.') or (event=='open' and str(args[0])==env['SECRETS_ENGINE_PDP_TOKEN_FILE']): + events.append(event);raise RuntimeError('credential/network access forbidden during inert proof') +sys.addaudithook(refuse_io) +cfg=Config.load();catalog=load_catalog(cfg.catalog_dir) +assert cfg.bao_addr==cfg.approval_url=='' +try:authorize_action(cfg,None,'apply') +except DecisionError as exc: + assert str(exc)=='access-engine responder trust is missing or invalid' + assert str(exc.__cause__)=='missing admitted keys' +else:raise AssertionError('empty trust accepted') +assert not events and len(catalog)==10 +print(json.dumps({'catalog_rows':len(catalog),'empty_key_refusal_before_caller_or_socket':True,'backend_configured':False,'approval_configured':False})) +''' +proof = json.loads(checked([str(prefix / 'venv/bin/python'), '-I', '-B', '-c', probe, str(config / 'environment.proposed.json')])) +receipt = {'schema': 'secrets-engine.inert-local-prekey-install.v1', 'observed_at': datetime.datetime.now(datetime.timezone.utc).isoformat(), 'installer_runner_sha256': 'sha256:' + sha(Path(__file__)), 'owner_review_sha256': 'sha256:' + sha(REVIEW / 'owner-review.json'), 'baseline_sha256': 'sha256:' + BASELINE, 'install_receipt': installed, 'configuration_parent': str(config), 'configuration_files_sha256': files, 'configuration_files_mode': '0600', 'new_directories_mode': '0700', 'evidence_root': str(evidence), 'installed_cli_help': bool(help_output), 'proof': proof, 'source_files_checked': len(manifest['source_files']), 'caller_created': False, 'native_key_admitted': False, 'protected_effect_authority': False, 'same_uid_code_isolation_established': False} +(REVIEW / 'actual-prekey-install.json').write_text(json.dumps(receipt, indent=2) + '\n') +print(json.dumps({'installed': str(prefix), 'configuration': str(config), 'public_files': len(files), 'proof': proof, 'receipt': str(REVIEW / 'actual-prekey-install.json')})) diff --git a/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/integration.json b/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/integration.json new file mode 100644 index 00000000..def28a70 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/integration.json @@ -0,0 +1,19 @@ +{ + "schema": "secrets-engine.inert-install-integration.v1", + "selection_commit": "a4f1802b720b64f2b47483fbd597902bd4c354f5", + "actual_install_record_commit": "535681052cd55ca613706ecc60c39d299929b3c5", + "normal_publication": "both commits pushed successfully; remote scanner clean4objects each", + "normal_commit_scanner": "both explicit-path commits clean1blob each", + "actual_install_receipt_sha256": "sha256:1ab9c271dfb236f09c4528ae18897381f5e404541708bf36f50c41c77d183ba0", + "owner_checkout_modified_only": "existing WP14 work-record; unrelated WORK-RECORDS.md retained; normal fix-consistency regenerated existing brief", + "native_assent": false, + "native_key_admission": false, + "effect_authority": false, + "native_effects_accepted": 0, + "sites": 11, + "handlers": 10, + "first_sync": "pass with known WP13 lifecycle drift and old inbox warnings; T03description synced; generated-only brief commit refused without bypass", + "second_sync": "pass:0automation-error,0assessment-fail,4warn,1info;16/16bindings and T03description synced; known WP13proposed/active drift and old inbox warnings retained; generated-only brief commit rejected without bypass; push completed", + "progress_receipt_id": "7b2994e5-2a37-4687-b197-bbb4e9e57686", + "unrelated_owner_status_after_commits": "M .custodian-brief.md (preexisting staged, normal consistency regeneration); M WORK-RECORDS.md (preexisting unstaged), no other owner changes" +} diff --git a/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/owner-review.json b/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/owner-review.json new file mode 100644 index 00000000..33d3e9d3 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/owner-review.json @@ -0,0 +1,26 @@ +{ + "schema": "secrets-engine.public-preparatory-install-owner-selection.v1", + "disposition": "select-exact-public-source-bundle-and-empty-key-configuration-for-preparatory-install", + "reviewer_role": "secrets-engine-owner-reviewer", + "owner_head": "3718e60d7385db091d3423352f44e922863087de", + "owner_work_record": "workplans/SECRETS-WP-0014-pdp-transport-and-responder-authentication.md", + "owner_work_record_preimage_sha256": "sha256:2951cb7876801eff74af121c5d948c03f82ef53f25812e656342333e7561acb6", + "patch_sha256": "sha256:938fa7de2e1bc42ac919815f519637c39a7ccf1cd65ce4b2de3640c71bd63472", + "canonical_write_performed": false, + "native_owner_assent_supplied": false, + "native_key_admission": false, + "actual_home_install_performed": false, + "effect_authority": false, + "runtime_defect_found": false, + "corrected_stale_finding": "ConsumerR1 historical P1/failed400 image warning is superseded for exact PlatformP4/AccessR2 source join only; old bytes and review evidence preserved.", + "current_owner_dirty_state": "Pre-existing staged .custodian-brief.md and unstaged WORK-RECORDS.md retained; neither modified.", + "unchanged_gates": [ + "WP14T02 progress", + "WP14T03 wait", + "TSA01 open", + "TSA02 open", + "TSA03 open", + "effect acceptance0/11 across10handlers" + ], + "public_only": true +} diff --git a/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/verification.json b/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/verification.json new file mode 100644 index 00000000..3991c50c --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/secrets-native-admission-next/verification.json @@ -0,0 +1,39 @@ +{ + "result": "pass", + "public_source_files_verified": 53, + "consumer_manifest_sha256": "sha256:7f4a49064b459a3b087943a00241eb9f744e3768f5c4139d1821d799ff2e584a", + "platform_p4_manifest_sha256": "sha256:9eec861838a8e9138f2c821cff3014998fbe74bb01447642bf50d44e8b3b7cb3", + "access_r2_manifest_sha256": "sha256:5be7a7f438624dcb35b7dbc96e7c9e5a8e2d5d1b1966cb4338aa5aecbe3a8b59", + "baseline_sha256": "sha256:72521ff7729f8ddf5176092f3949cd50ac5f9241b0a5d1d30f3c63ce1d83091b", + "bundle_manifest_sha256": "sha256:105dcebe6f03e9799f91ea75175e20500df2aa7f08b5e32d39c1c367593ca47e", + "disposable_prefix": "/tmp/secrets-owner-preparation-r9dkqm6h/installed", + "install_receipt": { + "admission": "artifact integrity only; trust and keys not admitted", + "helper_sha256": "ed922b62533e4d33ae2d5f11175111f6f28e684a19e63ac704d43b63f0e0e12e", + "launcher_sha256": "d8fa2d1cacd5a1fd2924848c6b24f147cb61fc46b19feafd6845dee3adc22f96", + "manifest_sha256": "105dcebe6f03e9799f91ea75175e20500df2aa7f08b5e32d39c1c367593ca47e", + "prefix": "/tmp/secrets-owner-preparation-r9dkqm6h/installed", + "schema": "secrets-engine.cli-install.v1" + }, + "installed_cli_help": true, + "baseline_probe": { + "empty_trust_refusal": "before caller or socket access", + "catalog_rows": 10, + "backend_address": "", + "approval_url": "" + }, + "existing_prefix_refused": true, + "current_owner_runtime_matches_bundle_sources": true, + "consumer_platform_access_joins": "pass", + "native_install": false, + "key_or_credential_read_or_mint": false, + "native_assent_created": false, + "native_effects_accepted": 0, + "native_effect_sites": 11, + "handlers": 10, + "retained_harness_failure": "First minimal PATH omitted uv; installer refused before venv creation and marked partial /tmp prefix. Corrected harness selects the existing explicit uv binary and uses a fresh disposable prefix. No runtime patch or retry into failed prefix.", + "uv_binary": "/home/worsch/.local/bin/uv", + "access_offline_tool_sha256": "sha256:33d3c50aba51b85cf85d2e234268e903004894299efc9b3745e0980c55578280", + "access_api_sign_and_receipt_tool_diff_2b064ee_to_image84c78e0": "empty; exact git diff checked", + "owner_work_record_patch_apply_check": "pass; canonical owner files unchanged" +} diff --git a/docs/changes/netkingdom-target-2026-10-16/source-wave-status.json b/docs/changes/netkingdom-target-2026-10-16/source-wave-status.json index 0eeb65a0..30ca17ad 100644 --- a/docs/changes/netkingdom-target-2026-10-16/source-wave-status.json +++ b/docs/changes/netkingdom-target-2026-10-16/source-wave-status.json @@ -1,6 +1,6 @@ { "schema": "custodian.netkingdom-source-wave.v1", - "observed_at": "2026-10-16T18:28:18.107141+00:00", + "observed_at": "2026-10-16T19:30:27.788551+00:00", "coordinator": "CUST-WP-0080-T06", "source_slices": [ { @@ -341,6 +341,110 @@ "native_accepted": false, "receipt": "platform-signer-custody/native-owner-boundary-r5/canonical-integration.json", "patch_sha256": "sha256:43264f13da5ff20267dea424a7c7d8d911f7601edca6871f31394e0c292fcd59" + }, + { + "repo": "access-engine", + "slice": "access-native-plan-review-next", + "commit": "d328a2601095686f74376d87791bff01e2a3a2a3", + "receipt": "access-native-plan-review-next/integration-receipt.json", + "native_accepted": false, + "published": true + }, + { + "repo": "railiance-platform", + "slice": "platform-native-plan-review-next", + "commit": "08c1f036f2750097750f435efd76e8f6ee6df393", + "receipt": "platform-native-plan-review-next/publication-receipt.json", + "native_accepted": false, + "published": true + }, + { + "repo": "secrets-engine", + "slice": "inert-native-package-selection", + "commit": "a4f1802b720b64f2b47483fbd597902bd4c354f5", + "receipt": "secrets-native-admission-next/integration.json", + "native_accepted": false, + "published": true + }, + { + "repo": "secrets-engine", + "slice": "inert-native-package-install", + "commit": "535681052cd55ca613706ecc60c39d299929b3c5", + "receipt": "secrets-native-admission-next/integration.json", + "native_accepted": false, + "published": true + }, + { + "repo": "rein-aharness", + "slice": "canonical-combined-runtime", + "commit": "9b88cadaa817e5abea7950b4a264d4e2739a5ddb", + "receipt": "agent-isolation-next/canonical-publication.json", + "native_accepted": false, + "published": true + }, + { + "repo": "net-kingdom", + "slice": "browser-descriptor-pin-contract", + "commit": "015694ee414c802dc2ef1fa0120dfed610086e69", + "receipt": "browser-acceptance-next/validation.json", + "published": true, + "native_accepted": false + }, + { + "repo": "reuse-surface", + "slice": "native-index-parity", + "commit": "dd00b27b4ce77180b01c5756c2a3841819fcac76", + "published": true, + "native_accepted": false, + "receipt": "source-wave12-coordinator-review.json" + }, + { + "repo": "reuse-surface", + "slice": "native-index-parity-record", + "commit": "01af18964b170eaa87f8560ce9285518e8dc6d7e", + "published": true, + "native_accepted": false, + "receipt": "source-wave12-coordinator-review.json" + }, + { + "repo": "railiance-bootstrap", + "slice": "owner-index-parity", + "commit": "6927f5ec6406fd975530f469d949901d968c1afb", + "published": true, + "native_accepted": false, + "receipt": "source-wave12-coordinator-review.json" + }, + { + "repo": "railiance-bootstrap", + "slice": "owner-index-parity-record", + "commit": "8d23103af2d5ff0da4eb5f612ea2bf09d8ff7344", + "published": true, + "native_accepted": false, + "receipt": "source-wave12-coordinator-review.json" + }, + { + "repo": "net-kingdom", + "slice": "owner-recovery-index-parity", + "commit": "49ddde451a69818b9558654fbc7d5744a80777fb", + "published": true, + "native_accepted": false, + "receipt": "source-wave12-coordinator-review.json" + }, + { + "repo": "railiance-cluster", + "slice": "native-runtime-storage-plan-review", + "commit": "cac8eabef5a0d0990a7b0de8f5e2c762666ac7f0", + "published": true, + "native_accepted": false, + "receipt": "source-wave12-coordinator-review.json" + }, + { + "repo": "key-cape", + "slice": "published-recovery-journey-reconciliation", + "commit": "3c71226a1a7b8a2bdb710e9c497e1a1f7f8a3987", + "published": true, + "native_accepted": false, + "receipt": "source-wave12-coordinator-review.json" } ], "integrity_note": "Canonical owner commits are the durable source. Raw patches and temporary reconstructions are workspace-local review artifacts; their hashes retain revision identity. No runtime admission follows from these commits.", @@ -350,7 +454,8 @@ "Historical (resolved by Access B1 reconciliation): Access initial State Hub timeout preserved; retry succeeded38/38 but T05/T06 indexing needs second pass after reopened workplan.", "Generated-only writeback commit refusals retained; no scanner bypass.", "Platform scanner ref race retried through normal owner sync after review.", - "Historical (resolved by Access B1 reconciliation): Access follow-up task-index repair timed out again; producer source remains published. Owner admission preparation also tracks qualified wait metadata." + "Historical (resolved by Access B1 reconciliation): Access follow-up task-index repair timed out again; producer source remains published. Owner admission preparation also tracks qualified wait metadata.", + "Bootstrap source/binding publication succeeded; normal consistency retains 11 preexisting validation failures and 36 warnings, 0 automation errors. Reuse public CI API returned404; no CI success inferred." ], "remaining_critical_path": [ "Admit independently approved signer custody/public trust, actual stopped fence and PV retention, consumer bundle/config/caller; verified image and local draft package are preparation evidence", @@ -359,10 +464,11 @@ "Actual browser identity/case, agent isolation, runner isolation, independent service recovery and all sixteen TSA gates" ], "canonical_receipt_verification": { - "checked_at": "2026-10-16T18:28:18.107141+00:00", - "scope": "two new source slices plus cluster own-review work record", - "all_commit_file_hashes_match": true, + "checked_at": "2026-10-16T19:21:15.121893+00:00", + "scope": "five new owner source/work-record commits; exact committed files hashed and origin ancestry verified", "all_commits_ancestor_of_origin_main": true, - "native_acceptance": false + "native_acceptance": false, + "receipt": "source-wave11-coordinator-review.json", + "additional_review": "source-wave12-coordinator-review.json" } } diff --git a/docs/changes/netkingdom-target-2026-10-16/source-wave11-coordinator-review.json b/docs/changes/netkingdom-target-2026-10-16/source-wave11-coordinator-review.json new file mode 100644 index 00000000..2c2698ea --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/source-wave11-coordinator-review.json @@ -0,0 +1,112 @@ +{ + "schema": "custodian.netkingdom-checkpoint-review.v1", + "observed_at": "2026-10-16T19:21:15.121893+00:00", + "published_owner_commits": [ + { + "repo": "access-engine", + "slice": "access-native-plan-review-next", + "commit": "d328a2601095686f74376d87791bff01e2a3a2a3", + "receipt": "access-native-plan-review-next/integration-receipt.json", + "ancestor_of_origin_main": true, + "files": [ + { + "path": "workplans/FLEX-WP-0024-decision-envelope-authenticity.md", + "committed_sha256": "sha256:cc94a493c23c16a3baa718b75ef5d48a596c6386c11534d50fd4839a6f0448f2" + } + ], + "native_accepted": false + }, + { + "repo": "railiance-platform", + "slice": "platform-native-plan-review-next", + "commit": "08c1f036f2750097750f435efd76e8f6ee6df393", + "receipt": "platform-native-plan-review-next/publication-receipt.json", + "ancestor_of_origin_main": true, + "files": [ + { + "path": "credential-change-requests/CCR-2026-0050-flex-auth-envelope-signing.yaml", + "committed_sha256": "sha256:66b3ea12d3f3bb870fa0aa0e7598e32abdb9bf39efe1adcfac286407abeb98e4" + }, + { + "path": "docs/evidence/2026-10-16-flex-auth-native-plan-public-supplement.json", + "committed_sha256": "sha256:f02a9b595d9246a358d19b37bdad8fde158b7f0c9657a6ff088874732511a32c" + }, + { + "path": "docs/evidence/2026-10-16-flex-auth-native-plan-review.json", + "committed_sha256": "sha256:3a2b4e8a410ffa241540afcd25c1dc2036eab93f433feeaa7708bda9f2175f20" + }, + { + "path": "workplans/RPF-WP-0035-credential-lane-implementation.md", + "committed_sha256": "sha256:139e4a6dd53f02cd184ebb12a5c30bcbfd0993cf9fdf1f42a1aa27b0823f32cf" + } + ], + "native_accepted": false + }, + { + "repo": "secrets-engine", + "slice": "inert-native-package-selection", + "commit": "a4f1802b720b64f2b47483fbd597902bd4c354f5", + "receipt": "secrets-native-admission-next/integration.json", + "ancestor_of_origin_main": true, + "files": [ + { + "path": "workplans/SECRETS-WP-0014-pdp-transport-and-responder-authentication.md", + "committed_sha256": "sha256:2712d3a4a4e551851645e5d4d79ebe41e5786bad334b1b709b85004690862eb2" + } + ], + "native_accepted": false + }, + { + "repo": "secrets-engine", + "slice": "inert-native-package-install", + "commit": "535681052cd55ca613706ecc60c39d299929b3c5", + "receipt": "secrets-native-admission-next/integration.json", + "ancestor_of_origin_main": true, + "files": [ + { + "path": "workplans/SECRETS-WP-0014-pdp-transport-and-responder-authentication.md", + "committed_sha256": "sha256:6cb4ec3500cddd5156235f1a493d7a979227a6b04eb037bacd23073fd1328efe" + } + ], + "native_accepted": false + }, + { + "repo": "rein-aharness", + "slice": "canonical-combined-runtime", + "commit": "9b88cadaa817e5abea7950b4a264d4e2739a5ddb", + "receipt": "agent-isolation-next/canonical-publication.json", + "ancestor_of_origin_main": true, + "files": [ + { + "path": "deploy/runtime-contract-lock.json", + "committed_sha256": "sha256:c01a46e66eccac750407b863ef0379bfeaa658886fe8bad4b952fcede7360816" + }, + { + "path": "workplans/REINAH-WP-0008-simpler-metered-retry.md", + "committed_sha256": "sha256:9aac375bdb2e93c57cd513ab8cd5bf0c0979a0699ea0181e6d405899d906bf68" + } + ], + "native_accepted": false + } + ], + "native_gate_completion": false, + "scope": "Bounded owner plan reviews, actual inert public package installation, canonical isolated runtime proof and public native preflight. No live signer/caller/trust admission or protected effect.", + "evidence": { + "native-preflight-r1/coordinator-review.json": "sha256:aa16de21f4018b433ac1497a0d637a6b852dbb1df17a15001597566fd32a3396", + "native-preflight-r1/cluster-native-plan-review.json": "sha256:76e5e3c10cf62d93c801c08f0275f84cd523010f58a7c5db595dee2081ffa572", + "access-native-plan-review-next/access-native-plan-review.json": "sha256:5f49b9d703b3b0c050be8b45a97aab07b0b3af13e9ce56139f886e88a0dc740d", + "access-native-plan-review-next/execution-supplement.md": "sha256:2622cf68d33f5e5f4ede68655c250f70a8132ed03cb4b7c33bdbeec86100e25d", + "platform-native-plan-review-next/owner-review.json": "sha256:3a2b4e8a410ffa241540afcd25c1dc2036eab93f433feeaa7708bda9f2175f20", + "platform-native-plan-review-next/actual-public-supplement.json": "sha256:f02a9b595d9246a358d19b37bdad8fde158b7f0c9657a6ff088874732511a32c", + "secrets-native-admission-next/actual-prekey-install.json": "sha256:1ab9c271dfb236f09c4528ae18897381f5e404541708bf36f50c41c77d183ba0", + "agent-isolation-next/coordinator-canonical-manager-proof.json": "sha256:1fc6b0c79939ea4706ff786e4cd040ab2385850a4617325681234bed7c3414c3", + "agent-isolation-next/coordinator-canonical-digest.json": "sha256:6c9dea5c1597c41d13b01c5b91196cbb2126b44090772d2cf481503467dd24de" + }, + "publication_refinement": { + "reason": "unchanged secret scanner flagged public source digest metadata", + "original_blob": "327447b9e476ea8344cc3bad62da33736eb63c3d", + "typed_digest_values_verified_unchanged": true, + "receipt": "access-native-plan-review-next/formatting-successor.json", + "scanner_bypass": false + } +} diff --git a/docs/changes/netkingdom-target-2026-10-16/source-wave12-coordinator-review.json b/docs/changes/netkingdom-target-2026-10-16/source-wave12-coordinator-review.json new file mode 100644 index 00000000..ff275479 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/source-wave12-coordinator-review.json @@ -0,0 +1,124 @@ +{ + "schema": "custodian.netkingdom-followup-review.v1", + "observed_at": "2026-10-16T19:30:27.788551+00:00", + "owner_commits": [ + { + "repo": "reuse-surface", + "slice": "native-index-parity", + "commit": "dd00b27b4ce77180b01c5756c2a3841819fcac76", + "origin_ancestry_verified": true, + "files": [ + { + "path": "reuse_surface/cli.py", + "committed_sha256": "sha256:85a5ca4c5a431ae6a1d780bb8b3958514937b128d21351f3224a236013fcdec8" + }, + { + "path": "tests/test_index_parity.py", + "committed_sha256": "sha256:c2654667b6f0f07ee52d8c4bffabdcaab16495275dcc00b9160f314dbef2200c" + }, + { + "path": "workplans/ADHOC-2026-10-16.md", + "committed_sha256": "sha256:7c25f5601b1aee06881950b225751787e09035de5d2479625c65eaa7cf4371e7" + } + ] + }, + { + "repo": "reuse-surface", + "slice": "native-index-parity-record", + "commit": "01af18964b170eaa87f8560ce9285518e8dc6d7e", + "origin_ancestry_verified": true, + "files": [ + { + "path": "workplans/ADHOC-2026-10-16.md", + "committed_sha256": "sha256:0b347785d69eab2b7ed2db9f6722767b02a66becb20bcd95ebcce89d9ffbb3fe" + } + ] + }, + { + "repo": "railiance-bootstrap", + "slice": "owner-index-parity", + "commit": "6927f5ec6406fd975530f469d949901d968c1afb", + "origin_ancestry_verified": true, + "files": [ + { + "path": "registry/indexes/capabilities.yaml", + "committed_sha256": "sha256:45100a7bb78307cad88a4face63044d0cbe20e98eb809e934c00c3049b0df843" + }, + { + "path": "workplans/ADHOC-2026-10-16.md", + "committed_sha256": "sha256:7218ac1c7b817857cf8700869600b816e94a274d72afef2af42ca71f8ad70577" + } + ] + }, + { + "repo": "railiance-bootstrap", + "slice": "owner-index-parity-record", + "commit": "8d23103af2d5ff0da4eb5f612ea2bf09d8ff7344", + "origin_ancestry_verified": true, + "files": [ + { + "path": "workplans/ADHOC-2026-10-16.md", + "committed_sha256": "sha256:38d8af75a52472875972ca6aebdb61b1cec15c64049efe024e1a9310ed6601e6" + } + ] + }, + { + "repo": "net-kingdom", + "slice": "owner-recovery-index-parity", + "commit": "49ddde451a69818b9558654fbc7d5744a80777fb", + "origin_ancestry_verified": true, + "files": [ + { + "path": "registry/indexes/capabilities.yaml", + "committed_sha256": "sha256:8e49ab9ea2c1fff10b70bab4fc279ad144f2295ef61fea3ef5a1873360410919" + }, + { + "path": "workplans/ADHOC-2026-10-16.md", + "committed_sha256": "sha256:ccf9f9a04ce54e05365beae13b37d0c8e9c5972d50eed9f347ab39702a13bed4" + } + ] + }, + { + "repo": "railiance-cluster", + "slice": "native-runtime-storage-plan-review", + "commit": "cac8eabef5a0d0990a7b0de8f5e2c762666ac7f0", + "origin_ancestry_verified": true, + "files": [ + { + "path": "workplans/RCLUSTER-WP-0017-netkingdom-signer-runtime-storage-review.md", + "committed_sha256": "sha256:76810b497e04548e3b22a28973303198f25aba5b47847e24b69024f8d07e39b7" + } + ] + }, + { + "repo": "key-cape", + "slice": "published-recovery-journey-reconciliation", + "commit": "3c71226a1a7b8a2bdb710e9c497e1a1f7f8a3987", + "origin_ancestry_verified": true, + "files": [ + { + "path": "workplans/KEY-WP-0040-mfa-attended-run-findings.md", + "committed_sha256": "sha256:c213d8ad5ef2471d1ab8672502b561b9fee84b110575366c09148add83ad9d79" + } + ] + } + ], + "hosted_readback": "improvement-loop-next/coordinator-hosted-refresh.json", + "browser_source_review": "browser-acceptance-next/coordinator-review.json", + "keycape_owner_receipt": "recovery-acceptance-next/result.json", + "native_gate_completion": false, + "external_recovery_evidence": { + "path": "net-kingdom/docs/evidence/2026-10-16-identity-outage-recovery/actual-isolated-privacyidea-review.json", + "sha256": "sha256:39d274ce99bb8c89281899821a5674d3ef5bbb35f824623cd2c4e08493f85cad", + "accepted_owner_tasks": [ + "NK-WP-0049-T20", + "NK-WP-0049-T31" + ], + "remaining": [ + "existing-token MFA", + "Authelia service continuity", + "KeyCape service and consumer continuity", + "event completeness" + ] + } +} diff --git a/docs/netkingdom-target-implementation.md b/docs/netkingdom-target-implementation.md index f7404c24..5b0d97a6 100644 --- a/docs/netkingdom-target-implementation.md +++ b/docs/netkingdom-target-implementation.md @@ -13,10 +13,10 @@ GPT-6.1-Sol medium subagent request. The full architecture remains the goal. | TSA-04 | NetKingdom / Mason / Warden / KeyCape; NK-WP-0048 | Browser evidence checker, Warden pinned metadata validation and Mason versioned source selection published | Admitted machine descriptors, real owner receipts and consumer acceptance | | TSA-05 | KeyCape / User / NetKingdom / Playwright; KEY-WP-0040, NK-WP-0050, CUST-WP-0080-T05 | Native human and agent journey gates open | Actual recovery and browser consumer acceptance | | TSA-06 | Glas / Sand-boxer / rein / Platform / Forge; CUST-WP-0073, GLAS-WP-0012 | Workload-only credential delivery published; disposable bwrap proof reproduced; actual assignment and runner proof open | Admitted corrected runtime, combined rein acceptance and actual assignment migration | -| TSA-07–08 | Secrets / NetKingdom / Platform; NK-WP-0049 and existing lifecycle plans | Inventory/lifecycle incomplete; actual independent identity archive recovery verified 16 October | Complete service authentication, existing-token decryption and audit continuity; metadata denominator, elimination candidates and lifecycle receipts | +| TSA-07–08 | Secrets / NetKingdom / Platform; NK-WP-0049 and existing lifecycle plans | Inventory/lifecycle incomplete; independent identity archive recovery, retained token-material decryption and historical audit signature continuity verified 16 October | Existing-token MFA and service authentication; metadata denominator, elimination candidates and lifecycle receipts | | TSA-09 | Audit / emitting owners; Approval T04 and current Audit work | Delivered custody; current source admission/reconciliation incomplete | Source/effect/outbox/receiver readback for first protected operation | | TSA-10 | Forge / Repo Manager; FORGE-WP-0006, RMGR-WP-0021 | Broad receive coverage delivered; other paths and response incomplete | Coverage/reliability gaps and private response acceptance | -| TSA-11 | Reuse / provider owners | 70/70 discovery verified 15 October; stale descriptive fields remain | Correct source metadata and repeat drift/hosted checks | +| TSA-11 | Reuse / provider owners | 70/70 discovery freshly verified 16 October; two drifted owner descriptions corrected and native parity validation strengthened | Full source-link/version/package-family disposition and recurring drift acceptance | | TSA-12 | Activity / Coordination / Custodian; CUST-WP-0079 | Schedule accepted but unassisted activation not proven; cadence source adoption underway | Actual activation and first independent observation | | TSA-13–14 | NetKingdom / provider owners | Accepted reusable integration and second installation pending | Shared adapter conformance and minimal locked profiles | | TSA-15 | Resource / telemetry / consumer owners; CUST-WP-0071 where applicable | Optimization baseline incomplete | Comparable latency, effort, resource and scanner measurements | @@ -181,6 +181,15 @@ authentication, existing-token decryption or audit signature continuity. Reuse that completed archive proof and drive the remaining native service recovery; TSA-08 remains open. +The subsequent [isolated privacyIDEA review](../../net-kingdom/docs/evidence/2026-10-16-identity-outage-recovery/actual-isolated-privacyidea-review.json) +at 19:10 UTC accepts NK-WP-0049-T20/T31: five retained token materials were read +internally, all five wrong-key cases refused, and all 279209 historical audit +signatures verified with zero invalid/unsigned rows. New-signature negative +checks and container/plaintext cleanup also passed. This supersedes the earlier +token-material and stored-row continuity gaps only. Existing-token MFA, service +authentication and event completeness remain unproven; no private credential +was delivered to this agent. + Coordinator review independently reproduced a second timestamp failure in the canonical Approval Engine: a fractional expiry at `.500` was consumed at actual clock `.750`, while `consumed_at` reported the whole second. The isolated @@ -309,6 +318,86 @@ approved credential request, held window and native dispositions remain unset. The [coordinator checks](changes/netkingdom-target-2026-10-16/source-wave10-coordinator-review.json) retain the source proofs separately from deployment acceptance. +The coordinator then executed the reviewed public-metadata collector and exact +seven-resource server dry-run on railiance01 at 18:53 UTC. Target node and cluster +identity and the actual kubectl JSONPath formatter passed first. All seven +resources were accepted; the API-returned stopped Deployment retained replicas +zero and exactly matched the frozen projection. Its live predecessor remains +generation four, Helm revision four, one ready pod with the old image. No PVC, +namespace quota, LimitRange or HPA was observed. No persistent mutation, writer +freeze, credential access or custody action occurred. The +[native preflight receipt](changes/netkingdom-target-2026-10-16/native-preflight-r1/coordinator-review.json) +binds the collector, payload, actual observations and independent checks. +Server admission does not establish Helm upgrade equivalence or a held window. +A second narrowly selected observation and tested resource-stream parser confirm +91 nonterminal bound pods, 3580m CPU requested of 4000m allocatable, and 9760Mi +memory requested. No node taints, cordon, pod-level resource requests or restartable +init containers were observed. The proposed replacement retains 25m/32Mi requests; +the dated 420m unrequested CPU is not a reservation. Cluster has reviewed the +bounded runtime/storage plan under its own T02, while actual held-window and +PVC/PV retention gates remain open. Access and Platform review their own workload +and GitOps/custody scopes separately. + +Secrets has now selected the exact public bundle and empty-key configuration in +owner commit `a4f1802`, followed by actual local installation recorded in +`5356810`. The existing offline installer created the fresh selected immutable +release prefix; seventeen public configuration files were copied with mode0600 +into the selected private revision directory. Installed CLI help, all ten catalog +rows and the actual installed authorization boundary passed the empty-key refusal +before caller-file or socket access. The +[installation receipt](changes/netkingdom-target-2026-10-16/secrets-native-admission-next/actual-prekey-install.json) +records exact artifact/configuration hashes. This completes inert local package +preparation, not key/caller admission or any of the eleven protected effect sites. +The sandbox-mapped ownership preflight refusal and subsequent successful host +check are retained; neither custody nor approval/backend access was configured. + +Rein source `9b88cad` advances the existing combined-runtime lock to published +Glas `7357115c`, retaining the selected llm-connect and Sand-boxer revisions. +Normal publication and owner synchronization passed. Its canonical rebuild has +complete artifact digest +`sha256:f59959b605a51abd2901becde14e7abd852c2bd3f848004b51d250d1cb81af6d`. +The coordinator independently ran the actual installed manager/gateway proof and +rehashed all1447 artifact records afterwards. Startup, synthetic host/environment +denial, exact task identity, workload-only synthetic credential delivery, +redaction, cancellation/expiry and cleanup passed with profile1.1.1 still +unverified. Seven rein tests pass; the unchanged Glas revision retains its141-test +proof. The [canonical runtime proof](changes/netkingdom-target-2026-10-16/agent-isolation-next/coordinator-canonical-manager-proof.json) +explicitly excludes model calls, native installation/admission and migration of +this interactive assignment. REINAH-WP-0008-T07 and TSA-06 remain open. + +Access `d328a260` and Platform `08c1f036` published their independent bounded +rollout-plan reviews. Access names the actual Helm writers and the stopped-only +rollback target; Platform binds the observed manual-sync Applications and exact +namespaced signing-key delivery lane. No queued Application operation or +Argo-owned signer Deployment was observed. Initial rollout/CCR authorization +precedes installation and its resulting storage/fence evidence; final one-use +custody assent binds those actual facts. This ordering does not authorize either +stage. The founder entity, maintenance window, approved CCR and final dispositions +remain unresolved. The [checkpoint review](changes/netkingdom-target-2026-10-16/source-wave11-coordinator-review.json) +independently verifies five new owner commits against published history and binds +the public preflight, installed-package and canonical-runtime evidence. + +NetKingdom `015694ee` repairs the existing optional execution-descriptor pin +contract. JSON schema and semantic validation now agree on bounded, correctly +shaped pins; semantic checks require declared step identifiers, and the evidence +API refuses malformed maps without crashing. The coordinator independently passed +21 new tests and verified all six committed file hashes; the owner passed 127 +affected tests. Current browser type/case bytes remain unchanged. NK-WP-0048-T12 +now tracks the existing NetKingdom entry points' attended adapter preparation; +machine descriptors and native browser acceptance remain outstanding. The +[source review](changes/netkingdom-target-2026-10-16/browser-acceptance-next/coordinator-review.json) +does not admit a type, adapter, identity or protected operation. + +Reuse's existing validator now checks descriptive index/entry parity and refuses +duplicate identifiers/paths and malformed metadata. Both corrected owner indexes +are published. A forced hosted composition at 19:25 UTC returned every reviewed +capability exactly once with its correct source owner, no federation warning, +and matching NetKingdom bootstrap-recovery and Railiance Bootstrap descriptions +and tags. All 60 local provider indexes passed the strengthened validator with +zero errors/warnings. The [hosted readback](changes/netkingdom-target-2026-10-16/improvement-loop-next/coordinator-hosted-refresh.json) +establishes current discovery parity; it does not prove package-family closure, +an operating schedule, consumer reliability or runtime acceptance. + ## Dependency and residual handling The current implementation demand selects necessary target dependencies for diff --git a/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md b/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md index 7c0bae02..f78c4499 100644 --- a/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md +++ b/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md @@ -762,3 +762,43 @@ automatic restart of the running predecessor. Founder identity, expiry, actual held window, approved CCR and native dispositions remain unresolved. Checkpoint `50de8be` published and synchronized 89/89 with zero failures. No target gate is closed by these source preparations. + +2026-10-16 native preparation: coordinator public-metadata observation and exact +seven-resource server dry-run passed on the verified railiance01 target at +18:53 UTC. API admission retained the frozen stopped projection and replicas zero; +the actual release remains running at Helm revision four. No persistent mutation, +held writer fence, credential/custody action or native activation occurred. +Reviewed wrapper, exact payload and actual receipts are retained under +`docs/changes/netkingdom-target-2026-10-16/native-preflight-r1/`. +Parallel owner work now integrates the workload-only combined runtime and native +registry parity checks, with independent Secrets preparatory-package selection. +All sixteen target gates remain open; this is progress toward their native +acceptance rather than a reduced completion criterion. + +2026-10-16 owner checkpoint: Access `d328a260` and Platform `08c1f036` +published independent bounded rollout reviews, separating initial rollout/CCR +authorization from final one-use custody assent. Secrets `a4f1802`/`5356810` +selected and recorded the actual inert local package installation; all ten catalog +rows and empty-key refusal passed without caller/socket access. Rein `9b88cad` +published the combined runtime lock; the actual isolated manager proof passed and +the coordinator independently rehashed all 1447 artifact records unchanged. +Five owner commits and their public evidence are bound in +`docs/changes/netkingdom-target-2026-10-16/source-wave11-coordinator-review.json`. +None establishes live signer/caller admission, an accepted protected effect, +actual interactive-assignment migration or completion of a TSA gate. + +2026-10-16 continued implementation: NetKingdom `015694ee` fixes disagreement +between JSON schema and Python validation of exact machine-descriptor pins; +the coordinator independently passed 21 new tests and verified committed files. +Reuse `dd00b27` strengthens the existing mandatory parity validator; corrected +NetKingdom/Bootstrap indexes are published. Forced hosted composition at 19:25 +returned all 70 reviewed capabilities exactly once with correct owners and both +corrected descriptions/tags. KeyCape `3c71226` reconciles the already-deployed OTP +help link and names the actual remaining attended recovery steps. Independent +NetKingdom recovery evidence now accepts retained token-material decryption and +historical audit signature continuity (T20/T31), while real MFA and service +continuity remain open. Exact owner commits and receipt scope are recorded in +`docs/changes/netkingdom-target-2026-10-16/source-wave12-coordinator-review.json`. +Separate GPT-6.1-Sol medium owner agents are implementing the missing browser +registration and isolated KeyCape recovery adapters in temporary candidates; +neither candidate is admitted for native execution.