Commit graph

52 commits

Author SHA1 Message Date
96266b9371 Resume user-engine integration rollout
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-13 14:56:53 +02:00
1bb7bce99b ADR-0015: NetKingdom Railiance packaging and relational platform
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Settles two questions raised by bringing NetKingdom under Railiance
governance:

1. Separate rapp-* repos per engine (rapp-tenant-engine, rapp-user-engine),
   following repository-axes.md's one-workload rule. The decisive property is
   independent rollback -- a single rapp would need one rollback contract
   across independently versioned services. secrets-engine is not packaged as
   a rapp: it has no deployed workload.

2. CloudNative PG via rapp-postgres is the default relational platform for
   production. Per-workload SQLite-on-a-PVC is dev/test only, and
   rail-kubernetes wave-1 does not support the persistent-storage contract it
   depends on. tenant-engine migrates; its TenantStore Protocol makes this a
   backend swap behind an existing seam.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 14:46:33 +02:00
0e3a24d888 Deploy KeyCape client MFA override for coulomb-social
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Register coulomb-social with mfaRequired: false, roll key-cape image that
honors client policy, and track NK-WP-0025 public registration orchestration.
2026-08-09 22:42:51 +02:00
29ae3e70c6 Activate expanded portal integration gate
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-09 02:00:58 +02:00
39b71d6d96 Complete user-engine runtime custody
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-30 00:40:43 +02:00
f854969a01 Move portal workloads to registry digests
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-30 00:25:16 +02:00
52b57c99f7 Add user-engine backup and rollback verification
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-30 00:00:14 +02:00
12ac63f32c Deploy identity drift reconciliation
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-29 23:41:42 +02:00
487012e961 Complete identity seams and email login
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-29 23:14:09 +02:00
a58df4c3e6 Advance pre-cutover identity conformance
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-28 16:48:47 +02:00
43045cbaf5 Verify railiance01 identity dependencies
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-28 12:59:12 +02:00
9497529ed2 Reconcile identity state onto railiance01
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-28 12:11:45 +02:00
f0bbd0bfce Complete CoulombCore identity backup gate
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-28 09:26:16 +02:00
ae986c723a Record CoulombCore cutover inventory
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-28 02:52:14 +02:00
9d1ae01b75 Define user-engine portal integration boundary
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
2026-07-27 22:48:58 +02:00
9026d7f904 ADR-0014 + tenant-engine boundary contract + IAM Profile v0.3
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 5s
Ratifies the tenant capability-role model (PLTF/IAM/VEN/CUS, non-exclusive,
independent of ADR-0013's grouping axis), a hybrid carrying mechanism
(tenant-engine authoritative, key-cape caches a tenant_roles claim at
issuance, flex-auth re-validates live for aal2-class decisions), and
tenant-engine as a new, separate service owning tenant existence, grouping,
capability roles, and plan/subscription assignment -- not a module inside
user-engine, whose own boundary contract already scopes it to consuming
tenant identifiers, not owning them.

canon/standards/tenant-engine-boundary-contract_v0.1.md defines that
ownership boundary before the repo exists, mirroring how
user-engine-boundary-contract_v0.1.md was sequenced.

canon/standards/iam-profile_v0.3.md (minor version per ADR-0011's own
governance -- optional claim addition, no breaking change) adds the
tenant_roles claim, folds in ADR-0013's tenant-identifier vocabulary, and
documents the live-revalidation requirement. docs/platform-identity-
security-architecture.md's Tenant Model section and SCOPE.md's canonical
spec pointer updated to match; other historical citations of v0.2 left as
version-pinned references, not bulk-updated.

Records Bernd's trial-tenant policy: trial-grouped tenants may hold any
capability role (showcase/test/explore), with safety enforced through
tenant-engine-owned resource guardrails (spend limits, entity/action
counts) rather than role gating -- guardrail design is reserved, explicitly
not specified by this change.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 21:45:37 +02:00
a18f83c4af ADR-0013: tenant onboarding grouping taxonomy, orthogonal to capability role
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 4s
Replaces the sandbox/customer suggested tenant identifiers in
iam-profile_v0.2.md's Tenant Claim section with an onboarding-risk/
entity-shape grouping (trial, friendly, single, small, medium, large,
enterprise, consumer, family, community, association, agentic) that stays
orthogonal to the separate, still-unratified capability-role model
(PLTF/IAM/VEN/CUS) a tenant can also hold. Role words as a grouping would
collide the moment a tenant's roles evolve -- Binky Hedgehog GmbH is CUS
now and VEN later, so tenant:customer:binky was already the wrong shape.

First application: tenant:friendly:binky
(key-cape/workplans/KEY-WP-0004-binky-hedgehog-tenant-onboarding.md).
tenant:platform and tenant:coulomb proposed as reserved/ungrouped, flagged
for explicit confirmation. Classified as an editorial change per ADR-0011's
governance (no required-claim schema change) -- the iam-profile_v0.2.md
Tenant Claim section edit itself is tracked as a follow-up, not bundled here.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 16:01:55 +02:00
3580e43e5f Add NK-WP-0021 for activity-core ops SSO least-privilege.
Promote NK-IN-0001/0002 after scope/intent review into a single ready
workplan (LLDAP operator group, membership runbook, Authelia domain rules,
live verification). Hub workstream and tasks registered via fix-consistency.
2026-07-22 15:21:22 +02:00
fab1f371e1 Add routed intakes NK-IN-0001/0002 for activity-core SSO operators.
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 9s
ACTIVITY-WP-0025 residual T06: LLDAP group activity-core-operators and
Authelia domain rules for activity/temporal.coulomb.social. File-backed
work records registered in State Hub (C-32).
2026-07-22 10:47:25 +02:00
85a781b7a4 NET-WP-0020 finished: attended-ceremony + auto-unseal-transit profiles, greenfield init/unseal proof
T2: greenfield live proof against a fresh uninitialized OpenBao 2.5.5 —
caught and fixed 'bao operator unseal -' not reading stdin (now
'bao write sys/unseal key=-'); init and reseal-replay paths proven.
T3: attended-ceremony selectable — runbook, non-secret ceremony-record
template + validator, and a lab/production deployment profile that blocks
sops-held-automation in console selection, gates, and the init script.
T4: console gate + evidence flags for auto-unseal-transit (Helm seal stanza
prepared in railiance-platform).
Also: SCOPE.md refreshed to current repo state; adhoc fix for the broken
check-secrets Make target (unescaped $).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 22:08:33 +02:00
60142241a3 NET-WP-0020-T02: SOPS-held OpenBao init/unseal automation helper
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 11:01:34 +02:00
9a7d10f840 Repo hygiene: fill stack-and-commands, normalize workplan statuses
- Fill .claude/rules/stack-and-commands.md (was an empty TODO template)
- Normalize workplan frontmatter statuses to canonical vocabulary
  (completed/done -> finished) per ADR-001
- Repair glued frontmatter delimiter in NK-WP-0001 (superseded_by line)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 00:21:49 +02:00
efbdab4652 feat(keycape): add netkingdom OIDC mount and bao.coulomb.social callbacks
Configure OpenBao auth for both netkingdom and keycape mounts with browser
redirect URIs; update verify scripts and runtime architecture notes.
2026-06-18 01:23:02 +02:00
f625dd0681 feat: OpenBao unseal custody models — automation-first with blocked alternatives
Document three init/unseal custody paths; default sops-held-automation for
fast rebuild cycles. Security bootstrap console lists models, blocks planned
attended-ceremony and auto-unseal-transit with hints, and gates init ceremony
on implemented selection. NET-WP-0020 tracks downstream SSH automation.
2026-06-18 00:51:48 +02:00
da9debf431 docs: recognize ops-warden operational SSH credential lane
Add Operational SSH Path to platform architecture and move ops-warden
from out-of-scope to operational SSH dependency in responsibility-map.
Aligns with ops-warden WARDEN-WP-0006 stewardship work.
2026-06-17 08:22:45 +02:00
3ab326b597 Clarifications on sops 2026-06-14 19:51:05 +02:00
4a99f8245d NET-WP-0018 T09: cross-ref completion in smooth-bootstrap-guide.md Step 8 (now points to new risk/rehearsal doc) 2026-06-04 00:52:01 +02:00
875e50d573 NET-WP-0018 T09: Assess scratch-rebuild risk and define rehearsal plan
- Created docs/security-bootstrap-rebuild-risk-and-rehearsal.md (risk table 12+ items classified likelihood/impact/etc; UE adapters #1 HIGH per assessment 7 gaps; non-destructive rehearsal plan: scripted dry (creds-init --dry + 0019 orchestrator + make/console validate + T07/T08) then ns-isolated then parallel; rollback via cleanup/lock-offboard; prove via validators/evidence/status/tests; recs + coverage gaps documented; refs T02/T03/T05/T07/T08/0019/assessment/contract)
- Updated workplan T09 status:done + detailed 2026-06-04 completion note (reviews all prior T0x + live console/evidence/metadata exercised in T09; pragmatic infra used; 9/9 closes 0018)
- Frontmatter updated date
- No destructive; all per session protocol + pragmatic audit (file source per ADR-001)
- T07 tests + T08 validate-keycape + validate-onboarding-dry-run exercised OK as part of review

Refs: workstream 800f9f16-..., task a9e60fd5-...; will POST /progress/ + fix-consistency
2026-06-04 00:50:18 +02:00
7da19ef767 feat(NET-WP-0018-T05): complete smooth bootstrap guide
- Created docs/smooth-bootstrap-guide.md as the single consolidated operator guide per T05 spec + T03 recs:
  - Full sequence (prereqs, creds/king, privacyIDEA, LLDAP/user + MFA, KeyCape, OpenBao, lifecycle via 0019, reopen, handoff)
  - Per-step evidence requirements + links to validate-*, 0019 dry-run, console subcmds/make
  - Blocked conditions, next safe action, effective preview, actor classes
  - References T02 runtime arch, T03 retrospective/matrix, console lifecycle-guide (incl. 0019), UX contracts, evidence templates
  - Pragmatic note + update pointers for console guide
- Updated workplan T05 to done + completion note
- Pragmatic: progress (task_id), file notes, this commit
- Brief/fix next (expect 4/9 done: T02-T03 + T05; T04 medium can follow or parallel)

T05 complete. T06 (align control surface) next logical (uses this guide + T02/T03).
2026-06-03 16:56:10 +02:00
3466c431dd feat(NET-WP-0018-T03): initial retrospective + gap matrix (substantial draft)
- Created docs/security-bootstrap-retrospective.md:
  - Exec summary (wins: S6, console/0019 automation, evidence discipline, T02 arch doc; gaps: UE adapters, consolidated guide, tests, proper audit)
  - 9 bumps with diagnosis/now-automated?/remaining (realm, OIDC callbacks, LLDAP claims, OpenBao mapping, tokens, operator-state, secret taint pre-0019, audit correlation, etc.)
  - Full gap matrix table (areas, current status incl. 0019/T02, remaining, priorities)
  - Recommendations (T05 consolidate guide, T07/T08 use 0019+T02 as fixtures, T09 classify UE risk, continue pragmatic)
  - Refs to T02 doc, 0017/0019 evidence, console, assessment gap 7, pragmatic records
- Updated workplan T03 with progress note (still in_progress for expansion)
- Pragmatic tracking: progress events (with task), file notes, commit
- Builds directly on T02 + prior 0017/0019 + Coordination pragmatic guidance

Feeds T05/T06/T08/T09. Next tasks can reference this + T02.
2026-06-03 16:31:08 +02:00
d09843c17e feat(NET-WP-0018-T02): Document The Runtime Architecture
- Created docs/NetkingdomRuntimeArchitecture.md (comprehensive, specific-as-deployed):
  - Planes (bootstrap/control/tenant + recursive trust)
  - Identity/MFA/OIDC (lightweight key-cape: LLDAP/Authelia/privacyIDEA + KeyCape https://kc.coulomb.social; clients, claims, groups)
  - Authelia handoff, OpenBao OIDC+secrets path (SOPS/age -> runtime leases/K8s/audit)
  - Bootstrap console/UI state (S6, gates, 0019 dry-run additions, web-ui, evidence)
  - State Hub relation, k8s/DNS/routes/ingress/trust (concrete hosts/ns)
  - Pragmatic audit paths (local-identity TSV, PVC+mock, State Hub/console)
  - UE integration points + 7 gaps (per assessment + boundary contract refs)
  - Operational assumptions + rebuild notes
- Updated NET-WP-0018 workplan: T02 status done + detailed 2026-06-03 completion note
- Used pragmatic tracking throughout (progress events with task_id 121ee797..., file notes, this commit)
- Per T02 spec + Coordination Notes guidance on pragmatic for impl/retrospect

This doc is now the baseline for T03 retrospective/gap matrix (incl. audit), T05 guide, T06/T08 control surface/validations, T09 risk assessment.
2026-06-03 16:27:22 +02:00
1721226427 docs: persist user-engine vs net-kingdom integration assessment (new doc + cross-references in SCOPE, boundary contract, guidance, responsibility map, 0018/0019 workplans). Also updated user-engine integration doc to reference it. 2026-06-03 10:33:31 +02:00
20fd300e88 Exploring multi tenancy 2026-05-25 21:47:40 +02:00
e45dd4f9eb Guide OpenBao custody ceremony order 2026-05-25 02:02:14 +02:00
d555a33695 bootstrapping guidance ui and missing stuff 2026-05-24 17:04:15 +02:00
1d0b0e7330 openbao king credential bootstrapping 2026-05-24 09:26:02 +02:00
97423c6110 Complete user-engine boundary contracts 2026-05-22 22:26:36 +02:00
c8e2b142db Split user-engine implementation planning 2026-05-22 19:50:12 +02:00
28da204cf2 Add user-engine architecture workplans 2026-05-22 19:28:00 +02:00
8e720dd78a Implement NK-WP-0013 playbook capability contract 2026-05-22 14:49:25 +02:00
c3f721397a Implement NK-WP-0012 IAM profile specification 2026-05-22 14:35:31 +02:00
84e9a56f6c Add responsibility map; link from ADR-0010
Create docs/responsibility-map.md: the single home for NetKingdom's
orchestration relationships, kept out of the orchestrated repos' intents
per ADR-0010. Records the classification criterion, the current
minimal-foundation scope, and per orchestrated repo (railiance-infra,
railiance-cluster, railiance-platform, key-cape, flex-auth) the resources
held, what the repo owns (execution), and what NetKingdom orchestrates
(meta). Lists dependencies and out-of-scope repos so the scoping decision
is explicit and revisitable.

Update ADR-0010 to point at the now-created map.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 02:05:37 +02:00
6973440b3c Add ADR-0010: orchestration vs dependency, self-coherent intent
Record two foundational principles that emerged while aligning ecosystem
INTENT.md files:

1. Orchestration != dependency. NetKingdom orchestrates a repo when that
   repo holds resources NetKingdom must manage (users, roles, scopes,
   policies, infra resources). It depends on a repo when it merely uses it
   as a tool. Defining question: does the repo hold resources NetKingdom
   needs to orchestrate? (railiance-fabric = dependency;
   railiance-infra/cluster/platform = orchestrated.)
2. Intent is self-coherent. A repo's INTENT.md describes its own purpose
   abstractly; it must not reference NetKingdom, sister projects' intents,
   or even dependencies. Relationships live in the responsibility map /
   ADRs / interface contracts, not in intent.

Rejects the earlier "place in the NetKingdom landscape" block idea as a
Principle 2 violation.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 01:26:31 +02:00
88a30e3c0a Add meta-orchestration layer to ADR-0007; deepen NetKingdom INTENT
- ADR-0007: refine (not overturn) the orchestration boundary with the
  two-layer model — Railiance executes parametrized playbooks, NetKingdom
  does meta-orchestration (scenario->playbook selection, parametrization,
  responsibility map). Add the playbook/capability-contract dependency as
  the prerequisite, analogous to the IAM Profile.
- INTENT.md: add "Why NetKingdom" (the kingdom metaphor: governed,
  defended, living/evolving, tended by its people); Principle 7
  (Meta-Orchestration over Re-Implementation); an Operating Model section
  (kaizen-agent workforce for recurring duties + change/improvement); and
  matching Direction-of-Evolution entries.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 01:00:39 +02:00
1bff863143 Frame NetKingdom as capability-driven turn-key IT-sec framework
Make the lightweight->expanded decision explicitly capability-driven (not
scale-driven) and capture the turn-key, capability-selectable framework
ambition.

- arch doc: add capability-driven rationale to the identity-mode choice;
  add a "Capability Progression (Start Small -> Enterprise)" ladder
  (C0 bootstrap -> C6 self-optimizing), including the C2a/C2b 2FA split
  (Authelia built-in vs privacyIDEA); answer the lightweight/expanded
  open question as capability-driven
- INTENT.md: recast Progressive Expansion as capability-driven with a
  no-structural-breaks guarantee; add capability-selection + turn-key
  orchestration to the mission and identity

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 00:35:12 +02:00
7b211acd57 Add OpenBao runtime secret authority; complete NK-WP-0006/0007/0008
Refine the recursive platform security architecture to make OpenBao the
canonical runtime secret authority, with SOPS/age, K8s Secrets, and the
emergency bundle reframed as bootstrap/delivery/break-glass mechanisms.

- credential-management standard v0.2: add OpenBao runtime authority
  section, rotation rules, and prohibited patterns (OpenBao-as-PDP,
  tenant platform-root)
- platform-identity-security-architecture: mark implemented; add
  flex-auth/Topaz implications, Coulomb onboarding path, and a
  production-readiness checklist
- NK-WP-0004/0005: document bootstrap-to-OpenBao handoff boundary
- NK-WP-0006/0007: status -> done with implementation reviews; add
  recursive platform/tenant split and OpenBao broker/audit role for
  object-storage STS vending
- NK-WP-0008: status -> done; repoint corpus to infospace-bench
- new ADR-0007 (orchestration boundary), ADR-0008 (STS vending
  boundary), and the object-storage STS credential-vending architecture

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 22:51:20 +02:00
8910aae655 Improved documentation 2026-05-17 22:36:31 +02:00
64a112f70c Document recursive platform security architecture 2026-05-17 12:18:29 +02:00
576cf0d95b Local Identity OICD bootstrap 2026-05-02 16:58:44 +02:00
e7bafd69fc feat(local-identity): Stage 4 — security hardening (NK-WP-0002-T04)
Permission enforcement on startup: enforce_permissions() checks store dir
(700), user files (600), signing key, TLS key, audit.log, revoked.json.
CLI and run_server() call it before any sensitive operation.

New modules:
  security.py  check_store(), enforce_permissions(), print_security_check()
  audit.py     log_event() — append-only TSV audit log (mode 600)
  revoke.py    revoke(jti), is_revoked(jti) — revocation list (mode 600)

New CLI commands:
  security-check          Print per-check pass/warn/fail report; exit 1 on failure
  revoke-token <jti|jwt>  Add JTI to revocation list; accepts raw JTI or full JWT

Serve integration:
  Audit log written for auth request, token issuance, and userinfo calls
  Revocation checked at /userinfo; revoked tokens return 401

Docs: security model section in LocalIdentity.md — threat model,
assumptions, non-guarantees, SELinux/AppArmor guidance, revocation usage.

138 tests passing (34 new for Stage 4).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 08:06:56 +01:00