Documentation navigation

Wayfarer

Dependency servicing R1

Routine source maintenance against 7978d1e07cd45315a6c35ad06f6fa96e877ed3fc, using the complete assessment inventory and its assessment. Selected candidates were available on 2026-10-26. This prepares source and local payloads; installed artifacts require a separately authorized replacement release. Application version, database authority and migrations are unchanged.

Selected versions

Owner Before After
ASP.NET Diagnostics/Identity/UI, EF Design/Sqlite/SqlServer/Tools, recovery DataProtection.Extensions, dotnet-ef 10.0.11 10.0.14
TestHost, EF InMemory/Sqlite/Sqlite.NetTopologySuite, Data.Sqlite.Core 10.0.11 10.0.14
HtmlSanitizer; parent-selected AngleSharp/CSS 9.2.995; 1.7.1/1.0.1 9.2.1039; 1.7.2/1.0.2
NodaTime; TZDB 3.3.3; 2026c 3.3.6; 2026e
TimeZoneConverter 7.2.0 8.0.0
Swashbuckle and Swagger/SwaggerGen/SwaggerUI 10.2.3 10.3.1
Test SDK/platform; xUnit VS adapter; coverlet 18.9.0; 4.0.0; 10.0.1 18.11.0; 4.0.1; 10.1.0
Moq; parent-owned Castle.Core 4.20.72; 5.1.1 4.21.0; 5.2.1
ReportGenerator 5.3.10 5.5.11
Code Guard 0.5.0 0.5.1
Vite; Vue plugin; vue-tsc/language-core 8.3.3; 6.0.9; 3.3.12 8.3.5; 6.0.10; 3.3.13
Vue and all compiler/runtime siblings 3.5.43 3.5.44
npm Quill 2.0.2 2.0.2 (exact pin retained)
Copied Bootstrap; print CSS 5.3.6; 5.3.0 5.3.8
Copied Bootstrap Icons/font/SVG; print CSS 1.13.1; 1.11.0 1.13.2
jQuery Validation; Markercluster 1.21.0; 1.4.1+master.37ab9a2 1.22.1; 1.5.3
SortableJS; Tom Select 1.15.6; 2.4.3 1.15.7; 2.6.2
Rust libc; moxcms 0.2.177; 0.8.0 0.2.191; 0.8.1
Rust cc; find-msvc-tools; crc32fast 1.8.0; 0.1.14; 1.5.2 1.10.0; 0.1.15; 1.5.3
Parent-owned SqlClient; SNI runtime 6.1.6; 6.0.2 6.1.7; 6.0.3
SQLitePCLRaw bundle/core/provider/native 2.1.12 2.1.13
PKCS application graph; PKCS/XML recovery graph 9.0.11; 10.0.11 9.0.22; 10.0.14
SDK-owned ILLink task 10.0.13 10.0.14
Noble SDK; .NET/ASP.NET runtime 10.0.401; 10.0.12 10.0.403; 10.0.14

Security and resolution

EF.SqlServer 10.0.14 selects SqlClient 6.1.7, which still admits package-local PKCS 9.0.11. The application therefore adds System.Security.Cryptography.Pkcs 9.0.22 as the smallest assessed servicing constraint preserving its 9.x family. It addresses GHSA-846f-f764-76mx and GHSA-2fmv-rv2c-59x7. Recovery’s updated DataProtection parent supplies XML and PKCS 10.0.14; operator/test resolution inherits that 10.x closure. Runtime servicing does not replace local package DLLs. No audit warning is suppressed. Other transitives remain parent-owned.

Retain the exact npm Quill 2.0.2 pin and its matching lock entry. The initial 2.0.3 update contradicted the documented pin rationale and failed the unchanged npm audit check in run 40357847290. The Quill investigation records the earlier decision and the HTML-export advisory. Restoring the npm pin does not resolve the separately copied Quill 2.0.3 exposure: that distribution, including its restored notices/map, remains unchanged and tracked in #939. Production does not call getSemanticHTML; submitted DOM Notes retain the client normalization and server RichNotes allow-list before storage and publication. These controls do not establish that the copied package is vulnerability-free. No editor replacement, audit threshold/suppression, CI selection or sanitizer policy changes are included.

