Skip to content

🩹 [Patch]: Common context operations complete faster with Sodium 2.2.5 - #124

Draft
Marius Storhaug (MariusStorhaug) wants to merge 23 commits into
mainfrom
sodium-update-perf
Draft

🩹 [Patch]: Common context operations complete faster with Sodium 2.2.5#124
Marius Storhaug (MariusStorhaug) wants to merge 23 commits into
mainfrom
sodium-update-perf

Conversation

@MariusStorhaug

@MariusStorhaugMarius Storhaug (MariusStorhaug) commented Jul 23, 2026

Copy link
Copy Markdown
Member

Context vault creation, context storage, retrieval, and repeated session use complete faster while retaining encrypted storage compatibility with existing on-disk data.

Changed: Common operations scale better with populated vaults

Exact-ID reads and writes no longer repeatedly scan every context file in a vault. Context now caches exact-ID file lookups and vault keypairs, invalidates those caches on writes and removals, and uses direct .NET file and collection operations in the hot path.

Measured from the folded performance work:

ScenarioBeforeAfterΔ
Initial source load382.32 ms121.85 ms−68.13%
360 context writes17.07 s3.02 s−82.32%
1,200 mixed operations39.80 s8.54 s−78.54%
Average load across 10 fresh PowerShell sessions442.75 ms342.46 ms−22.65%

Changed: Sodium is updated to 2.2.5 without breaking existing vault data

The minimum Sodium requirement is now 2.2.5, picking up the upstream crypto and startup improvements from 2.2.3–2.2.5.

Sodium metricBeforeAfterΔ
New-SodiumKeyPair -Seed94.9 µs48.8 µs−49%
ConvertFrom-SodiumSealedBox196.3 µs109.0 µs−44%
ConvertTo-SodiumSealedBox135.8 µs105.4 µs−22%
Cold module import66.7 ms42.3 ms−37%

A dedicated cross-version compatibility script confirms that vault data written with Sodium 2.2.2 remains readable after the upgrade to 2.2.5.

Changed: CI is aligned with current Process-PSModule and Pester 6

The reusable workflow is now pinned to Process-PSModule v6.1.13, using the current explicit APIKey secret model, and the test suite now requires Pester 6.x.

Fixed: Vault file operations stay inside the selected vault

Vault names containing path separators are rejected, and metadata lookups now use the actual discovered file path on disk instead of trusting a stored path value.

Technical Details

  • Added Assert-ContextSodiumModule, ContextFileIndexCache, and Get-ContextInfoFromFile to support lazy Sodium validation, indexed lookups, and safer metadata reads.
  • Optimized the recursive object/hashtable conversion helpers to reduce pipeline overhead while preserving null, array, nested object, and secure-string behavior.
  • Added tests/Context.Benchmark.ps1 and tests/Context.CrossVersionCompat.ps1.
  • Added heavy workload, repeated roundtrip, cross-vault exact-ID, and path-hardening coverage to the Pester suite.
  • Added .github/zensical.toml for the docs site configuration migration.
  • This draft PR now folds in the work from ⚙️ [Maintenance]: Adopt Process-PSModule v6.1.4 and require Pester 6.x in tests #121 and 🩹 [Patch]: Common context operations complete faster #122.
  • PSScriptAnalyzer is clean on all changed PowerShell files with the repository settings; remaining findings are informational only.
Related issues

Sodium 2.2.5 delivers significant performance improvements with no
breaking API changes. Key gains since 2.2.2:
- ConvertFrom-SodiumSealedBox: -44% per-call overhead (196 -> 109 µs)
- ConvertTo-SodiumSealedBox: -22% per-call overhead (136 -> 105 µs)
- New-SodiumKeyPair -Seed: -49% per-call overhead (95 -> 49 µs)
- Module cold import: -37% (67 ms -> 42 ms)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Measures median µs per iteration for the three hot paths:
New-SodiumKeyPair seed derivation, Set-Context (seal), and
Get-Context (open/decrypt). Script is self-contained, cleans
up after itself, and outputs a formatted table plus objects
for downstream capture.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

