Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a1029d-2c93-7500-a0e0-e3e089668b29
21 KiB
Root-grant delivery progress — 2026-10-03
Work: NK-WP-0045. Scope: approved OpenBao custody-record delivery. This receipt records source preparation, safe preflight and verified attended admission/ publication receipts. It is not custody-grant or recovery-readiness evidence.
Human disposition and initial empty record
Bernd accepted ADR-0017 and the proposed OpenBao design (scoped made decision
c2cff929-91b9-4018-bfd6-fa04f7da8280), then approved going forward.
Asked which existing signed ceremony grounds the first grant, he replied:
“i dont think there is one”. No current ceremony reference or exact custodian
issuer/subject was supplied. Historical local bootstrap metadata and the
planned signed escrow roster cannot substitute for a real grant.
Prepared initial empty record
for review and attended publication: stable record ID nk-custody:platform-root,
revision 1, owner net-kingdom-custody, 900-second maximum and entries: [].
This is an intentionally empty authoritative candidate, not a synthetic grant
fixture. It represents no certified root grants. Schema and semantic validation
passed. It was subsequently published through the attended lane, as recorded
below. Initial publication must use CAS=0 and fail if an
existing document or unresolved retained history is discovered; do not replace
an existing record on the assumption that no ceremony was supplied.
A future real grant requires a human-controlled ceremony naming exact issuer, subject, actor, action time/reason and evidence reference, introduced in a strictly newer revision. No identity is inferred from JWT roles or LLDAP groups.
Source preparation and checks
- NetKingdom validator now emits
expires_atso consumers can honor cache bounds tighter than 900 seconds. All 18 focused tests pass, including zero/60-second bounds. Canon source pindb319335b27b61b855382ee5af5d690f06eeb010. - railiance-platform implemented exact reader admission, whole-document CAS,
independent receipt history, interrupted-publication recovery, replay and
stale-receipt refusal, and restore checks; 14 tests passed. Source baseline
fa958cc, attended empty-publication packet35d326f, exact-commit primary synchronization applied. - rapp-user-engine prepared dedicated openbao-audience JWT projection, scoped
egress and explicit-image release rendering; 7 packaging tests passed. Source
baseline
576f5e7, pushed with clean working tree; empty-source rollout is explicitly supported. PostgreSQL baseline uses the existing DB; no new persistent volume is needed. - user-engine implements pinned canon, authenticated bounded reads, atomic
PostgreSQL baseline, controlled receipt-bound bootstrap and optional
AccountAuthority mapping. Isolated PostgreSQL checks verified competing CAS
updates, cross-connection persistence and reconnect persistence. Final source
0d0751d: suite ran 296 tests with eight skips; layer checks, wheel build and embedded-resource integrity passed. Published image verified by registry manifest and disposable container:sha256:030fe90232e20bb02b372e3d16b8ff659a5407d54f6405eb85754262b9ad7dc6(source0d0751d). Embedded reader, baseline, bootstrap, canon and AccountAuthority field were checked; owner syncf85c968.
Safe live preflight
OpenBao workstation tunnel http://127.0.0.1:18200: initialized true, sealed
false, standby false. Anonymous read of the exact custody data path returned
403; response bodies were discarded. This proves only anonymous denial, not
reader admission, document existence or positive live custody delivery.
Remaining execution and acceptance
The founder completed OpenBao provisioning and publication in the attended
OIDC/MFA lane; fresh success receipts are recorded below. Existing approval was
sufficient for the reviewed delivery work. The concrete producer packet is in
railiance-platform/openbao/root-grant/README.md.
Keep independently retained latest publication history through restore. Its
location and backup receipt must be recorded before recovery readiness closes.
The custody-capable application image is published/pinned and its deployment passed preflight. Deploy through rapp-user-engine and initialize the baseline using the authenticated document plus publisher digest. Empty source acceptance proves no-grant delivery; it cannot prove a real positive grant or revocation. Positive grant/revocation exercises use isolated synthetic test sources unless a real human ceremony explicitly introduces a live grant.
No live admission, publication, workload rollout or actual root grant occurred in this receipt. Source/fixture passes are distinct from live acceptance.
Exact deployment preflight
rapp-user-engine rendered the published image into
/tmp/user-engine-custody-release.yaml, manifest SHA256
5e21548fc2d23926d167f17795f098f8db5fffafe9bcd3bee43875f7bb51a50e
(rapp-user-engine release packet commit 13a9c0b, committed and synced).
Live node 92.205.62.239 Ready; requested CPU 3445m/4000m (86%), memory
9384Mi (58%). Staged Deployment retains single-replica Recreate and requests
50m/64Mi. Server dry-run passed eight objects. Client diff returned expected
changes (exit 1) to Deployment and runtime NetworkPolicy; raw diff output
suppressed. Existing live factor-recovery URL, mounts, volumes and egress
semantics are preserved. This final artifact supersedes the earlier preflight
hash after preserving that live setting. No apply or workload mutation.
Image publication and attended reader/source admission/publication are resolved. Reviewed runtime rollout, controlled baseline initialization and live no-grant/denial/outage/restart acceptance remain. Off-host publication history retention/recovery needs its real receipts before recovery readiness closes.
Attended execution receipts
Founder executed the reviewed commands and reported success. Both fresh receipts
were independently read and their non-secret fields retained in
admission receipt and
publication receipt, with source
file SHA256 checksums. Both report ok: true; admission confirms exact role,
namespace/ServiceAccount, audience, CAS and audit. Publication confirms revision
1, KV version 1 and the reviewed empty-document digest. The independently
persisted publisher baseline matches these fields. This supersedes the earlier
pending-admission/publication state, without claiming runtime or recovery
acceptance. The operator's older OIDC role configuration is not an execution
receipt. Owner rollout and authenticated baseline/read acceptance resumed.
Live runtime and consumer acceptance
rapp-user-engine applied only the reviewed Deployment and runtime NetworkPolicy.
Bounded apply artifact SHA256
804400134a705651d12ada05a068543d2f1665a14eec5c3b65898c7560a63a8f.
Rollout succeeded; Ready/available 1, health/readiness HTTP 200. One initial
restart was safely traced to a transient original runtime PostgreSQL connection
refusal; subsequent restart count remained stable. This is distinct from the
post-baseline restart acceptance exercise.
The consumer's live acceptance receipt
reports ok: true: baseline initially absent, controlled initialization from a
fresh authenticated owner read matched the publisher digest, empty-source
mapping returns no root grant, wrong tenant returns no grant, and a real
wrong-audience JWT login is denied. Database reconnect preserves baseline.
Injected read failure and same-revision mutation preserve the trusted baseline;
these are injection checks, not claims of an actual OpenBao backend outage.
Post-initialization pod restart, exact-reader negative capabilities/audit and
independent backup/recovery evidence are still being collected. No actual grant
was introduced.
The final consumer receipt
subsequently verified baseline persistence after an actual controlled pod
restart, a fresh matching owner read and HTTP 403 for the actual reader's
metadata LIST, sibling GET and exact-path POST. The internal fixture service
serialized root_grant: null against the actual live empty source; it does not
claim acceptance of the separate external Hub authenticated route. Safe read
and login request IDs were retained for owner audit correlation. USER-WP-0037-T02
is accepted for this delivered no-grant integration; the separate Hub route
task is outside this acceptance. The restarted workload is Ready; its initial
DB connection refusal also occurred on the controlled restart, recovered, and
remained stable. No ongoing CrashLoop or zero-restart claim is made.
The isolated Raft recovery receipt reports actual disposable OpenBao v2.5.5 snapshot/restore checks: an older snapshot missing the custody source was refused against the independent baseline, and the latest snapshot restored the matching revision/digest. Scratch copy/restore of baseline and immutable history verified content and permissions. Temporary daemon/storage were removed. No production snapshot or rollback was used. This proves the isolated recovery guard, not current provider backup coverage or the attended live-source restore check.
Final audit and recovery handoff
The safe audit receipt independently correlates both consumer read/login request IDs with request and response audit events and no errors. The bounded lookup inspected only the latest 64 MiB of the owner audit file; raw audit records were never emitted. This resolves audit correlation.
USER-WP-0037-T02 is done, synced HEAD d955cd7; runtime workplan is finished,
synced HEAD f108c65. The remaining T05 gate is the attended producer recovery
finish helper: current retained-baseline/source match plus encrypted history
provider upload/download/decryption through the existing governed Nextcloud
Backup lane. Final producer/finish suite: 19 passed, including actual age crypto
roundtrip against an in-memory disposable provider. It preserves all backups and
uses a unique receipt/object. The surfaced historical backup-share URL is not
repeated or stored here; the helper compares it with the current lane only as a
boolean and stops for owner incident handling if they match. This unresolved
comparison is not represented as a harmless or rotated credential.
Producer synced b8f8a7ada65f0a86b90a54812365757838102991, exact commit
applied on primary/railiance01, clean with ahead/behind 0. Non-authoritative
baseline/history recovery copy in owner source a252447058105eed0931d34f1a906f39ce7c2e5e
was retrieved through a fresh remote clone and matched byte-for-byte; the owner
retains its safe remote readback receipt. Provider archive generation is
explicitly unverified; the prepared attended direct encrypted history roundtrip
is still required. All authorized source work is implemented and synced.
Failed recovery finish attempt — 2026-10-03
Founder ran the prepared helper with fresh receipt path
/tmp/platform-root-finish-20261003T185421Z-333977.json. Warden reported child
nonzero and session revoked; no receipt was created. Recovery/provider readiness
is not established. The helper's catch-all exit without a safe failure receipt
was an implementation gap and is being repaired before another attended retry.
Independent bounded audit lookup confirms successful custody, governed backup-lane and operator backup-bundle reads at 18:54:37–38 UTC, with no errors. The failure is therefore after those reads, within the backup roundtrip preparation/execution. Its exact stage cannot be inferred from suppressed exceptions. No IAM widening is justified. Local imports, validator/schema pins, retained-state validation and installed age binaries pass offline preflight. Owner repair adds allowlisted stage/failure receipts and full-command failure tests while keeping all raw diagnostics private.
Producer repair committed 33ff822: stdlib entry reserves a fresh mode-0600
receipt before imports, with fixed stage/error codes for expected failures and
safe numeric HTTP/artifact metadata. Foreign exception text is never emitted.
The installed wrapper was independently smoke-checked outside the attended
envelope: it refused before owner reads and created the expected safe failure
receipt, with no raw output. Producer suite passed 32 tests, including full
private attended-HOME command execution with the real validator and age crypto
against disposable owner/provider fixtures, startup/dependency, stale receipt,
auth, quota, crypto, upload/download and incident/escrow failures.
Recovery decryption now verifies the existing independent local escrow recipient against the governed lane and decrypts downloaded history with that escrow key; no key is created, reset or printed. A mismatch is a specific recovery blocker. Corrected attended retry with a new receipt is necessary to prove the actual provider roundtrip or expose its precise safe failure stage. The original failure's exact cause is still unknown, and provider readiness remains unproven.
Provider upload rejection diagnosed — 2026-10-03
Founder retried with fresh receipt
/tmp/platform-root-finish-20261003T191229Z-333977.json; the
safe failure receipt
reports stage: provider_upload, error_code: new_artifact_upload_failed and
HTTP 401. Current retained baseline matches revision 1/KV1/digest; existing
independent escrow recipient matches the governed lane. Historical local share
does not match the current lane; its revocation remains separately unverified.
No provider backup success is claimed.
Source review found the custody upload omits X-Requested-With: XMLHttpRequest.
Official Nextcloud WebDAV documentation
requires this header on public DAV non-GET requests unless outgoing federation
is enabled; without it, the documented response is 401 Not Authenticated.
This is a concrete client defect and a likely explanation of the observed 401,
not proof that the current share credential is invalid or that header correction
already resolves this live instance. Producer is fixing/testing the protocol
request while retaining existing endpoint, credentials and permissions. A new
attended live result is still required.
Producer protocol repair committed 50da37c: custody public-DAV upload now sends
the required header, with a real local HTTP wire test verifying its presence and
conditional-create semantics. Shared migration request helper and common upload
client have the same scoped source correction. Forty-one tests passed (19 finish,
14 producer, eight backup credential checks); shell syntax and diff checks pass.
Failure receipts retain the backup lane's KV version. No token, endpoint, policy,
key or account-fallback change was made. Source synchronization does not establish
rollout of older vendored backup clients; owner records that refresh requirement
separately. The corrected custody finish command needs a new attended run and
fresh receipt to prove this live provider path.
Header-corrected live retry still rejected — 2026-10-03
Founder ran the corrected helper with fresh receipt
/tmp/platform-root-finish-20261003T192330Z-290055.json. The
retained retry receipt
again reports provider upload HTTP 401, now tied to backup lane KV version 3.
Current custody baseline and independent escrow checks pass, and the historical
share remains different from the current lane. The header correction does not
resolve this live rejection; an invalid, protected, expired or mismapped share
cannot be distinguished from client endpoint/auth semantics by 401 alone.
Producer is preparing a bounded read-only attended provider/share inspection: compare the current protected token with the operator's exact reviewed share, report owner/path/create-only permissions, password/expiry indicators and safe endpoint probes. No upload, rotation, provider share mutation or IAM widening is authorized by diagnosis alone. Another unchanged finish retry is not requested. The remaining task stays blocked on diagnosed provider delivery and its live encrypted backup/readback proof; source/consumer/audit readiness is preserved.
Read-only inspection implementation synced at producer
4dd9646ec21b63a7743dae0ad3273da2f73adefe. The existing attended wrapper now
accepts --inspect-share: current governed OCS share inventory is compared in
protected memory, and fixed provider public routes receive depth-zero PROPFIND
only. Output contains binding booleans and safe status classifications. Full-main
inspection tests forbid entering the backup roundtrip. Twenty-three finish tests
pass. Final review correction synced at
fee1d339f98d0fd7ec2336d946eea2340d557f8a: aware expiry offsets are converted
correctly, naive expiry and omitted password remain unknown, and clearly
protected/expired shares skip public authentication probes. Twenty-five finish
tests pass. Exact expected/derived remote projection applied, working tree clean.
Inspection still requires the founder's own attended credential route;
no provider conclusion or actual backup success is inferred from source tests.
Successful share inspection; recovery remains blocked
The attended read-only receipt at 19:36 UTC is retained in
2026-10-03-root-custody-share-inspection.json. The baseline matches live KV1;
backup lane KV3 has neither its token nor the expected labelled share in the
reviewed owner folder inventory. Both authenticated route probes returned 401;
the unauthenticated documented route returned 503. No provider mutation or
encrypted-history roundtrip was performed. Inventory absence is scoped to that
folder; these results do not prove global deletion or successful recovery.
The platform owner is preparing a tested attended repair that proves replacement share upload/download/decryption before CAS of only the lane's upload coordinates, preserving all other fields, keys, backups and unknown shares. Activity-core owns the subsequent consumer refresh: worker environment snapshots and the frozen Forgejo backup ConfigMap require explicit loaded-client evidence.
Security orientation reloaded after compaction: package 0.2.4, digest
025aab4f38246219c924bc94954e70ea0e6e7f72bcaf8d4344cd599602d345c3,
start card withheld/orientation-only because a source changed. Reviewed the local
start card and operative NetKingdom SECURITY-COMPANION directly; this retrieval
does not grant authority or establish live readiness.
Bounded repair source railiance-platform/f1a780d passed 33 finish tests, with
55 relevant producer/backup tests total. Exact public DAV and OCS wire shape,
real encryption/decryption, stale-version refusal and partial CAS receipts are
covered. Actual attended provider success is still outstanding.
Activity-core owns the live stale-client refresh in ACTIVITY-WP-0042-T08,
task 020d19be-0576-5052-ad35-14b1d5a48fe1; T07 holds the read-only inspection.
Activity-core final source 42d71fa is clean and Git-pushed; local consistency
passes and duplicate task blocks were corrected without changing UUIDs.
Its repo-manager remote projection preflight rejects grandfathered historical
custodian-WP-* identifiers. Exact remote projection is therefore unproved;
this compatibility blocker is separate from the provider repair and consumer
refresh. Historical identifiers must not be renumbered to bypass the rejection.
Final attended recovery acceptance — 19:56 UTC
Verified actual local receipt
2026-10-03-root-custody-recovery-verified.json against the acceptance fields.
Current custody record revision1/KV1 and digest match the independent baseline.
Encrypted history upload returned201 and owner download200; ciphertext digest
577498be3c6566e9622fe0d87ea3ad55063941acfab3aeb0accfc4a05dd21200 matched,
and independent escrow decryption produced the exact retained history.
Provider proof preceded backup lane CAS3->4. Only upload coordinates changed;
escrow and unrelated fields, unknown shares and old backups were preserved.
Replacement share23 was created within the reviewed Backup scope.
NK-WP-0045-T05 is done, plan finished (6/6). Actual live consumer, denial/restart, audit and isolated Raft restore evidence recorded above remain applicable. Runtime backup consumers were not refreshed; activity-core T08 continues to own that requirement after its provider prerequisite was met. Historical credential owner/revocation remains unverified in the separate platform incident. No real custodian was certified: authoritative entries remain empty.
Root knowledge card reloaded for closure: package0.2.4, digest
025aab4f38246219c924bc94954e70ea0e6e7f72bcaf8d4344cd599602d345c3,
verified-files/orientation-only. Actual authority came from the approved design
and founder-attended execution, not the knowledge card.