npm’s lock update retains TypeScript wrapper 6.0.2 / JS compiler 6.0.3, Playwright 1.63.0 and existing major families. Compatible parent-owned changes include rolldown/bindings 1.2.12 to 1.2.15, OXC types 0.152.0 to 0.155.0, PostCSS 8.5.29 to 8.5.31 and Babel parser/types/string-parser to 7.29.11. Cargo changes only the five selected crates and retains all checksums and the qualified WebP Git revision. No blanket transitive override is introduced.

Behavior and persisted history

HtmlSanitizer retains Wayfarer’s existing allow-lists and Notes contract. TimeZoneConverter retains the used GetTimeZoneInfo API and host timezone database; no stream initialization is enabled. Coordinate conversion uses NodaTime’s updated packaged TZDB. New conversions may reflect new upstream timezone rules.

#938 separates independently versioned history semantics from actual dependency, executing-runtime and globalization provenance. The exact qualified R1 generation strings remain the initial opaque IDs; already-compatible R1 data needs no cosmetic relabel/rebuild. Qualified compatible servicing preserves facts, active/target state, checkpoints and cursor binding. A real or unjustified semantic change changes only the affected ID, with the existing explicit rebuild and all-owner readiness gates.

For this R1 update both old time and text generations require rebuilding. NodaTime 3.3.3/TZDB 2026c → 3.3.6/2026e changes Dublin 1925-09-25 12:00Z from 13:00/+3600 to 12:00/0, with other historical/rule changes retained in the investigation. AngleSharp 1.7.1 → 1.7.2 changes legacy MathML TEXT/HTML extraction from SECRET VISIBLE to VISIBLE. These production counterexamples now live in focused tests. Ordinary unchanged recent rows cannot justify waiving either rebuild. Runtime-only 10.0.13 → 10.0.14 equivalence in the bounded controls is separate; there is no demonstrated third semantic change from that metadata alone.

Verified artifacts: GeoTimeZone 6.1.0 source 73206b43819c89f8b6ec2926b2ca227fc783b938, NodaTime 3.3.6 source 3ad5876deb0edfc3c87622a3717801c616ff570a, AngleSharp 1.7.2 source 3718d6804dd3a3781efcd1ccd7bdcb10a4352edd, TZDB 2026e (mapping: 49). The packaged Noble AMD64 image actually runs .NET/ASP.NET 10.0.14 and ICU 74.2-1ubuntu3.1. The independent native Ubuntu profile probe actually runs 10.0.13; the official SDK 10.0.403 probe runs 10.0.14. Both profiles report invariant sort 31129 / 00007999-0000-0000-0000-00000000007f and pass the normalization control. The old main image’s exact immutable base (2d584d…) actually executes 10.0.12, verified from its cached image config and network-disabled execution; the old preparation receipt/probe used 10.0.13. The investigation’s 10.0.11 image statement was incorrect (10.0.11 was a package version). Neither NuGet versions nor tag text identify an executing runtime. New admission does not qualify old-main behavior.

Admission is code-owned and local to history, with independent time/text checks; it is not a global startup gate or a machine/path allowlist. Unknown profiles cannot stamp, activate or advertise current facts. Tracked/import saves and both fenced bulk publication branches retain atomic rejection. CLI status exposes qualification separately from preparation; selected maintenance preflights before changing state. Affected reads use historyQualificationRequired, while qualified unprepared data uses historyPreparationRequired. Rebuilding cannot qualify an unsupported profile. No permissive legacy matching, startup rebuild, automatic relabel, extra stored generation or new framework is introduced.

