Commit Graph
12 Commits
Author SHA1 Message Date
Rene Nochebuena 07acea7352 release: v1.7.1 (coordinated lockstep bump) v1.7.1 2026-08-18 18:43:07 -06:00
Rene Nochebuena 3d190dc6aa release: v1.7.0 (coordinated lockstep bump) v1.7.0 2026-08-18 17:54:47 -06:00
Rene Nochebuena 5da9ddc684 release: v1.6.0 (coordinated lockstep bump) v1.6.0 2026-08-13 23:10:05 -06:00
Rene Nochebuena 2be7334e58 chore(contracts): framework version alignment to v1.5.0 v1.5.0 2026-08-12 17:54:31 -06:00
Rene Nochebuena 3b46784f16 chore(contracts): dependency refresh; framework version alignment to v1.4.0 v1.4.0 2026-08-12 15:26:06 -06:00
Rene Nochebuena 73ae321c2f chore(contracts): framework version alignment to v1.3.0 v1.3.0 2026-08-08 10:46:40 -06:00
Rene Nochebuena 3e3e789cf4 chore(contracts): framework version alignment to v1.2.0 v1.2.0 2026-08-08 02:21:45 -06:00
Rene Nochebuena edde312353 chore(contracts): framework version alignment to v1.1.3 v1.1.3 2026-08-08 01:25:54 -06:00
Rene Nochebuena 21b22b6157 chore(contracts): framework version alignment to v1.1.2 v1.1.2 2026-08-08 00:41:38 -06:00
Rene Nochebuena abe48e9a2a chore(contracts): framework version alignment to v1.1.1 v1.1.1 2026-08-07 23:30:24 -06:00
Rene Nochebuena 8710f99b3f feat(contracts): release SecurityBag; anchor framework at v1.1.0 (#1)
Releases the SecurityBag request-scoped security context (drafted in the
CHANGELOG since 2026-05-28) and anchors the coordinated framework release at
v1.1.0 — the einherjar modules move to v1.1.0 in lockstep.

security:
- SecurityBag value type + NewSecurityBag, Identity/WithIdentity,
  Get/With, SetBagInContext (immutable; copy-on-write attributes).

No einherjar dependencies. Badge bumped to v1.1.0.

Reviewed-on: #1
Co-authored-by: Rene Nochebuena Guerrero <rene@nochebuena.dev>
Co-committed-by: Rene Nochebuena Guerrero <rene@nochebuena.dev>
v1.1.0
2026-08-07 18:24:11 -06:00
Rene Nochebuena 098a2098f8 feat(contracts): initial implementation (v1.0.0)
Introduces code.nochebuena.dev/einherjar/contracts — the zero-dependency
foundation of the Einherjar framework. Defines the interfaces and minimal
types consumed by every starter. Zero external dependencies. Zero Einherjar
dependencies. Nothing is above it in the dependency graph.

lifecycle:
- Component — OnInit, OnStart, OnStop three-phase lifecycle hooks

observability:
- Level (LevelCritical=0, LevelDegraded); zero value is the safe default
- Checkable — HealthCheck, Name, Priority
- Identifiable — ModulePath, ModuleVersion; implemented by all starters to
  surface module identity and version in the startup banner

logging:
- Logger — Debug, Info, Warn, Error, With, WithContext

errs:
- CodedError — ErrorCode() string; satisfied by core/xerrors.Err
- ContextualError — ErrorContext() map[string]any; satisfied by core/xerrors.Err

security:
- Identity value type — UID, TenantID, DisplayName, Email; NewIdentity, WithTenant
- Permission (int64), MaxPermission=62, PermissionMask — Has, Grant
- PermissionProvider — ResolveMask(ctx, uid, resource) (PermissionMask, error)
- SecurityBag value type — immutable request-scoped security context; carries
  Identity and arbitrary typed attributes (hardware IDs, grant codes, etc.);
  With copies the attribute map on every call to preserve receiver-invariant behaviour
- NewSecurityBag, Identity, WithIdentity, Get, With
- SetBagInContext / BagFromContext — full bag context storage
- SetInContext / FromContext — backed by SecurityBag; all four cross-function
  combinations (SetInContext+BagFromContext, SetBagInContext+FromContext) are valid

One file per type; CT-6 enforced by compliance test AST walk.
v1.0.0
2026-05-29 15:43:08 +00:00