Super-linter summary

LanguageValidation result
CHECKOVPass ✅
GITHUB_ACTIONSPass ✅
GITLEAKSPass ✅
GIT_MERGE_CONFLICT_MARKERSPass ✅
MARKDOWNPass ✅
NATURAL_LANGUAGEPass ✅
POWERSHELLFail ❌
PRE_COMMITPass ✅
SPELL_CODESPELLPass ✅
TRIVYPass ✅
YAMLPass ✅

Super-linter detected linting errors

For more information, see the GitHub Actions workflow run

Powered by Super-linter

POWERSHELL

�[32;1mRuleName �[0m�[32;1m Severity �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m-------- �[0m �[32;1m-------- �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidUsingEmptyCatchBlock Warning Context.Be 58 Empty catch b
nchmark.ps lock is used.
1 Please use W
rite-Error or
throw statem
ents in catch
blocks.
PSAvoidUsingEmptyCatchBlock Warning Context.Be 106 Empty catch b
nchmark.ps lock is used.
1 Please use W
rite-Error or
throw statem
ents in catch
blocks.
PSAvoidUsingWriteHost Warning Context.Be 63 File 'Context
nchmark.ps .Benchmark.ps
1 1' uses Write
-Host. Avoid
using Write-H
ost because i
t might not w
ork in all ho
sts, does not
work when th
ere is no hos
t, and (prior
to PS 5.0) c
annot be supp
ressed, captu
red, or redir
ected. Instea
d, use Write-
Output, Write
-Verbose, or
Write-Informa
tion.
PSAvoidUsingWriteHost Warning Context.Be 108 File 'Context
nchmark.ps .Benchmark.ps
1 1' uses Write
-Host. Avoid
using Write-H
ost because i
t might not w
ork in all ho
sts, does not
work when th
ere is no hos
t, and (prior
to PS 5.0) c
annot be supp
ressed, captu
red, or redir
ected. Instea
d, use Write-
Output, Write
-Verbose, or
Write-Informa
tion.
PSAvoidUsingWriteHost Warning Context.Be 109 File 'Context
nchmark.ps .Benchmark.ps
1 1' uses Write
-Host. Avoid
using Write-H
ost because i
t might not w
ork in all ho
sts, does not
work when th
ere is no hos
t, and (prior
to PS 5.0) c
annot be supp
ressed, captu
red, or redir
ected. Instea
d, use Write-
Output, Write
-Verbose, or
Write-Informa
tion.
PSProvideCommentHelp Information Context.Be 33 The cmdlet 'M
nchmark.ps easure-Median
1 Microseconds'
does not hav
e a help comm
ent.
PSUseConsistentIndentation Warning Context.Be 71 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 72 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 73 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 74 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 75 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 76 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 83 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 84 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 85 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 86 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 87 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 88 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 96 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 97 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 98 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 99 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 100 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 101 Indentation n
nchmark.ps ot consistent
1
PSUseSingularNouns Warning Context.Be 33 The cmdlet 'M
nchmark.ps easure-Median
1 Microseconds'
uses a plura
l noun. A sin
gular noun sh
ould be used
instead.

Two-part test confirms the on-disk contract is fully preserved:
- Part 1: New-SodiumKeyPair -Seed produces byte-identical keys in
both Sodium versions; a sealed box from 2.2.2 is decryptable by 2.2.5.
- Part 2: vault files written by Context 8.1.3 (Sodium 2.2.2) are
correctly decrypted using Sodium 2.2.5 key derivation directly,
including SecureString-prefixed values and null fields.
All 9 assertions pass.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

Super-linter summary

LanguageValidation result
CHECKOVPass ✅
GITHUB_ACTIONSPass ✅
GITLEAKSPass ✅
GIT_MERGE_CONFLICT_MARKERSPass ✅
MARKDOWNPass ✅
NATURAL_LANGUAGEPass ✅
POWERSHELLFail ❌
PRE_COMMITPass ✅
SPELL_CODESPELLPass ✅
TRIVYPass ✅
YAMLPass ✅

Super-linter detected linting errors

For more information, see the GitHub Actions workflow run

Powered by Super-linter

POWERSHELL

�[32;1mRuleName �[0m�[32;1m Severity �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m-------- �[0m �[32;1m-------- �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidUsingEmptyCatchBlock Warning Context.Be 58 Empty catch b
nchmark.ps lock is used.
1 Please use W
rite-Error or
throw statem
ents in catch
blocks.
PSAvoidUsingEmptyCatchBlock Warning Context.Be 106 Empty catch b
nchmark.ps lock is used.
1 Please use W
rite-Error or
throw statem
ents in catch
blocks.
PSAvoidUsingWriteHost Warning Context.Be 63 File 'Context
nchmark.ps .Benchmark.ps
1 1' uses Write
-Host. Avoid
using Write-H
ost because i
t might not w
ork in all ho
sts, does not
work when th
ere is no hos
t, and (prior
to PS 5.0) c
annot be supp
ressed, captu
red, or redir
ected. Instea
d, use Write-
Output, Write
-Verbose, or
Write-Informa
tion.
PSAvoidUsingWriteHost Warning Context.Be 108 File 'Context
nchmark.ps .Benchmark.ps
1 1' uses Write
-Host. Avoid
using Write-H
ost because i
t might not w
ork in all ho
sts, does not
work when th
ere is no hos
t, and (prior
to PS 5.0) c
annot be supp
ressed, captu
red, or redir
ected. Instea
d, use Write-
Output, Write
-Verbose, or
Write-Informa
tion.
PSAvoidUsingWriteHost Warning Context.Be 109 File 'Context
nchmark.ps .Benchmark.ps
1 1' uses Write
-Host. Avoid
using Write-H
ost because i
t might not w
ork in all ho
sts, does not
work when th
ere is no hos
t, and (prior
to PS 5.0) c
annot be supp
ressed, captu
red, or redir
ected. Instea
d, use Write-
Output, Write
-Verbose, or
Write-Informa
tion.
PSProvideCommentHelp Information Context.Be 33 The cmdlet 'M
nchmark.ps easure-Median
1 Microseconds'
does not hav
e a help comm
ent.
PSUseConsistentIndentation Warning Context.Be 71 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 72 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 73 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 74 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 75 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 76 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 83 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 84 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 85 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 86 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 87 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 88 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 96 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 97 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 98 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 99 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 100 Indentation n
nchmark.ps ot consistent
1
PSUseConsistentIndentation Warning Context.Be 101 Indentation n
nchmark.ps ot consistent
1
PSUseSingularNouns Warning Context.Be 33 The cmdlet 'M
nchmark.ps easure-Median
1 Microseconds'
uses a plura
l noun. A sin
gular noun sh
ould be used
instead.
�[32;1mRuleName �[0m�[32;1m Severity �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m-------- �[0m �[32;1m-------- �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidUsingEmptyCatchBlock Warning Context.Cr 218 Empty catch b
ossVersion lock is used.
Compat.ps1 Please use W
rite-Error or
throw statem
ents in catch
blocks.
PSAvoidLongLines Warning Context.Cr 217 Line exceeds
ossVersion the configure
Compat.ps1 d maximum len
gth of 150 ch
aracters
PSAvoidUsingPositionalParameters Information Context.Cr 134 Cmdlet 'Asser
ossVersion t-Equal' has
Compat.ps1 positional pa
rameter. Plea
se use named
parameters in
stead of posi
tional parame
ters when cal
ling a comman
d.
PSAvoidUsingPositionalParameters Information Context.Cr 135 Cmdlet 'Asser
ossVersion t-Equal' has
Compat.ps1 positional pa
rameter. Plea
se use named
parameters in
stead of posi
tional parame
ters when cal
ling a comman
d.
PSAvoidUsingPositionalParameters Information Context.Cr 136 Cmdlet 'Asser
ossVersion t-Equal' has
Compat.ps1 positional pa
rameter. Plea
se use named
parameters in
stead of posi
tional parame
ters when cal
ling a comman
d.
PSAvoidUsingPositionalParameters Information Context.Cr 137 Cmdlet 'Asser
ossVersion t-Equal' has
Compat.ps1 positional pa
rameter. Plea
se use named
parameters in
stead of posi
tional parame
ters when cal
ling a comman
d.
PSAvoidUsingPositionalParameters Information Context.Cr 208 Cmdlet 'Asser
ossVersion t-Equal' has
Compat.ps1 positional pa
rameter. Plea
se use named
parameters in
stead of posi
tional parame
ters when cal
ling a comman
d.
PSAvoidUsingPositionalParameters Information Context.Cr 209 Cmdlet 'Asser
ossVersion t-Equal' has
Compat.ps1 positional pa
rameter. Plea
se use named
parameters in
stead of posi
tional parame
ters when cal
ling a comman
d.
PSAvoidUsingPositionalParameters Information Context.Cr 210 Cmdlet 'Asser
ossVersion t-Equal' has
Compat.ps1 positional pa
rameter. Plea
se use named
parameters in
stead of posi
tional parame
ters when cal
ling a comman
d.
PSAvoidUsingPositionalParameters Information Context.Cr 211 Cmdlet 'Asser
ossVersion t-Equal' has
Compat.ps1 positional pa
rameter. Plea
se use named
parameters in
stead of posi
tional parame
ters when cal
ling a comman
d.
PSAvoidUsingWriteHost Warning Context.Cr 37 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 40 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 41 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 42 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 49 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 52 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 57 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 58 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 59 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 60 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 67 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 89 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 90 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 92 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 93 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 127 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 128 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 129 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 130 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 131 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 133 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 142 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 143 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 175 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 176 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 177 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 178 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 207 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 215 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 222 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 224 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 225 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSAvoidUsingWriteHost Warning Context.Cr 227 File 'Context
ossVersion .CrossVersion
Compat.ps1 Compat.ps1' u
ses Write-Hos
t. Avoid usin
g Write-Host
because it mi
ght not work
in all hosts,
does not wor
k when there
is no host, a
nd (prior to
PS 5.0) canno
t be suppress
ed, captured,
or redirecte
d. Instead, u
se Write-Outp
ut, Write-Ver
bose, or Writ
e-Information
.
PSProvideCommentHelp Information Context.Cr 34 The cmdlet 'A
ossVersion ssert-Equal'
Compat.ps1 does not have
a help comme
nt.
PSProvideCommentHelp Information Context.Cr 46 The cmdlet 'A
ossVersion ssert-Null' d
Compat.ps1 oes not have
a help commen
t.
PSUseConsistentWhitespace Warning Context.Cr 28 Use space bef
ossVersion ore and after
Compat.ps1 binary and a
ssignment ope
rators.
PSUseConsistentWhitespace Warning Context.Cr 29 Use space bef
ossVersion ore and after
Compat.ps1 binary and a
ssignment ope
rators.
PSUseConsistentWhitespace Warning Context.Cr 30 Use space bef
ossVersion ore and after
Compat.ps1 binary and a
ssignment ope
rators.
PSUseConsistentWhitespace Warning Context.Cr 42 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 134 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 134 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 135 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 136 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 137 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 208 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 208 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 209 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 209 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 211 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 211 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 212 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseConsistentWhitespace Warning Context.Cr 212 Use only 1 wh
ossVersion itespace betw
Compat.ps1 een parameter
names or val
ues.
PSUseDeclaredVarsMoreThanAssignment Warning Context.Cr 180 The variable
s ossVersion 'contextFiles
Compat.ps1 Json' is assi
gned but neve
r used.

Keep the benchmark and compatibility scripts lint-clean by fixing
cleanup handlers, normalizing formatting, and adding narrow
script-level suppressions where visible console output is intentional.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The GUID pins module identity (precise pinning), a stricter control than the lock-to-major risk appetite. Keep only the version range.
Replace pipeline-heavy recursion with direct .NET collection and string operations while preserving secure-string and nested-object behavior.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Cache exact-ID file lookups and vault keypairs, defer Sodium loading until cryptography is used, and harden paths used for vault file operations.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Run the suite on Pester 6 and cover populated-vault workloads, repeated context roundtrips, cross-vault exact-ID results, and path traversal protections.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Wrap long calls, declare recursive output types, and document why in-memory cache helpers do not use ShouldProcess.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
- Pin workflow to v6.1.13 (SHA fb1bdb8fefd243292f779d2a856a38db6fe6daf4)
- Replace secrets: inherit with explicit APIKey secret per v6.0.0 breaking change
- Context has no test secrets so TestData is omitted
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Translates all mkdocs.yml settings to Zensical TOML format:
- Preserves palette colors (black/green dark, indigo/green light)
- Updates palette toggle icons from material/ to lucide/
- Retains all navigation features and markdown extensions
- Adds content.code.copy and pymdownx.superfences (Zensical standard)
- Social links and cookie consent carried over
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@MariusStorhaugMarius Storhaug (MariusStorhaug) changed the title 🩹 [Patch]: Crypto operations are faster after Sodium dependency upgrade to 2.2.5🩹 [Patch]: Common context operations complete faster with Sodium 2.2.5Jul 25, 2026
@github-actions

github-actionsBot commented Jul 25, 2026

Copy link
Copy Markdown

Super-linter summary

LanguageValidation result
CHECKOVPass ✅
GITHUB_ACTIONSPass ✅
GITLEAKSPass ✅
GIT_MERGE_CONFLICT_MARKERSPass ✅
MARKDOWNPass ✅
NATURAL_LANGUAGEPass ✅
POWERSHELLPass ✅
PRE_COMMITPass ✅
SPELL_CODESPELLPass ✅
TRIVYPass ✅
YAMLPass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

Refresh the on-disk index before treating exact-ID lookups as
missing, reject wildcard metacharacters in vault names, and use
literal paths for vault deletion. Split cache helpers into one
function per file so source-code CI recognizes them correctly.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Require Sodium 2.2.5 consistently in the lazy-load guard, make the
benchmark script run only against an explicitly imported Context
module, and pin the cross-version compatibility script to Context
8.1.3 when validating historical vault data.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Quote vault names and file paths safely before embedding them in the
cross-version helper's child pwsh commands so the script still works
when paths or vault names contain apostrophes.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Update both Pester-backed test files to require the latest published
Pester 6.0.1 release, and make vault-name validation reject both
forward and backslashes on every platform so the Linux/macOS module-
local jobs match Windows behavior.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Update the compatibility helper to use named parameters for its local
assertion helpers so repository-wide PowerShell lint treats the script
as clean.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add regression tests for stale exact-ID cache entries, on-disk metadata
ID drift, decrypt failures, and stricter vault-name validation so the
new cache and path-hardening logic stays above the repository coverage
threshold.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add a post-workflow coverage reporting job that downloads the generated
code-coverage artifacts, summarizes missed command groups in the run
logs and step summary, and uploads a CodeCoverage-MissedPaths artifact
for follow-up analysis.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Remove the Context-local missed-path reporting prototype and pin the
Process-PSModule workflow to the upstream commit that provides generic
coverage gap reporting for all consumers.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Update the reusable workflow ref to 00cd9d1, the latest green head
from Process-PSModule PR #421 for generic coverage missed-path
reporting.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

⬆️ [Dependency]: Bump Sodium from 2.2.2 to 2.2.5 for performance improvements

1 participant

@MariusStorhaug