Canonical timestamps, coordinates, Notes, addresses, identities and provenance stay intact. The runbook retains quiesced upgrade authority, resume/stale sweeps, physical-index checks and all-owner readiness. #604 owns installation migration and headroom; #915 retains security publication gates; #939 retains deferred packages/copied Quill. #918 stays closed. This source correction authorizes no release or deployment.

Distribution provenance and notices

Copied assets are original bytes from exact official npm archives, verified against the registry’s integrity digest. Bootstrap includes its complete dist tree; Bootstrap Icons includes paired font/CSS/SCSS/JSON and SVG files. Markercluster’s versioned path and every consumer move together. Validation, Sortable and Tom Select retain supplied licenses and referenced maps. Quill’s previously missing referenced license text and map are supplied from its existing 2.0.3 distribution. Third-party notices and the helper’s complete dependency/license inventory accompany the updates. No licensing policy is changed. The root Moq notice’s stale MIT label is corrected to the official BSD-3-Clause metadata; the assessed old/new package license is unchanged. Older GeoTimeZone, Playwright and MvcFrontendKit notice labels are reconciled to their unchanged actual inventory versions.

Immutable Noble image indices:

Both native manifest/config pairs declare the selected servicing versions. Preserve #936’s signed CA installation before downloads, fixed pip wheel/hash, Node 24.22.1 selector/pin and temporary patched browser-installer Node.

Deferred boundaries

Playwright/browser 1.63.0 and Quartz 3.19.1 stay unchanged; their coupled candidate batches remain separate. Preserve #474’s compiler gate, #877’s qualified WebP pin, FluentAssertions 7 licensing, jQuery 3/Turf 6, UNKNOWN Leaflet.Editable provenance, MvcFrontendKit’s embedded tools, native libjpeg-turbo, Rust 1.90, Node-bundled npm, pytest and all GitHub Action refs. No upstream project is changed.

The assessment’s Caddy-current wording reused pre-correction evidence. Merged #936 already selects Caddy 2.11.7, index sha256:eb4d35b7452d1ab6171fbdbe8d9275b2301dad6dad92115d91e19fb9b24d510f. This batch leaves those bytes and the old/new transition gate unchanged. #915 remains open for earlier acquisition qualification, Caddy compatibility and create-only publication obligations. Source maintenance does not replace installed artifacts, authorize publication or waive native architecture gates.

Original local validation and remaining evidence

The following records the original 3da73e4d implementation, before the cleanup and npm-pin corrections below. Using the official hash-verified SDK 10.0.403 / runtime 10.0.14 on Linux x64:

Evidence is retained separately at /home/stef/.local/share/wayfarer-investigations/r1-servicing-20261026/, including registry/archive hashes, before/after graph inventories, licenses, native payloads, audit outputs, test/build logs, coverage HTML and a safe modal screenshot. Original browser residue is retained at the path recorded in evidence/browser-residue.json. The initial artifact-cleanup failure is fixture infrastructure evidence, with no observed product failure; its local correction is recorded below. Independent exact-head review, successful applicable native/image CI and maintainer acceptance remain required. The original implementation opened a draft PR and checked CI startup once. The completed run subsequently failed at npm audit, before later test-job checks; the consolidation below starts no CI.

Browser cleanup diagnosis and local correction (#937)

The live PR head was verified as 3da73e4d51f704f3c313bd043ff061ceef193db9 before creating the isolated fix/937-clr-artifact-cleanup branch. The retained children.json ties all three special entries to the launched Wayfarer host: PID 134178, Linux start tick 365531, boot ff1d65d8-f131-4dd1-9549-566e7e1ce5da. Its TempRoot contains clr-debug-pipe-134178-365531-in, clr-debug-pipe-134178-365531-out and dotnet-diagnostic-134178-365531-soc. The last name is the runtime’s canonical -socket path truncated to Linux’s 107 usable socket-path bytes. The CLR diagnostic-port contract documents the TMPDIR, PID and process-start naming authority.

The supervisor and all 16 recorded children are absent from /proc on the same boot. No Unix socket is bound at the original path; inspection found no accessible process using the tree. Other-user process descriptors were inaccessible and were left alone. All three entries belong to the task UID and have one link. The retained log proves Playwright’s two assertions and independent fixture/environment cleanup verification passed before BrowserRoot.remove() failed. Its recursive ordinary() check rejected the FIFOs/socket; the same strict check also prevented writing the secondary diagnostic log. The original termination signal is not recorded, so no specific signal is inferred.

The existing finalizer now passes its retained stopped children to BrowserRoot. The owner derives an exact path/type allowlist only for their same-boot PID/start tokens, after stop/reap, and requires those PIDs still be absent. Only the two CLR FIFO names and byte-limited socket name directly in its private TempRoot qualify, with the current UID and one link. Full-tree validation still precedes deletion. Creation inode/marker, lexical path, ancestor, symlink/reparse, process and primary failure checks remain enforced. Default ordinary() calls remain strict; there is no stale-root adoption, arbitrary delete path or general special-file permission.

The new finalizer regression failed at the original artifact-removal seam before the correction and passes afterward. All 43 existing Python tooling tests (including four added cleanup cases) and four Node cleanup-safety tests pass on Linux. They exercise real FIFOs/socket, retained subprocesses, safe removal, live/unretained/unknown owners, wrong birth tokens/boots/UIDs, reused PIDs, inspection errors, wrong paths/types, symlinks and shared FIFO inodes. No application build or browser-matrix rerun was needed: the existing ownership/finalizer seams directly cover the change. Earlier browser product success and this cleanup success are separate evidence; this does not claim a new end-to-end browser result or native Windows validation.

Complete-change code-guard . --base-ref main --ci is REVIEW, with no FAIL/INCOMPLETE and policy-relaxation PASS (30 selected, 17 analyzed, 13 inapplicable; 2,152 existing vendor exclusions). Accepted findings: Viewer remains 929 LOC within its existing 934 allowance; map utility callables remain 113/104/84/116 LOC with only the prior R1 icon URL edits; BrowserRun.execute retains its unchanged 16-decision profile orchestration; the chronological 1,536-line changelog and 258-line Unreleased Fixed section remain navigable. The cleanup implementation/tests pass all source guards. No policy, threshold, baseline or exclusion changed. Correction diff hygiene passes.

Original residue remains intact at /tmp/wayfarer-browser-e2e-393e2e52-7648-4c5c-a080-15c376d93725. Before task cleanup, copies of original logs/ownership records, a 14,419-entry hashed inventory and a process/socket snapshot were retained at /home/stef/.local/share/wayfarer-investigations/937-cleanup-20261026T174852Z/. Test-created roots/processes are finalized by their existing owners. Shared/manual work and other agents’ checkouts are untouched. This cleanup-only slice left the Quill-pin and history-generation corrections separate. Its complete three-commit range through 512898ad95e3160d344e789c907f200e7cc1c625 is integrated unchanged in the local consolidation below. No push, new CI cycle, merge, release, deployment or issue closure is authorized by this correction.

Local cleanup and npm-pin consolidation (#937)

Verified live PR base 7978d1e07cd45315a6c35ad06f6fa96e877ed3fc and head 3da73e4d51f704f3c313bd043ff061ceef193db9 before editing. The isolated fix/937-cleanup-quill-pin branch integrates the complete cleanup range above, preserving its source/tests and recorded ownership rationale. Only the npm manifest pin, root lock declaration and Quill lock node change for the editor; the full 2.0.2 node matches the PR base and every other lock entry matches the verified PR head. Copied Quill bytes, notices and map remain unchanged.

On Node 24.22.1 / npm 11.19.1, npm ci and the unchanged npm audit pass with zero reported npm vulnerabilities. All 43 Python tooling tests and 440 client tests pass without skips, including the four cleanup-safety tests and existing Notes/editor checks. Typecheck and the frontend build pass; Vite retains its large-chunk warning. No additional product defect was observed.

Complete-change Code Guard against the verified PR base is REVIEW: 30 selected, 17 analyzed, 13 inapplicable and 2,152 existing vendor exclusions; no FAIL or INCOMPLETE, policy-relaxation PASS. Accepted reviews retain the Viewer at 929 LOC within its 934 allowance, the four unchanged map callables at 113/104/84/116 LOC, and the unchanged 16-decision BrowserRun.execute orchestration. The 1,540-line chronological changelog and its 258-line Unreleased Fixed section remain navigable. No policy, baseline, threshold or exclusion changes were made.

Reuse the original four Notes acknowledgement browser assertions and two mounted journeys as historical evidence; no browser run qualifies the consolidated head. The original residue’s 14,419 recorded entries retain matching metadata, including all three diagnostic special files. Original evidence and shared/manual work are preserved. Consolidation logs, preservation checks and recovery artifacts are at /home/stef/.local/share/wayfarer-investigations/937-consolidation-20261026T182200Z/.

This is implementation-time validation. #938 still owns the history-upgrade correction and holds acceptance of affected updates; #939 owns copied-Quill exposure and editor disposition. #915 retains security publication gates. Keep this result local for #938 and final combined-head review. No push, CI startup/rerun, merge, issue closure, release or deployment was performed.

#938 implementation qualification

Fresh local evidence uses the final history source boundary with the consolidated cleanup/npm correction retained. Release build succeeds. Across the retained focused 10.0.14 runs, 178 distinct tests have passing results, including derivation, query/cursor, PostgreSQL preparation/readiness, tracked/import/bulk integration, both fenced provider publication branches, and routed page/overview/candidate/detail reads. The first broad selection passed 175/176; the new stale-null fixture violated the existing text check constraint. Correcting that fixture yielded 8/8 transition/ cursor passes, and the strengthened all-canonical-column rebuild assertion passed 1/1. No production counterexample remains from those attempts. These are combined focused receipts, not a full-suite-green or one-run-178 claim.

A separate actual native runtime 10.0.13 run passes 39/39 derivation/query/cursor/ qualification tests, including the small PostgreSQL fixtures. Current admission is also executed inside the existing Noble R1 image with the final history assembly: 10.0.14, ICU 74.2, both qualifications true. The probe uses the image’s installed runtime; mounted SDK files supply FSI only. This does not qualify a rebuilt final application image. A direct invariant-mode history-data rebuild both exits 1 with actual provenance and the fixed qualification diagnostic before any database work.

Reuse unchanged #918 preparation/performance/routed receipts and their limits; no new scale, performance or browser campaign was run. Reuse original #937 .NET coverage/security/package, Rust, image, frontend/browser receipts within their unchanged scope, and the consolidation’s cleanup (43 Python tests), npm audit, 440 client tests, typecheck/build and preservation receipts. They are historical and implementation-time evidence, not final-head CI/native/browser acceptance. Original browser residue and shared/manual work remain preserved.

Complete-branch Code Guard against 7978d1e07cd45315a6c35ad06f6fa96e877ed3fc returns REVIEW, with no FAIL/INCOMPLETE and policy-relaxation PASS. Reviews are accepted for unchanged Viewer/map callable structure, unchanged browser orchestration, the cohesive pre-existing 35-decision history grammar parser (only qualification plumbing changed), and the navigable API reference, chronological changelog and unchanged Fixed section. No threshold, policy, baseline or exclusion is changed.

Evidence: /home/stef/.local/share/wayfarer-investigations/938-implementation-20261026/. Successful final combined-head CI, fresh independent review and maintainer acceptance remain outstanding. Native Windows/NLS/other ICU profiles are not newly qualified; ARM64 final-head execution remains separate CI evidence. No migration, release, deployment, issue closure or rolling-upgrade acceptance is performed.

Back to top