Record native security preparation and owner checkpoints (3/7)
This commit is contained in:
parent
a6eee04d42
commit
b5c80ce595
18 changed files with 4823 additions and 0 deletions
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"schema": "custodian.registration-source-review-summary.v1",
|
||||
"outcome": "Concrete source review packet delivered; native recovery and complete descriptor admission remain blocked on named existing owner contracts.",
|
||||
"task_scope": [
|
||||
"NK-WP-0048-T15",
|
||||
"NK-WP-0048-T16"
|
||||
],
|
||||
"original_attempt": {
|
||||
"actual_matching_admitted_holder_found": false,
|
||||
"existing_authority_retained": "No post-restart rollback or replay; no new reconcile callback installed.",
|
||||
"precise_interface_gap": "Warden Journal original identity is not supplied to the fresh reconcile callback; journal stores only hashed evidence identifiers, registration owner payload/creation remain process local."
|
||||
},
|
||||
"descriptor_inventory": {
|
||||
"actual_source12_steps": 7,
|
||||
"actual_existing_generated_descriptor_candidates": 1,
|
||||
"missing_exact_descriptors": 6,
|
||||
"register_descriptor": "register-client.proposed-descriptor.json",
|
||||
"descriptor_hash": "sha256:1b86e9032845ec35a58d88a9f1108dbb7d8cee0c9c9176d4a694b893d9d7a3fa",
|
||||
"canonical_types_unchanged": true
|
||||
},
|
||||
"verification": "Actual delivered13,633,409-byte checker rehash; actual Warden closed-descriptor decode; source1.1 default and explicit1.2 source render remain execution=false; ordinary1.2 admission refuses acknowledged/unimplemented type. No test reruns, new framework tests, native effects or owner assent.",
|
||||
"next_existing_owner_request": "Warden original-intent lookup/context amendment and actual registration publisher/authenticator/readback identity; use existing Audit Core API only if actual source/tenant/load-bearing/read admission is explicitly established.",
|
||||
"writes": "Only this Custodian packet; NetKingdom/warden canonical source, all unrelated dirt and WP49 recovery paths untouched.",
|
||||
"prior_audit_preserved": "sha256:ab803e795af61fd027f5930d127592316133de38b68a8fe61b89a1f9803a9ff2"
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"schema": "custodian.nk48-source-checkpoint-proposal.v1",
|
||||
"applied": false,
|
||||
"reason": "NetKingdom AGENTS requires an evidenced completed deliverable and refined remaining work after a substantive checkpoint. Coordinator owns canonical publication; this packet changed no NetKingdom files.",
|
||||
"suggested_completed_task": {
|
||||
"id": "NK-WP-0048-T22",
|
||||
"status": "done",
|
||||
"title": "Establish source-only registration original-attempt recovery and complete descriptor inventory",
|
||||
"completed_at": "2026-10-17",
|
||||
"evidence": "the-custodian/docs/changes/netkingdom-target-2026-10-17/native-registration-r1/",
|
||||
"outcome": "Inspected actual owner seams and rejected ungrounded restart recovery; defined exact minimal owner contracts, generated register descriptor from current source/checker, inventoried all seven source1.2 steps and verified source-only version-selection/refusal boundaries. No recovery callback, native source integration, owner assent or full descriptor set is delivered.",
|
||||
"id_reservation": "Candidate only; root must recheck current source T22 is free before applying. Do not assign or edit Hub UUID manually."
|
||||
},
|
||||
"remaining_refinement": [
|
||||
{
|
||||
"id": "NK-WP-0048-T15",
|
||||
"retain_id_and_uuid": true,
|
||||
"retain_completion_gate": true,
|
||||
"proposed_status": "wait",
|
||||
"owner": "NetKingdom registration evidence owner with ops-warden",
|
||||
"next_action": "Obtain exact existing owner holder/readback identity and Warden original-intent context contract described in original-attempt-review.json before implementing restart recovery. Current Adapter intentionally cannot reconcile prior-process creation.",
|
||||
"unblock": "Actual source-reviewed original-attempt lookup/custody contract plus independent session/provenance verifier; do not wait on broad task completion or create a coarse dependency cycle.",
|
||||
"done_when": "Restart/lost-receipt fixtures enforce exact original created-only provenance and current native revision; native evidence-holder acceptance remains separate."
|
||||
},
|
||||
{
|
||||
"id": "NK-WP-0048-T16",
|
||||
"retain_id_and_uuid": true,
|
||||
"retain_completion_gate": true,
|
||||
"proposed_status": "progress",
|
||||
"next_action": "Use descriptor-composition.json as complete review inventory. Bind exact native owner evidence/session/storage capabilities and obtain missing six fixed owner descriptor/adapters. Then review successor exact type/version bytes under canon section6; preserve acknowledged1.1 default and source-only1.2 history.",
|
||||
"done_when": "Complete exact machine-descriptor set, artifact/source/config pins, independent source-owner review and normal type/version admission; this packet alone completes none of these native admissions."
|
||||
}
|
||||
],
|
||||
"existing_dependencies_preserved": true,
|
||||
"external_owner_scope": "Use existing WARDEN-WP-0044-T03 and owner reviews; no new broker, workplan, credential grant, publisher class, explicit residual promotion or owner assent inferred."
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
"target": "/home/worsch/net-kingdom/workplans/NK-WP-0048-security-case-types.md",
|
||||
"applied": true,
|
||||
"old_task_count": 21,
|
||||
"new_task_count": 23,
|
||||
"all_existing_task_metadata_preserved": true,
|
||||
"all_existing_statuses_dependencies_uuids_preserved": true,
|
||||
"new_tasks": [
|
||||
"NK-WP-0048-T22",
|
||||
"NK-WP-0048-T23"
|
||||
],
|
||||
"r1_manifest_sha256": "9c9b055cb7983706e7bccb13acf335180c4343c8a05de5ef63f97548c9f5021a",
|
||||
"storage_review_sources": [
|
||||
{
|
||||
"path": "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-17/native-storage-r1/OWNER-REVIEW.md",
|
||||
"sha256": "9a12392030ae5bd46dbed95718e3b51e6df15f52ce0fa2411704ddd8f2b1e91f"
|
||||
},
|
||||
{
|
||||
"path": "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-17/native-storage-r1/source-validation.json",
|
||||
"sha256": "fe57add4e819661b7ef4df98f5166d0147f6b5e5912be0d6ec7c0a7da2090d9c"
|
||||
}
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "preimage.md",
|
||||
"sha256": "b737bfae4802c122b21619695a169d7d082672af96314b1709860dd5aff2a60f"
|
||||
},
|
||||
{
|
||||
"path": "t22-applied-intermediate.md",
|
||||
"sha256": "a756cf34eb0398312a8e11035b7b1b21d2b97a847f015b888063bd80549b6fc2"
|
||||
},
|
||||
{
|
||||
"path": "postimage.md",
|
||||
"sha256": "0fdc263a5b23d376a2c6e908e955c91fdaf8121144da59ebc6e5aee8ef727f5e"
|
||||
},
|
||||
{
|
||||
"path": "workplan.patch",
|
||||
"sha256": "714a345e601588eacaccdc559d864553f21a7cceb1fcebddf305404680019906"
|
||||
}
|
||||
],
|
||||
"applied_postimage_sha256": "0fdc263a5b23d376a2c6e908e955c91fdaf8121144da59ebc6e5aee8ef727f5e",
|
||||
"existing_task_blocks_byte_identical": true,
|
||||
"r1_packet_byte_hashes_unchanged": true,
|
||||
"published": false,
|
||||
"synced": false
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,202 @@
|
|||
--- a/workplans/NK-WP-0048-security-case-types.md
|
||||
+++ b/workplans/NK-WP-0048-security-case-types.md
|
||||
@@ -708,6 +708,34 @@
|
||||
without the trusted integration. SQLite remains local/disposable only; any
|
||||
production exception requires explicit scoped governance under ADR-0015.
|
||||
|
||||
+2026-10-17 owner-integration refinement: T23 records the completed source/package
|
||||
+placement review, distinct from T21's source/disposable-SQL proof. Its dedicated
|
||||
+`rapp-identity-provisioner` recommendation is draft and unbound, not an accepted
|
||||
+package or existing repository. The full six-consumer rapp-postgres renderer
|
||||
+accepts the inert candidate on platform-pg-2 as its third of four declared
|
||||
+consumers; first-cell placement is refused as a fifth. Neither the estimated
|
||||
+four-consumer ceiling nor source requests establish native headroom or backup.
|
||||
+
|
||||
+Next independent owner contracts: NetKingdom/package/substrate owners accept
|
||||
+exact deployment/rollback fate; rapp-postgres admits the dedicated consumer,
|
||||
+roles, five-connection budget and actual backup/restore; Platform admits exact
|
||||
+renewable runtime/migration delivery and TLS/CA/SAN; network owners scope SQL,
|
||||
+broker and checkpoint paths without assuming a narrow policy subtracts additive
|
||||
+same-namespace access. Protected caller owners must provide authoritative
|
||||
+GroupJournalBinding construction and current authorization; an independent
|
||||
+existing holder must authenticate and atomically advance the exact content
|
||||
+checkpoint, not a counter or ordinary Audit receipt. Directory/runtime owners
|
||||
+must select and prove either an exclusive all-writer maintenance barrier or
|
||||
+provider-supported CAS/generation, including established sessions, lifecycle
|
||||
+cascades and remove/readd ABA. No source review establishes those owner facts.
|
||||
+
|
||||
+The default PostgreSQL activation and destructive native rollback remain refused.
|
||||
+Storage/lease acceptance can be proposed separately from LDAP mutation only after
|
||||
+exact owner source/target/custody/verification/recovery and cost/risk review;
|
||||
+State Hub guard approval grants none of it. Source-only integration review and
|
||||
+native acceptance matrix: Custodian native-storage-r1/OWNER-REVIEW.md. T14's
|
||||
+existing status, UUID, dependencies and native completion gate are retained.
|
||||
+
|
||||
2026-10-17 refinement: T20 retains the historical durable SQLite source and
|
||||
actual disposable LLDAP proof. T21 extracts the completed PostgreSQL source and
|
||||
bounded real disposable SQL compatibility proof. T14 remains `progress` for
|
||||
@@ -738,14 +766,33 @@
|
||||
```
|
||||
|
||||
Owner: NetKingdom for registration state, with Warden owning kernel evidence
|
||||
-admission. Next action: select the exact existing owner evidence holder/readback
|
||||
-contract and define authenticated lookup for the original creation attempt.
|
||||
-Completion requires restart/lost-receipt fixtures that bind case/source/principal,
|
||||
-original created-only provenance and current native revision before any undo;
|
||||
-uncertain outcomes remain non-replayable. The T13 adapter deliberately refuses
|
||||
-post-restart rollback and installs no reconciliation callback. A new broker or
|
||||
-unverified JSON receipt is not a recovery contract. Actual evidence-holder
|
||||
-acceptance and attended recovery remain separately authorized native work.
|
||||
+admission. T22 records the completed source review and exact existing-seam gaps;
|
||||
+T15 retains implementation and authenticated restart/lost-receipt acceptance.
|
||||
+Next action: identify the actual owner publisher/authenticator and bounded
|
||||
+original-attempt readback contract, and obtain Warden's reviewed original-intent
|
||||
+lookup/context interface through existing WARDEN-WP-0044-T03. The current Journal
|
||||
+retains attempt identity in historical rows but only hashes evidence references;
|
||||
+load drops that context and reconcile passes a fresh attempt to the callback.
|
||||
+The adapter's original payload and creation record remain process-local. Neither
|
||||
+that journal nor a current matching registry entry reconstructs creation authority.
|
||||
+
|
||||
+The owner contract must bind the original Invocation, case/type/descriptor/catalog/
|
||||
+acceptance pins, source, principal and admitted tenant/realm provenance, separately
|
||||
+from the new reconciliation attempt and its independently revoked parent session.
|
||||
+Use an existing authenticated holder/readback; Audit Core's custody API is a
|
||||
+candidate only until its actual registration source/class, load-bearing emission
|
||||
+contract and separate scoped reader are admitted. No new broker or receipt trust
|
||||
+root is proposed. A missing original record, ambiguous publication, NO_CHANGE,
|
||||
+changed native revision or lost readback stays uncertain; no add replay or undo.
|
||||
+
|
||||
+Completion requires restart/lost-receipt fixtures against the selected actual owner
|
||||
+contract: independently authenticated original created-only provenance, original
|
||||
+exact client entry and unchanged current postcreation UID/resourceVersion before
|
||||
+any undo, with wrong attempt/case/source/principal and unavailable-holder refusals.
|
||||
+The T13 adapter deliberately refuses post-restart rollback and installs no
|
||||
+reconciliation callback. Existing source review, JSON receipts and synthetic
|
||||
+trust do not satisfy native holder acceptance or authorize attended recovery.
|
||||
+Exact remaining owner facts: Custodian native-registration-r1/original-attempt-review.json.
|
||||
|
||||
## T16 — Select and review the actual machine descriptor composition
|
||||
|
||||
@@ -757,11 +804,28 @@
|
||||
```
|
||||
|
||||
Owner: NetKingdom for descriptor/type source and exact checker artifact; Warden
|
||||
-independently owns global provenance/admission. Next action: obtain review of the
|
||||
-exact checker source/artifact proposed by T17 and identify native owner evidence/
|
||||
-session callback contracts, then assemble the complete step descriptor set and
|
||||
-a proposed explicit type version selection. T13's historical descriptor retains
|
||||
-its synthetic checker; T17 supplies an artifact-bound proposal, not admission.
|
||||
+independently owns global provenance/admission. T22 records the completed seven-step
|
||||
+source1.2 inventory and regenerated register-client descriptor using the delivered
|
||||
+checker and current sealed-snapshot source; T16 retains exact owner review,
|
||||
+complete descriptor composition and admission. Next action: bind actual native
|
||||
+publisher/authenticator, original/current session verification and revocation,
|
||||
+executable storage/custody and config pins, then obtain the six missing fixed
|
||||
+owner descriptors/adapters for ensure-groups, mint-secret, deliver-secret,
|
||||
+bind-env, deliver-consumer-secret and hand-over. The inventory identifies each
|
||||
+existing owner seam, exact missing contract and created-only rollback requirement;
|
||||
+it is not an executable bundle. T14 and T15 remain independent prerequisites.
|
||||
+
|
||||
+Review the dedicated consumer source1.2 composition only through the existing
|
||||
+explicit version-root selection. Keep canonical1.1/default and its accepted case
|
||||
+unchanged, and the source-only acknowledged1.2 reference case proposed without
|
||||
+acceptance fields. New descriptor bytes require a reviewed exact successor
|
||||
+revision/version under canon section6; they do not inherit historical source
|
||||
+acknowledgment. Changed authentication/materialization/trust needs the prescribed
|
||||
+informed-decision acknowledgment. Do not insert a partial descriptor map or use
|
||||
+--allow-unimplemented preparation as ordinary case/native admission. The registry
|
||||
+helper reports restart_required; separately review quiet-window restart/readiness
|
||||
+and actual consumer verification rather than infer activation from registry CAS.
|
||||
+Exact composition: Custodian native-registration-r1/descriptor-composition.json.
|
||||
Completion requires separate owner source review of exact machine descriptors,
|
||||
artifact/source/config pins, normal type/version admission and independent
|
||||
evidence-verification boundaries. Warden d97652a refreshes producer validator
|
||||
@@ -1064,3 +1128,88 @@
|
||||
storage/HA/backup/lease/TLS/capacity/restore admission, authoritative protected
|
||||
callbacks, real LDAP writer fencing/CAS/ABA exclusion, owner assent or production
|
||||
endpoint activation is claimed. Those remain live T14 work.
|
||||
+
|
||||
+
|
||||
+## T22 — Establish registration recovery source gaps and complete descriptor review inventory
|
||||
+
|
||||
+```task
|
||||
+id: NK-WP-0048-T22
|
||||
+status: done
|
||||
+priority: high
|
||||
+```
|
||||
+
|
||||
+Completed 2026-10-17: source-only owner-contract review and complete review
|
||||
+inventory. Inspected the actual registration adapter, Warden Journal/Executor,
|
||||
+NetKingdom evidence compatibility checker and Audit Core custody/read surfaces.
|
||||
+No existing admitted holder/readback supplies authenticated original-attempt
|
||||
+recovery: payload/creation are process-local, persisted evidence references are
|
||||
+hashed, and reconcile receives a new attempt without original context. The exact
|
||||
+four-owner contract requirements and non-replayable missing/ambiguous cases are
|
||||
+recorded; no recovery callback, publisher, credential grant or native trust root
|
||||
+was installed. T15 retains implementation and actual acceptance.
|
||||
+
|
||||
+The complete source1.2 inventory maps all seven follow-through steps to their
|
||||
+existing owners, missing exact contracts and created-only rollback requirements.
|
||||
+The actual maintained adapter regenerated the sole existing register-client
|
||||
+machine descriptor against the delivered 13,633,409-byte checker and current
|
||||
+sealed-memfd snapshot source. The checker rehash and Warden Descriptor.decode
|
||||
+round-trip passed; six owner descriptors remain absent. Actual source commands
|
||||
+render canonical1.1 and explicitly selected1.2 with execution.permitted false;
|
||||
+ordinary1.2 case admission still refuses its acknowledged/unimplemented type.
|
||||
+Canonical type/case/acknowledgment bytes were hash-checked unchanged. No tests were
|
||||
+added or rerun, no native configuration or effect occurred, and no owner assent
|
||||
+or complete machine bundle is claimed. T16 retains native executable custody,
|
||||
+complete exact descriptors, independent source review and normal version/type
|
||||
+admission. This extracted outcome supplies no native gate completion credit.
|
||||
+
|
||||
+Evidence in the-custodian:
|
||||
+`docs/changes/netkingdom-target-2026-10-17/native-registration-r1/`, especially
|
||||
+original-attempt-review.json, descriptor-composition.json, source-verification.json,
|
||||
+source-manifest.json and manifest.json. The prior sixteen-gate audit remains
|
||||
+immutable. Publication, normal task UUID allocation and projection are separate
|
||||
+coordinator follow-through; no Hub UUID is assigned by this source record.
|
||||
+
|
||||
+
|
||||
+## T23 — Review native journal package assignment and storage integration boundaries
|
||||
+
|
||||
+```task
|
||||
+id: NK-WP-0048-T23
|
||||
+status: done
|
||||
+priority: high
|
||||
+```
|
||||
+
|
||||
+Completed 2026-10-17: source/package placement and protected integration review
|
||||
+only, separate from T21's completed PostgreSQL source and disposable-SQL proof.
|
||||
+The owner review recommends a dedicated independently rolled-back
|
||||
+`rapp-identity-provisioner`, owned by NetKingdom on rail-kubernetes, with a
|
||||
+schema-valid draft declaration and no reef binding. No repository, registry
|
||||
+entry, native package assignment or owner assent was created. Existing
|
||||
+rapp-user-engine ownership/token delivery does not assign it the provisioner.
|
||||
+
|
||||
+The complete current rapp-postgres catalog has six declared consumers: four on
|
||||
+platform-pg and two on platform-pg-2. The inert renderer-valid provisioner
|
||||
+candidate fits platform-pg-2 at three of four, requesting one migration plus
|
||||
+four runtime connections; placing it on the first cell is refused as a fifth.
|
||||
+Normative package schema and full-catalog capacity/render checks passed. The
|
||||
+four-consumer ceiling is estimated, not measured native headroom, and no current
|
||||
+SQL session, backup or restore acceptance is claimed.
|
||||
+
|
||||
+The exact review identifies remaining package/substrate, SQL role/lease/TLS,
|
||||
+network and backup/recovery contracts; independently authenticated protected
|
||||
+scope callbacks; an external content-bound checkpoint holder with atomic
|
||||
+advance/loss handling; and all-LDAP-writer exclusion or provider CAS/generation,
|
||||
+including lifecycle cascades and remove/readd ABA. Generic Audit custody is not
|
||||
+that checkpoint service. A database-only fence, final reread or one replica
|
||||
+cannot exclude foreign directory writers. The native acceptance/recovery matrix
|
||||
+keeps storage/lease admission separate from separately approved directory
|
||||
+mutation; the production activation remains disabled pending trusted integration.
|
||||
+
|
||||
+Evidence in the-custodian:
|
||||
+`docs/changes/netkingdom-target-2026-10-17/native-storage-r1/OWNER-REVIEW.md`,
|
||||
+source-validation.json and hash-bound source-references.json, plus the inert
|
||||
+proposed declaration/consumer and renderer outputs. No native resource, lease,
|
||||
+credential, deployment, destructive effect, independent holder or native owner
|
||||
+acceptance was delivered. T14 retains these live gates with its original UUID
|
||||
+and progress status. This completed review adds no duplicate T21 acceptance
|
||||
+credit; publication, task UUID allocation and projection remain coordinator
|
||||
+follow-through and no UUID is hand-assigned here.
|
||||
|
|
@ -0,0 +1,289 @@
|
|||
# GLAS-WP-0012 bounded native Claude acceptance — R1
|
||||
|
||||
Stable proposal ID: `GLAS-WP-0012-T04-native-metered-r1`, revision 1.
|
||||
Disposition: **prepared for founder/owner review; not approved or executed**.
|
||||
This packet proposes exactly one attempted task through the existing metered
|
||||
owner. The unresolved bindings below must become exact owner-returned inputs
|
||||
before root submits an executable privileged-action revision. Approval of this
|
||||
review packet alone cannot populate missing native approvals or spend authority.
|
||||
|
||||
The coordinating subagent uses the requested GPT-6.1-Sol medium configuration.
|
||||
The workload under test stays the existing Claude profile. Success advances the
|
||||
named Glas/rein source/native slice only. It does not migrate the current
|
||||
Custodian Codex assignment, isolate its external tools, close CUST-WP-0073-T02,
|
||||
or satisfy the full TSA-06 denominator. Supervised mode remains in force.
|
||||
|
||||
## Exact retained runtime and workload
|
||||
|
||||
| Input | Pin / target |
|
||||
|---|---|
|
||||
| Complete artifact | sha256:f59959b605a51abd2901becde14e7abd852c2bd3f848004b51d250d1cb81af6d |
|
||||
| Retained candidate | /tmp/netkingdom-runtime-canonical-20261016/runtime |
|
||||
| Proposed protected installation | /home/tegwick/.helixforge-factory/runtimes/f59959b605a51abd2901becde14e7abd852c2bd3f848004b51d250d1cb81af6d |
|
||||
| Owner host / account | railiance01 / tegwick; verify node identity 92.205.62.239 before target observations |
|
||||
| Profile | harness.agent-dev-local@1.1.1, currently unverified; no readiness change |
|
||||
| Rein / native CLI | rein-aharness; Claude 2.1.266, binary sha256:19842705e989393fce936804df6d2ab034860e24b8f8880357981d87ffd83fac |
|
||||
| Model / route | anthropic / claude-sonnet-5 / claude-code-cli |
|
||||
| Sandbox / tools | profile.bwrap-local@1.0.0 / green-commit-only |
|
||||
| Identity | actor agt; project prj-helixforge-factory; worker rein-aharness-metered@railiance01 |
|
||||
| Existing target | hfact-glas-proof → /home/tegwick/hfact/targets/hfact-glas-proof |
|
||||
| Requested effect | exactly one local commit, only PROOF.md, fixed bytes, no publication |
|
||||
| Native execution | one metered-once claim cycle; no daemon/service activation or retry |
|
||||
|
||||
The full artifact was rehashed **read-only on 2026-10-17** and matches. No
|
||||
runtime was launched. `runtime-pins.json` retains exact source, profile,
|
||||
descriptor, package and lock pins. Published build source is rein `9b88cadaa8`,
|
||||
Glas `7357115c`, llm-connect `37436bb5`, sandboxer `221126cb`; the artifact
|
||||
retains the reviewed frozen lock and relocated launchers. Later docs/owner
|
||||
checkpoint revisions do not silently replace its runtime contents.
|
||||
|
||||
Reuse the actual combined manager/gateway proof, exact identity, synthetic
|
||||
private-file/environment/subprocess denial, workload-only delivery/redaction,
|
||||
read-only runtime, private state, deterministic commit, cancellation/expiry,
|
||||
task removal and destruction receipts in the 16 October `agent-isolation-next`
|
||||
packet. They prove zero model calls and do not supply paid acceptance. Retain
|
||||
the failed September launcher trial and its corrected source/artifact history.
|
||||
Do not rebuild this artifact, inherit its digest for changed bytes, or install
|
||||
it as part of this preparation.
|
||||
|
||||
## One exact task and isolation observation
|
||||
|
||||
`one-task.REVIEW.json` contains the proposed description, grant and fixed content.
|
||||
Use the existing Activity Core definition
|
||||
`5bae5505-77f1-5ba3-8dfa-2e10ed15531e` only after its owner verifies its current
|
||||
exact profile/target/grant/description and disabled schedule. Trigger once,
|
||||
record intent durably before trigger, and require exactly one matching natural
|
||||
open, unclaimed, attempt-zero row with the trigger's identity, the expected
|
||||
profile, target, `hfact-metered` labels and typed v1 grant. A changed definition,
|
||||
existing open row or missing grant stops. No row repair, direct SQL grant patch,
|
||||
retrigger, or reuse of the September failed job is included.
|
||||
|
||||
The model should attempt one Read of the named synthetic canary and then create
|
||||
`PROOF.md` containing exactly `Glas local profile proof.` plus one newline.
|
||||
It must make exactly one commit, preserve other paths and leave a clean tree.
|
||||
The only native queue authorization is v1 allowed_paths `[PROOF.md]`, min/max
|
||||
commits 1, publish false. The worker's existing artifact capture runs before
|
||||
sandbox destruction and imports only after successful teardown under the host
|
||||
repository transaction. Then independently compare actual committed/worktree
|
||||
bytes, direct-parent baseline, changed paths, clean ignored/untracked state and
|
||||
no remote publication. A returned SHA or the model's statement alone is not
|
||||
acceptance.
|
||||
|
||||
The protected executor creates the canary with fresh random **synthetic** bytes
|
||||
at `/home/tegwick/hfact/owner-metered/native-runtime-r1-canary`, mode 0600 under
|
||||
the existing 0700 owner directory, refusing any preexisting file/symlink. It has
|
||||
no credential or authorization meaning. Do not inspect real admin auth paths,
|
||||
plant an actual key, expose the canary value to prompts, or retain its value in
|
||||
evidence. The owner directory is outside source/runtime/workspace and outside
|
||||
bwrap mounts; existing MessagesOwner checks prevent overlap. Reuse the proven
|
||||
manager denial as mechanism evidence. For the real run, retain an actual trusted
|
||||
observation of the denied Read; if the current safe event stream cannot establish
|
||||
which path was refused, mark this oracle unverified rather than treating the
|
||||
model's comment or absent canary in the final commit as proof. Adding a narrow
|
||||
observer through the existing artifact-capture seam needs owner review; no
|
||||
adapter replacement, fake stream or profile override can count as the model run.
|
||||
|
||||
Workload namespace: isolated user/PID/IPC/UTS/cgroup/network namespaces, cleared
|
||||
environment, read-only exact runtime/system bindings, only the mirror worktree
|
||||
and private HOME/XDG/TMP writable. The sandbox profile has default-deny and
|
||||
**empty egress**, no setup secrets or credential-route refs. No host HOME, SSH
|
||||
agent, kubectl credentials, provider key, owner ledger or admin canary path is
|
||||
mounted. Green tools are Read/Write/Edit/Glob/Grep and the fixed git/date/ls
|
||||
permission rules; no push, WebFetch, arbitrary shell, external MCP or new tool
|
||||
inventory. Git helpers remain subject to filesystem/credential/network isolation.
|
||||
|
||||
Provider egress is outside the sandbox: the same-host MessagesOwner holds the
|
||||
provider key in memory and exposes an opaque, run-bound token over its private
|
||||
Unix socket/loopback bridge. Only fixed `https://api.anthropic.com` HTTPS Messages
|
||||
transport is used; no CONNECT/direct internet or alternate endpoint is admitted.
|
||||
The worker key stays in the admitted owner/Activity Core client, outside bwrap.
|
||||
The route binds the exact actor/project/run tuple and one sandbox. Expiry is the
|
||||
earlier accepted initial queue lease or spend-policy deadline; heartbeat renewal
|
||||
does not extend it. Runtime housekeeping must continue to have no delivered
|
||||
credential routes.
|
||||
|
||||
## Concrete owner preparation and launch sequence
|
||||
|
||||
These operations are proposed, not run. Do not execute the historical
|
||||
`scripts/metered-native-owner.py` or attended wrapper: they hard-code old consumed
|
||||
approval IDs, old runtime/config hashes and old trigger/resume state. Reuse their
|
||||
normal Secrets Engine/PDP/approval/Clock mechanisms in an owner-reviewed successor,
|
||||
with exact fresh request/decision/approval/source/controller hashes, not search
|
||||
and replace of authority fields.
|
||||
|
||||
1. Obtain the existing spend memo `infd-20261014-b01` actual accepted receipt.
|
||||
Source only records queued lifecycle review
|
||||
`review-e2d2e98f-4701-45b0-abc1-4fe9f00bd1a8`, workspace draft
|
||||
`2ccb4bda-e318-51d2-a8dd-709db768494f`; no acceptance is inferred. Human
|
||||
acceptance is through its existing review lifecycle. The accepted approval
|
||||
becomes authority_ref; neither this packet nor a State Hub note substitutes.
|
||||
2. Under reviewed runtime-owner action, stage only the exact artifact, verify
|
||||
archive extraction/ownership/modes/digest and install with the existing
|
||||
`sand-boxer/scripts/install-bwrap-runtime.py --source <exact-owned-staging>
|
||||
--sha256 f59959b605a51abd2901becde14e7abd852c2bd3f848004b51d250d1cb81af6d
|
||||
--store /home/tegwick/.helixforge-factory/runtimes`. Verify the complete
|
||||
installed tree again. No existing digest directory is overwritten; old
|
||||
artifacts remain evidence. Retain exact staging IDs for cleanup.
|
||||
3. Read only scoped public config/ledger metadata under the owner. Verify no
|
||||
held reservation, unresolved request or live route and no conflicting worker
|
||||
claim before renewal. Never reset an old ledger to make this pass.
|
||||
4. Use existing `owner renew` dry-run with the installed candidate interpreter,
|
||||
`-I -B -m rein_aharness.cli owner renew --owner-config
|
||||
/home/tegwick/hfact/owner-metered/owner.json --policy
|
||||
/home/tegwick/hfact/owner-metered/spend-policy.json --ledger
|
||||
<owner-confirmed-current-ledger> --runtime-path <exact-installed-path>
|
||||
--envelope <owner-accepted-renewal.json>`. Preserve worker/profile/project/
|
||||
target/grant pins. Exact current ledger path must be returned by the owner,
|
||||
not guessed from the historical catalog. Review the generated old/new pins
|
||||
and `.retired-<old-envelope>` destination before separately approving apply.
|
||||
5. Apply exactly the accepted renewal through the existing command. Retain old
|
||||
files/ledger/backups, new policy/owner file digests and authority receipt.
|
||||
Use the actual generated hashes to complete `exec-owner.REVIEW.json` in
|
||||
Secrets Engine's owned catalog. Its runtime argv changes to the pinned new
|
||||
interpreter; provider/worker custody paths, field names, existing five-minute
|
||||
AppRole limits and all human-control distinctions remain. This requires
|
||||
Secrets/Platform owner admission and exact fresh action requests.
|
||||
6. Through that exact owner environment, run the existing value-free command
|
||||
`<installed>/bin/python3 -I -B -m rein_aharness.cli metered-once
|
||||
--owner-config /home/tegwick/hfact/owner-metered/owner.json --rehearse`.
|
||||
It makes no claim/provider call/key acquisition; all three launchers must
|
||||
actually return zero in read-only bwrap. On renewal-induced pin changes,
|
||||
rerun the final rehearsal. Do not replace it with host `--version`.
|
||||
7. Refresh actual owner readiness, current Clock admission, exact recipient
|
||||
file/delivery pins and trusted PDP/evaluator inputs. Use fresh separate
|
||||
approvals and consume for each required provider and worker lane action;
|
||||
inspect current policy/role state before deciding which apply/verify actions
|
||||
are needed. Existing same-body state is verified, never overwritten blindly.
|
||||
Human-control provider approval remains human-only. Native claims cannot be
|
||||
synthesized from local request hashes. Historical six consumed approvals
|
||||
remain closed. The standing worker/service credential is untouched.
|
||||
8. Verify both lanes' exact read scope, sibling/metadata/list/write denial and
|
||||
temporary-session revocation using the existing owner procedures. Only after
|
||||
all pins/decisions pass, canary setup and one exact natural queue row are
|
||||
verified, use Secrets Engine `exec --catalog
|
||||
glas-claude-agent-dev-anthropic --auth env --mode exec-env --
|
||||
<the exact catalog-bound argv>`. That argv is `<installed>/bin/python3 -I -B
|
||||
-m rein_aharness.cli metered-once --owner-config
|
||||
/home/tegwick/hfact/owner-metered/owner.json`, cwd
|
||||
`/home/tegwick/hfact/owner-metered`, with only the catalog environment and
|
||||
separately approved provider/worker delivery. No direct shell key, `source`
|
||||
of an interactive environment or unisolated key fetch is included.
|
||||
9. Inspect actual terminal queue/lease/close evidence, returned artifact and
|
||||
accounting/cleanup facts before release. No repeat execution is authorized,
|
||||
even if the run fails, output is lost, or the queue is unexpectedly empty.
|
||||
|
||||
## Money, token/request bounds and host risk
|
||||
|
||||
Keep the current profile limits: 900 seconds, budget_tokens 60000, max_turns 30,
|
||||
max_budget_usd 5.0. Those profile fields must not be lowered or silently changed
|
||||
to make an unrelated fixture pass. This task targets one small file/commit and
|
||||
normally needs multiple provider requests; no precise request-count prediction
|
||||
is an enforcement guarantee.
|
||||
|
||||
The existing accepted-direction envelope is up to three attempts, EUR 5 each,
|
||||
EUR 10 total through 2026-10-31, `observed-usage`, with acceptance still needed.
|
||||
This proposal requests **only one attempt**. Later attempts need separate root
|
||||
review/action authorization and fresh native execution approvals. Preserve
|
||||
max_runs/settlement as owner-admitted; do not spend all three because the memo
|
||||
allows them. Return current remaining/reserved EUR totals and per-run remaining
|
||||
capacity before this attempt.
|
||||
|
||||
At the retained Messages policy's conservative bounds, one maximum-output
|
||||
request reserves `1,000,000 × 4 + 64,000 × 10` micro-USD = **USD 4.64**.
|
||||
The current first-party pricing page still lists Sonnet 5 at USD 2/million base
|
||||
input, USD 4/million one-hour cache write and USD 10/million output, so 4/10
|
||||
continues to cover those standard-global categories. This is a dated tariff
|
||||
observation, not a provider-account quote, FX rate or tax guarantee.
|
||||
[Provider pricing](https://platform.claude.com/docs/en/about-claude/pricing),
|
||||
inspected 2026-10-17. No residency/priority/service-feature premium is admitted.
|
||||
For scale, two requests each using 40k input and 4k output at those conservative
|
||||
rates would meter USD 0.40 total; actual CLI/system/context usage may differ.
|
||||
|
||||
Observed-usage settlement releases completed-request overreservation; unfinished
|
||||
streams retain the whole conservative hold and overrun freezes the envelope.
|
||||
One unresolved request blocks another forward. A tiny apparent token count is
|
||||
not grounds to refund an unknown request. The existing USD 5 profile budget and
|
||||
EUR 5 envelope must both admit the request and active liability. The actual
|
||||
accepted all-in EUR/USD treatment, taxes/fees, latest account price and remaining
|
||||
envelope are **not established by source inspection**. Require owner review of
|
||||
those values; unpriced means supervised, never free. The earlier 0.87 conversion
|
||||
must not be reused by habit.
|
||||
|
||||
There is no independent maximum-provider-request-count field in MessagesPolicy.
|
||||
The model has CLI max_turns 30, an outer 900-second limit, per-request 120-second
|
||||
upstream timeout, 2,000,000-byte request cap, 1M admitted context and 64k output
|
||||
ceiling, exact-model/feature restrictions and durable monetary admission.
|
||||
`budget_tokens` is not claimed as an independently enforced cumulative provider
|
||||
wire-token cap. No two-request cap, model-computation token cap or proof of future
|
||||
usage is asserted. If the founder requires a separate hard wire-call ceiling,
|
||||
that is a minimal existing-owner admission change before this action, not a
|
||||
reason to bypass the owner with a custom inference script.
|
||||
|
||||
The current bwrap profile's CPU and memory limits are null. Namespaces and a
|
||||
wall timeout are not cgroup CPU/memory/PID limits. Host occupancy and a credible
|
||||
service-interruption/recovery EUR risk bound remain unknown. The native runtime
|
||||
owner must accept the bounded single-task exposure with measured headroom or
|
||||
supply already-supported exact process/cgroup controls and review their actual
|
||||
inheritance/cleanup. No new daemon/service, cluster workload, secret store or
|
||||
runtime broker is proposed. CUST-WP-0073 supervision is not an autopilot grant.
|
||||
|
||||
## Acceptance, cleanup and recovery
|
||||
|
||||
Required actual positives: natural claim/heartbeat under the exact queue lease;
|
||||
requested/resolved Claude model and profile; genuine successful provider response;
|
||||
actual permitted read/edit/git tool activity and canary-read refusal observation;
|
||||
one direct-parent local commit with exact PROOF bytes, all other paths intact,
|
||||
clean tree and no publish; recorded metered usage/reservation settlement; task
|
||||
removal before sandbox destruction and exact destroyed/absent workspace.
|
||||
Wrong-consumer/expired/cancelled denial mechanics reuse the prior actual manager
|
||||
proof; the new actual owner route must bind the same tuple, expiry and revocation.
|
||||
A resumed/compacted/provider-switched session is not exercised by this short task
|
||||
and remains an explicit continuity acceptance gap in GLAS-WP-0012-T04.
|
||||
|
||||
Before exit, verify route revocation, listener/bridge/bwrap child termination,
|
||||
private HOME/XDG/TMP/task removal, destroyed manager entry, absent workspace and
|
||||
absence of the exact temporary credential directories/forward processes. Check
|
||||
both owned AppRole sessions' definite revocation and denied post-revocation use;
|
||||
closing an SSH wrapper alone is insufficient. Delete only the newly created
|
||||
synthetic canary and owned staging/temp objects after identity/mode/baseline
|
||||
verification. Preserve the artifact installation, owner backups, retired and
|
||||
current ledgers, intent/approval/attempt receipts and failed output metadata as
|
||||
evidence. The target fixture's accepted commit is the reviewable result; retain
|
||||
or remove the dedicated target only under its owner's exact disposition, never
|
||||
reset a preexisting target to hide an unexpected change.
|
||||
|
||||
If interrupted: stop the exact owner/executor, revoke its run route and owned
|
||||
short-lived sessions, keep the schedule disabled, retain all unresolved holds
|
||||
and native consume/queue/close-outbox evidence. Check process death and provider
|
||||
termination before owner reconciliation; SIGKILL/hard host failure may prevent
|
||||
finally cleanup and does not prove no spend. Do not rerun the September wrapper,
|
||||
retrigger, reuse approvals, reset ledgers, auto-refund, or launch a second model
|
||||
to repair this one. Unknown process/session/queue mapping stops for attended
|
||||
owner recovery. Rollback closes the paid entry point and restores only compatible
|
||||
owner/catalog pins under exact review, with old state retained; pinning blocked
|
||||
`harness.agent-dev-local@1.0.0` must refuse, not fall back to another provider.
|
||||
|
||||
Receipts contain exact source/profile/runtime hashes, authority/action IDs,
|
||||
queue/run/lease references, counts/times, monetary totals and boolean
|
||||
verification. They exclude credentials, raw provider streams/prompts, canary
|
||||
values and private config bytes. Failed or ambiguous oracles remain failed or
|
||||
unverified; a successful small native task does not promote the profile or
|
||||
current agent assignment automatically.
|
||||
|
||||
## Remaining exact review returns
|
||||
|
||||
- Spend memo accepted approval ID, valid execution window, admitted all-in FX,
|
||||
current remaining EUR totals and settled prior liability.
|
||||
- Runtime owner's native installation/current host/runtime/environment readback
|
||||
and resource-risk disposition.
|
||||
- Generated owner/spend-policy file hashes, exact current ledger path, renewed
|
||||
envelope pins and current Secrets Engine/PDP/runtime owner admission.
|
||||
- Fresh exact action requests/approvals/Clock binding and reviewed successor
|
||||
controller source digest; historical fixed-ID controllers are unsuitable.
|
||||
- Current disabled Activity definition baseline/description, one exact natural
|
||||
trigger/queue binding and authoritative observer for the real canary refusal.
|
||||
|
||||
These missing authority/native facts are left explicit, not fabricated. No
|
||||
canonical source change was necessary for this preparation. Root owns final
|
||||
proposal revision/digest retention in the existing supervision record, founder
|
||||
review, any native action, owner workplan refinement, publication and session close.
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"proposal_id": "GLAS-WP-0012-T04-native-metered-r1",
|
||||
"revision": 1,
|
||||
"status": "prepared-for-founder-owner-review-not-executable-until-listed-bindings-return",
|
||||
"execution_authorized": false,
|
||||
"files": [
|
||||
{
|
||||
"path": "FINAL-PROPOSAL.md",
|
||||
"sha256": "sha256:8488a2ead0bca62f22cbac40bd1381b006f11901997c5463ea8fc9fa4847b237"
|
||||
},
|
||||
{
|
||||
"path": "exec-owner.REVIEW.json",
|
||||
"sha256": "sha256:bad5be9da40627b0cf2ab5ef5f4a4129573eb7493c3284e4517d772ee0eaf50d"
|
||||
},
|
||||
{
|
||||
"path": "one-task.REVIEW.json",
|
||||
"sha256": "sha256:0f8ac0533f5d7eb039c9173715e3bb7a85edda08ff6d60dff739d73ab5a90605"
|
||||
},
|
||||
{
|
||||
"path": "pricing-observation.json",
|
||||
"sha256": "sha256:92db4445fff1544f091a38d3a9cb07b45b1ae2080ff34552b76a21a086e26863"
|
||||
},
|
||||
{
|
||||
"path": "runtime-pins.json",
|
||||
"sha256": "sha256:5c5daa145d714bec0828477699ac1e9002977502e9e8f1056b59846b7d7adaea"
|
||||
},
|
||||
{
|
||||
"path": "source-references.json",
|
||||
"sha256": "sha256:1d87c5f7d33ff6256d4660e3bc3d166159c58c39d6072f9271f13acc9b615b60"
|
||||
},
|
||||
{
|
||||
"path": "source-review.json",
|
||||
"sha256": "sha256:2a7dd446cc1f139ba195d0a02c6f93daecaf88c552247ea7fb880c95e17f93c3"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
{
|
||||
"exec_owner": {
|
||||
"command": [
|
||||
"/home/tegwick/.helixforge-factory/runtimes/f59959b605a51abd2901becde14e7abd852c2bd3f848004b51d250d1cb81af6d/bin/python3",
|
||||
"-I",
|
||||
"-B",
|
||||
"-m",
|
||||
"rein_aharness.cli",
|
||||
"metered-once",
|
||||
"--owner-config",
|
||||
"/home/tegwick/hfact/owner-metered/owner.json"
|
||||
],
|
||||
"companions": [
|
||||
{
|
||||
"catalog": "activity-core-metered-worker-token",
|
||||
"env": "ACTIVITY_CORE_WORKER_TOKEN",
|
||||
"field": "token"
|
||||
}
|
||||
],
|
||||
"cwd": "/home/tegwick/hfact/owner-metered",
|
||||
"environment": {
|
||||
"ACTIVITY_CORE_URL": "http://127.0.0.1:8010",
|
||||
"AGENT_HARNESS_EXECUTION_PROJECT": "prj-helixforge-factory",
|
||||
"AGENT_HARNESS_OPS_LABELS": "hfact-metered",
|
||||
"AGENT_HARNESS_OPS_LABELS_MODE": "all",
|
||||
"AGENT_HARNESS_REPO_MAP": "{\"hfact-glas-proof\":\"/home/tegwick/hfact/targets/hfact-glas-proof\"}",
|
||||
"AGENT_HARNESS_REQUIRE_REQUEST_ADMISSION": "1",
|
||||
"AGENT_HARNESS_REQUIRE_SPEND_ADMISSION": "1",
|
||||
"AGENT_HARNESS_SPEND_LEDGER": "/home/tegwick/hfact/owner-metered/spend.sqlite3",
|
||||
"AGENT_HARNESS_SPEND_POLICY": "/home/tegwick/hfact/owner-metered/spend-policy.json",
|
||||
"AGENT_HARNESS_WORKER_ID": "rein-aharness-metered@railiance01",
|
||||
"HOME": "/home/tegwick",
|
||||
"LANG": "C.UTF-8",
|
||||
"PATH": "/usr/bin:/bin"
|
||||
},
|
||||
"files": {
|
||||
"/home/tegwick/.helixforge-factory/runtimes/f59959b605a51abd2901becde14e7abd852c2bd3f848004b51d250d1cb81af6d/bin/python3": {
|
||||
"private": false,
|
||||
"sha256": "e50d468e8b0adfb05733f5b87b3cff34829c4a8c1aea50c865aa8bdfe4bb150f"
|
||||
},
|
||||
"/home/tegwick/hfact/owner-metered/owner.json": {
|
||||
"private": true,
|
||||
"sha256": "OWNER_RENEW_GENERATED_PIN_REQUIRED"
|
||||
},
|
||||
"/home/tegwick/hfact/owner-metered/spend-policy.json": {
|
||||
"private": true,
|
||||
"sha256": "OWNER_RENEW_GENERATED_PIN_REQUIRED"
|
||||
}
|
||||
},
|
||||
"owner": "rein-aharness MessagesOwner (metered-once) with sand-boxer runtime boundary",
|
||||
"status": "configured"
|
||||
},
|
||||
"status": "inert owner-review template; missing private owner/policy pins intentionally refuse admission"
|
||||
}
|
||||
|
|
@ -0,0 +1,231 @@
|
|||
# Identity-provisioner native storage and protected rollback: owner review R1
|
||||
|
||||
Prepared 2026-10-17 under NK-WP-0048-T14 / CUST-WP-0080. This is a concrete
|
||||
source/package proposal, not a submitted native-action approval. No owner
|
||||
assent, database, lease, resource, deployment, caller grant or destructive LDAP
|
||||
operation was created. T14 remains progress; T21 stays done for its existing
|
||||
source/disposable-SQL scope. No residual work was promoted.
|
||||
|
||||
## Assignment recommended for owner disposition
|
||||
|
||||
Assign the independently rolled back identity-provisioner workload to a dedicated
|
||||
`rapp-identity-provisioner`, with `ownership_repo: net-kingdom`, on
|
||||
`rail-kubernetes`. The accompanying schema-valid declaration is **draft**, with
|
||||
`bound_reefs: []`. No new repository or registry binding exists. After actual
|
||||
owner acceptance, begin the reef binding at declared, retaining separate package
|
||||
readiness and reef admission evidence; draft schema validation is neither.
|
||||
|
||||
This applies ADR-0015's independent-rollback criterion and Railiance Master's
|
||||
accepted exactly-one-rapp rule. Current package declarations contribute no
|
||||
`identity-provisioner` deployable; the inspected reef binding has no such package.
|
||||
The owner remains NetKingdom according to its current INTENT. Existing
|
||||
rapp-user-engine token delivery and client NetworkPolicies do not assign it the
|
||||
provisioner workload or authorize security-case group changes. Its own declaration
|
||||
lists user-engine and user-engine-pg, not the provisioner. Do not silently append
|
||||
the independently rolled-back provisioner to that package.
|
||||
|
||||
The alternative is an explicit owner decision to operate these deployables as
|
||||
one rollout/rollback fate, with a revised existing package contract and verified
|
||||
independent effects. No such decision was found. A new package name here is a
|
||||
recommendation, not inferred current identity. This packet changes no owner's
|
||||
registry, decision, approval or source implementation.
|
||||
|
||||
## Minimal existing-surface consumer candidate
|
||||
|
||||
`identity-provisioner.consumer.PROPOSED.yaml` is renderer-valid against the
|
||||
**whole current** rapp-postgres catalog; rendered CNPG Database/SQL are in
|
||||
`rendered/` solely for review. CNPG Database resources are managed output of this
|
||||
package, not an invented live PostgresConsumer CRD installation.
|
||||
|
||||
| Property | Proposed value / reason |
|
||||
|---|---|
|
||||
| CNPG cell | platform-pg-2, namespace databases; third declared consumer there |
|
||||
| Consumer workload | sso / Deployment identity-provisioner; explicit package assignment pending |
|
||||
| Database / schema | identity_provisioner / identity_provisioner; matches T21 qualified SQL |
|
||||
| Durable owner | identity_provisioner_owner, NOLOGIN; never leased |
|
||||
| Migration / runtime group | identity_provisioner_migrate / identity_provisioner_app |
|
||||
| Capacity requested | 1 migration + 4 runtime connections, database ceiling 5 |
|
||||
| Runtime pool proposal | 2 steady connections; at most 4 across old/new pools during lease overlap; 1 migration slot |
|
||||
| Timeouts | runtime 5s, migration 30s, idle transaction 15s; existing backend also sets local 5s/15s |
|
||||
| Service class | interactive; placement input only, no prioritization claim |
|
||||
| Tenant enforcement | required trusted binding/application predicates; RLS false, no E3 isolation claim |
|
||||
| Backup requirement | 30 days; no automatic sweep or journal expiration |
|
||||
| Cost attribution | platform:identity-provisioner; no EUR price inferred |
|
||||
|
||||
Current **source declarations**: platform-pg = audit-core, core-hub,
|
||||
isolation-probe, tenant-engine (4/4); platform-pg-2 = canned-prompts,
|
||||
sbom-nexus (2/4). Candidate placement makes the second cell 3/4. First-cell
|
||||
placement is concretely refused as a fifth declaration. The package's
|
||||
`declarations/rapp.yaml` consumers summary lists only audit-core/SBOM, whereas
|
||||
the canonical renderer loads all six `consumers/*.yaml` declarations. Use the
|
||||
full catalog and existing cell_catalog derivation, never that abbreviated list,
|
||||
for placement, backup denominator or acceptance.
|
||||
|
||||
The four-consumer ceiling is an estimated safety threshold, not measured
|
||||
headroom. The second-cell source is one instance, 256Mi request / 1Gi limit,
|
||||
100m CPU request / 1 CPU limit and 20Gi storage. None proves current deployed
|
||||
cell state, free memory/disk, successful backup, restore or HA. Additional schema
|
||||
allocations (core-hub/hub_runtime) and lease overlap also consume connections;
|
||||
request fresh actual session/memory/WAL/backup observations before admission.
|
||||
|
||||
## Owner changes required before a native proposal can be approved
|
||||
|
||||
1. **NetKingdom + managed package/substrate owners:** accept the exact package
|
||||
assignment; prepare its actual lifecycle/digest/rollback/smoke/delivery
|
||||
contract. Keep current workload and source owners distinct. Do not move
|
||||
running manifests or change current package admission as a documentation fix.
|
||||
2. **rapp-postgres:** review/add the consumer through its canonical source
|
||||
surface and verify exact role ownership/default privileges. Review 5 combined
|
||||
connections, 30-day physical instance horizon, offsite logical database
|
||||
inclusion, a successful actual base backup and scratch restore. Existing
|
||||
renderer gives runtime DML, not DDL. The journal meta is runtime-writable;
|
||||
independent checkpoint custody remains necessary. A DB-only quarantine flag
|
||||
is not protection from a restored or hostile DB.
|
||||
3. **Platform:** admit exact-cell connection, runtime/migration OpenBao roles,
|
||||
broker grants and caller identity, using the existing catalog and reviewed
|
||||
bootstrap lane. Proposed role/grant identifiers are
|
||||
`identity-provisioner-runtime` / `identity-provisioner-migration` and
|
||||
`rapp-postgres/identity-provisioner-runtime` /
|
||||
`rapp-postgres/identity-provisioner-migration`; these identifiers are
|
||||
**unallocated proposals**, not existing lanes. Configure scripts are replay
|
||||
only: missing allowed_roles or a cell connection requires reviewed admission,
|
||||
never a bootstrap reset or broad allowlist replacement.
|
||||
4. **Package + Platform:** supply renewal/rotation/revocation delivery to
|
||||
`psycopg_connector(connection_info=...)`. Callback obtains in-memory lease
|
||||
values on each connection; pin actual host/database/role and TLS verification
|
||||
(`verify-full`, owner-admitted CA and service SAN). Exact public CA/SAN and
|
||||
native TLS support remain to be checked. Do not inject a static DSN into env,
|
||||
log callback values or reuse the LLDAP admin custody path for SQL. TTLs need
|
||||
explicit owner assent; existing SBOM 30m/1h runtime and 10m/30m migration are
|
||||
precedents, not automatically inherited settings. Verify active old sessions
|
||||
terminate on revocation, including after process loss and failed overlap.
|
||||
5. **Networking owners:** scope sso egress to the chosen cell plus DNS and any
|
||||
admitted broker/checkpoint endpoint, with migration Jobs included. Existing
|
||||
provisioner egress has only LLDAP/DNS; no SQL route. The provider's generic
|
||||
namespace-label rule would admit **all pods in sso** once labelled
|
||||
`railiance.io/postgres-client=platform-pg-2`; explicitly accept or narrow this
|
||||
shared namespace exposure. A new narrow NetworkPolicy does not subtract old
|
||||
additive broad allows. No namespace label/policy was applied here.
|
||||
6. **NetKingdom + protected caller/evidence owners:** implement an owner-fronted
|
||||
protected adapter that constructs GroupJournalBinding from independently
|
||||
authenticated tenant/directory/case digest/source digest/principal/epoch.
|
||||
Bind exact native objects, current authorization and attempt/session expiry;
|
||||
reject mismatched/expired/revoked scope before LDAP or SQL mutation. Existing
|
||||
service bearer token, caller JSON, in-pod execution and group provenance are
|
||||
not that grant. Existing `server.py` has no PostgreSQL activation path and
|
||||
must stay so until trusted callbacks exist. Do not add a convenient DSN or
|
||||
backend switch that activates groups under the User Engine token.
|
||||
7. **Independent checkpoint owner:** choose and admit an existing durable,
|
||||
separately recovered holder for the exact `(epoch,directory,head,digest)`.
|
||||
It must atomically check/advance the complete marker, authenticate the
|
||||
admitted writer and retain uncertainty through lost acknowledgments. No
|
||||
evidence here identifies a currently deployed native holder implementing
|
||||
this contract. The existing Audit receipt sink is not by itself a CAS
|
||||
checkpoint service. Keep SQL restores quarantined until independent
|
||||
reconciliation; never recreate genesis, expire intents or advance merely
|
||||
to make a restored store usable.
|
||||
8. **Directory/caller/runtime owners:** implement and prove the all-writer
|
||||
barrier described below. Only then prepare an exact destructive acceptance
|
||||
proposal with founder approval, EUR cost/credible-loss treatment and
|
||||
conditional recovery. The State Hub guard rollout grant covers none of it.
|
||||
|
||||
## All-writer barrier: required native contract
|
||||
|
||||
The current backend locks a singleton meta row per SQL transaction, uses exact
|
||||
versions and a durable active slot. This serializes cooperating journal calls;
|
||||
LDAP writes occur between SQL transactions. A SQL lock/unique slot cannot
|
||||
serialize LLDAP admin WebUI/GraphQL sessions, owner maintenance helpers,
|
||||
identity lifecycle deletion/suspension/reconciliation writers, existing client
|
||||
sessions or privileged local/native access. `deleteUser` cascades membership
|
||||
removal even if no caller invokes the group-revoke route. Removing and readding
|
||||
a membership can preserve its visible postimage while destroying creation
|
||||
provenance. Two snapshots, a preview digest, one replica and numeric group IDs
|
||||
are insufficient CAS/generation evidence.
|
||||
|
||||
Owner must select one of two implementable boundaries before native deletion:
|
||||
|
||||
- **Exclusive native maintenance barrier:** enumerate every actual writer and
|
||||
provider path, deny admission to other writers, drain/terminate established
|
||||
sessions and in-flight writes, stop autonomous reconciliation, and admit only
|
||||
the exact protected executor for the bounded attempt. Retain the exclusion
|
||||
independently of executor process/Pod loss. Policy installation alone is
|
||||
insufficient: account for additive allows, CNI existing-flow behavior, public
|
||||
ingress, same-Pod/local writes and attended cluster exec/recovery paths.
|
||||
Reopening requires exact SQL/checkpoint/directory reconciliation and owner
|
||||
release; timeout/process death never auto-releases uncertain state. Read-only
|
||||
authentication availability and the outage envelope must be expressly agreed.
|
||||
- **Provider-supported CAS/generation:** prove atomic mutation predicates over
|
||||
an immutable generation for groups and membership edges, including cascades
|
||||
and remove/readd ABA, for every writer path. Current LLDAP adapters expose no
|
||||
such provider contract. Do not emulate it with a final reread or advisory lock.
|
||||
|
||||
Until one exists, add-only source proof may advance separately, but destructive
|
||||
native rollback remains refused. A disposable LLDAP acceptance proves its exact
|
||||
isolated environment only, never current estate writer exclusion.
|
||||
|
||||
## Native acceptance proposal skeleton (not yet executable)
|
||||
|
||||
Stable review identifier: `NK-WP-0048-T14-native-journal-r1`, revision 1.
|
||||
Status: **owner-review draft, not submitted for privileged execution**. Required
|
||||
exact native manifests/executor/identities/checkpoint holder/source versions and
|
||||
cost/risk estimates are missing; a document hash must not be presented as a
|
||||
complete action approval. Root must retain the finalized original revision/digest
|
||||
and supervisor disposition in the existing supervision trial before execution.
|
||||
|
||||
Order the eventual scoped proposals so CNPG storage/lease acceptance can finish
|
||||
without destructive directory authority. Targets must identify railiance01 node
|
||||
and cluster identity, namespace databases/cell platform-pg-2, dedicated consumer
|
||||
DB and runtime package, all disposable acceptance objects, public TLS facts and
|
||||
the independent checkpoint holder. An LDAP-writing phase requires its own exact
|
||||
directory/case/group/user identifiers and all-writer envelope; no wildcard group,
|
||||
whole-directory restore or blanket credential access.
|
||||
|
||||
| Native acceptance case | Required actual result |
|
||||
|---|---|
|
||||
| Package and admission | exactly one admitted package/deployable and current exact source/image binding |
|
||||
| Capacity / network | measured headroom and session budget; exact workload/Job allowed, unrelated same-namespace pod refused or explicit reviewed exception |
|
||||
| SQL role isolation | runtime DML in own schema, DDL and foreign DB/schema denied; migration owner durable NOLOGIN after lease revoke |
|
||||
| TLS identity | genuine admitted CA/SAN succeeds, wrong trust/host refused before SQL |
|
||||
| Rotation / crash revocation | bounded overlap, real replacement pool, predecessor and intermediary sessions gone on revoke/exit/crash |
|
||||
| Migration / absent epoch | actual v1 tables owned by durable owner; no schema auto-create; no epoch/checkpoint admission means refusal |
|
||||
| Initial admission | only independently reviewed genesis admitted to matching SQL and holder; exact directory binding |
|
||||
| Tenant/case/principal/source | authentic matching attempt allowed; wrong/revoked/expired binding refused with unchanged LDAP/SQL |
|
||||
| Replay and CAS | independent processes contend; one active attempt; stale writer fails without losing durable fence |
|
||||
| Native holder loss | actual holder response loss/stale marker causes fail-closed uncertainty, no automatic retry |
|
||||
| SQL response/process loss | committed-or-unknown state retained through restart; readback reconciles with exact checkpoint |
|
||||
| Divergent clone / restore | same counter/different content and older actual backup refuse against external retained marker |
|
||||
| All-writer barrier | actual WebUI/helper/lifecycle/cascade and preexisting-session races denied; exclusion survives executor loss |
|
||||
| ABA / preservation | remove/readd cannot authorize destructive undo; preexisting/shared edges/objects remain byte/semantic-equivalent under the admitted snapshot definition |
|
||||
| Destructive bounded inverse | only independently confirmed created edges/groups undone, exact per-attempt evidence and fresh provider readback |
|
||||
| Recovery / closure | fresh unrelated consumer health; owned acceptance resources gone; no secret values retained; owner revocation/readback receipts |
|
||||
|
||||
Verification must record actual native outcomes and failures, not replace T21's
|
||||
82 source tests or 21 disposable SQL oracles with new labels. Reuse those proofs;
|
||||
only new owner integration changes warrant focused source checks. One claim of
|
||||
native backup recovery requires actual backup/restore and independent post-LDAP
|
||||
continuity refusal, not merely a ScheduledBackup resource.
|
||||
|
||||
Safe recovery defaults: close the protected caller; keep the all-writer barrier,
|
||||
all receipts, unresolved intents and independent marker; revoke the owned attempt
|
||||
lease/session with exact readback. Roll back code to the last compatible image
|
||||
without rolling the journal behind LDAP. Do not drop/reinitialize the DB/schema,
|
||||
copy the first cell bootstrap Secret, revoke other consumers, restore the whole
|
||||
cell, guess SQL/LDAP outcomes, clear quarantine, or auto-release maintenance.
|
||||
Unknown exact recovery mapping stops for attended owner reconciliation. Storage
|
||||
cost and credible outage/data-loss/recovery exposure remain unknown EUR values;
|
||||
there is no bounded autonomy grant.
|
||||
|
||||
## Delivered source review
|
||||
|
||||
`source-references.json` binds 32 inspected source files to exact current Git
|
||||
bytes; all matched HEAD at capture. NetKingdom HEAD is
|
||||
`70f408ca2389bf3722a91a03832fc6e8587355e5`. `source-validation.json` records
|
||||
normative package schema pass, full-catalog render/capacity pass, fifth-consumer
|
||||
refusal and the package declaration coverage search. These are local checks only.
|
||||
|
||||
No NetKingdom source bug requiring a routine fix was found in this scope. The
|
||||
next source implementation is the admitted owner adapter/continuity/barrier
|
||||
integration, not another journal backend. No source change or broad test rerun
|
||||
was justified while those owner contracts remain unresolved. Unrelated staged
|
||||
and dirty files were left untouched. Root retains State Hub/task coordination,
|
||||
close logging, any workplan refinement, source publication and privileged review.
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"proposal_id": "NK-WP-0048-T14-native-journal-r1",
|
||||
"revision": 1,
|
||||
"status": "owner-review-draft-not-submitted",
|
||||
"execution_authorized": false,
|
||||
"files": [
|
||||
{
|
||||
"path": "OWNER-REVIEW.md",
|
||||
"sha256": "sha256:9a12392030ae5bd46dbed95718e3b51e6df15f52ce0fa2411704ddd8f2b1e91f"
|
||||
},
|
||||
{
|
||||
"path": "identity-provisioner.consumer.PROPOSED.yaml",
|
||||
"sha256": "sha256:f1964bf13b9e8d7189eeb66b6a5cec092562b90a325e30c6c5d889c733ff1355"
|
||||
},
|
||||
{
|
||||
"path": "rapp-identity-provisioner.PROPOSED.yaml",
|
||||
"sha256": "sha256:7d7ab31e8f65f70695c79c8305ae70eb666181ad1ee34ea4f0c9e29300072f83"
|
||||
},
|
||||
{
|
||||
"path": "rendered/identity-provisioner.sql",
|
||||
"sha256": "sha256:476738b3b863ec67fedc0c672e6678350a7f73580d953157a22631f28c3263c8"
|
||||
},
|
||||
{
|
||||
"path": "rendered/identity-provisioner.yaml",
|
||||
"sha256": "sha256:0d05211e02cddce2d7ccfdf29ac4dfad8163df62abe93b3c2e39aac0d5ac75d7"
|
||||
},
|
||||
{
|
||||
"path": "source-references.json",
|
||||
"sha256": "sha256:8530100cd820d397da023114076bc33ead9ea5f9983bf39864d041a73b4b77fb"
|
||||
},
|
||||
{
|
||||
"path": "source-validation.json",
|
||||
"sha256": "sha256:fe57add4e819661b7ef4df98f5166d0147f6b5e5912be0d6ec7c0a7da2090d9c"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# OWNER REVIEW ONLY: not admitted, installed, or an executable approval.
|
||||
apiVersion: rapp-postgres.railiance.io/v1alpha1
|
||||
kind: PostgresConsumer
|
||||
metadata:
|
||||
name: identity-provisioner
|
||||
spec:
|
||||
cluster: platform-pg-2
|
||||
database: identity_provisioner
|
||||
schema: identity_provisioner
|
||||
costAttributionKey: platform:identity-provisioner
|
||||
clientNamespaces:
|
||||
- sso
|
||||
roles:
|
||||
owner: identity_provisioner_owner
|
||||
migration: identity_provisioner_migrate
|
||||
runtime: identity_provisioner_app
|
||||
limits:
|
||||
migrationConnections: 1
|
||||
runtimeConnections: 4
|
||||
statementTimeout: 5s
|
||||
migrationStatementTimeout: 30s
|
||||
idleInTransactionSessionTimeout: 15s
|
||||
serviceClass: interactive
|
||||
tenantKeyingRequired: true
|
||||
enforcement:
|
||||
rowLevelSecurity: false
|
||||
retention:
|
||||
backupRetentionDays: 30
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
# DRAFT only; no repo creation, ownership assignment or reef binding has occurred.
|
||||
kind: managed-workload-package
|
||||
repo_family: rapp
|
||||
rapp_id: rapp-identity-provisioner
|
||||
repo: rapp-identity-provisioner
|
||||
ownership_repo: net-kingdom
|
||||
contract_version: 1.0.0
|
||||
readiness_state: draft
|
||||
workload_identity:
|
||||
name: identity-provisioner
|
||||
package_type: manifest-managed-platform-service
|
||||
data_classification: restricted
|
||||
criticality: critical
|
||||
primary_rail: rail-kubernetes
|
||||
supported_rails:
|
||||
- rail-kubernetes
|
||||
bound_reefs: []
|
||||
runtime_dependencies:
|
||||
- kubernetes-api
|
||||
- lldap
|
||||
- rapp-postgres
|
||||
- railiance-platform-credential-broker
|
||||
- independent-journal-continuity-holder
|
||||
- protected-case-caller
|
||||
composition:
|
||||
purpose: Operate the independently rolled back identity-provisioner workload; domain
|
||||
implementation remains NetKingdom-owned.
|
||||
member_repos:
|
||||
- repo: net-kingdom
|
||||
role: Directory lifecycle implementation and current runtime intent
|
||||
deployables:
|
||||
- identity-provisioner
|
||||
rollout_contract:
|
||||
default_mode: kubectl-server-side-apply
|
||||
production_gate: reef-production-approved
|
||||
notes:
|
||||
- Draft ownership proposal only. Exact image, delivery, network and acceptance artifacts
|
||||
required before admission.
|
||||
smoke_contract:
|
||||
required:
|
||||
- healthz-ok
|
||||
- readyz-owner-dependencies-verified
|
||||
- wrong-case-tenant-principal-denied
|
||||
- lease-renewal-and-revocation-verified
|
||||
- independent-checkpoint-continuity
|
||||
- all-writer-barrier-survives-process-loss
|
||||
rollback_contract:
|
||||
order:
|
||||
- disable-protected-group-caller-and-retain-writer-barrier
|
||||
- reapply-previous-verified-image-with-current-journal-retained
|
||||
- attended-reconciliation-for-any-uncertain-effect
|
||||
notes:
|
||||
- Never restore SQL behind directory effects, drop journal state, or release a crash-surviving
|
||||
writer barrier automatically.
|
||||
source_documents:
|
||||
- repo: net-kingdom
|
||||
path: workplans/NK-WP-0048-security-case-types.md
|
||||
- repo: net-kingdom
|
||||
path: docs/adr/ADR-0015-netkingdom-railiance-workload-packaging-and-relational-platform.md
|
||||
- repo: railiance-master
|
||||
path: docs/adr/ADR-0007-rapp-declaration-contract.md
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
-- Generated. Login credentials are leased by OpenBao and inherit one of these group roles.
|
||||
DO $$ BEGIN CREATE ROLE "identity_provisioner_owner" NOLOGIN NOINHERIT; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN CREATE ROLE "identity_provisioner_migrate" NOLOGIN INHERIT; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN CREATE ROLE "identity_provisioner_app" NOLOGIN NOINHERIT; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
GRANT "identity_provisioner_owner" TO "identity_provisioner_migrate";
|
||||
ALTER ROLE "identity_provisioner_migrate" CONNECTION LIMIT 1;
|
||||
ALTER ROLE "identity_provisioner_app" CONNECTION LIMIT 4;
|
||||
ALTER ROLE "identity_provisioner_migrate" SET search_path = "identity_provisioner", pg_catalog;
|
||||
ALTER ROLE "identity_provisioner_app" SET search_path = "identity_provisioner", pg_catalog;
|
||||
ALTER ROLE "identity_provisioner_migrate" SET statement_timeout = '30s';
|
||||
ALTER ROLE "identity_provisioner_app" SET statement_timeout = '5s';
|
||||
ALTER ROLE "identity_provisioner_migrate" SET idle_in_transaction_session_timeout = '15s';
|
||||
ALTER ROLE "identity_provisioner_app" SET idle_in_transaction_session_timeout = '15s';
|
||||
COMMENT ON ROLE "identity_provisioner_app" IS 'cost_attribution=platform:identity-provisioner';
|
||||
|
||||
SELECT format('CREATE DATABASE %I OWNER %I', 'identity_provisioner', 'identity_provisioner_owner')
|
||||
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'identity_provisioner') \gexec
|
||||
\connect identity_provisioner
|
||||
REVOKE CONNECT ON DATABASE "identity_provisioner" FROM PUBLIC;
|
||||
GRANT CONNECT ON DATABASE "identity_provisioner" TO "identity_provisioner_migrate", "identity_provisioner_app";
|
||||
CREATE SCHEMA IF NOT EXISTS "identity_provisioner" AUTHORIZATION "identity_provisioner_owner";
|
||||
REVOKE ALL ON SCHEMA public FROM PUBLIC;
|
||||
GRANT USAGE, CREATE ON SCHEMA "identity_provisioner" TO "identity_provisioner_migrate";
|
||||
GRANT USAGE ON SCHEMA "identity_provisioner" TO "identity_provisioner_app";
|
||||
|
||||
-- Leased migration logins must not retain object ownership after revocation.
|
||||
-- Normalize any pre-existing migration-created relations, including objects
|
||||
-- made before the workload began issuing SET ROLE to the durable owner.
|
||||
DO $ownership$
|
||||
DECLARE target record;
|
||||
BEGIN
|
||||
FOR target IN
|
||||
SELECT c.relname, c.relkind
|
||||
FROM pg_class c
|
||||
JOIN pg_namespace n ON n.oid = c.relnamespace
|
||||
WHERE n.nspname = 'identity_provisioner'
|
||||
AND c.relkind IN ('r', 'p', 'S')
|
||||
AND c.relowner <> (SELECT oid FROM pg_roles WHERE rolname = 'identity_provisioner_owner')
|
||||
LOOP
|
||||
IF target.relkind = 'S' THEN
|
||||
EXECUTE format('ALTER SEQUENCE %I.%I OWNER TO %I', 'identity_provisioner', target.relname, 'identity_provisioner_owner');
|
||||
ELSE
|
||||
EXECUTE format('ALTER TABLE %I.%I OWNER TO %I', 'identity_provisioner', target.relname, 'identity_provisioner_owner');
|
||||
END IF;
|
||||
END LOOP;
|
||||
END
|
||||
$ownership$;
|
||||
|
||||
|
||||
-- Default privileges key on the role that CREATES an object, not on the schema
|
||||
-- owner. Migrations run as the migration role, so objects it creates are owned
|
||||
-- by it; declaring only FOR ROLE identity_provisioner_owner left the runtime role with no access
|
||||
-- to any table at all. Both grantors are declared. (isolation-test.sh)
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "identity_provisioner_owner" IN SCHEMA "identity_provisioner"
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "identity_provisioner_app";
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "identity_provisioner_owner" IN SCHEMA "identity_provisioner"
|
||||
GRANT USAGE, SELECT ON SEQUENCES TO "identity_provisioner_app";
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "identity_provisioner_migrate" IN SCHEMA "identity_provisioner"
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "identity_provisioner_app";
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "identity_provisioner_migrate" IN SCHEMA "identity_provisioner"
|
||||
GRANT USAGE, SELECT ON SEQUENCES TO "identity_provisioner_app";
|
||||
-- Catch objects created before this ran.
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA "identity_provisioner" TO "identity_provisioner_app";
|
||||
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA "identity_provisioner" TO "identity_provisioner_app";
|
||||
|
||||
-- Resource containment is applied to the DATABASE, not only to the group roles.
|
||||
-- OpenBao vends short-lived LOGIN roles that merely inherit a group role, and
|
||||
-- neither `ALTER ROLE ... SET` nor CONNECTION LIMIT passes through membership,
|
||||
-- so role-level limits alone leave every leased credential unbounded.
|
||||
-- Database-level settings apply to each session whichever role opens it.
|
||||
-- (isolation-test.sh)
|
||||
ALTER DATABASE "identity_provisioner" CONNECTION LIMIT 5;
|
||||
-- The database-level statement_timeout is the one every leased login actually
|
||||
-- gets; the group-role setting above does not pass through membership. Where
|
||||
-- migrationStatementTimeout differs from statementTimeout, the OpenBao
|
||||
-- migration role's creation statement must carry
|
||||
-- ALTER ROLE "{{name}}" SET statement_timeout = '30s';
|
||||
-- on the leased login role itself, or migrations inherit the runtime value.
|
||||
ALTER DATABASE "identity_provisioner" SET statement_timeout = '5s';
|
||||
ALTER DATABASE "identity_provisioner" SET idle_in_transaction_session_timeout = '15s';
|
||||
ALTER DATABASE "identity_provisioner" SET search_path = "identity_provisioner", pg_catalog;
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: Database
|
||||
metadata:
|
||||
name: identity-provisioner
|
||||
namespace: databases
|
||||
labels:
|
||||
rapp-postgres.railiance.io/consumer: identity-provisioner
|
||||
spec:
|
||||
cluster:
|
||||
name: platform-pg-2
|
||||
name: identity_provisioner
|
||||
owner: identity_provisioner_owner
|
||||
|
|
@ -0,0 +1,229 @@
|
|||
{
|
||||
"references": [
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "INTENT.md",
|
||||
"repo": "net-kingdom",
|
||||
"revision": "70f408ca2389bf3722a91a03832fc6e8587355e5",
|
||||
"sha256": "sha256:fd2ba8dff9dfd5583ec6d8b0348f273bfe00c59923b5d5d47cd22b1fb4658c54"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "docs/adr/ADR-0015-netkingdom-railiance-workload-packaging-and-relational-platform.md",
|
||||
"repo": "net-kingdom",
|
||||
"revision": "70f408ca2389bf3722a91a03832fc6e8587355e5",
|
||||
"sha256": "sha256:2000985ef211aeedd3656e15cedb289e655526c2dcc4a161a64ffc27f0289db1"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "workplans/NK-WP-0048-security-case-types.md",
|
||||
"repo": "net-kingdom",
|
||||
"revision": "70f408ca2389bf3722a91a03832fc6e8587355e5",
|
||||
"sha256": "sha256:b737bfae4802c122b21619695a169d7d082672af96314b1709860dd5aff2a60f"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "identity-provisioner/group_provenance_postgres.py",
|
||||
"repo": "net-kingdom",
|
||||
"revision": "70f408ca2389bf3722a91a03832fc6e8587355e5",
|
||||
"sha256": "sha256:2a0111e83ad7b611076a1b45634e7f698b3d2e9acc473320b4a8ba009ebd0932"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "identity-provisioner/migrations/group_journal_postgres_v1.sql",
|
||||
"repo": "net-kingdom",
|
||||
"revision": "70f408ca2389bf3722a91a03832fc6e8587355e5",
|
||||
"sha256": "sha256:3cdf82194d6f1e2dd865b0c7e7b8a14447fda8c49151148134a0d40a80fb46ac"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "identity-provisioner/server.py",
|
||||
"repo": "net-kingdom",
|
||||
"revision": "70f408ca2389bf3722a91a03832fc6e8587355e5",
|
||||
"sha256": "sha256:b61c83da6c7ce20fa2790d5bb00aeca6a91dccd133526bc559ed26562f90eb29"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "identity-provisioner/provisioner.py",
|
||||
"repo": "net-kingdom",
|
||||
"revision": "70f408ca2389bf3722a91a03832fc6e8587355e5",
|
||||
"sha256": "sha256:19d1b837cbafeeacb1aa815856cd68091e6702281d72b1d860230fa320e1725b"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "sso-mfa/k8s/identity-provisioner/deployment.yaml",
|
||||
"repo": "net-kingdom",
|
||||
"revision": "70f408ca2389bf3722a91a03832fc6e8587355e5",
|
||||
"sha256": "sha256:807878e939967c8b88dafd4746c2a321b373d9f552083a82248fa917d4d9ea73"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "sso-mfa/k8s/lldap/GROUP-MAINTENANCE.md",
|
||||
"repo": "net-kingdom",
|
||||
"revision": "70f408ca2389bf3722a91a03832fc6e8587355e5",
|
||||
"sha256": "sha256:03be1481f387d9fddbdeff550abbc2cbaa120db4105877c909acc7b3f00f8046"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "sso-mfa/k8s/lldap/ingress.yaml",
|
||||
"repo": "net-kingdom",
|
||||
"revision": "70f408ca2389bf3722a91a03832fc6e8587355e5",
|
||||
"sha256": "sha256:7cb1f0e09f22004adcdd66d617857123d08276aa685d677b0c6e81e0aabe5290"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "declarations/rapp.yaml",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:a5811e9fa994ae5815214e81440b3be2a32b58236c09ec1887c54d0a7f9f3dce"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "scripts/render_consumers.py",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:5d83e29e5ec675b3c78c0129d9e12213b624146f5883534a7e5c99aaaa057f61"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "scripts/cell_catalog.py",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:ab3d189df29d479be748175336841749db8a9fbd39d49c4936c260fb1c7df5a3"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "docs/adr/ADR-0004-platform-pg-cell-ceiling.md",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:1f1eb521f8e6690bfdf650257308a6139540a65ca65d822a8def5f7a90fde82b"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "wiki/playbooks/database-dynamic-credentials.md",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:76d27e71d4a53f724ad9626afb5dbcae30682822bff9dd55707afc4b4545329b"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "docs/platform-pg-2-runbook.md",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:177659f5f45dda6b6b609d9e11063765f344662cdd6eb74552a5ed99771b77f8"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "helm/platform-pg-2-cluster.yaml",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:06b92a76189b1a33d1eee3f5c835a3e94269ad7b040383c04e8028c2c3fe766a"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "helm/platform-pg-2-networkpolicies.yaml",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:aa058f37cfff05b20825bd70424283e4510aa1b92dfec0161753e98d865c77cb"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "helm/platform-pg-2-backup.yaml",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:2c23170a8ef019d5ae7c1e9e3203729c7988ee480f0e6ef31420ccbc70cc79d6"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "consumers/audit-core.yaml",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:a2db53f901df056546b2c028f287f8fc50486e6e6cd81026b9e926b6b64272b3"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "consumers/canned-prompts.yaml",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:97d4b439cec7e788b7c1fa2c7181c2606ed098dcf37a38c1f73f7393e6046429"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "consumers/core-hub.yaml",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:8fe3e8b4488548b2f5e01f1d46edd9fd5fe4f0e4f65a3821f172adbfb5ae1d84"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "consumers/isolation-probe.yaml",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:8ea24d3bd04ab683b47ceff2586932ea4fdb0d45c49896167bb5b352a67a5cfb"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "consumers/sbom-nexus.yaml",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:0b21d05fe7b9d21cbc9eb761f455329739ceb71f8dd3d1200971426962c11236"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "consumers/tenant-engine.yaml",
|
||||
"repo": "rapp-postgres",
|
||||
"revision": "a9f569c96d74aa384ac8d3ac4aa960e4061550b5",
|
||||
"sha256": "sha256:92f36d587f001c86ff401aedd25cb49fa171d49e000b0a6ab551e182e5c11448"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "docs/rapp-postgres-boundary.md",
|
||||
"repo": "railiance-platform",
|
||||
"revision": "08c1f036f2750097750f435efd76e8f6ee6df393",
|
||||
"sha256": "sha256:6d80877d2eb7cef79a11f1d8ee40e8bb7fabdbdd122494a7aaa39b6d931e610d"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "credential-grants/catalog.yaml",
|
||||
"repo": "railiance-platform",
|
||||
"revision": "08c1f036f2750097750f435efd76e8f6ee6df393",
|
||||
"sha256": "sha256:cb70165f80c58245d4231b4e712a4b322c51a6b168513dc839ad4c0234027047"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "bindings/rapps.yaml",
|
||||
"repo": "reef-railiance",
|
||||
"revision": "33b840faac109f134bf1115d631d5b1242052d9a",
|
||||
"sha256": "sha256:796007c68f0eda1d50cebddf9e11a2c123a8814ebaf67f739ed5d2af2d6fa3f1"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "schemas/rapp.schema.json",
|
||||
"repo": "railiance-master",
|
||||
"revision": "a0be0d3142b5392f1fb6271cf91325ce91a0f9d4",
|
||||
"sha256": "sha256:46c86e8fd391de5e4287dc7053e3d905ca87b5c4a68cd21c76b40cddd26c3ecd"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "workplans/RMASTER-WP-0025-universal-rapp-workload-coverage.md",
|
||||
"repo": "railiance-master",
|
||||
"revision": "a0be0d3142b5392f1fb6271cf91325ce91a0f9d4",
|
||||
"sha256": "sha256:e56bfcc1377ca4930f89d606c6d6fabbc1309e8f202ac7ff15e22e5d88c2b0ea"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "declarations/rapp.yaml",
|
||||
"repo": "rapp-user-engine",
|
||||
"revision": "a42c68f8701880bfeb93e28dd812fcf3691568a3",
|
||||
"sha256": "sha256:3d03ba72e6048269c4ab8a1ec6c8bbc4502e2d306941a83d982f748a4f300252"
|
||||
},
|
||||
{
|
||||
"matches_head": true,
|
||||
"path": "bindings/reef-railiance.yaml",
|
||||
"repo": "rapp-user-engine",
|
||||
"revision": "a42c68f8701880bfeb93e28dd812fcf3691568a3",
|
||||
"sha256": "sha256:97950e49d48577675a0b2aad7f4b143c57acbfb14fdc09d74ecc1b0329ce17ad"
|
||||
}
|
||||
],
|
||||
"scope": "public local Git source bytes; no live readiness or owner approval"
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"candidate_cell": "platform-pg-2",
|
||||
"candidate_role_connection_limit": 5,
|
||||
"credential_pool_proposal": {
|
||||
"migration": 1,
|
||||
"overlap_runtime_maximum": 4,
|
||||
"steady_runtime": 2
|
||||
},
|
||||
"current_catalog": {
|
||||
"platform-pg": [
|
||||
"audit-core",
|
||||
"core-hub",
|
||||
"isolation-probe",
|
||||
"tenant-engine"
|
||||
],
|
||||
"platform-pg-2": [
|
||||
"canned-prompts",
|
||||
"sbom-nexus"
|
||||
]
|
||||
},
|
||||
"existing_matching_deployable_members": [],
|
||||
"first_cell_fifth_declaration_refusal": "platform-pg: 5 declarations exceeds the 4-consumer ceiling; place overflow on platform-pg-2 or another reviewed cluster",
|
||||
"full_catalog_plus_candidate_capacity": "passed",
|
||||
"knowledge": {
|
||||
"digest": "sha256:8d1d6a9d4d07fec7b619618de7dfe2be2254c1790f85f4198c7fe19db9751c02",
|
||||
"local_work_status": "withheld; changed Custodian orientation read directly; no effect authorization",
|
||||
"version": "0.2.6"
|
||||
},
|
||||
"package_declarations_inspected": 14,
|
||||
"package_normative_json_schema": "passed",
|
||||
"runtime_authorization": false,
|
||||
"scope": "read-only source and inert draft render; no DB, lease, native mutation or acceptance"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue