Commit Graph

  • 3e964ac2cb docs(archreview): sync PLAN-06 tasks.json — PLAN COMPLETE (24/24), terminal verification green (8 Playwright E2E env-only) Joseph Doherty 2026-07-10 04:44:15 -04:00
  • 15f5bc412c docs(inbound-api): dual-key API-key rotation procedure (create -> migrate -> disable -> delete) Joseph Doherty 2026-07-10 04:32:46 -04:00
  • 40088a2123 fix(notifications): validate Twilio AccountSid format at save — closes the un-escaped URI interpolation door Joseph Doherty 2026-07-10 04:36:19 -04:00
  • 37cf7c1a44 fix(esg): cancellation-aware ErrorClassifier.IsTransient overload — caller-cancelled work can never classify transient Joseph Doherty 2026-07-10 04:32:51 -04:00
  • 0ee9975111 feat(notifications): OAuth2 authority/scope management + CLI + UI surfaces Joseph Doherty 2026-07-10 04:25:52 -04:00
  • 2e7be1e852 fix(esg): structured JSON AuthConfiguration (matches entity doc + UI placeholders) with legacy colon fallback — keys containing ':' no longer misparse Joseph Doherty 2026-07-10 04:24:11 -04:00
  • b5e80d4c00 feat(inbound-api): machine-readable error codes per spec (incl. SITE_UNREACHABLE) + 415 for non-JSON bodies Joseph Doherty 2026-07-10 04:29:55 -04:00
  • 761729b5d0 perf(esg): bound outbound response bodies (ResponseHeadersRead + MaxResponseBodyBytes cap; oversize = permanent failure) Joseph Doherty 2026-07-10 04:19:02 -04:00
  • eabd2820eb feat(esg): --timeout-seconds on external-system create/update (management command + CLI, additive contract) Joseph Doherty 2026-07-10 04:20:05 -04:00
  • 0b916ff0c5 fix(inbound-api): defer DI-scope disposal to handler completion and count abandoned executions — closes the timeout use-after-dispose Joseph Doherty 2026-07-10 04:18:00 -04:00
  • 39e1ca3eae fix(notifications): deterministic lowest-Id SMTP config selection (+ multi-row warning); atomic OAuth2 token cache entry Joseph Doherty 2026-07-10 04:14:14 -04:00
  • eb7a913d22 feat(esg): {param} path-template substitution with consumed-param removal — implements the spec'd /recipes/{id} form Joseph Doherty 2026-07-10 04:14:13 -04:00
  • d0b27b8957 feat(inbound-api): InvalidateMethod seam purging handler + known-bad — consumer entry point for the script-artifact invalidation contract (plan 05) Joseph Doherty 2026-07-10 04:12:57 -04:00
  • 9e60347bde feat(notifications): configurable OAuth2 authority + scope per SMTP configuration (defaults preserve M365) — entity + EF + migration + token service Joseph Doherty 2026-07-10 04:07:13 -04:00
  • 178ae35308 feat(notifications): SMS notifications retry under SmsConfiguration.MaxRetries/RetryDelay (SMTP policy remains the Email + fallback policy) — wires the dead fields Joseph Doherty 2026-07-10 04:07:03 -04:00
  • f0dd016207 feat(esg): TimeoutSeconds in ExternalSystem UI form + Component-ExternalSystemGateway doc sync — closes the spec-drift gap Joseph Doherty 2026-07-10 04:06:53 -04:00
  • e3ef320359 feat(esg): TimeoutSeconds travels the artifact pipeline (additive contract) into site SQLite so site-side calls honor it Joseph Doherty 2026-07-10 04:07:11 -04:00
  • 86d1a5cbf2 feat(esg): honor per-system TimeoutSeconds in InvokeHttpAsync (falls back to DefaultHttpTimeout) Joseph Doherty 2026-07-10 04:05:27 -04:00
  • 899af63b2a docs(inbound-api): DB row is authoritative for method scripts — update broken-save warning + Direct SQL Warning for the revision-checked cache Joseph Doherty 2026-07-10 04:05:23 -04:00
  • 16bab58d85 fix(inbound-api): revision-check compiled handler cache against the fresh ApiMethod row — heals failover/direct-SQL/known-bad staleness Joseph Doherty 2026-07-10 03:57:13 -04:00
  • 2767e4bca1 feat(esg): per-system TimeoutSeconds column on ExternalSystemDefinition (spec Component-ExternalSystemGateway Timeout) — entity + EF + migration Joseph Doherty 2026-07-10 03:55:26 -04:00
  • 153b82c880 docs(delmia): document at-least-once failover semantics + DelmiaRecipeDownload idempotency requirement Joseph Doherty 2026-07-10 03:48:06 -04:00
  • 102f5b60ee perf(host): compile inbound API methods in parallel at startup Joseph Doherty 2026-07-10 03:49:53 -04:00
  • 839baa7880 fix(notifications): SMS adapter short-circuits on first transient — kills duplicate amplification and bounds the dispatch sweep Joseph Doherty 2026-07-10 03:49:18 -04:00
  • aa1c1093e4 fix(inbound-api): endpoint filter hot-reads MaxRequestBodyBytes via IOptionsMonitor Joseph Doherty 2026-07-10 03:48:49 -04:00
  • 9b0cf44c02 docs(archreview): sync Status Board — PLAN-05 Complete/merged (ec23db35), PLAN-04 merge confirmed; initiative 128/192 Joseph Doherty 2026-07-10 03:38:07 -04:00
  • ec23db3551 docs(archreview): sync PLAN-05 tasks.json — PLAN COMPLETE (25/25), terminal verification green (8 Playwright E2E env-only) Joseph Doherty 2026-07-10 03:30:25 -04:00
  • 8e5631075d docs: sync Transport/TemplateEngine/DeploymentManager specs + CLAUDE.md with the arch-review fix wave (plan 05) Joseph Doherty 2026-07-10 03:22:34 -04:00
  • e1ecf5d6ee docs(archreview): sync PLAN-05 tasks.json — Wave 7 complete (T19, T20, T23, T24 → 24/25) Joseph Doherty 2026-07-10 02:33:24 -04:00
  • 0642d3b988 chore: low-severity sweep — import session cap, full compile-error lists, leaf-name-fallback validation warning Joseph Doherty 2026-07-10 02:32:37 -04:00
  • 039cf69cbb fix(transport): close code-review gaps in the import trust gate + severity split (T19/T20) Joseph Doherty 2026-07-10 02:32:28 -04:00
  • 92e713f1a1 fix(transport): template diffs resolve folder/base/composition names — unchanged structured templates classify Identical again Joseph Doherty 2026-07-10 02:22:44 -04:00
  • 523e670579 fix(security): bundle import runs the script trust gate — forbidden-API scripts rejected at import review, not at runtime Joseph Doherty 2026-07-10 02:18:12 -04:00
  • c60347c5e7 fix(transport): blocker heuristic no longer hard-blocks valid imports — local declarations excluded, denylist extended, template-script findings downgraded to warnings Joseph Doherty 2026-07-10 02:12:26 -04:00
  • 8e92198078 docs(archreview): sync PLAN-05 tasks.json — Wave 6 complete (T6, T8, T14 → 20/25) Joseph Doherty 2026-07-09 17:44:58 -04:00
  • 7c74bbe4b5 fix(transport): close 5 residual import/export fidelity holes surfaced by the round-trip guard (T8) Joseph Doherty 2026-07-09 17:44:12 -04:00
  • e498c6e1bd test(transport): per-entity reflection round-trip equivalence suite — structural guard against silent import data loss Joseph Doherty 2026-07-09 17:36:22 -04:00
  • 2c839def33 feat(commons/transport): ScriptArtifactsChanged invalidation contract + post-commit publish from bundle import (consumer lands in plan 06) Joseph Doherty 2026-07-09 17:27:40 -04:00
  • 38edfefc42 refactor(transport): single-source template child equality — diff and overwrite-sync can no longer drift Joseph Doherty 2026-07-09 17:17:18 -04:00
  • 33cf577718 docs(archreview): sync PLAN-05 tasks.json — Wave 5 complete (T5 → 17/25) Joseph Doherty 2026-07-09 17:06:17 -04:00
  • 7b6d6bb805 test(transport): harden T5 native-source coverage — no-change zero-audit + IsInherited/LockedInDerived fidelity Joseph Doherty 2026-07-09 17:05:02 -04:00
  • e4136cb920 fix(transport): transport template NativeAlarmSources — imports no longer amputate native alarm mirrors nor dangle instance overrides Joseph Doherty 2026-07-09 16:59:37 -04:00
  • 4df5109742 docs(archreview): sync PLAN-05 tasks.json — Wave 4 complete (T4, T11, T12 → 16/25) Joseph Doherty 2026-07-09 16:48:20 -04:00
  • d833219920 fix(template-engine): DiffService covers native alarm sources — Deployments diff view no longer blind to native-alarm edits Joseph Doherty 2026-07-09 16:42:00 -04:00
  • 0302694f9a fix(template-engine): native alarm sources participate in the revision hash — staleness detection restored (deliberate one-time stale flip for affected instances) Joseph Doherty 2026-07-09 16:43:23 -04:00
  • bf17f60a04 fix(transport): transport LockedInDerived on template attributes/alarms/scripts (additive DTO fields) Joseph Doherty 2026-07-09 16:46:33 -04:00
  • ea9c5709ac docs(archreview): sync PLAN-05 tasks.json — Wave 3 complete (T10, T13, T18 → 13/25) Joseph Doherty 2026-07-09 16:31:45 -04:00
  • 874e32a93e fix(template-engine): collision detection sees all slots of a repeatedly-composed template Joseph Doherty 2026-07-09 16:21:02 -04:00
  • 57f7f65772 fix(security): enforce template locks on native alarm source overrides at flatten and management-command level Joseph Doherty 2026-07-09 16:28:52 -04:00
  • ab6077708f fix(deployment): delete NotDeployed instances centrally without a site round-trip Joseph Doherty 2026-07-09 16:22:29 -04:00
  • 83294ab44e docs(archreview): sync PLAN-05 tasks.json — Wave 2 complete (T3, T7, T15, T17, T22 → 10/25) Joseph Doherty 2026-07-09 16:15:35 -04:00
  • 53ce64ba79 fix(transport): cap LineDiffer input size — oversized script diffs degrade to summary instead of O((N+M)^2) memory Joseph Doherty 2026-07-09 16:08:15 -04:00
  • ef59c752ba perf(template-engine): cache script compile verdicts by code hash — unchanged scripts compile once per process Joseph Doherty 2026-07-09 16:08:03 -04:00
  • f40f52950e fix(transport): export instance AreaName — Area-by-name reconciliation was half-shipped (exporter hardcoded null) Joseph Doherty 2026-07-09 16:09:56 -04:00
  • 721a2e595f fix(deployment): audit-write fault can no longer flip a committed Success deployment to Failed Joseph Doherty 2026-07-09 16:12:56 -04:00
  • 5c52b4c80b fix(transport): carry script cadence/timeout fields through bundle import (was silently reset to defaults) Joseph Doherty 2026-07-09 16:09:50 -04:00
  • 4d4ae05fc2 docs(archreview): sync PLAN-05 tasks.json — Wave 1 complete (T2, T9, T16, T21 → 5/25) Joseph Doherty 2026-07-09 15:55:03 -04:00
  • aae0a2db3e fix(transport): reject bundle imports that would persist an inheritance/composition cycle Joseph Doherty 2026-07-09 15:40:14 -04:00
  • 854a6a8c0b perf(deployment): staleness/comparison paths no longer Roslyn-compile every script — deploy gate remains the authoritative compile Joseph Doherty 2026-07-09 15:48:45 -04:00
  • 730bf19162 fix(template-engine): repeated composition no longer drops nested members — cycle guard keyed on recursion path, not global template id Joseph Doherty 2026-07-09 15:38:20 -04:00
  • d19ab93d39 fix(security): deny Environment/GC and ADO.NET provider namespaces; close reflection-gateway list (GetTypes/EntryPoint/Declared*/DynamicInvoke) Joseph Doherty 2026-07-09 15:38:12 -04:00
  • dbd3ed2fc7 docs(archreview): sync PLAN-04 tasks.json + tracker — Task 26 sweep GREEN, plan COMPLETE (26/26) Joseph Doherty 2026-07-09 14:59:20 -04:00
  • 22d5239039 test(commons): update AuditKind lock-in test for 15th member (ReconciliationAbandoned) Joseph Doherty 2026-07-09 14:57:28 -04:00
  • a9da1ed804 docs(archreview): sync PLAN-04 tasks.json + tracker — Task 24 completed (25/26, only T26 sweep remains) Joseph Doherty 2026-07-09 10:05:24 -04:00
  • 7f1b59ff84 docs: reconcile design docs with shipped code (enums, Sms, per-channel retention, SiteCalls schema, conventions) Joseph Doherty 2026-07-09 10:03:13 -04:00
  • 3a21e77c03 docs(archreview): add cross-plan parallelization map for incomplete tasks + sync stale PLAN-04 status Joseph Doherty 2026-07-09 09:53:05 -04:00
  • 05e36d8665 docs(archreview): sync PLAN-04 tasks.json — Tasks 22, 23, 25 completed (Batch 8, purge first-tick + data-layer cleanups + bounded parallel delivery) Joseph Doherty 2026-07-09 09:43:42 -04:00
  • 6567216e14 perf(notification-outbox): bounded parallel delivery within a dispatch sweep (default 4) Joseph Doherty 2026-07-09 09:41:48 -04:00
  • acd8a6b8b5 chore(data-layer): low-severity cleanups — SQLite param chunking, KPI metric catalog, computed-column predicate guard Joseph Doherty 2026-07-09 09:32:04 -04:00
  • b58d810dbe fix(purge): short first tick on all three purge timers so daily-recycled nodes still purge Joseph Doherty 2026-07-09 09:26:42 -04:00
  • 7cd62933a6 docs(archreview): sync PLAN-04 tasks.json — Tasks 19-21 completed (Batch 7, KpiSample batched purge + NotificationOutbox single-query KPI + SiteCalls OPTION RECOMPILE) Joseph Doherty 2026-07-09 09:13:51 -04:00
  • 34337a8714 perf(site-call-audit): OPTION (RECOMPILE) on the optional-parameter query page Joseph Doherty 2026-07-09 09:12:50 -04:00
  • 6f5d60070c perf(notification-outbox): single-query KPI aggregation; oldest-pending no longer materializes the live queue Joseph Doherty 2026-07-09 09:12:00 -04:00
  • 71189298a2 perf(kpi-history): time-sliced batched purge replaces the single daily mega-DELETE Joseph Doherty 2026-07-09 09:06:42 -04:00
  • 5332912f26 docs(archreview): sync PLAN-04 tasks.json — Tasks 16-18 completed (Batch 6, reconciliation keyset cursor + abandoned-row audit + NodeB failover) Joseph Doherty 2026-07-09 08:58:39 -04:00
  • bfd2cc7e6f fix(audit-log): reconciliation pulls fail over to site NodeB when NodeA is unreachable Joseph Doherty 2026-07-09 08:57:06 -04:00
  • 0385942c3f feat(audit-log): permanently-abandoned reconciliation rows leave a durable ReconciliationAbandoned audit record Joseph Doherty 2026-07-09 08:50:44 -04:00
  • 20098c6108 fix(site-call-audit): composite keyset cursor eliminates the single-timestamp reconciliation pin; pinned state now a published event Joseph Doherty 2026-07-09 08:44:07 -04:00
  • 1f4c0b67ca docs(archreview): sync PLAN-04 tasks.json — Tasks 13-15 completed (Batch 5, operator-identity audit + reconciliation keyset) Joseph Doherty 2026-07-09 08:32:06 -04:00
  • a608d7a79b feat(site-call-audit): additive (UpdatedAtUtc, TrackedOperationId) keyset in the reconciliation pull contract Joseph Doherty 2026-07-09 08:31:42 -04:00
  • 2c45c3238b feat(site-call-audit): relay Retry/Discard emit operator-identity audit rows Joseph Doherty 2026-07-09 08:21:41 -04:00
  • 50bb1ef8ab feat(notification-outbox): operator Retry/Discard emit audit rows with operator identity Joseph Doherty 2026-07-09 08:12:47 -04:00
  • f2f196aa6d docs(archreview): sync PLAN-04 tasks.json — Tasks 10-12 completed (Batch 4, backlog KPI + SiteCalls freshness + EF retry) Joseph Doherty 2026-07-09 08:04:11 -04:00
  • 1dd89d523b fix(config-db): EnableRetryOnFailure fleet-wide + execution-strategy wrap of the combined-telemetry dual-write Joseph Doherty 2026-07-09 08:03:30 -04:00
  • 6b06d1efcb fix(site-call-audit): same-rank freshness tiebreaker — retrying calls no longer freeze RetryCount/LastError at first write Joseph Doherty 2026-07-09 07:56:39 -04:00
  • 1b53de1933 fix(kpi-history): backlogTotal trend records the real site-backlog aggregate instead of a hardwired zero Joseph Doherty 2026-07-09 07:51:55 -04:00
  • 1dd993ec2f docs(archreview): sync PLAN-04 tasks.json — Tasks 7-9 completed (Batch 3, append-only-honesty docs + SiteCalls index + exec-tree window bound) Joseph Doherty 2026-07-09 07:11:26 -04:00
  • 5d0fcd4e66 perf(audit-log): bound GetExecutionTreeAsync edge scan to a root-anchored time window (partition elimination) Joseph Doherty 2026-07-09 07:10:35 -04:00
  • f1957606ff perf(site-call-audit): filtered IX_SiteCalls_NonTerminal index — KPI predicates seek the live queue instead of scanning 365 days Joseph Doherty 2026-07-09 07:06:50 -04:00
  • eb69b93947 docs(audit-log): document append-only enforcement honestly (CI guard default; DB roles are optional DBA hardening; purger now has CREATE TABLE + scoped DELETE) Joseph Doherty 2026-07-09 07:03:10 -04:00
  • 2a080a3e12 docs(archreview): sync PLAN-04 tasks.json — Tasks 4-6 completed (Batch 2, maintenance-timeout + purge-failure health + purger grants) Joseph Doherty 2026-07-09 06:53:46 -04:00
  • 7555e65746 fix(config-db): grant CREATE TABLE + scoped DELETE to scadabridge_audit_purger so a segregated maintenance principal can actually run the purge Joseph Doherty 2026-07-09 06:52:44 -04:00
  • 14c4df54f9 feat(audit-log): surface partition-purge failure as health event + counter Joseph Doherty 2026-07-09 06:49:28 -04:00
  • b59aa2d717 fix(audit-log): explicit long CommandTimeout on partition-switch and per-channel purge maintenance paths Joseph Doherty 2026-07-09 06:43:23 -04:00
  • 1b6b0aab2a docs(archreview): sync PLAN-04 tasks.json — Tasks 1-3 completed (Batch 1, site retention chain) Joseph Doherty 2026-07-09 06:22:42 -04:00
  • 74aa872c07 feat(audit-log): daily site SQLite retention purge job (closes unbounded site DB growth) Joseph Doherty 2026-07-09 06:22:19 -04:00
  • b5271da5c8 feat(audit-log): SiteAuditRetentionOptions (7-day default, clamped 1-90) Joseph Doherty 2026-07-09 06:13:05 -04:00
  • 731ee69797 feat(audit-log): add site SQLite PurgeExpiredAsync honoring the ForwardState invariant Joseph Doherty 2026-07-09 06:11:54 -04:00
  • 1586e791f7 docs(archreview): sync stale Status Board — PLAN-01 & PLAN-03 now Complete/merged (78/192) Joseph Doherty 2026-07-09 06:00:37 -04:00
  • 9049690bdb fix(centralui-tests): register stub IBrowseService in SecuredWritesTests harness (PLAN-07 known-issue resolved) Joseph Doherty 2026-07-09 05:55:53 -04:00