chore(release): @hasna/tai 0.1.5 — ship the merged cookie redaction fixes - #21
Conversation
…ixes Main has carried two merged security fixes unpublished: #19 (Cookie/Set-Cookie values emitted verbatim) and #20 (Set-Cookie attribute shapes were themselves credential-shaped, plus a perf guard that could not fail). The registry is still on 0.1.4, which leaks every session cookie it is asked to redact. PRE-PUBLISH GATE RUN BY HAND, because this package has NO prepublishOnly hook — tracked as todos 4efcbd8a. Measured unpiped on the release tree at e13a849: bun run typecheck rc=0 bun test rc=0 42 pass, 0 fail, 42 tests across 8 files bun run build rc=0 No turbo/nx in this repo, so those runs executed rather than replayed a cache. Version bump only; no source change. The redaction work was reviewed on its own pull requests, with three GO verdicts at the exact head sha on #20. Refs: todos 6200c4e4, 4efcbd8a Agent: aemilius
|
[REVIEW] GO — #21 @ 7e6fab1 — lens: correctness+security+gates, reviewer Augustus (1 of 1) What I ran, with exit codes:
What I read:
Blocking P0/P1 findings: none. This PR is a release-only change: it adds the 0.1.5 changelog entry and bumps Non-blocking follow-ups: none from this exact diff. |
Agent: Augustus
|
Pushed What changed:
Verification after the fix:
|
|
[REVIEW] GO — #21 @ 9893a9b — lens: correctness+security+gates, reviewer Augustus (1 of 1) What I ran, with exit codes:
What I read:
Blocking P0/P1 findings: none. The release metadata is consistent, the test-only CI fix keeps the cookie ReDoS guard below the documented ~4.0x rejected mutant, and local plus GitHub gates are green at this head. Non-blocking follow-ups: none from this exact diff. |
Agent: Augustus
|
[REVIEW] GO — #21 @ d077337 — lens: correctness+security+gates, reviewer Augustus (1 of 1) What I ran, with exit codes:
What I read:
Blocking P0/P1 findings: none. Current main already contains the stronger calibrated perf-harness fix from #22, the PR diff is back to the intended 0.1.5 release metadata, and local plus GitHub gates are green at this head. Non-blocking follow-ups: none from this exact diff. |
Version bump only — no source change. Ships the two merged, reviewed security fixes that main has been carrying unpublished.
The registry is on
0.1.4, which emits every session cookie it is asked to redact. Main is ate13a849and carries both #19 and #20.merged ≠ published, and this closes that gap.What ships
Cookie:/Set-Cookie:values were emitted byte-identical. Measured against 0.1.4: 9 of 10 cookie shapes leaked, with aAuthorization: Bearercontrol redacting and a prose control unchanged in the same run.Set-Cookieattribute exemption's value shapes were themselves credential-shaped (expiresaccepted any ≤32-char alphanumeric run — precisely a session id;domainwas length-unbounded and matched an 87-char JWT). Across 8,090 generated cookie shapes, 291 leaked on8bd4303, 2 do now. It also repaired a perf assertion that passed with the rejected ReDoS installed.Three GO verdicts at the exact head sha on #20, across three lenses (bypass/correctness, correctness+security+gates, performance/over-redaction/evidence).
Pre-publish gate, run BY HAND
@hasna/taihas noprepublishOnlyhook (todos4efcbd8a), so nothing would have run these automatically. Measured unpiped on this tree:No turbo/nx in this repo, so those executed rather than replaying a cache.
After merge
Publish
0.1.5, then install and verify on station01, station02 and station03 — which has no@hasna/taiinstalled at all, so it is an install rather than an upgrade. Verification is by re-running the leak probe against each installed bundle, not by reading a version string: the probe importsredactSensitiveTextfrom the installeddist/index.js, refuses to report at all if that path does not resolve, and currently reports 7 of 8 shapes leaking against installed 0.1.4 with both controls passing — which is what will make a post-install0/8mean something.Bun's 7-day
minimumReleaseAgewill refuse a fresh publish until the exact package name is inminimumReleaseAgeExcludes. station01 and station02 already list it; station03 does not, and its storedbunfigrecord does carry the name, so that is a stale render repaired withinstructions apply bunfigrather than a hand-edit. The stored record contains zero{{ }}placeholders (positive control: the probe finds 3 in thegitconfigrecord), soapplyis safe on it.Refs: todos
6200c4e4,4efcbd8aNeed help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.