Commit Graph

1268 Commits

Author SHA1 Message Date
master
c7be3170be feat(cli): align setup + integrations commands with persistent wizard
Rework SetupCommandHandler to talk to the new persistent setup wizard
endpoints (list/resume sessions, run individual steps, surface real
apply state) instead of the previous optimistic session flow, and add
BackendOperationsClient + SetupModels to encapsulate the on-wire
contracts. Add IntegrationsCommandGroup so the CLI can exercise the
same integration onboarding surfaces the UI now uses.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 07:56:01 +03:00
master
78afc39d2d feat(integrations): secret authority service for UI-driven secret staging
Add SecretAuthorityService + endpoints so the setup wizard and
integrations hub can stage secret bundles and bind authref URIs
directly from the UI, instead of requiring out-of-band Vault seeding.
Wire the new service behind IntegrationPolicies, expose
SecretAuthorityDtos on the contracts library, and register an
UpsertSecretBundle audit action for the emission library.

Closes BOOTSTRAP-006 from SPRINT_20260413_004.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 07:55:49 +03:00
master
cadfe10fcc feat(release-orchestrator): environment endpoints + deployment compat store
Add ReleaseOrchestratorEnvironmentEndpoints so the Platform setup wizard
can provision environments and targets against a real orchestrator
instead of in-process stubs. Add PostgresDeploymentCompatibilityStore
and migration 002_deployments.sql to persist deployment compatibility
state, plus ReleaseEnvironmentIdentityAccessor for identity envelope
propagation on env/script endpoints.

Extend Target / TargetConnectionConfig serialization to cover new API
enum values and add integration tests for persistence and
infrastructure registration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 07:55:35 +03:00
master
eefafdf152 feat(platform): persistent setup sessions + remote orchestrator clients
Replace the in-memory setup-wizard store with a Postgres-backed store
(migration 063_PlatformSetupSessions) so setup progress survives
service restarts and can be resumed truthfully. Split step semantics
into draft/provision/apply with real per-step validation instead of
optimistic pass results, and let Finalize mark setup complete only
after required steps have converged.

Add RemoteReleaseOrchestratorEnvironmentClient and
RemoteReleaseOrchestratorScriptService so the Platform WebService can
delegate environment and script provisioning to the ReleaseOrchestrator
service over HTTP with identity envelopes, instead of in-process stubs.
New integration tests cover resume, restart persistence, failed apply,
and finalize semantics, plus the remote clients.

Closes BOOTSTRAP-002 through BOOTSTRAP-005 from SPRINT_20260413_004.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 07:55:15 +03:00
master
685cc3b6a1 fix(gateway): route /api/v1/setup prefix to platform microservice
The exact-path rule for /api/v1/setup matched only the bare path, so
sub-paths like /api/v1/setup/sessions fell through to the generic
/api/v1/{svc}/* rule and the gateway tried to dispatch to a synthetic
"setup" microservice. Swap the exact route for a prefix-aware route
that sends /api/v1/setup* to platform, add integration/smoke coverage,
and refresh the local frontdoor config accordingly.

Closes BOOTSTRAP-001 from SPRINT_20260413_004.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 07:54:46 +03:00
master
44a253d485 feat(web): integration-hub + wizard wiring for local-setup flow
Integration hub: extends integration.models with fields needed by the wizard
(capabilities, credentials, readiness), updates the shell and list components,
adds routing for the new hub flow, and broadens the integration-list spec.

Integration wizard: new integrations-hub.component, extended wizard with
capability/credential handling, updated template + type models, and broader
spec coverage.

Sprint docs: SPRINT_20260413_003 (UI-driven local setup rerun) updated with
wiring notes; SPRINT_20260410_001 (no-mocks) adjusted. ReleaseOrchestrator
architecture doc gets a minor clarification.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 22:15:08 +03:00
master
852c4d15fe docs(implplan): sync sprint statuses with real repo state
- SPRINT_20260408_005_Audit_endpoint_filters_deprecation: FILTER-004, -006,
  -008 marked DONE with commit 54e7f871a; FILTER-005, -007 DONE with
  d4d75200c; FILTER-010 DONE with 665bd6db4. DEPRECATE-001/002/003 still
  TODO with mandatory 30-day + 90-day wait windows; CAPSULE-001 stays
  BLOCKED. Sprint cannot be archived until the verification windows pass.

- SPRINT_20260408_002_Findings_vulnexplorer_ledger_merge: corrected VXLM-003
  and VXLM-004 from DONE → DOING. Adapters still back VEX decisions,
  fix verifications, and audit bundles with ConcurrentDictionary; the
  VulnExplorer.Api and VulnExplorer.WebService project directories were not
  deleted; migration 010 is present but unused. Execution log records the
  finding; commit 414049ef8 message was misleading.

- SPRINT_20260408_004_Timeline_unified_audit_sink: scope confirmation logged.
  AUDIT-002 through AUDIT-007 remain TODO (~15–25 hr breadth work); too
  large for a single session. Sprint stays active.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 22:14:53 +03:00
master
62d865080d feat(scheduler): wire startup migrations, dedupe 007/008, fix UI trend path
TASK-013: SchedulerPersistenceExtensions now calls AddStartupMigrations so
the embedded SQL files (including 007 job_kind + 008 doctor_trends) run on
every cold start. Deletes duplicate migrations 007_add_job_kind_plugin_config
(kept 007_add_schedule_job_kind.sql with tenant-scoped index) and
008_doctor_trends_table (kept 008_add_doctor_trends.sql with RLS + BRIN
time-series index).

TASK-010: Doctor UI trend service now calls
/api/v1/scheduler/doctor/trends/categories/{category} (was
/api/v1/doctor/scheduler/...) so it routes through the scheduler plugin
endpoints rather than the deprecated standalone doctor-scheduler path.

TASK-009: New DoctorJobPluginTests exercises plugin lifecycle: identity,
config validation for full/quick/categories/plugins modes, plan creation,
JSON schema shape, and PluginConfig round-trip (including alerts). 10 tests
added, all pass (26/26 in Plugin.Tests project).

Archives the sprint — all 13 tasks now DONE — and archives the platform
retest sprint (SPRINT_20260409_002) whose RETEST-008 completed via the
earlier feed-mirror cleanup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 22:14:30 +03:00
master
0b09298a3a feat(platform): add ReleaseOrchestratorScriptService compatibility shim
Platform: new ReleaseOrchestratorScriptService translates the Platform-level
script API surface into calls against the ReleaseOrchestrator scripts module
so clients that still target /api/scripts on Platform continue to work during
the transition. Program.cs wires the shim. ScriptApiModels gets a minor
contract alignment.

ReleaseOrchestrator: ScriptsEndpoints + ScriptRegistry + ScriptModels updated
to expose and persist script variables correctly. New integration test
(ScriptRegistryVariablePersistenceTests) covers the persistence round-trip;
new unit test (ReleaseOrchestratorScriptServiceTests) covers the Platform
shim behavior.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 22:00:32 +03:00
master
d4fee74b53 chore: gitignore tooling state, temp workspaces, runtime artifacts
Ignore Claude Code scheduler lockfile, Codex temp directory, Playwright CLI
cache, Concelier runtime export outputs, and Workflow plugin binary artifacts
so they don't show up as untracked on a clean workspace.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 22:00:15 +03:00
master
52d1512e7e chore(web): refresh playwright mirror-operator-journey fixtures
Updated auth state, report JSON, and screenshot snapshots captured from
the latest live-stack run of the mirror operator journey and front-door
auth flows. Includes tmp-feedmirror-auth/state fixtures used by the
feed-mirror UI verification path.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:59:38 +03:00
master
1fe59beacb docs(implplan): sprint log updates for scheduler plugin, retest, no-mocks
- SPRINT_20260408_003_JobEngine: TASK-013 added for scheduler persistence
  auto-migrations + dedupe 007/008 migrations; execution log notes the
  2026-04-13 QA finding and trend-endpoint fix (commit 337aa5802).
- SPRINT_20260409_002_Platform + SPRINT_20260410_001_Web_runtime_no_mocks:
  log updates reflecting current state of ongoing work.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:59:26 +03:00
master
a19987979d feat(devops): local GitLab secret bootstrap + integration registration scripts
Adds PowerShell helpers to seed the local Stella Ops stack with a working
GitLab + integrations configuration:
- bootstrap-local-gitlab-secrets.ps1 provisions GitLab's JWT signing secret
  and admin PAT into Vault/Authority.
- register-local-integrations.ps1 POSTs the canonical integration records
  (GitLab, Jenkins, Harbor, Gitea, Nexus, etc.) against the Integrations
  service for first-run local environments.

Docs: INSTALL_GUIDE.md + integrations/LOCAL_SERVICES.md document the new
helpers. devops/compose README and router-gateway-local.json get the
corresponding route wiring. Two new sprint files track the follow-on work
(SPRINT_20260413_002, SPRINT_20260413_003).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:59:13 +03:00
master
71dd1efc34 refactor(web): remove runtime mock clients and seeded feed-mirror fallbacks
Deletes the Angular seed client and trims feed-mirror.client.ts of its
fabricated responses (-579 lines), letting the real backend drive the UI.
app.config.ts drops the mock provider bindings. Simplifies usage settings
page to read from real platform data. Setup wizard, command palette, and
keyboard-shortcuts components get small cleanups along with the
mirror-dashboard search model trim.

Closes NOMOCK-002.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:58:56 +03:00
master
27e1cc84cc feat(platform,authority): expand local hostname aliases + identity accessor
Platform: extends ReleaseOrchestratorCompatibilityIdentityAccessor to pass
tenant-aware identity through the compatibility shim and updates Program.cs
wiring accordingly. Authority: StellaOpsLocalHostnameExtensions emits more
service aliases (scheduler/doctor/findings/graph/timeline/vexhub/etc.) so
local bearer-audience validation succeeds for services addressed via their
short hostname inside the container network.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:58:43 +03:00
master
6d1fc66ab3 feat(release-orchestrator): add Postgres stores for environment topology
Introduces persistent stores for the ReleaseOrchestrator.Environment module:
PostgresEnvironmentStore, PostgresRegionStore, PostgresTargetStore,
PostgresFreezeWindowStore, PostgresInfrastructureBindingStore,
PostgresTopologyPointStatusStore, PostgresPendingDeletionStore, and
PostgresTopologyAgentCatalog. New migration 004_runtime_storage_alignment.sql
aligns column naming with runtime expectations. Adds a
SocketTargetConnectionTester for real TCP probes and a
ScriptCompatibilityEvaluator with its integration test companion.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:58:31 +03:00
master
e98502e87e feat(concelier): back feed-mirror management endpoints with Postgres
Replaces the in-memory mirror config and domain stores with
PostgresMirrorManagementStores backed by a new migration (006) that adds the
mirror_domains, mirror_configs, bundle_versions, and version_locks tables
under the concelier schema. Adds FeedMirrorManagementEndpoints that consumes
the real stores and returns empty / problem responses when no state exists
rather than fabricating demo payloads. Hooks ConcelierTopologyIdentityAccessor
so topology operations get tenant-aware identity from the request envelope.
Test suite updated with real-DB expectations.

Closes NOMOCK-003.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:58:16 +03:00
master
d613f8f2a4 fix(graph): migration 002 now tolerates legacy graph_nodes/edges schemas
Rewrites migration 002 to use ALTER TABLE ... IF EXISTS with per-column guards
and a data-migration DO block that backfills document_json/written_at/batch_id
from the older (tenant_id, data, created_at) layout when present. Updates
GraphChangeStreamProcessor + SavedViewsMigrationHostedService for the aligned
schema and extends the incremental processor tests for the new path.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:57:54 +03:00
master
257e29355b fix(findings-ledger): make initial migration idempotent for replay
Wraps ENUM type creation in findings.ledger schema with DO blocks that catch
duplicate_object so migration 001 can re-run on a partially-provisioned DB
without crashing. Minor corrections to 002 and 005 (syntax alignment).
Updates RLS contract + operations docs to reflect the replay-safe semantics.
WebService + persistence csproj get the Infrastructure.Postgres migration
reference needed for StartupMigrationHost wiring.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:57:31 +03:00
master
4a8e2758cd refactor(timeline): renumber migrations to sequential 002-004 format
Renames date-prefixed migrations (20260107_002, 20260408_003, 20260409_004)
to plain sequential numbers (002, 003, 004) to match the convention used by
other service migration directories. Adds TimelineCoreMigrationCategoryTests
to verify the unified-audit migration registers under the correct category
for the StartupMigrationHost transaction classifier.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:56:52 +03:00
master
a393b6d6e1 feat(infra-postgres): detect explicit transaction control in migrations
Adds MigrationSqlTransactionClassifier to recognize migration SQL that opens
its own transactions (BEGIN/COMMIT/ROLLBACK) so MigrationRunner can skip
wrapping those files in an outer transaction. StartupMigrationHost now surfaces
a MigrationCategory indicator for runtime-aligned bootstrap. Test harness
extended with an explicit-transaction fixture and execution scenario coverage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 21:56:27 +03:00
master
337aa58023 fix(scheduler): bind IDoctorTrendRepository via [FromServices] on trend endpoints
Three Doctor trend endpoints (/trends/checks/{checkId}, /trends/categories/{category},
/trends/degrading) were missing the [FromServices] attribute on the
IDoctorTrendRepository? parameter, causing ASP.NET minimal-APIs to attempt model
binding from route/query instead of resolving from DI. Verified fix with HTTP 200
responses against all four trend endpoints via the gateway.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 19:34:09 +03:00
master
b837119060 refactor(concelier): remove hardcoded feed-mirror management endpoints
Drop FeedMirrorManagementEndpoints.cs (660 lines of seeded mock data)
as part of the no-mocks initiative. Feed mirror state will be served
from real source/read-model queries.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 12:29:16 +03:00
master
39111b35c2 docs: integrations GitLab registry auth + sprint plans
Add GitLab container registry connector docs (WWW-Authenticate Bearer
token exchange, authref config). Add sprint files for container rebuild,
regression retest, and UI no-mocks work.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 12:28:59 +03:00
master
36eaf5e798 fix(orchestrator): scripts auto-migration with dedicated options and DI module
Scripts module now owns its PostgreSQL schema lifecycle: ScriptsPostgresOptions,
ServiceCollectionExtensions.AddReleaseOrchestratorScripts(), embedded SQL migration,
and MigrationServiceExtensions fix to register multiple IHostedService migrations
without deduplication. Fresh installs auto-converge the scripts catalog without
depending on Scheduler-owned bootstrap SQL.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 12:28:52 +03:00
master
9820b48372 feat(concelier): add snapshot lookup by ID and list by source
GetBySnapshotIdAsync and ListBySourceIdAsync provide the read-model
queries needed to replace seeded feed-mirror responses with real state.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 12:28:45 +03:00
master
bc569931d4 fix(authority): retry transient bootstrap failures with configurable attempts
StandardPluginBootstrapper now retries up to 15 times (2s delay) so the
admin user and client seeds converge after PostgreSQL becomes reachable.
Exceptions bubble through the retry loop instead of being swallowed per-step.
Tests cover the retry path with a FlakyUserRepository that fails once then
succeeds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 12:28:36 +03:00
master
f50a422939 fix(gateway): standalone local route config with full Node/Transport/Routing/OpenApi sections
Mount router-gateway-local.json as appsettings.json (not appsettings.local.json)
so it fully replaces the baked-in config instead of merging. Add Node, Transports,
Routing, and OpenApi sections to make the file self-contained. Test validates all
required top-level sections are present.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 12:28:28 +03:00
master
a3fcee5ffa chore: clean up stale worktree tracking files
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 12:28:20 +03:00
master
fcdc4e0291 fix(scheduler): add [FromServices] to Doctor trend endpoint parameters
DoctorTrendEndpoints used IDoctorTrendRepository and TimeProvider as
MapGet handler parameters without [FromServices], causing ASP.NET to
infer them as body parameters — crashing the scheduler on startup with
"Body was inferred but the method does not allow inferred body parameters."

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:32:38 +03:00
master
d25d0d60b9 fix(ui): JobEngine standard tabs + schedules loading + audit filter bar
JobEngine page:
- Replace custom segmented toggle with StellaPageTabsComponent
- Fix SCHEDULER_API_BASE_URL factory (new URL() always threw on relative paths)
- Fix listSchedules to include disabled schedules
- Add source field mapping for system schedule badge

Audit log page:
- Remove Overview tab, default to All Events
- Replace custom filters with standard app-filter-bar (matching other pages)
- Remove policy-specific column toggles and category chips

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:16:17 +03:00
master
d0e67e59fb fix(scripts): setup.ps1/sh comment parsing, network creation, elevation UX
- Strip inline comments from hosts template before hostname extraction
- Create stellaops bridge network if missing (was only creating frontdoor)
- Clear elevation warning with missing count, re-run instructions, clipboard copy
- Both setup.ps1 (Windows) and setup.sh (Linux/macOS) fixed

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 16:45:23 +03:00
master
3a36aefd81 fix: resolve 4 unhealthy services from fresh volume rebuild
- router-gateway: sync 10 missing jobengine routes to local config (prevent array merge bleed-through)
- findings-ledger-web: add VulnExplorer tables to postgres-init bootstrap script
- timeline-web: replace competing migration hosted service with standard AddStartupMigrations
- graph-api: handle null PostgresGraphRepository gracefully, add graph schema to init
- scheduler-web: add failure_signatures table to init bootstrap

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 16:23:52 +03:00
master
537f4f17fc test(audit): comprehensive tests for emission, PII redaction, hash chain, enrichers
- AuditPiiRedactorTests: 10 tests for recursive redaction + edge cases
- AuditActionFilterTests: 14 tests for capture, enrichment, fallback
- AuditModulesAndActionsTests: 3 tests for constant validation
- PostgresUnifiedAuditEventStoreTests: 8 tests for hash chain integrity
- UnifiedAuditAggregationServiceTests: 6 tests for new query filters
- AuditCleanseJobPluginTests: 7 tests for retention logic + validation
- PluginRegistryTests: 9 tests for plugin discovery
- Authority/Policy enricher tests: 8 tests for GUID resolution
- Total: ~65 new tests across 5 test projects
- Added InternalsVisibleTo for Audit.Emission and Timeline.WebService
- Created AuditCleanseJobPlugin implementation for retention-based cleanup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 13:00:18 +03:00
master
5d245f958f refactor(audit): replace magic strings with AuditModules/AuditActions constants
- Replace 349 .Audited("module", "action") calls with typed constants across 91 files
- Add 21 missing action constants to AuditActions.cs (Policy, Attestor, Evidence, Scanner)
- Compile-time safety for module/action naming across all 15 services

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:40:18 +03:00
master
c698ff40cc feat(audit): resource enrichers + before-state providers for critical services
- Authority: resolve user/client/role/tenant GUIDs to names, capture before-state
- Policy: resolve exception/pack/profile GUIDs, capture governance state
- Release-Orchestrator: resolve release GUIDs to name+version
- Findings: resolve finding GUIDs to CVE+package
- All enrichers fire-and-forget with graceful fallback

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:30:49 +03:00
master
92c2a8591c feat(audit-ui): structured details rendering + auto-diff from beforeState
- New audit-event-details-panel component with HTTP context, request body, before state sections
- Highlight [REDACTED] PII values with warning badge
- Auto-construct diff view from details.beforeState when Diff is absent
- Add release/attestor/doctor/signals/advisory-ai/riskengine module support
- Replace raw JSON dumps with semantic rendering

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:15:50 +03:00
master
786aaa765d feat(scheduler): audit cleanse plugin + JSON Schema config forms + UI enrichment
Scheduler plugins:
- AuditCleanseJobPlugin: purge audit data older than retention (default 365 days)
- ScanJobPlugin: proper JSON Schema for mode/scope/parallelism
- Plugin discovery endpoints: list, schema, defaults
- ISchedulerJobPlugin gains GetDefaultConfig()
- Dynamic plugin-config-form Angular component
- Schedule create dialog with plugin-aware config

Audit UI (Gaps 4+5):
- Structured details panel: HTTP context, request body, before state
- [REDACTED] PII highlighting with warning badges
- Auto-construct diff from details.beforeState
- New module types: release, attestor, doctor, signals, advisory-ai, riskengine

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:13:42 +03:00
master
7f40f8d678 feat(audit-api): fix 7 gaps — module catalog, Diff ingest, filters, chain verify
- Add release/doctor/signals/advisory-ai/riskengine to module catalog (Gap 1)
- Add Diff to UnifiedAuditIngestRequest for before/after state (Gap 2)
- Add resourceName, actorIp, actorEmail query parameters (Gap 3, 8)
- Add GIN index on details_jsonb for future JSONB queries (Gap 6)
- Map chain verification endpoint GET /api/v1/audit/chain/verify (Gap 7)
- Expose content_hash + previous_entry_hash in API response (Gap 9)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:09:27 +03:00
master
2a69ad112c feat(audit): enhanced AuditActionFilter with body capture + enrichment hooks
- Capture request body (JSON, up to 64KB, PII-redacted) in Details["requestBody"]
- Capture response resource ID for create operations in Details["responseResourceId"]
- Add IAuditResourceEnricher interface for GUID -> human-readable name resolution
- Add IAuditBeforeStateProvider for before-state snapshots in Details["beforeState"]
- Add AuditPiiRedactor with configurable field patterns (recursive JSON walk)
- AuditActionAttribute gains CaptureBody (bool?) + SensitiveFields (string[]?)
- AuditEmissionOptions gains MaxBodySizeBytes (64KB) + RedactedFieldPatterns
- All enrichment is optional and fire-and-forget (never blocks response)
- Add AuditModules constants (15 modules) and AuditActions constants (~200 actions)
  organized as nested static classes per module for type-safe annotations
- All 17 consuming services verified to compile successfully

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:49:54 +03:00
master
54e7f871a3 feat(audit): annotate Platform + Notify + Scheduler + ReleaseOrchestrator (Batch 2b)
Platform (~40 state-changing endpoints annotated):
- EnvironmentSettingsAdmin: update/delete environment settings
- IdentityProvider: create/update/delete/enable/disable/test/apply
- CryptoProviderAdmin: update/delete crypto preferences
- AdministrationTrustSigning: create/rotate/revoke keys, register/block/unblock issuers,
  register/revoke certificates, configure transparency log
- PlatformEndpoints: quota alerts, onboarding complete/skip, preferences update, dashboard profile create
- SetupEndpoints: create session, execute/skip steps, finalize setup
- ScoreEndpoints: evaluate/verify score
- ScriptEndpoints: create/update/delete scripts
- ReleaseOrchestratorEnvironment: CRUD environments/targets/freeze-windows

Notify (~30 state-changing endpoints annotated):
- NotifyApi (v2): rules CRUD, templates CRUD, incident ack/resolve
- RuleEndpoints (v2): create/update/delete rules
- TemplateEndpoints (v2): create/update/delete templates
- EscalationEndpoints: CRUD policies, schedules, overrides; start/escalate/stop
- QuietHoursEndpoints: create/update/delete calendars
- ThrottleEndpoints: update/delete config
- OperatorOverrideEndpoints: create/revoke overrides

Scheduler (~10 state-changing endpoints annotated):
- ScheduleEndpoints: create/update/delete/pause/resume schedules
- RunEndpoints: create/cancel/retry runs
- GraphJobEndpoints: create build/overlay graph jobs
- PolicyRunEndpoints: create policy run
- Added StellaOps.Audit.Emission project reference + AddAuditEmission() registration
- Fixed pre-existing ScanJobPlugin.cs build error (Success -> Valid)

ReleaseOrchestrator (~25 state-changing endpoints annotated):
- ReleaseEndpoints: create/update/delete/ready/promote/deploy/rollback/clone releases,
  add/update/remove components
- ApprovalEndpoints: approve/reject/batch-approve/batch-reject
- DeploymentEndpoints: create/pause/resume/cancel/rollback/retry deployments
- EvidenceEndpoints: verify evidence
- ScriptsEndpoints: create/update/delete scripts
- ReleaseDashboardEndpoints: approve/reject promotions
- ReleaseControlV2Endpoints: approval decision, rollback run

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:40:02 +03:00
master
d4d75200c5 feat(audit): annotate Authority (~49) + Policy (~162) endpoints (Batch 2a)
- Authority: user/client/role/tenant CRUD, scope management, token ops
- Policy: exceptions, governance, risk profiles, packs, gates, simulations
- Sprint 005 FILTER-005 + FILTER-007 progress

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:38:41 +03:00
master
665bd6db48 feat(audit): annotate Attestor+Findings+Doctor+Signals+AI+RiskEngine (Batch 2c/FILTER-010)
- Attestor: ~25 endpoints (DSSE, keys, ceremonies, watchlist)
- Findings: ~30 endpoints (VEX decisions, fix verifications, ledger events)
- Doctor: ~7 endpoints (runs, diagnostics)
- Signals: ~10 endpoints (callgraph, reachability, evidence)
- AdvisoryAI: ~5 endpoints (decisions, runs)
- RiskEngine: ~3 endpoints (score jobs, simulations)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:31:33 +03:00
master
f3401540d7 refactor(jobengine): delete Core + Infrastructure + Worker + Tests (~65K lines)
- All active services now use their own persistence (release-orchestrator, scheduler, packsregistry)
- Zero remaining references from any active csproj
- Clean solution files (4 projects + 48 build configs removed from StellaOps.sln)
- Update README and AGENTS.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:23:11 +03:00
master
7f65e224ae feat: scheduler web+worker merge + audit Batch 1 (68 endpoints annotated)
Scheduler:
- Merge scheduler-worker into scheduler-web with Worker:Embedded flag
- Default embedded=true (compose), false available for K8s split
- Upgrade to resources-heavy, comment out scheduler-worker container

Audit Batch 1 (first real audit emission):
- Create AuditedRouteGroupExtensions convention helper
- EvidenceLocker: 7 endpoints (store/snapshot/verify/hold/export/verdict)
- Integrations: 6 endpoints (CRUD + test + discover)
- Scanner: 55 endpoints across 25 files
- Sprint 005 FILTER-001/002/003 marked DONE

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:08:40 +03:00
master
7c7525f353 feat(audit): annotate endpoints in EvidenceLocker + Integrations + Scanner (Batch 1)
- Add AuditedRouteGroupExtensions with WithAuditFilter() and Audited() helpers
- EvidenceLocker: 7 endpoints (store, snapshot, verify, hold, store_verdict,
  verify_verdict, export)
- Integrations: 6 endpoints (create, update, delete, test, discover,
  run_code_guard)
- Scanner: ~55 annotations across 25 endpoint files covering sources CRUD,
  scan submission, scan policies, approvals, triage, webhooks, reports,
  reachability, secret detection, offline kit, runtime, and more
- Skipped read-only POSTs per convention (delta compare, counterfactual,
  EPSS batch, slice query, policy diagnostics/preview/runtime/overlay)
- All 3 services build clean with 0 errors/warnings
- Sprint 005: FILTER-001, FILTER-002, FILTER-003 marked DONE

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:08:00 +03:00
master
ddfc154a99 fix: QA preflight fixes — stale routes, missing hosts, policy URL
- Add workflow + release-orchestrator to hosts file
- Fix scheduler policy URL: policy.stella-ops.local → policy-engine.stella-ops.local
- Fix gateway stale routes: doctor-scheduler → scheduler, vulnexplorer → findings
- Remove stale "policy" from RequiredMicroservices (merged into policy-engine)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 10:57:32 +03:00
master
845541c537 feat(audit): wire AddAuditEmission in 7 more services + update Sprint 005
- Wire audit emission in: Attestor, Findings Ledger, Doctor, Signals,
  AdvisoryAI, RiskEngine, OpsMemory (total: 16 services now emit)
- Sprint 005: add FILTER-010 (80 endpoints in 6 new services)
- Sprint 005: add CAPSULE-001 (decision capsule lifecycle, blocked)
- Sprint 005: add config/settings audit checklist (12 surfaces mapped)
- Total auditable endpoints: 617 across 16 services

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 09:37:46 +03:00
master
8442fcb807 docs(audit): sprint plan for endpoint filters + per-service table deprecation
- Map 532 state-changing endpoints across 9 services for AuditActionFilter
- Plan 5-batch migration: convention helper → complex services → dual-write →
  read migration → drop local tables
- Reclassify Authority auth-protocol and Policy gate-bypass audit as domain evidence
- 24 days active work + 120-day verification pipeline

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:44:04 +03:00
master
b081809178 feat(graph): enable Postgres-backed reads, replace in-memory seed data
- Switch default repository to start empty when Postgres is configured;
  GraphDataLoaderHostedService loads real data from graph.graph_nodes/edges
  on startup and refreshes every 5 minutes
- Keep InMemoryGraphRepository with hardcoded seed as fallback when no DB
- Add Reload() method to InMemoryGraphRepository for hot-swapping data
- Add GetAllNodesAsync/GetAllEdgesAsync to PostgresGraphRepository
- Deprecate hardcoded seed data in InMemoryGraphRepository
- Fix graph-api port mismatch: container listens on 8080 (ASPNETCORE_URLS)
  but compose mapped 80:80; corrected to 80:8080 + healthcheck to 8080

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:39:18 +03:00