Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b107116036 |
No files matched your search
@@ -5475,23 +5475,3 @@ remain; no live state, schema or bus policy change.
|
||||
2026-10-24 | Goldie | Row265 / #1770 first slot STOP (sage-3932) | New parser14/14, rooms18/18 green; serialized bus stops at old project-runtime.test.mjs:14 import-closure pin, partial619 ok/1 not ok. New pure address.mjs import is absent from expected imports. Static trace also needs address.mjs in seat RUNNER_FILES. No old-test/product correction, no mutant/restored run, no green commit/push; old-pin and out-of-owned-files mount change sent to Sage for ruling. Audit prose missed the direct source pin despite raw grep hit; correction recorded in BUILD.md.
|
||||
|
||||
2026-10-24 | Goldie | Row265 / #1770 verified (mos-1567, sage-3942) | Approved correction adds solely address import pin + Row265 comment to project-runtime.test and one pure-source RUNNER_FILES mount; new block checks parser has no imports. Serialized fresh-short-TMP timeout-k10: unchanged sandbox10/10, parser15/15, rooms18/18, full bus957/957, twelve named refusal mutants killed (each Node1, driver0), restored parser15/15 + rooms18/18. All positives zero fail/skip/cancel; every mutation restored full broker SHA71b32ee4. Old first-red evidence retained, no other old-test change. Slot returned goldie-0034; Boyd packet explicitly includes mount-list review, candidate push next.
|
||||
|
||||
## 2026-10-24 — W2 row 310 / #1824 started (Gyro)
|
||||
|
||||
Before: only Louie's evaluation artifact and S0 conditional baseline review exist. Sage assigned the owned source import, offline pinned restricted web build and root-independent output/CSP evidence under Q246/mos-1571. Implementation plan and subsequent measurements live in agents/gyro/work/queue-310/BUILD.md. No build/test, serving route or live change at start.
|
||||
|
||||
## 2026-10-24 — W2 row 310 / #1824 bounded scratch measurement (Gyro)
|
||||
|
||||
After sage-3992: 534 existing cached registry archives extract to 24,844 files / 611,577,974 bytes, or 614,049,226 bytes with generated checksums. A full 538-package lock vendor set adds 329 identities beyond S0's 209. In isolated scratch, with the three already-reviewed git inputs and approved local workspace reduction, exact S0 199/209 package closures matched; baseline release measurement succeeded offline with networking disabled. Valid absolute-nice19/four-job environment retry: 397.864805 s; four runtime files total 44,142,800 bytes, scratch Git blob pack 16,720,159 bytes. Initial 388.757578 s attempt had an inherited-priority defect and is retained as limited evidence. Receipt and caveats: agents/gyro/work/queue-310/BUILD.md, “Full-lock measurement results (sage-3992)”. No full-lock repository import, runtime output commit/push, serving or live change. W2 remains incomplete at the packaging boundary; no M1–M14/CSP/reproducibility acceptance claimed.
|
||||
|
||||
## 2026-10-24 — W2 row 310 / #1824 223-source packaging evidence (Gyro)
|
||||
|
||||
Under sage-4008/4010, exactly209+14 source packages measured in scratch: total11,201 files /145,260,334 bytes and26,538,894-byte independent blob pack; extra14 total702 files /14,523,104 bytes and1,720,566-byte blob pack. Original pinned lock refused with --locked after existing cfg-filter script; one authorized automatic offline lock regeneration produced a strict subset (558→226 entries,332 removed,0 added,0 changed). Original lock untouched. Per-package source/archive/license/notice inventory and exact errors are in agents/gyro/work/queue-310/BUILD.md, “223-source measurement — sage-4008 and sage-4010”. Release measurement approved but awaits CLEAR after row327 gate (sage-4011). This evidence commit contains plain text only, no imported crate source or runtime outputs; packaging/landing choice remains held under Vikunja618, and source/notice review goes to Gladstone.
|
||||
|
||||
## 2026-10-24 — W2 row310 / #1824 223-vendor release measurement (Gyro)
|
||||
|
||||
sage-4014 CLEAR run: frozen/offline scratch build exit0 in380.674036s, actual nice19/four jobs/cores/CPUs, no external network interface, no retry. Four outputs total44,137,258 bytes; WASM43,952,335 bytes SHA2560322beb9e58b9abeed6b6e05125879bfb3eccbebb05094e191df3542a74007ea differs from the full-lock build. Exact S0 package closures passed preflight; original lock unchanged, pruned lock remains3401363e.... Slot released immediately for Bradford in gyro-0018. Gladstone supplemental review of14 additions found10 PASS/4 CONCERN (not adoption approval); embedded W3C notices/attribution, dpi full-source conjunction/copyrights, explicit spirv standard-text map and winit example PNG inventory are now documented in plain-text evidence. Details: agents/gyro/work/queue-310/BUILD.md, “223 release result and notice supplement — sage-4014”. No crate sources/binaries/runtime route committed or served; row held for Vikunja618 and all implementation/CSP gates remain open.
|
||||
|
||||
## 2026-10-24 — W2 row310 supplemental notice collection recheck recorded (Gyro)
|
||||
|
||||
Gladstone-0027 at9522d2356 independently passes the four corrected collection/mapping gaps, with earlier ten package source/notice PASS results standing. Bundle4d8e2aac... and all12 incremental path hashes verified. This is supplemental evidence only: W3C/M13/license adoption, pruned lock, packaging/size, Worker/native runtime, WASM difference and implementation/CSP gates remain uncleared; row310 stays held. Details: agents/gyro/work/queue-310/BUILD.md, “Supplemental notice recheck — gladstone-0027”. No build or source/notice/runtime change.
|
||||
@@ -0,0 +1,323 @@
|
||||
# Row 309 / O2 W1 / Gitea #1823
|
||||
|
||||
2026-10-24 — Glomgold (d17504fd-2f56-4d9f-bff9-eabb450f8a94).
|
||||
Base: d16958bcf; branch glomgold/row309. Read AGENTS.md, seat README,
|
||||
W1, D2, D22, Proposed rows, G1 and CURRENT.md. Approved assignment provides
|
||||
scope and acceptance; no runtime integration or new design approval required.
|
||||
|
||||
## Intended build and acceptance
|
||||
|
||||
Retain all 18 original WordNet files as text, preserving Princeton LICENSE
|
||||
bytes; add NOTICE and per-file provenance. Keep the downloaded ZIP outside git.
|
||||
No binary source archive needs to land. Implement a deterministic offline
|
||||
importer/converter with source integrity, strict records and count checks.
|
||||
Ship JSON lookup data plus license/notice under src/public/thesaurus, not source
|
||||
or converter code. Prefer explicit sense identifiers, glosses, lemmas, index
|
||||
and exceptions over a lossy synonym-only table. Record deterministic output
|
||||
hashes and bytes; measure JSON parse heap under Node with explicit GC, labeling
|
||||
it as Node rather than browser evidence. All tests and measurements await Sage
|
||||
CLEAR, followed by Boyd review and a single Duckworth landing review. No runtime
|
||||
fetch, UI, route, worker, CSP change, live stack or private books.
|
||||
|
||||
## Source intake — blocked on count mismatch
|
||||
|
||||
Fetched only the assigned source:
|
||||
https://raw.githubusercontent.com/nltk/nltk_data/96f9b3252457a2b97e52aec64c3dfceeb5c312d5/packages/corpora/wordnet.zip
|
||||
|
||||
Archive retained outside repository:
|
||||
/mnt/storage/scratch/tmp/glomgold-wordnet-3.0.zip
|
||||
|
||||
- Archive bytes: 10,775,600 — matches.
|
||||
- Archive SHA-256: cbda5ea6eef7f36a97a43d4a75f85e07fccbb4f23657d27b4ccbc93e2646ab59 — matches.
|
||||
- Regular entries: 18; uncompressed total: 36,353,991 — matches.
|
||||
- data.*, index.* and *.exc total: 35,435,978 — matches.
|
||||
- Synsets: 117,659 — matches.
|
||||
- Distinct literal lemma strings in data.*: 149,229.
|
||||
- Distinct lowercased lemmas after removing adjective (a)/(p)/(ip) suffixes: 147,306.
|
||||
- Distinct first-field strings across index.noun/index.verb/index.adj/index.adv:
|
||||
147,306. This is 28 above D22's cited Princeton statistic of 147,278.
|
||||
|
||||
Counting method: read the verified ZIP using Python standard-library zipfile;
|
||||
exclude header lines beginning with two spaces. Each remaining data.* line is
|
||||
one synset; field 4 is the hexadecimal word count and following alternating
|
||||
word/lex_id fields supply its lemmas. Independently take the first whitespace
|
||||
field of each nonheader index.* line into a union set across the four files.
|
||||
Both normalized data and index counts agree at 147,306. This was source intake,
|
||||
not a test-suite run. No converter, generated data, tests or heap measurement
|
||||
has run or been written. Per explicit assignment, stop on differing count and
|
||||
ask Sage to resolve the expected count before proceeding. No alternate source.
|
||||
|
||||
Queue next from the linked worktree refused because queue operations require
|
||||
the canonical checkout. Retried there and received row 309. Claim operation
|
||||
is glomgold-0001, initially still pending; do not repeat with a fresh key.
|
||||
|
||||
Claim completed: `ok glomgold-0001 rev 3856 row 309 briefed→in-progress`.
|
||||
Sage notified through T3, glomgold-0002 at 05:38:57Z. No commit/push.
|
||||
Session and BUILD-LOG registry entries require Sage coordination because those
|
||||
shared files are outside the assignment's exclusive owned-file list. Proposed
|
||||
session line: 2026-10-24 | glomgold | row 309 / #1823 W1 source intake |
|
||||
blocked: pinned archive has 147,306 distinct headwords versus cited 147,278;
|
||||
archive bytes/hash and synsets match; no tests, commit or push.
|
||||
|
||||
## Sage ruling sage-3972 (05:40:30Z)
|
||||
|
||||
Proceed with the exact pinned mirror. Pin 147,306 distinct headwords, 117,659
|
||||
synsets and the source hashes. Record literal data lemmas =149,229. The 147,278
|
||||
is the cited Princeton page figure, not an expected count measured on this ZIP.
|
||||
The 28-string gap remains open for review and is not a build blocker.
|
||||
|
||||
Bounded investigation: the Princeton statistics page reports per-POS strings
|
||||
117,798 noun; 11,529 verb; 21,479 adjective; 4,481 adverb, total 155,287.
|
||||
All four match the pinned mirror. The page explicitly states its 147,278 is
|
||||
the cross-POS union, so summing per-POS counts does not explain the gap.
|
||||
Mirror index lowercasing, replacing underscores with spaces, and collapsing
|
||||
repeated underscores each leave 147,306. Removing underscores entirely gives
|
||||
146,449, not the cited count. Data normalization independently gives 147,306;
|
||||
case/marker differences explain literal 149,229, not the remaining 28-string
|
||||
gap. No proven explanation found; no source substitution or extra upstream
|
||||
archive comparison. Investigation ended after these bounded checks.
|
||||
References: https://wordnet.princeton.edu/documentation/wnstats7wn and
|
||||
https://wordnet.princeton.edu/documentation/wndb5wn (format description).
|
||||
|
||||
Implementation choice: one JSON shard per POS, retaining glosses and full
|
||||
lemma spelling (including markers), lowercase ordered sense index and exception
|
||||
lists. This lets a future consumer release unused POS objects. JSON is data,
|
||||
with no script, worker, UI or route. Consumer hints (max senses/synonyms) are
|
||||
explicit tunable defaults and never truncate the dataset at build time.
|
||||
The importer takes an explicit local ZIP, validates its bytes/hash before
|
||||
Python stdlib extraction, and never downloads. Normal converter builds use
|
||||
only the verified retained text; no archive or Python needed for regeneration.
|
||||
Tests authored before converter; first run will follow implementation under
|
||||
Sage's explicit code-then-CLEAR workflow rather than unslotted red runs.
|
||||
|
||||
Code and data tests written; no test/build/heap run yet. Proposed CLEAR work:
|
||||
- Node syntax checks for both new converters and the new test.
|
||||
- Offline archive import to scratch and generation into shipped public path.
|
||||
- Independent thesaurus-data.test.mjs, with THESAURUS_ARCHIVE naming the verified
|
||||
external ZIP (round-trip coverage), two full conversions and shipped-byte checks.
|
||||
- Fresh-process --expose-gc measurement three times, recorded here as plain text.
|
||||
- Full affected WebUI suite serially, preserving any existing failure for Sage.
|
||||
- git diff --check and binary diff review before own-branch commit/push.
|
||||
All commands run with TMPDIR from mktemp /mnt/storage/scratch/tmp/XXXXXX.
|
||||
|
||||
## Verification under CLEAR sage-3975
|
||||
|
||||
Runtime: Node v26.8.1; Python 3.12.8; Linux x64. Converter uses only Node standard
|
||||
library; importer uses only Python stdlib zipfile, invoked over verified stdin.
|
||||
Node syntax checks for both converters and the new test exited 0.
|
||||
First generation refused `index.noun: 'hood`: my index grammar omitted the
|
||||
aggregated domain pointer symbols `;` and `-` used in index files (data files
|
||||
use the expanded variants). Inspected all source index pointer symbols,
|
||||
added those two index-only symbols, regenerated successfully. No source edit
|
||||
or old-test change. Generated evidence: generation.txt.
|
||||
|
||||
Independent test command (fresh scratch TMPDIR, THESAURUS_ARCHIVE set):
|
||||
`node --test packages/webui/tests/thesaurus-data.test.mjs` — 8/8 pass, no skip,
|
||||
no failure. Includes two complete conversions vs shipped bytes and each other,
|
||||
all source/license hashes, malformed records, changed source/provenance,
|
||||
missing license, extra inventory, invalid archive, full verified archive
|
||||
round-trip and overwrite refusal. Log: thesaurus-test.tap.
|
||||
|
||||
Generated data: noun.json 15,617,486; verb.json 2,327,528; adj.json 3,319,398;
|
||||
adv.json 648,351; LICENSE 1,625; NOTICE 649; manifest.json 1,623 bytes.
|
||||
Total shipped: 21,916,660 bytes (plain text, no compressed/binary evidence).
|
||||
The data files alone total 21,912,763 bytes. Suggested consumer limits in
|
||||
manifest.json are maxSenses=8 and maxSynonyms=20, tunable hints; all data ships.
|
||||
|
||||
Fresh Node --expose-gc heap measurements (all four shards retained), each with
|
||||
`uptime` immediately before the command; logs heap-1.txt through heap-3.txt:
|
||||
|
||||
| Run | Uptime display / load 1,5,15 | Baseline heap | Retained delta | Sampled post-parse delta |
|
||||
| --- | --- | ---: | ---: | ---: |
|
||||
| 1 | 00:44:34 / 1.47, 2.21, 2.52 | 4,758,736 | 59,679,616 | 60,374,568 |
|
||||
| 2 | 00:44:34 / 1.47, 2.21, 2.52 | 4,758,984 | 59,679,616 | 60,374,568 |
|
||||
| 3 | 00:44:35 / 1.47, 2.21, 2.52 | 4,758,736 | 59,679,616 | 60,374,568 |
|
||||
|
||||
Uptime is host-local; date -u is used for T3 headers. Measurements occurred
|
||||
while Gyro's nice -n 19 cargo build was allowed concurrently. Retained delta
|
||||
is after explicit GC, with objects kept live and 117,659 synsets checked.
|
||||
The sampled post-parse number is not an instrumented high-water mark.
|
||||
These are measured Node costs, not browser-memory claims. No browser/editor
|
||||
code or actual books are involved.
|
||||
|
||||
Sage-3977 authorized ignored root node_modules symlink to canonical dependencies
|
||||
and npm ci --ignore-scripts --no-audit --no-fund in packages/webui; two packages
|
||||
installed from the existing lockfile. The first symlink command accidentally
|
||||
used webui cwd; npm ci removed that temporary symlink, then the intended root
|
||||
symlink was created. Canonical dependency files were not changed. Both final
|
||||
node_modules paths are ignored and absent from git status --porcelain.
|
||||
Full suite started with MOSAIC_REQUIRE_EDITOR_BUILD=1, concurrency=1 and the
|
||||
verified external THESAURUS_ARCHIVE. No tracked package/lockfile changes.
|
||||
|
||||
Public-directory inventory review: shell.test.mjs enumerates only the font
|
||||
subdirectory; editor-provenance.test.mjs hashes only third_party/editor and
|
||||
specific editor outputs. No test found hashing/enumerating all src/public as
|
||||
a closed file list. The new subdirectory does not enter those inventories.
|
||||
SESSIONS and BUILD-LOG will be handled by Sage at landing (sage-3975).
|
||||
|
||||
## First full suite: missing dependency, superseded by isolated install
|
||||
|
||||
Full run exited 1: 426 tests, 376 pass, 50 fail, 0 skipped; 272657.498313 ms.
|
||||
The summary confirms missing oauth4webapi (ERR_MODULE_NOT_FOUND). The authorized
|
||||
canonical root node_modules symlink pointed at an incomplete installation.
|
||||
No old tests or authentication code changed. Sage-3981 supersedes the base-worktree
|
||||
comparison: remove ONLY my root symlink and npm ci from the root lockfile into
|
||||
an isolated worktree root node_modules, then rerun decide-sso/granted-user once.
|
||||
Only if both pass, run the full suite again. No baseline worktree was created.
|
||||
Canonical node_modules remains untouched. All first-run failure details are
|
||||
retained in webui-suite.tap; the five requested decide-sso stacks follow.
|
||||
|
||||
```text
|
||||
test at packages/webui/tests/decide-sso.test.mjs:79:1
|
||||
✖ a signed-in owner confirms and answers, with the session's provider, issuer and sub as the subject (26.393114ms)
|
||||
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'oauth4webapi' imported from /home/jwoltje/.t3/worktrees/mosaic-stack/glomgold-row309/packages/webui/src/sso.mjs
|
||||
at Object.getPackageJSONURL (node:internal/modules/package_json_reader:331:9)
|
||||
at packageResolve (node:internal/modules/esm/resolve:784:25)
|
||||
at moduleResolve (node:internal/modules/esm/resolve:873:18)
|
||||
at defaultResolve (node:internal/modules/esm/resolve:1006:11)
|
||||
at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)
|
||||
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)
|
||||
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:766:56)
|
||||
at #resolve (node:internal/modules/esm/loader:690:17)
|
||||
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:610:35)
|
||||
at node:internal/modules/esm/loader:639:32 {
|
||||
code: 'ERR_MODULE_NOT_FOUND'
|
||||
}
|
||||
|
||||
test at packages/webui/tests/decide-sso.test.mjs:99:1
|
||||
✖ the listener gates: no session, a cross-origin page, a loopback Host, a GET, and a sign-out between the steps (31.164949ms)
|
||||
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'oauth4webapi' imported from /home/jwoltje/.t3/worktrees/mosaic-stack/glomgold-row309/packages/webui/src/sso.mjs
|
||||
at Object.getPackageJSONURL (node:internal/modules/package_json_reader:331:9)
|
||||
at packageResolve (node:internal/modules/esm/resolve:784:25)
|
||||
at moduleResolve (node:internal/modules/esm/resolve:873:18)
|
||||
at defaultResolve (node:internal/modules/esm/resolve:1006:11)
|
||||
at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)
|
||||
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)
|
||||
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:766:56)
|
||||
at #resolve (node:internal/modules/esm/loader:690:17)
|
||||
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:610:35)
|
||||
at node:internal/modules/esm/loader:639:32 {
|
||||
code: 'ERR_MODULE_NOT_FOUND'
|
||||
}
|
||||
|
||||
test at packages/webui/tests/decide-sso.test.mjs:121:1
|
||||
✖ J16: without a decision transport the routes are read-only and /api/config says no; startServer refuses decide without sso or send (24.009216ms)
|
||||
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /need --sso and --send/. Input:
|
||||
|
||||
"Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'oauth4webapi' imported from /home/jwoltje/.t3/worktrees/mosaic-stack/glomgold-row309/packages/webui/src/sso.mjs"
|
||||
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/glomgold-row309/packages/webui/tests/decide-sso.test.mjs:124:3)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'oauth4webapi' imported from /home/jwoltje/.t3/worktrees/mosaic-stack/glomgold-row309/packages/webui/src/sso.mjs
|
||||
at Object.getPackageJSONURL (node:internal/modules/package_json_reader:331:9)
|
||||
at packageResolve (node:internal/modules/esm/resolve:784:25)
|
||||
at moduleResolve (node:internal/modules/esm/resolve:873:18)
|
||||
at defaultResolve (node:internal/modules/esm/resolve:1006:11)
|
||||
at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)
|
||||
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)
|
||||
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:766:56)
|
||||
at #resolve (node:internal/modules/esm/loader:690:17)
|
||||
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:610:35)
|
||||
at node:internal/modules/esm/loader:639:32,
|
||||
expected: /need --sso and --send/,
|
||||
operator: 'rejects',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/webui/tests/decide-sso.test.mjs:147:1
|
||||
✖ J19: a granted user's session gets decide false and the user page config, and a decision POST stops at owner-only (49.361897ms)
|
||||
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'oauth4webapi' imported from /home/jwoltje/.t3/worktrees/mosaic-stack/glomgold-row309/packages/webui/src/sso.mjs
|
||||
at Object.getPackageJSONURL (node:internal/modules/package_json_reader:331:9)
|
||||
at packageResolve (node:internal/modules/esm/resolve:784:25)
|
||||
at moduleResolve (node:internal/modules/esm/resolve:873:18)
|
||||
at defaultResolve (node:internal/modules/esm/resolve:1006:11)
|
||||
at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)
|
||||
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)
|
||||
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:766:56)
|
||||
at #resolve (node:internal/modules/esm/loader:690:17)
|
||||
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:610:35)
|
||||
at node:internal/modules/esm/loader:639:32 {
|
||||
code: 'ERR_MODULE_NOT_FOUND'
|
||||
}
|
||||
|
||||
test at packages/webui/tests/decide-sso.test.mjs:173:1
|
||||
✖ N4: decision.resolve has no Console route, the --send caller names no decision verb, and consoleCall takes only the two console verbs (70.935161ms)
|
||||
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'oauth4webapi' imported from /home/jwoltje/.t3/worktrees/mosaic-stack/glomgold-row309/packages/webui/src/sso.mjs
|
||||
at Object.getPackageJSONURL (node:internal/modules/package_json_reader:331:9)
|
||||
at packageResolve (node:internal/modules/esm/resolve:784:25)
|
||||
at moduleResolve (node:internal/modules/esm/resolve:873:18)
|
||||
at defaultResolve (node:internal/modules/esm/resolve:1006:11)
|
||||
at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)
|
||||
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)
|
||||
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:766:56)
|
||||
at #resolve (node:internal/modules/esm/loader:690:17)
|
||||
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:610:35)
|
||||
at node:internal/modules/esm/loader:639:32 {
|
||||
code: 'ERR_MODULE_NOT_FOUND'
|
||||
}
|
||||
```
|
||||
|
||||
## Environment repair and final candidate validation
|
||||
|
||||
Isolated worktree root npm ci installed 128 packages from the unchanged lockfile
|
||||
(root-install.txt); no canonical install, lockfile or source edits.
|
||||
`decide-sso.test.mjs` alone: 5/5 pass (decide-sso-rerun.tap).
|
||||
`granted-user.test.mjs` alone: 19/19 pass (granted-user-rerun.tap).
|
||||
Both used separate fresh scratch TMPDIRs and MOSAIC_REQUIRE_EDITOR_BUILD=1.
|
||||
This confirms missing dependency setup rather than a W1 source regression;
|
||||
no base worktree needed under sage-3981. Full serial suite restarted only after
|
||||
both files passed; log webui-suite-final.tap.
|
||||
|
||||
Final source cleanup before the rerun: BUILD.json now explicitly records
|
||||
Node v26.8.1 and the initial-import Python 3.12.8 in addition to API baselines
|
||||
and input/output hashes. Removed the optional no-op heap-test wrapper: heap
|
||||
measurement is three explicit CLI runs, not a reported test without assertions.
|
||||
Regenerated metadata, syntax-checked all three new modules, reran the dedicated
|
||||
data test independently: 7/7 pass, 0 skip (thesaurus-test-final.tap). Generated
|
||||
data bytes/hashes are unchanged; only build metadata/input hashes changed.
|
||||
|
||||
## Landing hold mos-1573
|
||||
|
||||
Per sage-3980: W1 may build and push only glomgold/row309 for Boyd review.
|
||||
Nothing lands on refactor until Jason decides whether roughly 58 MB of source
|
||||
and derived text should be permanent repository history (Vikunja 618).
|
||||
After a green local commit, measure the exact packed bytes via
|
||||
`git rev-list --objects d16958bcf..HEAD | git pack-objects --stdout | wc -c`
|
||||
and report `git count-objects -v` alongside it. No merge or protected-branch push.
|
||||
|
||||
Whitespace review: authored source/docs/data/evidence pass staged diff --check
|
||||
when excluding only the original wordnet/ tree and its two exact LICENSE
|
||||
copies. The unfiltered check reports 273,271 upstream whitespace findings in
|
||||
13 files (all original WordNet text or LICENSE copies). Their exact bytes are
|
||||
required by W1 and verified against the pinned archive; no normalization was
|
||||
made. Evidence logs/stack excerpts have trailing blank-line spaces trimmed
|
||||
for review only; test content, errors, statuses and counts are preserved.
|
||||
No binary entries appear in staged numstat. The ZIP and the full whitespace
|
||||
checker diagnostic remain outside git.
|
||||
|
||||
## Candidate completion
|
||||
|
||||
Final full affected suite:
|
||||
`MOSAIC_REQUIRE_EDITOR_BUILD=1 THESAURUS_ARCHIVE=/mnt/storage/scratch/tmp/glomgold-wordnet-3.0.zip node --test --test-concurrency=1 packages/webui/tests/`
|
||||
with fresh scratch TMPDIR — 425/425 pass, 0 failures, 0 skips, exit 0;
|
||||
277018.268665 ms (webui-suite-final.tap). Old test files remained byte-identical.
|
||||
This includes the required pinned esbuild provenance rebuild. The dedicated
|
||||
new test independently passed 7/7 before the full run.
|
||||
|
||||
All committed additions are within W1's assigned source/data/test paths plus
|
||||
this explicitly assigned seat work directory. Both node_modules paths are
|
||||
ignored and absent from git status --porcelain. Source ZIP remains outside git.
|
||||
Staged numstat contains no binary files. Authored-path staged diff --check
|
||||
passes; the unmodified upstream whitespace findings are documented above.
|
||||
License/provenance approval awaits Boyd, then Duckworth once on the landing
|
||||
candidate. No refactor merge/push, release or deployment is authorized here.
|
||||
|
||||
Final registry line for Sage at landing: 2026-10-24 | glomgold | row 309 / #1823
|
||||
W1 pinned WordNet data | 147306 headwords / 117659 synsets, deterministic
|
||||
21,916,660-byte shipped data; Node retained heap 59,679,616 bytes (3 runs);
|
||||
independent 7/7 and WebUI 425/425; source/data plain text; history-size hold
|
||||
mos-1573 and independent review remain external gates.
|
||||
@@ -0,0 +1,13 @@
|
||||
✔ a signed-in owner confirms and answers, with the session's provider, issuer and sub as the subject (92.914873ms)
|
||||
✔ the listener gates: no session, a cross-origin page, a loopback Host, a GET, and a sign-out between the steps (36.478745ms)
|
||||
✔ J16: without a decision transport the routes are read-only and /api/config says no; startServer refuses decide without sso or send (206.814095ms)
|
||||
✔ J19: a granted user's session gets decide false and the user page config, and a decision POST stops at owner-only (77.212086ms)
|
||||
✔ N4: decision.resolve has no Console route, the --send caller names no decision verb, and consoleCall takes only the two console verbs (44.65112ms)
|
||||
ℹ tests 5
|
||||
ℹ suites 0
|
||||
ℹ pass 5
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 564.772519
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"sourceManifestSha256": "e5a799a6693321be71c4e99080b9f89ba12a304c3092d05839bb85355194fe76",
|
||||
"archive": {
|
||||
"bytes": 10775600,
|
||||
"sha256": "cbda5ea6eef7f36a97a43d4a75f85e07fccbb4f23657d27b4ccbc93e2646ab59"
|
||||
},
|
||||
"counts": {
|
||||
"synsets": 117659,
|
||||
"headwords": 147306,
|
||||
"literalLemmas": 149229
|
||||
},
|
||||
"countMethod": "Union of first-field headwords across four index.* files; cross-checked with lowercased data.* lemmas stripping terminal (a)/(p)/(ip). Literal data lemmas counted without normalization.",
|
||||
"openNote": "Princeton statistics page union 147278 differs by 28; unresolved, accepted in sage-3972.",
|
||||
"tools": {
|
||||
"node": "v26.8.1",
|
||||
"initialImportPython": "3.12.8",
|
||||
"converter": "Node.js >=24, standard library only; JSON UTF-8 LF, no timestamps, no locale sorting",
|
||||
"importer": "Node.js >=24 plus Python 3 stdlib zipfile; local pinned ZIP only"
|
||||
},
|
||||
"inputs": {
|
||||
"editor-data/import-wordnet.mjs": "9b3a668b83d40b5c2659b56c647c40db494d8a9f35fb7ab463b46892ae0d530a",
|
||||
"editor-data/build-thesaurus.mjs": "f1b0b062452fedfb1298f9785f4934046a8b6a0ed8704f5cb82c683d6deb60aa"
|
||||
},
|
||||
"outputs": {
|
||||
"noun.json": {
|
||||
"bytes": 15617486,
|
||||
"sha256": "5294d3f0e6cd7924f5be97d4d6e64b96a9dd8505f216e5c056c3f5b69c0c2dc9"
|
||||
},
|
||||
"verb.json": {
|
||||
"bytes": 2327528,
|
||||
"sha256": "3f99489858d8cbce9996c72135f82325bd2c067a64d2fb8b80dea386b99b6392"
|
||||
},
|
||||
"adj.json": {
|
||||
"bytes": 3319398,
|
||||
"sha256": "9965dbfdc35a11b829fedb19e7b22ab3ca8470f45c5532c1f310810012a23023"
|
||||
},
|
||||
"adv.json": {
|
||||
"bytes": 648351,
|
||||
"sha256": "c6effb7a1502cd3dcd81341cb296e039d238786712c91c30994f2e50ef1e9fcb"
|
||||
},
|
||||
"LICENSE": {
|
||||
"bytes": 1625,
|
||||
"sha256": "7731175a77952e259390b496fab905e57118b8d19ad3a8383c67eee724ff443f"
|
||||
},
|
||||
"NOTICE": {
|
||||
"bytes": 649,
|
||||
"sha256": "508e1a5d132e05ec888a79ec959b68d25203fee0aa3692b0610da7500a7c0251"
|
||||
},
|
||||
"manifest.json": {
|
||||
"bytes": 1623,
|
||||
"sha256": "2c58e1513991ea7505ffd8d9dda6e5e8189f8984a7167b051834eb9306e15c72"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
✔ R6 G1 a granted user signs in, gets the user page and reaches the broker as itself (160.658638ms)
|
||||
▶ R6 G2 a subject with no live grant in this business is refused subject-unknown
|
||||
✔ a listed user with no grant (37.489252ms)
|
||||
✔ a grant in another business (53.430666ms)
|
||||
✔ an expired grant (54.675764ms)
|
||||
✔ another user's grant (73.314097ms)
|
||||
✔ a sub in no file (107.901995ms)
|
||||
✔ a file the loader refuses (52.404505ms)
|
||||
✔ R6 G2 a subject with no live grant in this business is refused subject-unknown (380.127672ms)
|
||||
▶ R6 G3 a revoke counts on the next request: 401 and the session is gone
|
||||
✔ grant removed (56.085631ms)
|
||||
✔ subject removed (92.518855ms)
|
||||
✔ grant expired (55.61104ms)
|
||||
✔ file now refused (51.75472ms)
|
||||
✔ R6 G3 a revoke counts on the next request: 401 and the session is gone (256.650806ms)
|
||||
✔ R6 G4 every owner route answers 403 owner-only before any bus call (113.040167ms)
|
||||
✔ R6 G5 the bus refuses every owner verb over the user transport on its own (62.938328ms)
|
||||
✔ R6 G9 a user chat sends only the plugins read over the owner transport (103.067067ms)
|
||||
✔ R6 G6 the user page holds the notice word for word (74.913868ms)
|
||||
✔ R6 G7 the hub label and plain peer links render from config on both pages (794.402374ms)
|
||||
✔ R6 G8 userCall spawns user-cli directly with the user nonce, no human nonce, and the user request (40.148927ms)
|
||||
ℹ tests 19
|
||||
ℹ suites 0
|
||||
ℹ pass 19
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 2123.05789
|
||||
@@ -0,0 +1,17 @@
|
||||
00:44:34 up 10 days, 16:04, 2 users, load average: 1.47, 2.21, 2.52
|
||||
{
|
||||
"runtime": "v26.8.1",
|
||||
"platform": "linux",
|
||||
"arch": "x64",
|
||||
"files": [
|
||||
"noun.json",
|
||||
"verb.json",
|
||||
"adj.json",
|
||||
"adv.json"
|
||||
],
|
||||
"method": "Fresh Node --expose-gc process; GC before/after parsing all four JSON shards; heapUsed delta. parseHeapBytes is a sampled post-parse value, not peak instrumentation; not a browser measurement.",
|
||||
"baselineHeapBytes": 4758736,
|
||||
"retainedHeapBytes": 59679616,
|
||||
"parseHeapBytes": 60374568,
|
||||
"synsets": 117659
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
00:44:34 up 10 days, 16:04, 2 users, load average: 1.47, 2.21, 2.52
|
||||
{
|
||||
"runtime": "v26.8.1",
|
||||
"platform": "linux",
|
||||
"arch": "x64",
|
||||
"files": [
|
||||
"noun.json",
|
||||
"verb.json",
|
||||
"adj.json",
|
||||
"adv.json"
|
||||
],
|
||||
"method": "Fresh Node --expose-gc process; GC before/after parsing all four JSON shards; heapUsed delta. parseHeapBytes is a sampled post-parse value, not peak instrumentation; not a browser measurement.",
|
||||
"baselineHeapBytes": 4758984,
|
||||
"retainedHeapBytes": 59679616,
|
||||
"parseHeapBytes": 60374568,
|
||||
"synsets": 117659
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
00:44:35 up 10 days, 16:04, 2 users, load average: 1.47, 2.21, 2.52
|
||||
{
|
||||
"runtime": "v26.8.1",
|
||||
"platform": "linux",
|
||||
"arch": "x64",
|
||||
"files": [
|
||||
"noun.json",
|
||||
"verb.json",
|
||||
"adj.json",
|
||||
"adv.json"
|
||||
],
|
||||
"method": "Fresh Node --expose-gc process; GC before/after parsing all four JSON shards; heapUsed delta. parseHeapBytes is a sampled post-parse value, not peak instrumentation; not a browser measurement.",
|
||||
"baselineHeapBytes": 4758736,
|
||||
"retainedHeapBytes": 59679616,
|
||||
"parseHeapBytes": 60374568,
|
||||
"synsets": 117659
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
npm warn deprecated [email protected]: Use your platform's native DOMException instead
|
||||
|
||||
added 128 packages in 1s
|
||||
@@ -0,0 +1,15 @@
|
||||
✔ pinned source keeps all original files and Princeton license bytes (38.297773ms)
|
||||
✔ two complete conversions match shipped bytes and pinned counts (3418.378387ms)
|
||||
✔ changed source, missing license, changed provenance and extra files refuse before output (68.788374ms)
|
||||
✔ data parser refuses malformed words, offsets, pointers, verb frames and trailing fields (0.365038ms)
|
||||
✔ index parser refuses wrong counts, nonexistent senses and incorrect lemma mapping (0.292268ms)
|
||||
✔ offline importer refuses incorrect archive bytes before extraction (0.416171ms)
|
||||
✔ verified pinned ZIP round-trips to all original text files (366.007687ms)
|
||||
ℹ tests 7
|
||||
ℹ suites 0
|
||||
ℹ pass 7
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 3965.261961
|
||||
@@ -0,0 +1,16 @@
|
||||
✔ pinned source keeps all original files and Princeton license bytes (32.957522ms)
|
||||
✔ two complete conversions match shipped bytes and pinned counts (3093.861766ms)
|
||||
✔ changed source, missing license, changed provenance and extra files refuse before output (59.480475ms)
|
||||
✔ data parser refuses malformed words, offsets, pointers, verb frames and trailing fields (0.334357ms)
|
||||
✔ index parser refuses wrong counts, nonexistent senses and incorrect lemma mapping (0.233577ms)
|
||||
✔ offline importer refuses incorrect archive bytes before extraction (0.371605ms)
|
||||
✔ heap measurement runs explicitly in an isolated GC-enabled process (0.145852ms)
|
||||
✔ verified pinned ZIP round-trips to all original text files (390.61197ms)
|
||||
ℹ tests 8
|
||||
ℹ suites 0
|
||||
ℹ pass 8
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 3637.750779
|
||||
@@ -0,0 +1,458 @@
|
||||
✔ row 194 T16 Settings Agents: unavailable read-only, launch follows its request, confirms, reason and refusal (13120.49989ms)
|
||||
✔ row 256 T7 T8 the human page offers Delete on a creative instance, the tester page never does (594.900276ms)
|
||||
✔ row 194 T16: each agent action makes one call with only its keys, logs the user and answers the request (19.279785ms)
|
||||
✔ row 194 T16: the boundary refuses before any bus call (8.864838ms)
|
||||
✔ row 194 T16: read-only when send is off or no writer is wired; no route has a --send exception (4.555721ms)
|
||||
✔ row 194 T16: a bus refusal names its reason and nothing changed; an unknown outcome or a bad shape is never retried (3.135758ms)
|
||||
✔ row 194 T16: the request read takes one id, adds the refusal reason and refuses an unexpected shape (4.707014ms)
|
||||
✔ row 194 T16: delete joins add and change on /api/instances with only revision, instance and op (2.172666ms)
|
||||
✔ row 194 T16 D4.1: the tester listener launches, terminates and reads requests; regenerate, veto and delete are refused with no call (4.058214ms)
|
||||
✔ row 194 N5: agents.js is served as JavaScript and index.html loads it once (1.320432ms)
|
||||
✔ row 239 T6: a delete closed -revoked says the tokens may already be revoked, and outcome-unknown-revoked is an open outcome (2.197169ms)
|
||||
✔ Q169 the signed-in human names a seat and stops the assistant, one bus call each, logged with the user (15.385947ms)
|
||||
✔ Q169 the name and stop routes need send on, the public name, the user, the exact Origin and same-origin Fetch Metadata (7.953505ms)
|
||||
✔ Q169 the name and stop routes take JSON within 4 KiB and only their own keys, all text (4.763975ms)
|
||||
✔ Row 167 a null body on the name and stop routes is 400 invalid-request with no write, and the next request is answered (2.613751ms)
|
||||
✔ Q169 a bus refusal says nothing changed; a lost or odd answer says the change may have been made (4.454523ms)
|
||||
✔ Q169 the names read is a bus read like the others (1.187961ms)
|
||||
✔ the Board: held roles with no machine sessions, a claim with no address, the toggle kept across a reload, and Message addressed to the role (2826.381092ms)
|
||||
✔ a Seen click while a Board read is in flight waits for that read, then posts (1097.524589ms)
|
||||
✔ a redirect answer on a Board read, a bus read, a conversation read, a board POST, a module read and a send signs the page out: one line, nothing stale, no further reads (4974.029468ms)
|
||||
✔ browser edge states: loading, empty, malformed, stale, hostile/long values, in-flight reply and appearance fallback (1167.906408ms)
|
||||
Rendered contrast: {"failures":[],"count":330,"lowest":4.504658476260286}
|
||||
✔ served Console browser: real board fixtures, keyboard, drafts, receipts, themes, 320px and failures (1361.244374ms)
|
||||
✔ the README says a refused field table names the file or the key at fault, never a path (0.895092ms)
|
||||
✔ S5 pages in a browser: real broker rows, inert text, Copy, routes, failures, layout and no writes (2997.413698ms)
|
||||
✔ bus routes serve the four reads from the reader view, unescaped JSON for the page to escape (71.009621ms)
|
||||
✔ decisions route serves the roles and recent lists from the reader view (35.642956ms)
|
||||
✔ credentials route serves the broker credential status from the reader view (12.415355ms)
|
||||
✔ replies route serves the replies to one message from the reader view (33.836567ms)
|
||||
✔ bus routes are GET-only, have no write verb, and keep the same-origin checks (53.12275ms)
|
||||
✔ bus refusals map to statuses and never carry a path or a stack (25.300216ms)
|
||||
✔ humanCall speaks the human transport protocol without blocking the server (1652.166732ms)
|
||||
✔ busReader takes --business, else the live bus host, else refuses (179.503984ms)
|
||||
✔ humanCall kills a transport that runs past its timeout (528.73483ms)
|
||||
✔ serve refuses a --business value that is not a business id (288.679832ms)
|
||||
✔ WebUI channel off returns 503 and named recovery for every chat route without a chat operation (32.840935ms)
|
||||
✔ WebUI only selection keeps web chat enabled while retaining the old read envelope (2.07606ms)
|
||||
✔ WebUI channel-disabled recovery text is fixed and never echoes transport text (1.29965ms)
|
||||
✔ chat browser: list/create named projects and threads, hostile labels inert and no implicit writes (641.425225ms)
|
||||
✔ chat browser: thread drafts, receipts and cursor history stay isolated; refresh never writes (734.207819ms)
|
||||
✔ chat browser: uncertain writes retain draft, ownership refusal clears it, read-only cannot send (733.502029ms)
|
||||
✔ chat browser: a late read from A cannot paint B; sign-out clears private state and stops reads (956.0031ms)
|
||||
✔ chat browser: page forward and deduplicate replies; pending and byte-limit submissions do not duplicate (653.519467ms)
|
||||
✔ chat browser: scrolled history stays put, New messages and an own send return to the tail (651.214034ms)
|
||||
✔ chat browser: automatic polling follows a reply without a POST or a lost draft (10567.99751ms)
|
||||
✔ chat browser: display stays bounded while every forward page remains reachable (646.919125ms)
|
||||
✔ chat browser: a confirmed visible message replaces its pending receipt; malformed receipts stay unknown (666.089089ms)
|
||||
✔ chat browser: a refusal elsewhere forgets private chat drafts (649.343576ms)
|
||||
✔ chat browser: a late project creation receipt cannot navigate away from another thread (734.318814ms)
|
||||
✔ C2-09a picker: no silent choice, duplicate hostile labels stay inert, selection survives refresh and reaches POST (633.758399ms)
|
||||
✔ C2-09a picker: metadata failure, empty set and removed pick explain disabled state and recover without switching (705.839055ms)
|
||||
✔ C2-09a picker: a single instance is chosen explicitly but read-only mode cannot create a thread (603.87131ms)
|
||||
✔ 264e chooser: two sessions keep drafts, cursors, deep links and counts independent (709.28204ms)
|
||||
✔ 264e clear confirmation and status never resend, force-stop or change selection (646.479049ms)
|
||||
✔ 264e new session keeps its operation key after an unknown response and uses no implicit open (629.483981ms)
|
||||
✔ 264e cancel shows before/after retirement and never starts or replays work (748.8715ms)
|
||||
✔ 272 B1: a bad-session deep link preserves the draft and lost clear operation on A (679.330701ms)
|
||||
✔ C2-09a metadata uses the human listener bus, projects labels only and refuses unauthenticated reads (17.636401ms)
|
||||
✔ C2-09a metadata uses the private tester listener own bus and no human transport (2.812051ms)
|
||||
✔ C2-09a metadata refuses missing or malformed reads and never echoes untrusted fields (3.36452ms)
|
||||
✔ C2-09a metadata stays behind the SSO session check and a GET never refreshes session activity (2.031401ms)
|
||||
✔ 272 fallback: granted legacy route keeps default history, send and open without session controls (551.938108ms)
|
||||
✔ 272 fallback guard: granted explicit-session route refuses without default history or writes (446.9789ms)
|
||||
✔ 272 fallback guard: human-required catalog failure never enables default-thread access (438.616041ms)
|
||||
✔ 272 fallback guard: timeout catalog failure never enables default-thread access (332.141995ms)
|
||||
✔ 272 fallback guard: no-bus-host catalog failure never enables default-thread access (345.68892ms)
|
||||
✔ 272 fallback guard: malformed catalog failure never enables default-thread access (457.527881ms)
|
||||
✔ 272 fallback guard: owner route retains chooser and explicit default-session addressing (356.922913ms)
|
||||
✔ chat reads map only fixed verbs, strict forward paging and pure GET (22.513107ms)
|
||||
✔ chat refuses malformed and repeated query/id values before transport (5.490672ms)
|
||||
✔ chat project.create: one verified write, fixed identity/class and private log (2.177988ms)
|
||||
✔ chat project.create: each existing Console write fence makes zero bus calls (6.741435ms)
|
||||
✔ chat project.create: refusal or lost/malformed receipt never retries or invents success (3.881328ms)
|
||||
✔ chat thread.create: one verified write, fixed identity/class and private log (1.282899ms)
|
||||
✔ chat thread.create: each existing Console write fence makes zero bus calls (6.492244ms)
|
||||
✔ chat thread.create: refusal or lost/malformed receipt never retries or invents success (3.376929ms)
|
||||
✔ chat thread.send: one verified write, fixed identity/class and private log (1.218434ms)
|
||||
✔ chat thread.send: each existing Console write fence makes zero bus calls (5.297186ms)
|
||||
✔ chat thread.send: refusal or lost/malformed receipt never retries or invents success (3.045893ms)
|
||||
✔ chat thread.open: one verified write, fixed identity/class and private log (1.093096ms)
|
||||
✔ chat thread.open: each existing Console write fence makes zero bus calls (5.706024ms)
|
||||
✔ chat thread.open: refusal or lost/malformed receipt never retries or invents success (3.010259ms)
|
||||
✔ chat createThread receipt requires an instance even when its id is valid (1.918607ms)
|
||||
✔ chat write receipts expose only the fields belonging to their operation (3.206521ms)
|
||||
✔ chat validates names, body, project and strict empty open payload (4.821072ms)
|
||||
✔ chat read failures redact ownership and refuse invalid transport arrays (5.618177ms)
|
||||
✔ REQ-USER-2 real broker: owned catalog, create/name/filter, isolated history and 403/404 without mutations (90.748147ms)
|
||||
✔ chat repeats every POST boundary even when called behind an admitted request (0.833696ms)
|
||||
✔ configured Console process injects chat through its existing human transport (133.521935ms)
|
||||
✔ chat assets, GET purity, method and unknown-route refusals are explicit (11.226856ms)
|
||||
✔ the chat seam names the transport it is given: the human one and the tester one both pass, anything else is a TypeError (0.427616ms)
|
||||
✔ C2-09a createThread forwards an explicit instance through the existing channel (3.442901ms)
|
||||
✔ C2-09a malformed instance and extra thread fields refuse before the channel write (3.151853ms)
|
||||
✔ 264e session catalog/create and explicit selectors keep the human transport and strict keys (4.390959ms)
|
||||
✔ 264e session writes retain Origin/identity fences and explicit selector errors (2.283871ms)
|
||||
✔ 264e clear envelope is projected, pending is preserved and GET never repeats the clear (3.67385ms)
|
||||
✔ 264e cancel is an authenticated, confirmed human write and retains retirement distinction (6.231344ms)
|
||||
✔ 272 N1: malformed clear/cancel write receipts get one redacted outcome-unknown audit line (4.493454ms)
|
||||
✔ conversation view: full history, collapsed tools, hidden thinking, inert hostile content, malformed and reconcile markers (1005.423417ms)
|
||||
✔ conversation view: a fork keeps the open branch, says so, and opens the new one on request (1370.56904ms)
|
||||
✔ conversation view: a newer session with no readable history keeps the marker (954.423136ms)
|
||||
✔ conversation view: seats without history say so and offer no reply (661.083302ms)
|
||||
✔ J16: no controls without sso and decide, read-only reasons, terminal lines kept, and only an eligible grant gets the panel (4815.646894ms)
|
||||
✔ J17: one POST per click, confirm then answer, cancel, refusals and an unknown outcome never retry (3929.059474ms)
|
||||
✔ a sign-in redirect at either step signs the page out and answers nothing (1457.865765ms)
|
||||
✔ a signed-in owner confirms and answers, with the session's provider, issuer and sub as the subject (70.013805ms)
|
||||
✔ the listener gates: no session, a cross-origin page, a loopback Host, a GET, and a sign-out between the steps (92.743885ms)
|
||||
✔ J16: without a decision transport the routes are read-only and /api/config says no; startServer refuses decide without sso or send (172.195474ms)
|
||||
✔ J19: a granted user's session gets decide false and the user page config, and a decision POST stops at owner-only (37.306927ms)
|
||||
✔ N4: decision.resolve has no Console route, the --send caller names no decision verb, and consoleCall takes only the two console verbs (36.688496ms)
|
||||
✔ a confirmation then a resolve answers once with the held choice and digest, and a second resolve refuses (2.676004ms)
|
||||
✔ deny resolves without a grant field (0.334827ms)
|
||||
✔ the gates before the body: method, read-only, sign-in and same origin (0.377549ms)
|
||||
✔ a bad body, id or content type refuses before the bus (0.595313ms)
|
||||
✔ a choice that is neither key is decision-stale, and a malformed preview is confirmation-unavailable (0.51847ms)
|
||||
✔ bus refusals map by code, and an unknown or missing code is unavailable at preview and outcome-unknown at resolve (1.757134ms)
|
||||
✔ a confirmation binds the session, decision and choice, and any mismatch spends it (0.48989ms)
|
||||
✔ a session that ends between the steps refuses before the bus (0.311432ms)
|
||||
✔ confirmations expire after the TTL, cap at the limit without dropping a live one, and are one use (0.195193ms)
|
||||
✔ Discord row through real board/WebUI: independent brake/liveness, no Reply, literal content (580.425029ms)
|
||||
✔ the editor: the list, hostile markdown that runs nothing, the draft, and each save receipt (1538.990805ms)
|
||||
✔ the Console's CSP stands and the editor runs under it; hostile markdown on the load path runs and loads nothing (878.229666ms)
|
||||
✔ hostile content pasted into the editor runs and loads nothing, and a bad link target is refused in the link bar (684.461512ms)
|
||||
✔ a pasted image span is kept only for a target the link gate accepts, and a save writes only those (550.259133ms)
|
||||
✔ a switch of view reads nothing; a reload, and a trip away and back, each read the file exactly once (2485.105458ms)
|
||||
✔ an edit rewrites only the block touched; a save sends the rest byte for byte; the Source view carries the draft (985.988893ms)
|
||||
✔ a file the editor cannot write back byte for byte opens as Source, says so, cannot save, and the Visual button works once it can (1940.942348ms)
|
||||
✔ a link title pasted with line breaks in it is written on one line, so no HTML block comes of it (545.329956ms)
|
||||
✔ an image alt pasted with line breaks in it is written on one line, so no HTML block comes of it (541.469322ms)
|
||||
✔ an image title pasted with line breaks in it is written on one line, so no HTML block comes of it (541.761624ms)
|
||||
✔ a code block info string pasted with line breaks in it is written on one line, so no HTML block comes of it (529.938542ms)
|
||||
✔ a link title holding a quote after a backslash then a tag is written with the backslash escaped, so the title stays closed (589.242396ms)
|
||||
✔ an image title holding a quote after a backslash then a tag is written with the backslash escaped, so the title stays closed (496.075229ms)
|
||||
✔ a link title holding a trailing backslash is written with the backslash escaped, so the title stays closed (495.515484ms)
|
||||
✔ an image title holding a trailing backslash is written with the backslash escaped, so the title stays closed (559.520726ms)
|
||||
✔ a code block info string with a backtick, pasted, is dropped on Save, so the fence stays closed (522.449511ms)
|
||||
✔ a code block info string with a backtick, as a tilde fence can have, is kept as source, not rewritten without it (560.892119ms)
|
||||
✔ the imported source is the tagged upstream source plus the recorded local changes, and nothing else (11.805683ms)
|
||||
✔ every package names its origin and license, and NOTICE lists each (0.494144ms)
|
||||
✔ the build reads only imported source and the editor's own files; the bundle is the recorded build (5.659658ms)
|
||||
✔ MOSAIC_REQUIRE_EDITOR_BUILD: a missing or wrong esbuild skips without it and fails with it; a wrong binary always fails (3.429329ms)
|
||||
✔ the toolchain check, run as a program, exits non-zero without esbuild when the build is required (117.432817ms)
|
||||
▲ [WARNING] Ignoring this import because "third_party/editor/prosemirror-transform/src/mark.ts" was marked as having no side effects [ignored-bare-import]
|
||||
|
||||
third_party/editor/prosemirror-transform/src/index.ts:10:7:
|
||||
10 │ import "./mark"
|
||||
╵ ~~~~~~~~
|
||||
|
||||
"sideEffects" is false in the enclosing "package.json" file:
|
||||
|
||||
third_party/editor/prosemirror-transform/package.json:13:2:
|
||||
13 │ "sideEffects": false,
|
||||
╵ ~~~~~~~~~~~~~
|
||||
|
||||
✔ rebuilding from the source gives the same bytes (needs the pinned esbuild; MOSAIC_REQUIRE_EDITOR_BUILD=1 makes its absence a failure) (70.671292ms)
|
||||
✔ the editor routes serve the built files with their types and no cache (33.152872ms)
|
||||
✔ open and save with no edit writes the same bytes: the goals review and a doc with every element (14.952097ms)
|
||||
✔ open and save with no edit writes the same bytes: every repository doc under docs/ and spec/ (1354.689164ms)
|
||||
✔ the editor source builds markup only with DOM calls, and the bundle has no eval (2.049203ms)
|
||||
✔ the link gate and the image rule are the preview's (0.333066ms)
|
||||
✔ R6 G1 a granted user signs in, gets the user page and reaches the broker as itself (82.134951ms)
|
||||
▶ R6 G2 a subject with no live grant in this business is refused subject-unknown
|
||||
✔ a listed user with no grant (40.944625ms)
|
||||
✔ a grant in another business (42.037987ms)
|
||||
✔ an expired grant (147.367931ms)
|
||||
✔ another user's grant (139.465978ms)
|
||||
✔ a sub in no file (63.607001ms)
|
||||
✔ a file the loader refuses (62.135909ms)
|
||||
✔ R6 G2 a subject with no live grant in this business is refused subject-unknown (496.381708ms)
|
||||
▶ R6 G3 a revoke counts on the next request: 401 and the session is gone
|
||||
✔ grant removed (49.252373ms)
|
||||
✔ subject removed (62.077208ms)
|
||||
✔ grant expired (91.401492ms)
|
||||
✔ file now refused (43.84123ms)
|
||||
✔ R6 G3 a revoke counts on the next request: 401 and the session is gone (247.211075ms)
|
||||
✔ R6 G4 every owner route answers 403 owner-only before any bus call (91.916815ms)
|
||||
✔ R6 G5 the bus refuses every owner verb over the user transport on its own (76.065246ms)
|
||||
✔ R6 G9 a user chat sends only the plugins read over the owner transport (75.816462ms)
|
||||
✔ R6 G6 the user page holds the notice word for word (68.007509ms)
|
||||
✔ R6 G7 the hub label and plain peer links render from config on both pages (769.528743ms)
|
||||
✔ R6 G8 userCall spawns user-cli directly with the user nonce, no human nonce, and the user request (38.957533ms)
|
||||
✔ return flow through the conversation view: send, tool call, delayed result, peer message, exact long answers, relaunch (51936.406505ms)
|
||||
✔ row 165 Settings: role instances read, add with a restart named, change without one, a refusal keeps the draft (991.579686ms)
|
||||
✔ row 165 Console: the signed-in human adds an instance through a real broker; validate exits 0, the log names the human and no restart is needed (row 194) (193.463891ms)
|
||||
✔ row 165 Console: the instance write needs send on, the public name, the user, the exact Origin and same-origin Fetch Metadata (5.88349ms)
|
||||
✔ row 165 Console: the instance write takes JSON within 16 KiB and only its own keys; holder, credentials and an actor are refused (6.540542ms)
|
||||
✔ row 165 Console: a bus refusal says nothing changed; a lost or odd answer says the change may have been made (9.74122ms)
|
||||
✔ row 165 Console: the instances read takes no arguments, needs a bus and refuses an answer without a revision (4.463583ms)
|
||||
✔ C2-04 CLI: both listener callback pairs dispatch library verbs with their own transport (130.905358ms)
|
||||
✔ row 254: each library sync code maps to its status (0.572723ms)
|
||||
✔ REQ-LIMIT-3 REQ-LIMIT-4 Settings shows token limits counted, not enforced and check failed; Reset posts one path; a save keeps the token limits (975.696605ms)
|
||||
✔ Row 167 with an assistant draft open, a token limit reset gives the assistant submit its revision (669.50689ms)
|
||||
✔ REQ-LIMIT-3 limits read returns only the token rows; no query or write is accepted (26.70046ms)
|
||||
✔ REQ-LIMIT-3 a limits answer without a token list is refused, not shown as no limits (7.994198ms)
|
||||
2026-10-24T05:53:21.357Z settings user="jason" changed
|
||||
✔ REQ-LIMIT-3 a Settings reset reaches the human write with its paths; a reset alone is enough (5.567108ms)
|
||||
✔ REQ-LIMIT-3 the Console reader asks the bus limits verb with no arguments (0.235819ms)
|
||||
✔ the preview source names none of the four string-to-markup sinks (0.846655ms)
|
||||
✔ headings, paragraphs, emphasis and inline code render (1.131421ms)
|
||||
✔ lists, block quotes and code blocks render (0.397914ms)
|
||||
✔ a link is made for http, https and relative targets, with rel and the target shown (0.889923ms)
|
||||
✔ a link with any other scheme, or an evasion of the scheme, stays source text (0.706367ms)
|
||||
✔ an image shows alt text and URL, is never an img element and never loads (0.140692ms)
|
||||
✔ raw HTML, entities and unsupported blocks show as source text, never as elements (0.276815ms)
|
||||
✔ markup inside code and inside link text stays text (0.153012ms)
|
||||
✔ hostile and pathological input stays within its look-ahead budget and under the nesting cap (31.828155ms)
|
||||
✔ trailing blanks and closing hashes are cut by a walk from the end, not a regex that retries inside a blank run (25.168256ms)
|
||||
✔ a link opener with no closer searches at most SPAN characters ahead (137.844248ms)
|
||||
✔ the look-ahead work of one render is a fixed multiple of the text, whatever the opener (712.427405ms)
|
||||
✔ past the budget an opener is source text, through the path all other text takes (14.790124ms)
|
||||
✔ a normal 200 KiB document renders exactly as it did without a budget, and spends little of it (18.081668ms)
|
||||
✔ a line separator inside a heading, a list item or a fence line does not end the marker line (0.486523ms)
|
||||
✔ a thematic-break line is a paragraph, every other marker line opens a list (0.367498ms)
|
||||
✔ every short line over space, tab, - * _ and a letter is a break exactly when the old regex said so (37.762407ms)
|
||||
✔ one line of marks does not throw, at 4 MiB, whatever the mark or the spacing (6004.208904ms)
|
||||
✔ CRLF and tabs are read like LF and spaces; empty input renders nothing (0.166234ms)
|
||||
✔ messages HTTP read pages and preserves metadata; bad arguments refuse before a read; other reads unchanged (84.34292ms)
|
||||
✔ Console Messages lists late unsolicited messages on polling with sender class time read state and trail; nav count includes beyond the page; reads never deliver (837.761934ms)
|
||||
✔ Messages nav count polls on Tasks and Board and clears on a Board refusal; messages 403 refuses local pages (1639.975112ms)
|
||||
✔ copy writes the Console paths at the full id, read-only, and leaves an existing copy alone (1706.657673ms)
|
||||
✔ copy refuses a commit off refactor, an unknown one, a worktree and a bad copies directory (2260.993696ms)
|
||||
✔ copy writes nothing when an archived path is missing at the commit (1015.292402ms)
|
||||
✔ a copy that loses the rename race leaves no read-only temp directory behind (1239.052354ms)
|
||||
✔ a copy whose rename fails with no target refuses, writes no copy and leaves no temp directory (1057.788945ms)
|
||||
✔ a copy that meets a target holding files says exists: and moves nothing into it (1076.400999ms)
|
||||
✔ a copy that meets an empty target directory replaces it by rename, not by moving into it (1032.466352ms)
|
||||
✔ serve runs from a copy: /healthz 200, the config check, roles and RELEASE from the copy, the queue from --checkout (1472.800878ms)
|
||||
✔ serve refuses a --checkout that is not an absolute directory path (273.230223ms)
|
||||
✔ consoleReads runs the queue read under queueRoot and reads RELEASE under root (48.380515ms)
|
||||
✔ preview options are all three or none, and each is checked (6.428862ms)
|
||||
✔ the CLI refuses a partial or invalid preview flag set at start (664.583698ms)
|
||||
✔ the CLI with all three flags serves the preview mode (146.290409ms)
|
||||
✔ a request for the public name needs the header equal to the user id, else 401 and nothing read (21.367837ms)
|
||||
✔ the header name matches without regard to case, and the value compare is exact (4.268357ms)
|
||||
✔ the public name with the header reads the bus views, and the Host and Origin are checked first (28.252132ms)
|
||||
✔ in preview mode every write answers 403 read-only, from the public name and loopback, and reaches nothing (13.326316ms)
|
||||
✔ loopback requests are unchanged in preview mode, and the bus views work with the board down (5.577205ms)
|
||||
✔ a proxy that rewrites Host to the loopback port gets 403 on its first request, whatever the user (18.130558ms)
|
||||
✔ a repeated Host is 400 before any other check, in preview mode and without it (10.389963ms)
|
||||
✔ without the preview flags the public name is refused and writes still reach the board (5.672682ms)
|
||||
✔ processing browser: keyboard Stop, confirmed Resume, unknown outcome and persistent banner (765.31904ms)
|
||||
✔ processing browser: Q175 read-only interim keeps both writes disabled and names CLI recovery at 320px (589.583065ms)
|
||||
✔ processing browser: sign-out from config redirect blocks later refresh and writes (700.36576ms)
|
||||
✔ processing browser: sign-out from state redirect blocks later refresh and writes (692.089186ms)
|
||||
✔ processing browser: sign-out from write redirect blocks later refresh and writes (699.263448ms)
|
||||
✔ processing browser: sign-out from config sign-in required blocks later refresh and writes (680.376298ms)
|
||||
✔ processing browser: sign-out from state sign-in required blocks later refresh and writes (675.832789ms)
|
||||
✔ processing browser: sign-out from write sign-in required blocks later refresh and writes (657.336986ms)
|
||||
ROW191_LAYOUT {"width":400,"height":1000,"controls":97,"tree":324.0625,"main":1450.703125,"top":181.5,"bottom":217.5,"barBottom":129,"projectsTop":352.59375,"order":"0","visible":true}
|
||||
ROW191_LAYOUT {"width":1440,"height":1000,"controls":127,"tree":914,"main":914,"top":135.5,"bottom":171.5,"barBottom":53,"projectsTop":636.59375,"order":"0","visible":true}
|
||||
ROW191_LAYOUT {"width":1440,"height":420,"controls":127,"tree":334,"main":907.734375,"top":135.5,"bottom":171.5,"barBottom":53,"projectsTop":636.59375,"order":"0","visible":true}
|
||||
ROW191_LAYOUT {"width":800,"height":420,"controls":127,"tree":334,"main":1131.65625,"top":135.5,"bottom":171.5,"barBottom":53,"projectsTop":618.59375,"order":"0","visible":true}
|
||||
✔ processing browser: static nav controls keep Stop visible, ordered and keyboard reachable (603.718005ms)
|
||||
✔ interim read-only controls show CLI recovery, disable both writes and retain a halted banner across views (7.334084ms)
|
||||
✔ Stop sends one empty halt and Resume confirms before sending the displayed generation (2.849813ms)
|
||||
✔ a cancelled resume never calls the writer (1.09297ms)
|
||||
✔ unknown writes are not retried or displayed as success and partial stops remain explicit (1.839818ms)
|
||||
✔ the persistent shell loads the control outside route-specific content with accessible status and native buttons (0.406741ms)
|
||||
✔ read-only Console can read processing state but neither human control writes without --send (18.503358ms)
|
||||
✔ Console halt and generation-bound resume use only the management writer and keep partial stops honest (3.909099ms)
|
||||
✔ processing write fences refuse cross-site, wrong origin, unnamed host, duplicate identity and bad payload before writer (6.015997ms)
|
||||
✔ tester cannot invoke either control writer and failures never echo backend text (3.943577ms)
|
||||
✔ processing writes use the existing SSO signer and still require --send and same-origin (4.161332ms)
|
||||
✔ processing handler independently refuses wrong origin and cross-site before its writer (0.550006ms)
|
||||
✔ a signed-in same-origin save reaches exactly one human operation and returns the new commit (17.503534ms)
|
||||
✔ a save needs send, the named Host, the user, the exact Origin and same-origin Fetch Metadata (6.181398ms)
|
||||
✔ a save validates JSON, strict keys, text values and the 1 MiB body before the bus is asked (15.0983ms)
|
||||
✔ a body that is JSON but not an object is refused 400, not thrown on (4.888629ms)
|
||||
✔ the 1 MiB limit is this route only; Settings and messages keep 16 KiB (2.188725ms)
|
||||
✔ a bus refusal is reported as not saved with its own status; stale-base tells the user to reload (5.071686ms)
|
||||
✔ a save whose answer is lost or unusable is reported unknown and is never retried (3.102732ms)
|
||||
✔ the file list and one file read take strict queries and arrive in the expected shape (4.368356ms)
|
||||
✔ reads work without --send; an unusable bus answer is a bad response, a refusal keeps its status (2.429382ms)
|
||||
✔ /api/config says edit only where a save can pass (1.854521ms)
|
||||
✔ a repository-name project refusal is an HTTP conflict (0.512679ms)
|
||||
✔ proof startup refuses partial flags non-preview and invalid fixture file metadata or bytes (1169.034096ms)
|
||||
✔ serve argv carries only fixture proof path and header; startup explicitly reports proof on or off (243.582574ms)
|
||||
✔ CLI applies proof on the main listener and rejects that header on its tester listener (226.911465ms)
|
||||
✔ proxy proof admits named reads and sends, reads its fixture once, and never exposes the value (29.428285ms)
|
||||
✔ proxy proof refuses missing wrong short or repeated proof before auth and before any read (8.872495ms)
|
||||
✔ proxy proof header is refused on other Hosts and on the tester listener (4.215652ms)
|
||||
✔ proof options reject unsafe or colliding header names without disclosing file contents (0.628262ms)
|
||||
✔ redactor: config, dataRoot, any absolute path, Discord ids and the JSON parser quote (1.187629ms)
|
||||
✔ credential state from the date alone, as the bus states it (0.131716ms)
|
||||
✔ queue: rows, one row, ids and methods, notes; no path or id from a row (324.251778ms)
|
||||
✔ queue: a refused read fails closed with the store's text, redacted (166.918485ms)
|
||||
✔ queue: a store that fails to load, or a child that dies, gives a fixed message with no path or stack (702.513606ms)
|
||||
✔ business: names, vars on the allowlist, authority, credential metadata only (8.976419ms)
|
||||
✔ business: missing or invalid file refuses with the module's text, redacted (6.080389ms)
|
||||
✔ business without --business: the live bus host, else no-bus-host; no system config: not-configured (6.341439ms)
|
||||
✔ settings: release, board, loopback address, notifier binding name only (98.9594ms)
|
||||
✔ task fields: the committed table with no reads configured, GET only; a bad table refuses with no path (16.845946ms)
|
||||
✔ bus-status: a refused boot shows reason, file and last good load; a live host or an ok boot clears it (6.721379ms)
|
||||
✔ both presentations replace old activity with relaunch notice, label retained history, then resume after new activity (636.416956ms)
|
||||
✔ reported return flow and relative Age: reply sent from the inspector, then the new answer appears there without manual refresh (20712.001803ms)
|
||||
organization: {"event":"reload-needs-restart","business":"acme"}
|
||||
organization: {"event":"reload-needs-restart","business":"acme"}
|
||||
✔ row 65 Settings: the routing table lists every instance, saves a harness, model, thinking and fallback to the file, and keeps the draft on each refusal (1289.24343ms)
|
||||
organization: {"event":"reload-needs-restart","business":"acme"}
|
||||
✔ row 65 Console: the signed-in human saves a route through a real broker; each refusal says nothing changed and leaves the file and the log (103.948331ms)
|
||||
✔ row 65 Console: the routes write needs send on, a writer, the public name, the user, the exact Origin and same-origin Fetch Metadata (6.771368ms)
|
||||
✔ row 65 Console: the routes write takes JSON within 16 KiB with a revision and routes only; an actor is refused and routes are never logged (7.008611ms)
|
||||
✔ row 65 Console: a bus refusal maps to its status and says nothing changed; a lost or odd answer says the change may have been made (25.506113ms)
|
||||
✔ row 65 Console: the routes read takes no arguments, needs a bus and refuses an odd answer (5.997376ms)
|
||||
✔ the send box: held roles, the draft and caret across a refresh, each receipt, one POST per Send, and the trail link; the board Reply on a 4xx and a 5xx (2339.8884ms)
|
||||
✔ a sent receipt lists its replies as the page refreshes, oldest first and capped, and marks none delivered or read (11096.659422ms)
|
||||
✔ startServer takes send only as a function and only with the preview mode (5.436794ms)
|
||||
✔ the CLI refuses --send without the preview flags, and without a configured bus (449.118647ms)
|
||||
✔ the CLI with --send and a configured bus sends through the human transport and logs one line (150.581681ms)
|
||||
✔ without --send the route is read-only like every other write, and config says no send (7.231271ms)
|
||||
✔ with --send every other write is still 403 read-only, and nothing reaches the board or bus (5.874475ms)
|
||||
✔ config says send only on the public name with --send on (2.230966ms)
|
||||
✔ a send without the signed-in user is 401 and is neither sent nor logged, loopback included (3.855927ms)
|
||||
✔ each request check refuses before anything is sent, and logs the refusal without the body (12.123809ms)
|
||||
✔ a send passes exactly to, body and in_reply_to, answers the id, and logs it (2.548018ms)
|
||||
✔ a crafted role name cannot forge a log line (1.815113ms)
|
||||
✔ a bus refusal is not sent, with its status; an outcome the bus could not confirm is unknown and never retried (6.025781ms)
|
||||
✔ through the human transport the request is exactly the business, message.send and the keys (82.134733ms)
|
||||
✔ against a real broker: the message is written once as a human send, and its refusals map (32.652181ms)
|
||||
✔ loopback host and board origin fail closed (6.088571ms)
|
||||
✔ real board fixture passes through WebUI; assets and isolated seen/reply work (71.586234ms)
|
||||
✔ proxy preserves exact request bytes, status and receipt, rejects forms and malformed JSON, never follows redirect (39.352406ms)
|
||||
✔ unreachable board reports URL; CLI rejects unsupported options (398.535455ms)
|
||||
✔ tester service render carries the tester port alongside existing flags (95.469287ms)
|
||||
✔ tester service refuses forwarded 7332 even with another main port (58.686381ms)
|
||||
✔ tester service invalid ports refuse render and install with exit 4 and leave the unit alone (703.380562ms)
|
||||
✔ tester service counts the digits as written before it strips leading zeros (65.126118ms)
|
||||
✔ tester service install and status show the tester port without changing send reporting (358.896996ms)
|
||||
✔ render prints the unit without the preview flags (33.100741ms)
|
||||
✔ render carries every serve flag, the preview set included (34.839285ms)
|
||||
✔ a partial preview set is refused (94.945574ms)
|
||||
✔ a value the unit cannot carry is refused, for every flag (1668.211167ms)
|
||||
✔ the rendered unit names none of the human proof agent markers and sets no agent variable (105.101552ms)
|
||||
✔ install into --dir with --no-reload writes the file whole, then reports unchanged (193.571828ms)
|
||||
✔ install without --no-reload runs daemon-reload and nothing that starts the unit (44.720501ms)
|
||||
✔ uninstall refuses while the unit is running, with or without --no-reload, and removes it once it is not (441.860555ms)
|
||||
✔ status prints the unit state and GET /healthz on the installed port (265.638824ms)
|
||||
✔ usage: an unknown verb or flag, and start or enable, exit 4 (629.337843ms)
|
||||
✔ without --send, render is the template with its placeholders filled, byte for byte (173.097355ms)
|
||||
✔ render --send with the preview set ends ExecStart with --send and changes nothing else (279.635691ms)
|
||||
✔ --send without the whole preview set is refused and writes nothing (667.172745ms)
|
||||
✔ install --send into --dir with --no-reload writes the sending unit, and status says whether it sends (450.623337ms)
|
||||
✔ uninstall and status take no --send (149.404818ms)
|
||||
✔ install refuses while the unit is running, in any state but inactive or failed, and changes nothing (654.290201ms)
|
||||
✔ when the state read fails, install and uninstall refuse with one line and change nothing (210.540626ms)
|
||||
✔ install needs --copy naming a copy that exists, and refuses outside the canonical checkout without --allow-worktree (293.268822ms)
|
||||
✔ install refuses unless the bus unit runs from the same copy, naming both paths, and changes nothing (631.243119ms)
|
||||
✔ render --copy runs the copy and reads the queue in the checkout; without --copy the unit is unchanged (93.452901ms)
|
||||
✔ the uid header takes only an Authentik uid; the username header still takes a username (1786.499417ms)
|
||||
✔ a preview value cannot start with - or . (190.355117ms)
|
||||
✔ status names the copy and whether refactor has moved past it, and says when the unit runs from no copy (521.398589ms)
|
||||
✔ proxy proof render carries both flags but never opens the fixture file (35.027753ms)
|
||||
✔ proxy proof render refuses incomplete non-preview missing unsafe-mode and repo/copy paths (378.504771ms)
|
||||
✔ proxy proof status retains send and tester reporting with both proof flags (156.354779ms)
|
||||
✔ row196 socket flag renders only for supporting targets and refuses mixed transports (91.044454ms)
|
||||
✔ Settings form shows every scope and held role; gated save, exact payload, retained draft and no automatic retry (1149.397483ms)
|
||||
✔ Q169 Assistant section: gated, changed fields only, name and stop posts, retained draft and no automatic retry (1202.434375ms)
|
||||
✔ Row 167 a refused names read gives the refused usage page; another names failure keeps the Assistant section (828.93179ms)
|
||||
✔ Row 167 with a limits draft open, an assistant save gives the limits submit its revision and the typed limit stays (698.454133ms)
|
||||
✔ Row 167 with an assistant draft open, a launch save gives the assistant submit its revision, and reload reads the current one (686.551532ms)
|
||||
2026-10-24T05:54:48.215Z settings user="jason" changed
|
||||
✔ REQ-WEB-1 signed-in same-origin Settings write reaches exactly one human operation (16.774402ms)
|
||||
✔ REQ-WEB-1 Settings writes require enabled send, named Host, identity, exact Origin and same-origin Fetch Metadata (5.785092ms)
|
||||
✔ REQ-WEB-1 Settings validates JSON, size, revision and strict writable keys before broker call (4.72348ms)
|
||||
✔ Q169 a Console change of the assistant reaches the human operation unchanged, and the log names the signed-in user (2.505956ms)
|
||||
✔ tokens.css and icons.svg are byte copies of docs/design (0.744344ms)
|
||||
✔ JetBrains Mono files match the digests in their sources file, with the OFL text (1.776009ms)
|
||||
✔ shipped strings are unchanged, and the web keeps its write boundary (3.276718ms)
|
||||
ROW191_LAYOUT {"width":1440,"height":1000,"controls":212.5,"tree":914,"main":914}
|
||||
✔ shell in a browser: System default, seeded states, 400px, focus and the Ctrl+K palette (5611.131411ms)
|
||||
✔ five states on Board, Inbox, Tasks, Agents and Trail (2403.421938ms)
|
||||
✔ a 401 sign-in required on each fetch path signs the page out with a sign-in link and stops the refresh; another 401 stays an error (5576.793869ms)
|
||||
✔ the Sign out form shows only when /api/config says sso, and posts to /auth/logout (989.677029ms)
|
||||
✔ positive: an RS256 provider signs in and sends one message, and the session reads (91.893637ms)
|
||||
✔ positive: an ES256 provider signs in and sends (15.625044ms)
|
||||
✔ positive: two providers each sign in their own subjects, and one provider's subject is unknown to the other (66.787533ms)
|
||||
✔ 1: a forged x-authentik header without a cookie is 401 on the API and a sign-in redirect on a page (42.725108ms)
|
||||
✔ 2: an HS256 ID token keyed with the client secret and a real RSA kid is refused (23.753077ms)
|
||||
✔ 3: a wrong aud, and an aud list holding another client with no azp, are refused (98.135791ms)
|
||||
✔ 4: a token that expired 10 minutes ago is refused (36.300718ms)
|
||||
✔ 5: another issuer, and the issuer without its trailing slash, are refused (51.400149ms)
|
||||
✔ 6: a nonce mismatch and a missing nonce are refused (38.472602ms)
|
||||
✔ 7: state mismatch, no login cookie, a replay, an expired record and two login cookies are refused (89.360558ms)
|
||||
✔ 8: the token request carries the PKCE verifier, and the OP refuses a wrong one (89.511481ms)
|
||||
✔ 9: alg none, a changed payload under a real kid, and an unknown kid even after the refetch are refused (122.689814ms)
|
||||
✔ 10: a valid token for a subject not configured is 403 with one subject-unknown line (30.706987ms)
|
||||
✔ 11: start refusals: HS or none algs, reserved names, HS-only discovery, an empty JWKS, no S256, an issuer mismatch, a short RSA key (260.021698ms)
|
||||
✔ 11: slot files: a symlink, mode 0644, mode 0640 and a file under the repository are refused, and no message holds the value (2.066508ms)
|
||||
✔ 11: the CLI refuses --sso with the old flags and without console.sso, and starts with a good one (1041.934871ms)
|
||||
✔ 12: under --sso the tester listener refuses each kind of sign-in, has no /auth, and startServer refuses tester with sso (72.329262ms)
|
||||
✔ 13: idle and absolute expiry, logout then reuse, a cross-origin logout, and background reads that don't keep a session (61.151874ms)
|
||||
✔ 13: the CSP lets the Sign out form reach the provider's end-session origin, and only under --sso (83.673402ms)
|
||||
✔ 14: open redirects land on /, and a path on the Console lands there (43.000196ms)
|
||||
✔ 15: a callback for A carrying B's code and iss, and a provider= query, is refused (179.356624ms)
|
||||
✔ 16: a provider with RS256 and ES256 takes either, and refuses PS256 with a usable PS256 key in the JWKS (73.208932ms)
|
||||
✔ 17: 33 started logins leave 32 records, and the first one's callback finds none (83.204408ms)
|
||||
✔ 18: after a key rotation a sign-in works through one refetch, and the removed kid is refused (68.667369ms)
|
||||
✔ 20 and 21: the store holds no raw session id, and the cookie strings are exact (52.309181ms)
|
||||
✔ 22: a loopback Host is 403 on a page, a read and a write; /healthz on loopback is 200; a redirect_uri never comes from the Host (47.799698ms)
|
||||
✔ 23: a provider down at start leaves the Console up and 503, and the retry makes sign-in work (220.406623ms)
|
||||
✔ 19: no captured log line holds a token, code, state, nonce, verifier, client secret or session id (4.620525ms)
|
||||
✔ tester Console banner exposes only instance route and name editors and saves a route as tester (775.631416ms)
|
||||
✔ row 177: the tester Console chat composer is enabled and a send shows in its own thread (615.88403ms)
|
||||
✔ tester-port validates range tunnel main port and requires configured bus before listening (886.511066ms)
|
||||
✔ CLI tester listener binds a private Unix socket and spawns TESTER_CLI for every Console bus read (2552.468157ms)
|
||||
✔ main listener refuses x-mosaic-tester before any board or bus read for every Host (18.054152ms)
|
||||
✔ tester listener rejects preview binding and requires its fixed logical Host and no proxy auth header (101.487921ms)
|
||||
✔ tester listener writes only instances routes and names with tester receipts and actor (118.690594ms)
|
||||
✔ tester listener refuses every human-only write with no bus call (78.483618ms)
|
||||
✔ tester-off and tester-required reads return HTTP 403 (81.141155ms)
|
||||
✔ tester credentials routes and committed project reads keep secrets and paths bounded (151.187355ms)
|
||||
✔ row 177 W1: the tester chat makes, sends to, opens and reads its own thread as tester (22.229762ms)
|
||||
✔ row 177 W2: tester chat writes refuse a missing or foreign Origin, cross-site, text/plain and the proxy header with no bus call (11.497956ms)
|
||||
✔ row 177 W3: the human thread through the tester chat is thread-not-owned, and bus.tester off answers tester-off (27.903135ms)
|
||||
✔ row 177 W4: the main listener refuses x-mosaic-tester on chat reads and writes before the chat (1.945782ms)
|
||||
✔ Row 252: the tester listener has no decision answer routes, and its config never offers them (80.149998ms)
|
||||
✔ private tester HTTP serves on 0600 socket in 0700 parent and fixed origin (61.944248ms)
|
||||
✔ private tester refuses symlink, unsafe parent and long path without repairs (0.861963ms)
|
||||
✔ tester cleanup must leave a replacement inode untouched (1.465444ms)
|
||||
✔ pinned source keeps all original files and Princeton license bytes (36.50702ms)
|
||||
✔ two complete conversions match shipped bytes and pinned counts (4310.208292ms)
|
||||
✔ changed source, missing license, changed provenance and extra files refuse before output (64.379074ms)
|
||||
✔ data parser refuses malformed words, offsets, pointers, verb frames and trailing fields (0.3536ms)
|
||||
✔ index parser refuses wrong counts, nonexistent senses and incorrect lemma mapping (0.261971ms)
|
||||
✔ offline importer refuses incorrect archive bytes before extraction (0.385742ms)
|
||||
✔ verified pinned ZIP round-trips to all original text files (456.953703ms)
|
||||
✔ row278 browser lists held claims and release preserves role rows and totals (624.706447ms)
|
||||
✔ row278 browser claims 403 stays local and role section remains byte-equal (631.071998ms)
|
||||
✔ row278 browser renders only four escaped claim fields and never instance or other extras (576.777382ms)
|
||||
✔ row278 browser sign-out removes claims and prevents reuse of cached answers (640.568833ms)
|
||||
✔ row278 tester browser keeps role rows without requesting the owner claims section (467.05576ms)
|
||||
✔ row278 browser discards a late claims answer after sign-out (614.541457ms)
|
||||
✔ row278 HTTP read returns held claims without send and refuses arguments before the bus (29.289475ms)
|
||||
✔ row278 HTTP read preserves bus refusal and rejects a malformed result (8.116407ms)
|
||||
✔ row278 tester socket refuses thread claims explicitly with zero bus calls (4.484986ms)
|
||||
✔ row278 Console adapter calls argument-free thread.claims through the normal transport (124.206412ms)
|
||||
✔ 193d HTTP shares use the caller, plain/shared lists, exact args and write fences (75.202228ms)
|
||||
✔ 193d config supplies only the signed-in user live collaborator scopes and updates on downgrade (34.238825ms)
|
||||
✔ 193d viewer UI has no composer, resume, share, session mutations or create controls (516.480948ms)
|
||||
✔ 193d mixed grants keep viewer project read-only and collaborator own thread writable; downgrade hides controls (634.31794ms)
|
||||
✔ 193d owner has share controls on own threads and shared threads remain read-only (407.707207ms)
|
||||
✔ 193d bypassed UI checks still reach a refusing bus for every viewer write (481.425536ms)
|
||||
✔ 193d collaborator shares stay read-only and never expose reshare or wake controls (476.049259ms)
|
||||
✔ REQ-LIMIT-4 Settings shows all token kinds and unknown turns beside every total, as a read-only separate section (568.273975ms)
|
||||
✔ REQ-WEB-1 usage read keeps unknown counts and each token kind; no query or write is accepted (28.001462ms)
|
||||
✔ REQ-WEB-1 malformed usage is refused instead of shown as zero (5.810443ms)
|
||||
✔ R6-N1 with the userRoute gate open, a user session reaches no owner option over HTTP (121.924867ms)
|
||||
✔ Queue, Business and Settings in their five states, with no move button (3101.488368ms)
|
||||
✔ seeded secrets, Discord ids and paths reach no response and no page; business refusals in the module's words (1089.111187ms)
|
||||
✔ the server log names no config path when the system config refuses (317.48495ms)
|
||||
ℹ tests 425
|
||||
ℹ suites 0
|
||||
ℹ pass 425
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 277018.268665
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,592 +0,0 @@
|
||||
# Row 310 W2 WordCraft restricted source build
|
||||
|
||||
Started 2026-10-24 by Gyro, T3 thread 4c520dc8-238f-4f76-a973-28f2ef87310d.
|
||||
Issue #1824; branch gyro/row310; base d16958bcf.
|
||||
|
||||
## Authority and constraints
|
||||
|
||||
Sage dispatch sage-3970 implements the approved W2 brief under Q246/mos-1571.
|
||||
Read AGENTS.md, agents/gyro/README.md, D2/F4/D6-D9/G1/S0/W2 in
|
||||
`docs/plans/2026-10-21_q195-writing-editor.md`, S0 report/inventory and CSP
|
||||
measurement using `git show 74ec32013:<path>`, and Louie's pinned evaluation.
|
||||
S0 is evidence, never modified. Protected source is read-only at
|
||||
`e05b7fe86f3b85454000dffc321de638d7009817`, WordCraft 0.9.0.
|
||||
No source checkout builds, live services/configuration, credentials, private books,
|
||||
frame routes, shell CSP changes, policy expansion or dependency/tool changes.
|
||||
All build/test runs need Sage CLEAR and use low priority, at most four jobs,
|
||||
and TMPDIR freshly allocated beneath /mnt/storage/scratch/tmp.
|
||||
No commit before applicable checks pass; report source/vendor bytes before commit
|
||||
and every product binary path/size before first push. Push gyro/* only after ruling.
|
||||
|
||||
## Implementation plan
|
||||
|
||||
The existing approved design fixes the approach: immutable original import plus a
|
||||
reviewable patch applied to isolated build roots, offline vendor inputs and pinned
|
||||
tool hashes. An edited upstream import would lose the original-source receipt;
|
||||
Louie's built files cannot substitute for a reproducible source build.
|
||||
|
||||
- [ ] Inventory original tracked input paths/bytes/hashes; import via git archive
|
||||
into third_party/wordcraft/upstream. Inventory 209 reviewed packages and exact
|
||||
git pins from S0; vendor only approved inputs with license/source receipts.
|
||||
- [ ] Write provenance/build refusal tests first: changed/missing inputs, extra
|
||||
dependencies, wrong tools, non-offline build, unshipped runtime dependency,
|
||||
inline bootstrap/styles and stale output manifests must refuse.
|
||||
- [ ] Implement build.mjs/toolchain.json/PROVENANCE.json/NOTICE and source patch.
|
||||
Build from copied owned source with path remapping, stable environment and
|
||||
manifest verification; external frame HTML/CSS/module bootstrap; package all
|
||||
runtime files under src/public/wordcraft without serving them.
|
||||
- [ ] Carry M1-M14 explicitly through patch and acceptance inventory. Host hooks
|
||||
replace rfd/picker/download/print; block raw drops, local font enumeration,
|
||||
persisted prose/fonts and direct outbound navigation. W6 owns production
|
||||
bridge/routes, host import watchdog/sandbox and malformed corpus integration;
|
||||
no placeholder is counted as passing mitigation evidence.
|
||||
- [ ] Request CLEAR for each build/test stage. Build twice at different absolute
|
||||
roots offline with the pinned tools. Compare every integration output hash,
|
||||
record bytes/tool hashes/timings and run each touched test file independently,
|
||||
affected WebUI suite and required repository checks on the assigned slot.
|
||||
- [ ] Use scratch fixtures to measure exact Q234 style-src 'self' CSP with full
|
||||
function coverage including host-owned Print, zero violations, no rfd/file
|
||||
picker/download fallback and no external traffic. Preserve plain-text receipts.
|
||||
- [ ] Report source/vendor totals and product binary inventory to Sage. After
|
||||
checks/ruling, commit, push gyro/row310 through helper, send Sage and Gladstone
|
||||
base/tip plus sha256 for every changed path. Move only row 310 to in-review;
|
||||
Sage posts Gitea request. Filbert rechecks inventory once at landing.
|
||||
|
||||
## Acceptance risks to resolve
|
||||
|
||||
1. Vendor resolution must match reviewed normal/build closure, while preserving
|
||||
original Cargo.lock and accounting for workspace-only dependency resolution.
|
||||
2. Tool identity includes Rust target std and actual Trunk/wasm helper executables;
|
||||
installed versions alone cannot establish tool identity.
|
||||
3. Removing one Services hook leaves UI/engine fallbacks; trace all before patching.
|
||||
4. Root-independent WASM includes generated build metadata; wasm-bindgen-shared's
|
||||
git probing and absolute source paths need deterministic inputs/remapping.
|
||||
5. W2 scratch host coverage must be real bytes/function behavior; W6 mitigation
|
||||
gates remain explicit where production bridge authority is not yet available.
|
||||
|
||||
## Activity and evidence
|
||||
|
||||
- Initial worktree clean; HEAD d16958bcf, correct branch. Protected source HEAD
|
||||
matches pin and git status is clean. No build or test has run.
|
||||
- `scripts/mosaic queue next gyro` correctly refused in linked worktree. Retried
|
||||
through canonical checkout as documented; operation still running at this note.
|
||||
- Sage CLEAR sage-3973 covers new test red/green, offline metadata/tree/vendor prep
|
||||
and one restricted release build with nice 19 / four jobs / fresh TMPDIR.
|
||||
- Retried identical queue op gyro-0001 after Glomgold released lock: success,
|
||||
revision 3857, row 310 briefed -> in-progress.
|
||||
- Count reconciliation: F4's 199 counts third-party normal dependency edges for
|
||||
wordcraft-web/wasm32-unknown-unknown. S0 adds 10 build-only dependencies, hence
|
||||
209 third-party source/notice inputs, plus 15 local crates = 224 records.
|
||||
These are distinct closures, not a dependency expansion. Current vendor is
|
||||
exactly those 209 package identities, 10,499 files / 130,737,232 bytes before
|
||||
final packaging corrections; upstream is 612 files / 26,913,076 bytes.
|
||||
- New provenance/build tests ran individually under CLEAR; each has 2 expected
|
||||
first-run failures because the owned verifier/builder does not exist yet.
|
||||
- First offline metadata probe caught an error in my git-manifest normalization:
|
||||
replacing version.workspace as a substring also changed rust-version.workspace.
|
||||
No upstream input changed. Correcting anchored substitutions before repeating.
|
||||
|
||||
### Build-only manifest reduction (sage-3974)
|
||||
|
||||
- Cargo.toml: members reduced to the 15 reviewed local crates; default member wordcraft-web. No runtime feature changes.
|
||||
- crates/doc/Cargo.toml: remove [dev-dependencies] from isolated build copy; excluded dev/test or native-only resolution.
|
||||
- crates/docbin/Cargo.toml: remove [dev-dependencies] from isolated build copy; excluded dev/test or native-only resolution.
|
||||
- crates/docx/Cargo.toml: remove [dev-dependencies] from isolated build copy; excluded dev/test or native-only resolution.
|
||||
- crates/engine/Cargo.toml: remove [target.'cfg(not(target_arch = "wasm32"))'.dependencies] from isolated build copy; excluded dev/test or native-only resolution.
|
||||
- crates/engine/Cargo.toml: remove [dev-dependencies] from isolated build copy; excluded dev/test or native-only resolution.
|
||||
- crates/formats/Cargo.toml: remove [dev-dependencies] from isolated build copy; excluded dev/test or native-only resolution.
|
||||
- crates/pdf/Cargo.toml: remove [dev-dependencies] from isolated build copy; excluded dev/test or native-only resolution.
|
||||
- crates/proof/Cargo.toml: remove [dev-dependencies] from isolated build copy; excluded dev/test or native-only resolution.
|
||||
- crates/render/Cargo.toml: remove [target.'cfg(not(target_arch = "wasm32"))'.dependencies] from isolated build copy; excluded dev/test or native-only resolution.
|
||||
- crates/ui-egui/Cargo.toml: remove [target.'cfg(target_os = "linux")'.dependencies] from isolated build copy; excluded dev/test or native-only resolution.
|
||||
- crates/ui-egui/Cargo.toml: remove [dev-dependencies] from isolated build copy; excluded dev/test or native-only resolution.
|
||||
- crates/zotero/Cargo.toml: remove [dev-dependencies] from isolated build copy; excluded dev/test or native-only resolution.
|
||||
- sage-3976 permits proven-false target-section removal in THIRD-PARTY manifests
|
||||
only in isolated build copies, with matching checksum rewrites. A three-valued
|
||||
cfg analysis keeps unknown/custom flags/features unchanged and identifies 26
|
||||
manifests / 57 false-target dependency sections; target-filter-plan.json lists
|
||||
every crate/cfg/dependency. This is below the ~30-manifest stop boundary.
|
||||
- The scratch-only filtered source still refuses: wgpu-core's dormant `angle`
|
||||
feature references its removed Apple-only dependency. Stopped at the explicit
|
||||
feature-definition boundary and sent gyro-0006 to Sage. No feature edited.
|
||||
- Tool versions match all five pins; toolchain.json records their binary hashes
|
||||
and the Rust compiler driver/wasm target support files. No release build yet.
|
||||
- Current notice bundle includes 209 third-party package mappings, local source
|
||||
license/attribution/font texts and self_cell/ryu Apache-2.0 elections. Source
|
||||
verifier green: 2/2. Output/build acceptance remains red/unimplemented.
|
||||
|
||||
### Original-source subset (sage-3976)
|
||||
|
||||
Excluded whole directories assets/app-icon/, docs/images/ and packaging/macos/: web frame serves no icon; screenshots and macOS packaging are never build inputs. Every license/notice/copyright remains. Included files remain byte-identical; no vendor file removed. Exact excluded paths:
|
||||
|
||||
- assets/app-icon/hicolor/128x128/apps/ai.storyteller.wordcraft.png
|
||||
- assets/app-icon/hicolor/16x16/apps/ai.storyteller.wordcraft.png
|
||||
- assets/app-icon/hicolor/24x24/apps/ai.storyteller.wordcraft.png
|
||||
- assets/app-icon/hicolor/256x256/apps/ai.storyteller.wordcraft.png
|
||||
- assets/app-icon/hicolor/32x32/apps/ai.storyteller.wordcraft.png
|
||||
- assets/app-icon/hicolor/48x48/apps/ai.storyteller.wordcraft.png
|
||||
- assets/app-icon/hicolor/512x512/apps/ai.storyteller.wordcraft.png
|
||||
- assets/app-icon/hicolor/64x64/apps/ai.storyteller.wordcraft.png
|
||||
- assets/app-icon/hicolor/scalable/apps/ai.storyteller.wordcraft.svg
|
||||
- assets/app-icon/wordcraft-1024.png
|
||||
- assets/app-icon/wordcraft-macos-512.png
|
||||
- assets/app-icon/wordcraft.icns
|
||||
- assets/app-icon/wordcraft.ico
|
||||
- assets/app-icon/wordcraft.svg
|
||||
- docs/images/backstage.png
|
||||
- docs/images/dark.png
|
||||
- docs/images/design.png
|
||||
- docs/images/hero.png
|
||||
- docs/images/layout.png
|
||||
- docs/images/references.png
|
||||
- docs/images/review.png
|
||||
- packaging/macos/Info.plist.in
|
||||
- packaging/macos/dmg/README.md
|
||||
- packaging/macos/dmg/background.svg
|
||||
- packaging/macos/dmg/background.tiff
|
||||
- packaging/macos/dmg/dmg-layout.DS_Store
|
||||
- packaging/macos/dmg/generate.py
|
||||
- packaging/macos/entitlements.plist
|
||||
- packaging/macos/import-cert.sh
|
||||
- packaging/macos/package.sh
|
||||
- sage-3982 approved the 103 enumerated feature items across eight manifests,
|
||||
mechanical script only, build copies only. Scratch application completed;
|
||||
original vendor unchanged. A committed reproducible generator/test is pending
|
||||
the packaging decision; no third-party source/feature edits are hand-applied.
|
||||
- sage-3983 permits custom cfg fuzzing/loom/miri false under a sanitized,
|
||||
refusing release environment. Third-party target inventory is now 28 manifests
|
||||
/ 59 sections. It narrows the feature gate to root-specific package/selected
|
||||
feature closure equality: S0's workspace-unified 293-node feature metadata is
|
||||
context, not an equality target. Exact 199 normal /209 normal+build identities
|
||||
remain the acceptance sets.
|
||||
- Following that reduction, metadata refuses on encoding_rs/simdutf8 under a
|
||||
target_feature=simd128 cfg. Pinned rustc default cfg has no simd128. The filter
|
||||
retained target-feature flags as unknown. Scope stop per sage-3983: one-page
|
||||
PACKAGING-BOUNDARY.md and complete survey sent to Sage in gyro-0010. No further
|
||||
cfg/dependency category changed. No release build, commit, push or live change.
|
||||
- Mos mos-1572/1573 via sage-3979: landing held pending Jason/Vikunja618; gyro
|
||||
review-branch push is allowed after validation, with full binary listing.
|
||||
Whole-row and runtime-only pack-size measurements are required after a local
|
||||
verified commit; offline tool availability/provenance/timing also requested.
|
||||
|
||||
## Measured-cfg reduction under sage-3984g
|
||||
|
||||
Pinned rustc cfg is rustc-wasm32-cfg.txt. releaseEnvironment refuses inherited flag variables and forwards only an allowlist to the cfg measurement. Filter evaluator and mechanical feature cleanup are in build.mjs; no optional normal dependency removed.
|
||||
|
||||
- aes-0.9.3: remove dependencies under cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86")); dependencies cpufeatures.
|
||||
- bytes-1.12.1: remove dev-dependencies under cfg(loom); dependencies loom.
|
||||
- cmov-0.5.4: remove dev-dependencies under cfg(any(unix, windows)); dependencies proptest.
|
||||
- eframe-0.36.2: remove dependencies under cfg(any(target_os = "macos")); dependencies objc2.
|
||||
- eframe-0.36.2: remove dependencies under cfg(any(target_os = "macos")); dependencies objc2-app-kit.
|
||||
- eframe-0.36.2: remove dependencies under cfg(any(target_os = "macos")); dependencies objc2-foundation.
|
||||
- eframe-0.36.2: remove dependencies under cfg(any(target_os = "windows")); dependencies windows-sys.
|
||||
- eframe-0.36.2: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies egui-wgpu.
|
||||
- eframe-0.36.2: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies egui-winit.
|
||||
- eframe-0.36.2: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies glutin.
|
||||
- eframe-0.36.2: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies glutin-winit.
|
||||
- eframe-0.36.2: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies image.
|
||||
- eframe-0.36.2: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies pollster.
|
||||
- eframe-0.36.2: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies winit.
|
||||
- eframe-0.36.2: remove dev-dependencies under cfg(not(target_arch = "wasm32")); dependencies directories.
|
||||
- eframe-0.36.2: feature accesskit removes egui-winit/accesskit; dependency egui-winit removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature android-game-activity removes egui-winit/android-game-activity; dependency egui-winit removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature android-native-activity removes egui-winit/android-native-activity; dependency egui-winit removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature default removes winit/default; dependency winit removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature glow removes dep:glutin-winit; dependency glutin-winit removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature glow removes dep:glutin; dependency glutin removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature links removes egui-winit/links; dependency egui-winit removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature persistence removes egui-winit/serde; dependency egui-winit removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature wayland removes egui-winit/wayland; dependency egui-winit removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature wayland removes glutin?/wayland; dependency glutin removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature wayland removes glutin-winit?/wayland; dependency glutin-winit removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature wgpu_no_default_features removes dep:pollster; dependency pollster removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature x11 removes egui-winit/x11; dependency egui-winit removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature x11 removes glutin?/x11; dependency glutin removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature x11 removes glutin?/glx; dependency glutin removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature x11 removes glutin-winit?/x11; dependency glutin-winit removed under cfg(not(target_arch = "wasm32")).
|
||||
- eframe-0.36.2: feature x11 removes glutin-winit?/glx; dependency glutin-winit removed under cfg(not(target_arch = "wasm32")).
|
||||
- encoding_rs-0.8.42: remove dependencies under cfg(all(any(target_arch = "x86_64", target_arch = "x86"), not(all(target_feature = "avx2", target_feature = "bmi1")))); dependencies multiversion.
|
||||
- encoding_rs-0.8.42: remove dependencies under cfg(any(target_arch = "x86_64", target_arch = "x86")); dependencies core_detect.
|
||||
- encoding_rs-0.8.42: remove dependencies under cfg(any(target_arch = "x86_64", target_arch = "x86", target_arch = "aarch64", all(target_arch = "wasm32", target_feature = "simd128"))); dependencies simdutf8.
|
||||
- encoding_rs-0.8.42: feature std removes dep:multiversion; dependency multiversion removed under cfg(all(any(target_arch = "x86_64", target_arch = "x86"), not(all(target_feature = "avx2", target_feature = "bmi1")))).
|
||||
- getrandom-0.3.4: remove dependencies under cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))); dependencies libc.
|
||||
- getrandom-0.3.4: remove dependencies under cfg(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none"), target_feature = "atomics")); dependencies js-sys.
|
||||
- getrandom-0.3.4: remove dependencies under cfg(all(target_arch = "wasm32", target_os = "wasi", target_env = "p2")); dependencies wasip2.
|
||||
- getrandom-0.3.4: remove dependencies under cfg(all(target_os = "uefi", getrandom_backend = "efi_rng")); dependencies r-efi.
|
||||
- getrandom-0.3.4: remove dependencies under cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", target_os = "cygwin", all(target_os = "horizon", target_arch = "arm"))); dependencies libc.
|
||||
- getrandom-0.3.4: remove dependencies under cfg(any(target_os = "haiku", target_os = "redox", target_os = "nto", target_os = "aix")); dependencies libc.
|
||||
- getrandom-0.3.4: remove dependencies under cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")); dependencies libc.
|
||||
- getrandom-0.3.4: remove dependencies under cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")); dependencies libc.
|
||||
- getrandom-0.3.4: remove dependencies under cfg(target_os = "netbsd"); dependencies libc.
|
||||
- getrandom-0.3.4: remove dependencies under cfg(target_os = "solaris"); dependencies libc.
|
||||
- getrandom-0.3.4: remove dependencies under cfg(target_os = "vxworks"); dependencies libc.
|
||||
- getrandom-0.3.4: feature wasm_js removes dep:js-sys; dependency js-sys removed under cfg(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none"), target_feature = "atomics")).
|
||||
- half-2.7.1: remove dependencies under cfg(target_arch = "spirv"); dependencies crunchy.
|
||||
- harfrust-0.12.0: remove dev-dependencies under cfg(target_vendor = "apple"); dependencies objc2-core-foundation.
|
||||
- harfrust-0.12.0: remove dev-dependencies under cfg(target_vendor = "apple"); dependencies objc2-core-text.
|
||||
- harfrust-0.13.3: remove dev-dependencies under cfg(target_vendor = "apple"); dependencies objc2-core-foundation.
|
||||
- harfrust-0.13.3: remove dev-dependencies under cfg(target_vendor = "apple"); dependencies objc2-core-text.
|
||||
- hashbrown-0.17.1: remove dependencies under cfg(any()); dependencies serde.
|
||||
- hashbrown-0.17.1: remove dev-dependencies under cfg(unix); dependencies libc.
|
||||
- hashbrown-0.17.1: feature serde removes dep:serde; dependency serde removed under cfg(any()).
|
||||
- indexmap-2.14.2: remove dependencies under cfg(any()); dependencies serde.
|
||||
- indexmap-2.14.2: feature serde removes dep:serde; dependency serde removed under cfg(any()).
|
||||
- parking_lot_core-0.9.12: remove dependencies under cfg(target_os = "redox"); dependencies redox_syscall.
|
||||
- parking_lot_core-0.9.12: remove dependencies under cfg(unix); dependencies libc.
|
||||
- parking_lot_core-0.9.12: remove dependencies under cfg(windows); dependencies windows-link.
|
||||
- png-0.18.1: remove dev-dependencies under cfg(not(target_arch = "wasm32")); dependencies criterion.
|
||||
- rfd-0.17.2: remove dependencies under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")); dependencies glib-sys.
|
||||
- rfd-0.17.2: remove dependencies under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")); dependencies gobject-sys.
|
||||
- rfd-0.17.2: remove dependencies under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")); dependencies gtk-sys.
|
||||
- rfd-0.17.2: remove dependencies under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")); dependencies libc.
|
||||
- rfd-0.17.2: remove dependencies under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")); dependencies percent-encoding.
|
||||
- rfd-0.17.2: remove dependencies under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")); dependencies pollster.
|
||||
- rfd-0.17.2: remove dependencies under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")); dependencies wayland-backend.
|
||||
- rfd-0.17.2: remove dependencies under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")); dependencies wayland-client.
|
||||
- rfd-0.17.2: remove dependencies under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")); dependencies wayland-protocols.
|
||||
- rfd-0.17.2: remove dependencies under cfg(target_os = "macos"); dependencies block2.
|
||||
- rfd-0.17.2: remove dependencies under cfg(target_os = "macos"); dependencies dispatch2.
|
||||
- rfd-0.17.2: remove dependencies under cfg(target_os = "macos"); dependencies objc2.
|
||||
- rfd-0.17.2: remove dependencies under cfg(target_os = "macos"); dependencies objc2-app-kit.
|
||||
- rfd-0.17.2: remove dependencies under cfg(target_os = "macos"); dependencies objc2-core-foundation.
|
||||
- rfd-0.17.2: remove dependencies under cfg(target_os = "macos"); dependencies objc2-foundation.
|
||||
- rfd-0.17.2: remove dependencies under cfg(target_os = "windows"); dependencies windows-sys.
|
||||
- rfd-0.17.2: feature common-controls-v6 removes windows-sys/Win32_UI_Controls; dependency windows-sys removed under cfg(target_os = "windows").
|
||||
- rfd-0.17.2: feature gtk3 removes gtk-sys; dependency gtk-sys removed under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")).
|
||||
- rfd-0.17.2: feature gtk3 removes glib-sys; dependency glib-sys removed under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")).
|
||||
- rfd-0.17.2: feature gtk3 removes gobject-sys; dependency gobject-sys removed under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")).
|
||||
- rfd-0.17.2: feature wayland removes wayland-backend; dependency wayland-backend removed under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")).
|
||||
- rfd-0.17.2: feature wayland removes wayland-client; dependency wayland-client removed under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")).
|
||||
- rfd-0.17.2: feature wayland removes wayland-protocols; dependency wayland-protocols removed under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")).
|
||||
- rfd-0.17.2: feature xdg-portal removes pollster; dependency pollster removed under cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "netbsd", target_os = "openbsd")).
|
||||
- serde_core-1.0.229: remove dependencies under cfg(any()); dependencies serde_derive.
|
||||
- serde_json-1.0.151: remove dependencies under cfg(any()); dependencies serde.
|
||||
- sha1-0.11.0: remove dependencies under cfg(any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64")); dependencies cpufeatures.
|
||||
- sha2-0.11.0: remove dependencies under cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86")); dependencies cpufeatures.
|
||||
- sys-locale-0.3.2: remove dependencies under cfg(target_os = "android"); dependencies libc.
|
||||
- uuid-1.27.0: remove dependencies under cfg(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none"), target_feature = "atomics")); dependencies js-sys.
|
||||
- uuid-1.27.0: remove dependencies under cfg(not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none")))); dependencies getrandom.
|
||||
- uuid-1.27.0: remove dependencies under cfg(not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none")))); dependencies rand.
|
||||
- uuid-1.27.0: remove dev-dependencies under cfg(not(target_arch = "wasm32")); dependencies gungraun.
|
||||
- uuid-1.27.0: feature fast-rng removes dep:rand; dependency rand removed under cfg(not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none")))).
|
||||
- uuid-1.27.0: feature js removes dep:js-sys; dependency js-sys removed under cfg(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none"), target_feature = "atomics")).
|
||||
- uuid-1.27.0: feature rng removes dep:getrandom; dependency getrandom removed under cfg(not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none")))).
|
||||
- uuid-1.27.0: feature rng-getrandom removes dep:getrandom; dependency getrandom removed under cfg(not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none")))).
|
||||
- uuid-1.27.0: feature rng-rand removes dep:rand; dependency rand removed under cfg(not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none")))).
|
||||
- uuid-1.27.0: feature std removes js-sys?/std; dependency js-sys removed under cfg(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none"), target_feature = "atomics")).
|
||||
- wasm-bindgen-0.2.129: remove dev-dependencies under cfg(all(target_os = "emscripten", wasm_bindgen_unstable_tokio)); dependencies tokio.
|
||||
- wasm-bindgen-0.2.129: remove dev-dependencies under cfg(target_arch = "wasm64"); dependencies paste.
|
||||
- wasm-bindgen-0.2.129: remove dev-dependencies under cfg(target_arch = "wasm64"); dependencies serde_derive.
|
||||
- wasm-bindgen-futures-0.4.79: remove dependencies under cfg(all(target_os = "emscripten", wasm_bindgen_unstable_tokio)); dependencies tokio.
|
||||
- web-time-1.1.0: remove dev-dependencies under cfg(all(target_family = "wasm", target_feature = "atomics")); dependencies futures-channel.
|
||||
- web-time-1.1.0: remove dev-dependencies under cfg(all(target_family = "wasm", target_feature = "atomics")); dependencies futures-util.
|
||||
- web-time-1.1.0: remove dev-dependencies under cfg(all(target_family = "wasm", target_feature = "atomics")); dependencies web-sys.
|
||||
- web-time-1.1.0: remove dev-dependencies under cfg(not(target_family = "wasm")); dependencies pollster.
|
||||
- wgpu-30.0.1: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies smallvec.
|
||||
- wgpu-30.0.1: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies wgpu-core.
|
||||
- wgpu-30.0.1: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies wgpu-hal.
|
||||
- wgpu-30.0.1: remove dependencies under cfg(not(target_has_atomic = "64")); dependencies portable-atomic.
|
||||
- wgpu-30.0.1: remove dependencies under cfg(target_os = "emscripten"); dependencies smallvec.
|
||||
- wgpu-30.0.1: remove dependencies under cfg(target_os = "emscripten"); dependencies wgpu-core.
|
||||
- wgpu-30.0.1: remove dependencies under cfg(target_os = "emscripten"); dependencies wgpu-hal.
|
||||
- wgpu-core-30.0.1: remove dependencies under cfg(any(windows, target_os = "linux", target_os = "android", target_os = "freebsd")); dependencies wgpu-core-deps-windows-linux-android.
|
||||
- wgpu-core-30.0.1: remove dependencies under cfg(not(target_has_atomic = "64")); dependencies portable-atomic.
|
||||
- wgpu-core-30.0.1: remove dependencies under cfg(target_os = "emscripten"); dependencies wgpu-core-deps-emscripten.
|
||||
- wgpu-core-30.0.1: remove dependencies under cfg(target_vendor = "apple"); dependencies wgpu-core-deps-apple.
|
||||
- wgpu-core-30.0.1: feature angle removes wgpu-core-deps-apple/angle; dependency wgpu-core-deps-apple removed under cfg(target_vendor = "apple").
|
||||
- wgpu-core-30.0.1: feature drm removes wgpu-core-deps-windows-linux-android/drm; dependency wgpu-core-deps-windows-linux-android removed under cfg(any(windows, target_os = "linux", target_os = "android", target_os = "freebsd")).
|
||||
- wgpu-core-30.0.1: feature dx12 removes wgpu-core-deps-windows-linux-android/dx12; dependency wgpu-core-deps-windows-linux-android removed under cfg(any(windows, target_os = "linux", target_os = "android", target_os = "freebsd")).
|
||||
- wgpu-core-30.0.1: feature gles removes wgpu-core-deps-windows-linux-android/gles; dependency wgpu-core-deps-windows-linux-android removed under cfg(any(windows, target_os = "linux", target_os = "android", target_os = "freebsd")).
|
||||
- wgpu-core-30.0.1: feature gles removes wgpu-core-deps-emscripten/gles; dependency wgpu-core-deps-emscripten removed under cfg(target_os = "emscripten").
|
||||
- wgpu-core-30.0.1: feature metal removes wgpu-core-deps-apple/metal; dependency wgpu-core-deps-apple removed under cfg(target_vendor = "apple").
|
||||
- wgpu-core-30.0.1: feature portable-atomic removes dep:portable-atomic; dependency portable-atomic removed under cfg(not(target_has_atomic = "64")).
|
||||
- wgpu-core-30.0.1: feature renderdoc removes wgpu-core-deps-windows-linux-android/renderdoc; dependency wgpu-core-deps-windows-linux-android removed under cfg(any(windows, target_os = "linux", target_os = "android", target_os = "freebsd")).
|
||||
- wgpu-core-30.0.1: feature vulkan removes wgpu-core-deps-windows-linux-android/vulkan; dependency wgpu-core-deps-windows-linux-android removed under cfg(any(windows, target_os = "linux", target_os = "android", target_os = "freebsd")).
|
||||
- wgpu-core-30.0.1: feature vulkan-portability removes wgpu-core-deps-apple/vulkan-portability; dependency wgpu-core-deps-apple removed under cfg(target_vendor = "apple").
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(all(unix, not(target_vendor = "apple"), not(target_family = "wasm"))); dependencies drm.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(all(windows, not(target_arch = "aarch64"), target_env = "msvc")); dependencies mach-dxcompiler-rs.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(any(not(target_has_atomic = "64"), not(target_has_atomic = "ptr"))); dependencies portable-atomic.
|
||||
- wgpu-hal-30.0.1: remove dev-dependencies under cfg(not(any(target_arch = "wasm32", target_os = "ios", target_os = "visionos", target_env = "ohos"))); dependencies glutin.
|
||||
- wgpu-hal-30.0.1: remove dev-dependencies under cfg(not(any(target_arch = "wasm32", target_os = "ios", target_os = "visionos", target_env = "ohos"))); dependencies glutin-winit.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies ash.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies gpu-allocator.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies khronos-egl.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies libloading.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies renderdoc-sys.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(not(target_arch = "wasm32")); dependencies smallvec.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(not(target_has_atomic = "ptr")); dependencies portable-atomic-util.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_os = "android"); dependencies android_system_properties.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_os = "android"); dependencies ndk-sys.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_os = "emscripten"); dependencies khronos-egl.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_os = "emscripten"); dependencies libloading.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_vendor = "apple"); dependencies block2.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_vendor = "apple"); dependencies bytemuck.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_vendor = "apple"); dependencies objc2.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_vendor = "apple"); dependencies objc2-core-foundation.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_vendor = "apple"); dependencies objc2-core-graphics.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_vendor = "apple"); dependencies objc2-foundation.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_vendor = "apple"); dependencies objc2-metal.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_vendor = "apple"); dependencies objc2-quartz-core.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(target_vendor = "apple"); dependencies raw-window-metal.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(unix); dependencies libc.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(unix); dependencies wayland-sys.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(windows); dependencies bit-set.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(windows); dependencies glutin_wgl_sys.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(windows); dependencies once_cell.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(windows); dependencies range-alloc.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(windows); dependencies windows.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(windows); dependencies windows-core.
|
||||
- wgpu-hal-30.0.1: remove dependencies under cfg(windows); dependencies windows-result.
|
||||
- wgpu-hal-30.0.1: feature dx12 removes dep:bit-set; dependency bit-set removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes dep:gpu-allocator; dependency gpu-allocator removed under cfg(not(target_arch = "wasm32")).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes dep:libloading; dependency libloading removed under cfg(not(target_arch = "wasm32")) / cfg(target_os = "emscripten").
|
||||
- wgpu-hal-30.0.1: feature dx12 removes dep:once_cell; dependency once_cell removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes dep:range-alloc; dependency range-alloc removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes dep:windows-core; dependency windows-core removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes gpu-allocator/d3d12; dependency gpu-allocator removed under cfg(not(target_arch = "wasm32")).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes once_cell/std; dependency once_cell removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_Devices_DeviceAndDriverInstallation; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_Devices_Display; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_Graphics_Direct3D_Dxc; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_Graphics_Direct3D_Fxc; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_Graphics_Direct3D; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_Graphics_Direct3D12; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_Graphics_DirectComposition; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_Graphics_Dxgi_Common; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_Graphics_Gdi; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_Security; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_System_Diagnostics_Debug; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_System_Kernel; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_System_Performance; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_System_Threading; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature dx12 removes windows/Win32_UI_WindowsAndMessaging; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature gles removes dep:glutin_wgl_sys; dependency glutin_wgl_sys removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature gles removes dep:khronos-egl; dependency khronos-egl removed under cfg(not(target_arch = "wasm32")) / cfg(target_os = "emscripten").
|
||||
- wgpu-hal-30.0.1: feature gles removes dep:libloading; dependency libloading removed under cfg(not(target_arch = "wasm32")) / cfg(target_os = "emscripten").
|
||||
- wgpu-hal-30.0.1: feature gles removes dep:ndk-sys; dependency ndk-sys removed under cfg(target_os = "android").
|
||||
- wgpu-hal-30.0.1: feature gles removes dep:objc2; dependency objc2 removed under cfg(target_vendor = "apple").
|
||||
- wgpu-hal-30.0.1: feature gles removes dep:wayland-sys; dependency wayland-sys removed under cfg(unix).
|
||||
- wgpu-hal-30.0.1: feature gles removes dep:windows-result; dependency windows-result removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature gles removes windows-result/std; dependency windows-result removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature gles removes windows/Win32_Graphics_Gdi; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature gles removes windows/Win32_Graphics_OpenGL; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature gles removes windows/Win32_System_LibraryLoader; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature gles removes windows/Win32_UI_WindowsAndMessaging; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature metal removes dep:block2; dependency block2 removed under cfg(target_vendor = "apple").
|
||||
- wgpu-hal-30.0.1: feature metal removes dep:libloading; dependency libloading removed under cfg(not(target_arch = "wasm32")) / cfg(target_os = "emscripten").
|
||||
- wgpu-hal-30.0.1: feature metal removes dep:objc2; dependency objc2 removed under cfg(target_vendor = "apple").
|
||||
- wgpu-hal-30.0.1: feature metal removes dep:objc2-core-foundation; dependency objc2-core-foundation removed under cfg(target_vendor = "apple").
|
||||
- wgpu-hal-30.0.1: feature metal removes dep:objc2-core-graphics; dependency objc2-core-graphics removed under cfg(target_vendor = "apple").
|
||||
- wgpu-hal-30.0.1: feature metal removes dep:objc2-foundation; dependency objc2-foundation removed under cfg(target_vendor = "apple").
|
||||
- wgpu-hal-30.0.1: feature metal removes dep:objc2-metal; dependency objc2-metal removed under cfg(target_vendor = "apple").
|
||||
- wgpu-hal-30.0.1: feature metal removes dep:objc2-quartz-core; dependency objc2-quartz-core removed under cfg(target_vendor = "apple").
|
||||
- wgpu-hal-30.0.1: feature metal removes dep:smallvec; dependency smallvec removed under cfg(not(target_arch = "wasm32")).
|
||||
- wgpu-hal-30.0.1: feature metal removes dep:raw-window-metal; dependency raw-window-metal removed under cfg(target_vendor = "apple").
|
||||
- wgpu-hal-30.0.1: feature portable-atomic removes dep:portable-atomic; dependency portable-atomic removed under cfg(any(not(target_has_atomic = "64"), not(target_has_atomic = "ptr"))).
|
||||
- wgpu-hal-30.0.1: feature portable-atomic removes dep:portable-atomic-util; dependency portable-atomic-util removed under cfg(not(target_has_atomic = "ptr")).
|
||||
- wgpu-hal-30.0.1: feature renderdoc removes dep:libloading; dependency libloading removed under cfg(not(target_arch = "wasm32")) / cfg(target_os = "emscripten").
|
||||
- wgpu-hal-30.0.1: feature renderdoc removes dep:renderdoc-sys; dependency renderdoc-sys removed under cfg(not(target_arch = "wasm32")).
|
||||
- wgpu-hal-30.0.1: feature static-dxc removes dep:mach-dxcompiler-rs; dependency mach-dxcompiler-rs removed under cfg(all(windows, not(target_arch = "aarch64"), target_env = "msvc")).
|
||||
- wgpu-hal-30.0.1: feature vulkan removes dep:android_system_properties; dependency android_system_properties removed under cfg(target_os = "android").
|
||||
- wgpu-hal-30.0.1: feature vulkan removes dep:ash; dependency ash removed under cfg(not(target_arch = "wasm32")).
|
||||
- wgpu-hal-30.0.1: feature vulkan removes dep:libc; dependency libc removed under cfg(unix).
|
||||
- wgpu-hal-30.0.1: feature vulkan removes dep:libloading; dependency libloading removed under cfg(not(target_arch = "wasm32")) / cfg(target_os = "emscripten").
|
||||
- wgpu-hal-30.0.1: feature vulkan removes dep:raw-window-metal; dependency raw-window-metal removed under cfg(target_vendor = "apple").
|
||||
- wgpu-hal-30.0.1: feature vulkan removes dep:smallvec; dependency smallvec removed under cfg(not(target_arch = "wasm32")).
|
||||
- wgpu-hal-30.0.1: feature vulkan removes dep:windows; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature vulkan removes gpu-allocator/vulkan; dependency gpu-allocator removed under cfg(not(target_arch = "wasm32")).
|
||||
- wgpu-hal-30.0.1: feature vulkan removes windows/Win32; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature vulkan removes windows/Win32_Devices_Display; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature vulkan removes windows/Win32_Foundation; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature vulkan removes windows/Win32_Graphics_Dxgi; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature vulkan removes windows/Win32_Graphics_Dxgi_Common; dependency windows removed under cfg(windows).
|
||||
- wgpu-hal-30.0.1: feature vulkan removes windows/Win32_Graphics_Gdi; dependency windows removed under cfg(windows).
|
||||
- zerocopy-0.8.61: remove dependencies under cfg(any()); dependencies zerocopy-derive.
|
||||
- zip-3.0.0: remove dependencies under cfg(fuzzing); dependencies arbitrary.
|
||||
|
||||
Count correction: 28 changed manifests /121 individual TOML dependency table sections /109 feature items. Earlier57/59 counted grouped cfg+kind sections, not individual dependency tables. Initial indexmap failure exposed my filter treating a dev-dependency as preserving an optional normal dependency; fixed only that bookkeeping bug with a failing then passing regression. No inventory expansion.
|
||||
|
||||
Resolution stop: vello_cpu0.1.0 optional normal glifo ^0.2.0 (locked0.2.0) is outside reviewed209 (reviewed glifo is0.3.0). No cfg-filtered section controls it. Stopped per sage-3984g; no import/fetch. Offline size receipt full-lock-cache-size.json: 538 third-party lock records =534 registry +4 git. Default cache175 present/359 missing,16,666,072 archive bytes; existing Louie toolchain cache534 present/0 missing,85,234,501 bytes; S0 cache412 present/122 missing,44,438,740 bytes. Sent Sage gyro-0011. Root closure/release/CSP acceptance is unproved.
|
||||
|
||||
## Full-lock scratch measurement — sage-3992
|
||||
|
||||
Scope is measurement only, entirely under
|
||||
`/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0`. No additional source,
|
||||
outputs or tool binaries imported into the repository; no commit/push. The
|
||||
restricted-runtime/security/CSP gates remain open. No further manifest surgery.
|
||||
|
||||
Extraction from Louie's pre-existing cache verified every registry archive
|
||||
against the ORIGINAL Cargo.lock checksum, with no fetch. All four git lock
|
||||
records were excluded from this extraction. Registry results (534 packages):
|
||||
|
||||
- Original archive total: 85,234,501 bytes.
|
||||
- Extracted archive content: 24,844 files / 611,577,974 bytes.
|
||||
- Including 534 generated Cargo checksum files: 25,378 files / 614,049,226 bytes.
|
||||
- Beyond the reviewed 209, the full 538 lock set adds 329 packages: 328 registry
|
||||
plus one git package. The additional registry content alone is 15,005 files /
|
||||
484,646,629 bytes including generated checksums. The fourth git package was
|
||||
neither fetched nor copied. Full details: full-lock-extracted-size.json.
|
||||
|
||||
For the measurement build, three ALREADY REVIEWED git packages were copied from
|
||||
owned cargo-vendor into scratch after registry extraction. No new git source
|
||||
was imported. Source is the owned source copy with the already approved local
|
||||
15-member workspace reduction and unchanged vendor manifests/features. The exact
|
||||
pinned original icon was restored only in scratch for the original Trunk index.
|
||||
This builds the baseline for size/timing; it is not the restricted adapter and
|
||||
cannot count as M1-M14 or zero-CSP evidence.
|
||||
|
||||
Before compiling, offline cargo tree with normal edges exactly matched S0's
|
||||
199 third-party +15 local packages; normal,build exactly matched 209+15. The
|
||||
comparison refused on any added/missing pair. Scratch metadata/tree commands and
|
||||
the release command each run with unshare --user --map-root-user --net, nice19,
|
||||
four Cargo jobs, isolated HOME/CARGO_HOME and a fresh scratch TMPDIR. There is no
|
||||
connected network interface in these namespaces, only loopback; Cargo and Trunk
|
||||
also have offline enabled and Trunk update checks disabled. Inherited Rust flags
|
||||
are refused and none are set for this measurement. Release build started after
|
||||
those package-closure checks; result/timing/output pack measurement pending.
|
||||
|
||||
Tool availability/provenance on this host:
|
||||
|
||||
- rustc/Cargo 1.99.1 and wasm32-unknown-unknown std: existing isolated rustup
|
||||
stable toolchain under Louie's evaluation toolchain directory, installed Oct21;
|
||||
rustup settings and target manifests identify it. No install repeated.
|
||||
- Trunk0.22.0: existing isolated cargo install; .crates.toml records the exact
|
||||
version and crates.io origin. No install repeated.
|
||||
- wasm-bindgen0.2.129 and wasm-opt131: existing Trunk versioned helper cache,
|
||||
copied to isolated scratch cache/PATH. No download. Their original download
|
||||
commands are not present in Louie's evaluation report.
|
||||
- Five executable versions/hashes and Rust support hashes: toolchain.json.
|
||||
All required tools are already present; this build needs no network.
|
||||
|
||||
### Measurement environment correction and retry
|
||||
|
||||
The first measurement command succeeded in 388.757578 seconds (06:02:17.598Z
|
||||
through 06:08:46.356Z). The requested `nice -n19` was relative to inherited
|
||||
negative priority; compiler workers were initially nice15. I detected and set
|
||||
only this build's processes/threads absolutely to19 during compilation, then
|
||||
retained this result as a LIMITED timing, not a whole-run nice19 sample.
|
||||
Receipt: full-lock-release-limited.json and measurement-priority-correction.json.
|
||||
No baseline source change was made. Sage was told in gyro-0012 before retry.
|
||||
|
||||
The one environment retry authorized in sage-3992 establishes absolute nice19
|
||||
before child spawn, uses a fresh target-retry directory, CARGO_BUILD_JOBS=4,
|
||||
BINARYEN_CORES=4 and a four-CPU affinity inherited by all build children.
|
||||
measurement-retry-priority.jsonl confirms Trunk/Cargo/rustc at19 on those CPUs.
|
||||
The harness separately reprioritizes the waiting Python launcher, so launcher
|
||||
priority alone is not the build-child measurement. The network namespace,
|
||||
offline flags and isolated source/vendor/tool environment are unchanged.
|
||||
|
||||
### Full-lock measurement results (sage-3992)
|
||||
|
||||
The valid environment retry succeeded, exit0, in **397.864805 seconds** (06:09:38.409Z–06:16:16.274Z), from a fresh target directory. Actual Trunk/Cargo/rustc/wasm-opt children were nice19, four-CPU affinity; Cargo jobs4 and Binaryen cores4. The waiting Python launcher was independently reprioritized to-4 by the harness; that is recorded separately and does not describe build child priority. Evidence: full-lock-release-measurement.json, measurement-retry-priority.jsonl and measurement-release.log. Three existing engine dead-code warnings; no build error.
|
||||
|
||||
| Baseline measurement output | Bytes | SHA-256 |
|
||||
|---|---:|---|
|
||||
| index.html | 1604 | 299b76f4004bbc65204d561cc381b3fbb249d10069eaa50e88c7fba3b6c63cb8 |
|
||||
| wordcraft-fa59e09a3f921e03.ico | 18378 | 53a23dcf66260f44d87d4d143d633395f3e967f391eda47e6e9cc3a52f820225 |
|
||||
| wordcraft-web-832240fdc6ce872b_bg.wasm | 43957877 | c1c15050a9b394c21e7540aa57c9292b86d32bfea2476094a9976304dacf1de0 |
|
||||
| wordcraft-web-88f7089f25a3b338.js | 164941 | 866a1de6a33eff2ded8ae9588fd049aeacfc42557a3863ccd2107b3faf4d691e |
|
||||
|
||||
Total runtime output: **44142800 bytes**. Output blobs alone pack to **16720159 bytes** using Git2.55.0: hash-object -w into a NEW scratch bare repo, sorted four blob IDs through pack-objects --stdout --threads=4. No git gc, no object writes in the Mosaic repository; count-objects receipts are in measurement-output-pack.json. The empty internal .trunk-lock is excluded. This is an independent four-blob pack, not a cross-version delta estimate and not the whole-row pack. Whole-row pack measurement remains unavailable because this work is not committed.
|
||||
|
||||
**Network access was disabled:** every Cargo/Trunk command ran in a new isolated user/network namespace with no connected interface; the topology receipt shows only zero-traffic loopback. Cargo and Trunk offline flags and disabled Trunk version checks were also enforced. No fetch/install was needed. No host HOME, Cargo config or credentials were passed into the build environment.
|
||||
|
||||
Read-only metadata observation: the unfiltered scratch resolver has238 package records; root tree joins give exactly214 normal and224 normal+build (199/209 third-party +15 local). Fourteen metadata-only extra packages total14,523,104 extracted bytes. measurement-resolution-extra-packages.json lists them for the packaging decision; no smaller vendor experiment/import was performed, and this does not clear additional source for landing.
|
||||
|
||||
Both requested scratch measurements are complete. No full-lock vendor source or runtime output entered the repository, no commit/push, no serving route or live change. The packaging choice still waits on Mos/Jason; M1–M14, restricted adapter, two-root reproducibility, CSP/browser and full package checks are unproved. Row310 stays in-progress, not in-review.
|
||||
|
||||
## 223-source measurement — sage-4008 and sage-4010
|
||||
|
||||
Mos mos-1574 requested the209+14 comparison before Jason chooses (Vikunja618). Scratch only: /mnt/storage/scratch/gyro-223-measure-mzbp0x23. The source includes exactly223 packages: owned reviewed209 plus14 checksum-verified registry archives from the existing cache. No other package, no fetch, no source adoption. Original vendor manifests are preserved for sizing.
|
||||
|
||||
| Pristine source set | Files incl checksums | Bytes incl checksums | Independent Git blob pack bytes |
|
||||
|---|---:|---:|---:|
|
||||
| Extra14 | 702 | 14523104 | 1720566 |
|
||||
| Total223 | 11201 | 145260334 | 26538894 |
|
||||
|
||||
Packs use the prior output-pack method: source files hash-object -w --no-filters into a NEW scratch bare repository, then sorted unique blob IDs to pack-objects --stdout --threads=4, at nice19. No gc, tree/commit objects or cross-version delta estimate. Pack/input digests and count-objects: measurement-223-source-packs.json and measurement-223-input-manifest.json. Sizes include all original package files (no vendor pruning), plus generated .cargo-checksum.json.
|
||||
|
||||
### Resolution and lock result
|
||||
|
||||
Unfiltered223 with the original pin lock: metadata --offline --locked exits101 on missing native-only cpufeatures (exact error in measurement-223-unfiltered-resolution.json). Existing packet filterVendorManifest was then applied mechanically to the scratch copy:31 manifests /155 individual false-target dependency table sections /133 dangling feature items, including3 additional changed manifests from the14. No new algorithm or hand edits. Original reviewed209 source remains untouched. Filtered metadata --offline --locked exits101: cannot update Cargo.lock because --locked prevents this. Original lock remains06b745e43c13df3df7f048fa6a1981625ce7a5fe4cd484bc6254d0913d865b0b.
|
||||
|
||||
sage-4010 separately authorized one cargo metadata --offline run WITHOUT --locked in another scratch source copy. It exited0 and generated a lock with226 entries against the original558: **332 removed,0 added,0 changed** when comparing name/version/source/checksum entry by entry. Pruned SHA2563401363e100783dc70c8f5ba09324947c0b6f8562f1ac1cbbc61a0497200c17f. Exact diff and generated lock are measurement-223-lock-diff.json and measurement-223-pruned-Cargo.lock.txt. The original source lock was not modified, and there were no manual lock edits.
|
||||
|
||||
CLEAR request gyro-0015 covers one release measurement under --locked/--frozen with that generated lock, nice19,4 jobs/cores, isolated netns, fresh HOME/CARGO_HOME/TMPDIR/target and one environment-fault retry. sage-4011 approves the description but withholds CLEAR until row327 landing gate finishes (roughly06:45–06:55Z). **No223 release build has run.** Packaging choice and row310 remain held. Shipping a pruned lock is itself a packaging change needing S0 reviewer and Jason's choice; this measurement does not adopt it.
|
||||
|
||||
### Fourteen-package source and notice inventory
|
||||
|
||||
Every source is registry+https://github.com/rust-lang/crates.io-index. Exact archive SHA256/size and notice-file SHA256/size: measurement-223-inputs.json; all present notice text: measurement-14-notices.txt. No election or license approval is asserted.
|
||||
|
||||
| Package | Version | Declared license expression | Notice/license files present |
|
||||
|---|---|---|---|
|
||||
| cursor-icon | 1.2.0 | MIT OR Apache-2.0 OR Zlib | LICENSE-APACHE, LICENSE-MIT, LICENSE-ZLIB |
|
||||
| dpi | 0.1.2 | Apache-2.0 AND MIT | LICENSE, LICENSE-LIBM-MIT |
|
||||
| futures-macro | 0.3.34 | MIT OR Apache-2.0 | LICENSE-APACHE, LICENSE-MIT |
|
||||
| glifo | 0.2.0 | Apache-2.0 OR MIT | LICENSE-APACHE, LICENSE-MIT |
|
||||
| ordered-float | 5.5.0 | MIT | LICENSE-MIT |
|
||||
| pin-project | 1.1.13 | Apache-2.0 OR MIT | LICENSE-APACHE, LICENSE-MIT |
|
||||
| pin-project-internal | 1.1.13 | Apache-2.0 OR MIT | LICENSE-APACHE, LICENSE-MIT |
|
||||
| smol_str | 0.2.2 | MIT OR Apache-2.0 | LICENSE-APACHE, LICENSE-MIT |
|
||||
| spirv | 0.4.0+sdk-1.4.341.0 | Apache-2.0 | **None present** |
|
||||
| termcolor | 1.4.1 | Unlicense OR MIT | COPYING, LICENSE-MIT, UNLICENSE |
|
||||
| tracing | 0.1.44 | MIT | LICENSE |
|
||||
| tracing-attributes | 0.1.31 | MIT | LICENSE |
|
||||
| tracing-core | 0.1.36 | MIT | LICENSE, src/spin/LICENSE |
|
||||
| winit | 0.30.13 | Apache-2.0 | LICENSE |
|
||||
|
||||
spirv has no license/notice file in its archive despite declaring Apache-2.0; this needs Gladstone's notice review before adoption. dpi declares Apache-2.0 AND MIT and includes LICENSE-LIBM-MIT; tracing-core includes an additional src/spin/LICENSE. Both are inventoried, not flattened to a single default text. No source code or binaries from any crate are included in this plain-text evidence commit.
|
||||
|
||||
Plain-text packet hygiene: trailing spaces in Node assertion transcripts normalized before commit (filter-dev-red.txt, cfg-red.txt, filter-red.txt); test outcomes and source/notice hashes unchanged.
|
||||
|
||||
## 223 release result and notice supplement — sage-4014
|
||||
|
||||
sage-4014 CLEAR supersedes the earlier slot hold. Build started06:31:53.099Z and finished06:38:13.773Z, exit0, **380.674036 seconds**. No retry used. Frozen+locked generated lock remains3401363e100783dc70c8f5ba09324947c0b6f8562f1ac1cbbc61a0497200c17f; original06b745e4... remains unchanged. Actual Trunk/Cargo/rustc/wasm-opt at nice19, CPUs12–15, Cargo jobs4/Binaryen cores4; fresh HOME/CARGO_HOME/TMPDIR/target; isolated netns with no external interface and offline/update-check-disabled tooling. No network access or fetch. Three existing engine dead-code warnings; no build error. Slot released to Sage for Bradford in gyro-0018 immediately after completion.
|
||||
|
||||
Frozen/offline cargo-tree preflight exactly matches S0:214 normal and224 normal+build records (199/209 third-party plus15 local), no added/missing package identities. measurement-223-build-preflight.json records this.
|
||||
|
||||
| Scratch baseline output | Bytes | SHA-256 |
|
||||
|---|---:|---|
|
||||
| index.html | 1604 | 28ce55d5c017d545aaac91bbd96f22e6ebd3b35af8d856315cdcb150a2a4a57d |
|
||||
| wordcraft-fa59e09a3f921e03.ico | 18378 | 53a23dcf66260f44d87d4d143d633395f3e967f391eda47e6e9cc3a52f820225 |
|
||||
| wordcraft-web-88f7089f25a3b338.js | 164941 | 866a1de6a33eff2ded8ae9588fd049aeacfc42557a3863ccd2107b3faf4d691e |
|
||||
| wordcraft-web-8e80c8f64c8671f7_bg.wasm | 43952335 | 0322beb9e58b9abeed6b6e05125879bfb3eccbebb05094e191df3542a74007ea |
|
||||
|
||||
Total output **44137258 bytes**. The WASM SHA256 **does not equal** the full-lock build c1c15050a9b394c21e7540aa57c9292b86d32bfea2476094a9976304dacf1de0. No reproducibility or functional/CSP equivalence is asserted. Source roots and packaging differ; this run does not isolate the reason for the hash difference. Full result, child priority observations and log: measurement-223-build.json, measurement-223-build-priority.jsonl, measurement-223-release.log.
|
||||
|
||||
### Gladstone supplemental review and notice response
|
||||
|
||||
gladstone-0026 (06:37:48Z) independently checked the14 original archive checksums and original manifest/source/license inventory:10 supplemental PASS /4 CONCERN. This is not adoption or candidate approval. Checked flags: winit has one cfg-alias build script; futures-macro, pin-project-internal and tracing-attributes are proc-macros; winit has native cfg paths and Worker/Blob source. None of14 appears in the measured normal/build target closure. Source-level Worker/native flags do not imply permission to select those paths or relax Q234.
|
||||
|
||||
The filename-only notice collector missed embedded W3C terms in cursor-icon/src/lib.rs and winit/src/keyboard.rs. After re-reading those actual headers, measurement-14-notices.txt now includes each complete embedded license, short notice, source document URI and attribution. measurement-14-notice-supplement.json records original source hashes/line spans and extracted text hashes. The added W3C form remains an explicit S0/license-adoption review gate, not silently folded into the root SPDX expressions.
|
||||
|
||||
dpi remains **Apache-2.0 AND MIT** for the full-source inventory: both root LICENSE and LICENSE-LIBM-MIT retained, plus README feature explanation and complete libm copyright header added to the notice packet. No Apache-only election. tracing-core retains root LICENSE and distinct src/spin/LICENSE. spirv has no text file in its archive; supplemental mapping explicitly supplies the standard Apache-2.0 text from the pinned WordCraft LICENSE-APACHE, following S0 M13 missing-file treatment, with its source pin/hash recorded. This is an evidence mapping, not a shipping approval.
|
||||
|
||||
measurement-14-binary-inputs.json now lists all four winit example PNGs: examples/data/cross.png159B, cross2.png129B, gradient.png229B, icon.png2950B, each with SHA256. No other non-UTF8/NUL payload among14. They remain scratch source inputs; no binary is in this evidence commit.
|
||||
|
||||
All runtime outputs and all223 crate sources remain scratch-only. Only plain-text results/notices/metadata are committed. Shipping the pruned lock, the14 additions, new W3C notice form and repository size still require S0 reviewer/owner choices. Row310 stays held for Vikunja618; restricted adapter, M1–M14, two-root reproducibility and CSP/browser acceptance remain unproved.
|
||||
|
||||
## Supplemental notice recheck — gladstone-0027
|
||||
|
||||
Gladstone rechecked the collection delta at9522d2356 against1716f5a22 on
|
||||
2026-10-24T06:44:42Z. All four prior notice-collection/mapping gaps now PASS as
|
||||
supplemental evidence: cursor-icon embedded W3C text/attribution, dpi full-source
|
||||
conjunction/copyrights, spirv explicit standard Apache-2.0 text mapping, and
|
||||
winit embedded W3C text plus four example PNG records. The earlier ten package
|
||||
source/notice PASS results stand. tracing-core root/spin license texts remain
|
||||
complete. No additional collection gap was found in this requested delta.
|
||||
|
||||
Reviewer independently verified original header/source hashes and extracted
|
||||
notice hashes, PNG/archive bytes, all12 incremental path hashes and changed-path
|
||||
set, UTF8/no-NUL boundary and diff whitespace check. Bundle SHA256
|
||||
4d8e2aac5de85d3f3145d5d3945924436d1c30bc043fb3e2d4391cd98b1adbde also matches
|
||||
this worktree's fresh hash check.
|
||||
|
||||
This recheck is **not adoption or candidate approval**. New W3C terms still need
|
||||
explicit M13/license/owner adoption review; dpi conjunction and spirv mapping
|
||||
must carry into any shipped M13 bundle; PNG classification and future selection
|
||||
of Worker/native paths remain explicit gates. Gladstone did not rerun or
|
||||
functionally/CSP-validate the WASM. Its differing hash, the pruned lock and
|
||||
packaging/size choice remain uncleared. S0 M1–M14, Jason's choice/Vikunja618 and
|
||||
the row310 hold remain in force. No further build, source, notice-text or runtime
|
||||
change was made to record this result.
|
||||
@@ -1,57 +0,0 @@
|
||||
# W2 offline packaging decision — 2026-10-24
|
||||
|
||||
Sage requested this consolidated stop report in sage-3983. No additional
|
||||
category has been applied. No release build, commit or push has run.
|
||||
|
||||
The original source/lock resolve packages outside the reviewed WASM target.
|
||||
The imported vendor tree contains exactly S0's 209 third-party identities:
|
||||
199 normal plus 10 build-only; the web root adds 15 local crates. Original
|
||||
source lock has 538 third-party records; S0 workspace metadata has 293 total
|
||||
resolved packages after target filtering. These are different sets.
|
||||
|
||||
Approved and exercised only in scratch:
|
||||
|
||||
- Local workspace: 15 members/default web root; remove 12 dev/native sections.
|
||||
Original included upstream bytes stay identical to the source pin. The local
|
||||
manifest deltas are currently in source-build.patch and BUILD.md.
|
||||
- Third-party target filtering: 28 manifests / 59 sections after adding explicit
|
||||
false custom cfgs fuzzing/loom/miri (sage-3983); 26/57 before that ruling.
|
||||
All other unknown cfgs remain unknown. target-filter-plan.json is the list.
|
||||
- Dangling feature lists: 103 removed items across 8 manifests (sage-3982),
|
||||
mechanically applied in scratch from dangling-features.json. Original vendor
|
||||
bytes/checksums stay intact; scratch checksum updates touch only Cargo.toml.
|
||||
- Release flags must refuse inherited RUSTFLAGS/CARGO_ENCODED_RUSTFLAGS/
|
||||
RUSTDOCFLAGS/CARGO_TARGET_*_RUSTFLAGS/CARGO_BUILD_RUSTFLAGS. Not yet implemented.
|
||||
- Gate narrowing from sage-3983: compare root-specific resolved package/selected
|
||||
feature closures before/after packaging, not complete workspace-unified S0
|
||||
feature text. Both package closures must match the 199/209 S0 sets. Still
|
||||
unproved: pristine 209-only vendor itself cannot resolve the broader lock.
|
||||
|
||||
The next refusal is an unresolved cfg category: encoding_rs 0.8.42 declares
|
||||
`simdutf8` 0.1.5 under cfg(any(x86_64,x86,aarch64,all(wasm32,simd128))).
|
||||
The default pinned wasm target has no simd128 feature, but the conservative
|
||||
filter retains unknown target_feature conditions rather than treating every
|
||||
potential target feature as false. No target_feature-based removal was made.
|
||||
The latest command/error is in offline-resolution.txt. Beyond that exact
|
||||
refusal, a static survey identifies 176 unconditional optional dependency
|
||||
entries (110 names across 82 manifests) absent from the 209; see
|
||||
unselected-dependency-resolution.json. These are not current errors and no
|
||||
such dependency was removed. They show why continued iterative reduction may
|
||||
require another category. This is a lower-bound survey, not a claim that
|
||||
removing all of those would make resolution succeed.
|
||||
|
||||
Decision requested: continue reducing target-feature and unselected optional dependency metadata,
|
||||
or adopt the full-lock vendor tree with a separately identified resolution-only
|
||||
inventory. I recommend the full-lock vendor approach: it preserves upstream
|
||||
manifests/features and makes before/after root-closure comparison possible
|
||||
without accumulating more manifest surgery. It adds source/notice review and
|
||||
size; no extra package should enter the compiled web closure. This is not
|
||||
permission to fetch/import extra sources. Sage decides that boundary.
|
||||
|
||||
Current tree sizes: upstream 582 files / 21,021,869 bytes; vendor 209 packages /
|
||||
10,499 files / 130,737,230 bytes; combined 151,759,099 bytes. Upstream exclusions
|
||||
are the authorized 30 icon/screenshot/macOS packaging paths, all enumerated in
|
||||
BUILD.md/PROVENANCE.json. No license/notice/copyright is omitted; no vendor file
|
||||
is dropped. Binary path/size inventory is binary-inputs.json (18 upstream and
|
||||
74 vendor non-text files). Source subset/integrity checks pass 3/3; build test
|
||||
is 1/2, with runtime-output check expected red because nothing is built yet.
|
||||
@@ -1,370 +0,0 @@
|
||||
[
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/Inter-Medium.ttf",
|
||||
"bytes": 417300
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/Inter-Regular.ttf",
|
||||
"bytes": 411640
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/Inter-SemiBold.ttf",
|
||||
"bytes": 419744
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/JetBrainsMono-Regular.ttf",
|
||||
"bytes": 270224
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/SourceSans3-Bold.ttf",
|
||||
"bytes": 428176
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/SourceSans3-It.ttf",
|
||||
"bytes": 315812
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/SourceSans3-Regular.ttf",
|
||||
"bytes": 431196
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/SourceSans3-Semibold.ttf",
|
||||
"bytes": 425904
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/SourceSerif4-Bold.ttf",
|
||||
"bytes": 271568
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/SourceSerif4-BoldIt.ttf",
|
||||
"bytes": 191832
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/SourceSerif4-It.ttf",
|
||||
"bytes": 187808
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/SourceSerif4-Regular.ttf",
|
||||
"bytes": 261868
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/fonts/SourceSerif4-Semibold.ttf",
|
||||
"bytes": 272088
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/assets/hyphenation/en-us.dic",
|
||||
"bytes": 432905
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/docs/brand/artcraft-logo-white.png",
|
||||
"bytes": 32161
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/docs/brand/artcraft-logo.png",
|
||||
"bytes": 31302
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/docs/brand/artcraft-mark-black.png",
|
||||
"bytes": 26793
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/upstream/docs/brand/artcraft-mark.png",
|
||||
"bytes": 24715
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/aes-0.9.3/tests/data/aes128.blb",
|
||||
"bytes": 27420
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/aes-0.9.3/tests/data/aes192.blb",
|
||||
"bytes": 41324
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/aes-0.9.3/tests/data/aes256.blb",
|
||||
"bytes": 49596
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/brotli-decompressor-5.0.3/src/bin/ipsum.brotli",
|
||||
"bytes": 1752
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/cfb-0.15.0/tests/infinite_loops_fuzzed/loop_in_alloc",
|
||||
"bytes": 14106
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/cfb-0.15.0/tests/infinite_loops_fuzzed/loop_in_chain",
|
||||
"bytes": 16959
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/cfb-0.15.0/tests/infinite_loops_fuzzed/loop_in_directory",
|
||||
"bytes": 13954
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/cfb-0.15.0/tests/infinite_loops_fuzzed/loop_in_minialloc",
|
||||
"bytes": 14336
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/cfb-0.15.0/tests/infinite_loops_fuzzed/loop_in_minichain",
|
||||
"bytes": 13992
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/cfb-0.15.0/tests/infinite_loops_fuzzed/loop_in_open_1",
|
||||
"bytes": 1049
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/cfb-0.15.0/tests/infinite_loops_fuzzed/loop_in_open_2",
|
||||
"bytes": 13830
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/cfb-0.15.0/tests/panics_fuzzed/alloc_panic",
|
||||
"bytes": 16928
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/cfb-0.15.0/tests/panics_fuzzed/minialloc_panic",
|
||||
"bytes": 16909
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/cipher-0.5.2/tests/data/dummy_stream_cipher.blb",
|
||||
"bytes": 84
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/digest-0.11.3/tests/data/fixed_hash_serialization.bin",
|
||||
"bytes": 16
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/eframe-0.36.2/data/icon.png",
|
||||
"bytes": 12052
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/epaint_default_fonts-0.36.2/fonts/Hack-Regular.ttf",
|
||||
"bytes": 309408
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/epaint_default_fonts-0.36.2/fonts/NotoEmoji-Regular.ttf",
|
||||
"bytes": 418804
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/epaint_default_fonts-0.36.2/fonts/Ubuntu-Light.ttf",
|
||||
"bytes": 361676
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/epaint_default_fonts-0.36.2/fonts/emoji-icon-font.ttf",
|
||||
"bytes": 324132
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/fdeflate-0.3.7/tests/input-chunking-sensitivity-example1.zz",
|
||||
"bytes": 207
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/fdeflate-0.3.7/tests/input-chunking-sensitivity-example2.zz",
|
||||
"bytes": 41
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/fdeflate-0.3.7/tests/input-chunking-sensitivity-example3.zz",
|
||||
"bytes": 52
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/flate2-1.1.10/examples/hello_world.txt.gz",
|
||||
"bytes": 33
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/flate2-1.1.10/tests/good-file.gz",
|
||||
"bytes": 6766
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/flate2-1.1.10/tests/multi.gz",
|
||||
"bytes": 53
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/hmac-0.13.0/tests/data/hmac_md5_rfc2104.blb",
|
||||
"bytes": 246
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/hmac-0.13.0/tests/data/hmac_sha1_wycheproof.blb",
|
||||
"bytes": 4877
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/hmac-0.13.0/tests/data/hmac_sha224_rfc4231.blb",
|
||||
"bytes": 804
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/hmac-0.13.0/tests/data/hmac_sha256_rfc4231.blb",
|
||||
"bytes": 832
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/hmac-0.13.0/tests/data/hmac_sha256_wycheproof.blb",
|
||||
"bytes": 6155
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/hmac-0.13.0/tests/data/hmac_sha384_rfc4231.blb",
|
||||
"bytes": 944
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/hmac-0.13.0/tests/data/hmac_sha384_wycheproof.blb",
|
||||
"bytes": 7859
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/hmac-0.13.0/tests/data/hmac_sha512_rfc4231.blb",
|
||||
"bytes": 1063
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/hmac-0.13.0/tests/data/hmac_sha512_wycheproof.blb",
|
||||
"bytes": 9650
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/hmac-0.13.0/tests/data/hmac_streebog256_gost.blb",
|
||||
"bytes": 85
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/hmac-0.13.0/tests/data/hmac_streebog512_gost.blb",
|
||||
"bytes": 118
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/krilla-0.8.2/icc/sGrey-v2-magic.icc",
|
||||
"bytes": 616
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/krilla-0.8.2/icc/sGrey-v4.icc",
|
||||
"bytes": 360
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/krilla-0.8.2/icc/sRGB-v2-magic.icc",
|
||||
"bytes": 736
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/krilla-0.8.2/icc/sRGB-v4.icc",
|
||||
"bytes": 480
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/pdf-writer-0.15.0/examples/bear-1280x720.jpg",
|
||||
"bytes": 67710
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/pdf-writer-0.15.0/examples/bear-1280x720.mp4",
|
||||
"bytes": 715963
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/pdf-writer-0.15.0/examples/rhino.png",
|
||||
"bytes": 215287
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/pdf-writer-0.15.0/examples/sRGB_v4.icc",
|
||||
"bytes": 60960
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/pdf-writer-0.15.0/examples/tiger-cmyk.jpg",
|
||||
"bytes": 945216
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha1-0.11.0/tests/data/sha1_kat.blb",
|
||||
"bytes": 235
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha1-0.11.0/tests/data/sha1_serialization.bin",
|
||||
"bytes": 92
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha2-0.11.0/tests/data/sha224_kat.blb",
|
||||
"bytes": 179
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha2-0.11.0/tests/data/sha224_serialization.bin",
|
||||
"bytes": 104
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha2-0.11.0/tests/data/sha256_kat.blb",
|
||||
"bytes": 191
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha2-0.11.0/tests/data/sha256_serialization.bin",
|
||||
"bytes": 104
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha2-0.11.0/tests/data/sha384_kat.blb",
|
||||
"bytes": 239
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha2-0.11.0/tests/data/sha384_serialization.bin",
|
||||
"bytes": 208
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha2-0.11.0/tests/data/sha512_224_kat.blb",
|
||||
"bytes": 179
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha2-0.11.0/tests/data/sha512_224_serialization.bin",
|
||||
"bytes": 208
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha2-0.11.0/tests/data/sha512_256_kat.blb",
|
||||
"bytes": 191
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha2-0.11.0/tests/data/sha512_256_serialization.bin",
|
||||
"bytes": 208
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha2-0.11.0/tests/data/sha512_kat.blb",
|
||||
"bytes": 290
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/sha2-0.11.0/tests/data/sha512_serialization.bin",
|
||||
"bytes": 208
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/tiff-0.11.3/tests/decodedata-rgb-3c-8b.tiff",
|
||||
"bytes": 30180
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/ttf-parser-0.25.1/examples/wasm/TTC.ttc",
|
||||
"bytes": 2608
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/ttf-parser-0.25.1/tests/fonts/bitmap.otb",
|
||||
"bytes": 2072
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/ttf-parser-0.25.1/tests/fonts/colr_1.ttf",
|
||||
"bytes": 21568
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/ttf-parser-0.25.1/tests/fonts/colr_1_variable.ttf",
|
||||
"bytes": 53096
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/ttf-parser-0.25.1/tests/fonts/demo.ttf",
|
||||
"bytes": 400
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/unicode-ident-1.0.26/tests/fst/xid_continue.fst",
|
||||
"bytes": 78779
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/unicode-ident-1.0.26/tests/fst/xid_start.fst",
|
||||
"bytes": 69927
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/vello_common-0.1.0/assets/probe.png",
|
||||
"bytes": 877
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/vello_common-0.1.0/assets/probe.rgba",
|
||||
"bytes": 10404
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/vello_common-0.2.0/assets/probe.png",
|
||||
"bytes": 877
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/vello_common-0.2.0/assets/probe.rgba",
|
||||
"bytes": 10404
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/zlib-rs-0.6.8/src/deflate/test-data/inflate_buf_error.dat",
|
||||
"bytes": 67008
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/third_party/wordcraft/cargo-vendor/zlib-rs-0.6.8/src/deflate/test-data/paper-100k.pdf",
|
||||
"bytes": 102400
|
||||
}
|
||||
]
|
||||
@@ -1,27 +0,0 @@
|
||||
✔ release build refuses a missing or mismatched pinned tool before compilation (4.631422ms)
|
||||
✖ shipped runtime is self-contained and matches every output receipt (0.349349ms)
|
||||
ℹ tests 2
|
||||
ℹ suites 0
|
||||
ℹ pass 1
|
||||
ℹ fail 1
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 48.123956
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/webui/tests/wordcraft-build.test.mjs:14:1
|
||||
✖ shipped runtime is self-contained and matches every output receipt (0.349349ms)
|
||||
Error: ENOENT: no such file or directory, open '/home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/wordcraft/BUILD.json'
|
||||
at readFileSync (node:fs:621:20)
|
||||
at readJSON (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/wordcraft/build.mjs:9:37)
|
||||
at verifyOutputs (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/wordcraft/build.mjs:61:19)
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/tests/wordcraft-build.test.mjs:17:18)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||
errno: -2,
|
||||
code: 'ENOENT',
|
||||
syscall: 'open',
|
||||
path: '/home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/wordcraft/BUILD.json'
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
✖ release build refuses a missing or mismatched pinned tool before compilation (0.932948ms)
|
||||
✖ shipped runtime is self-contained and matches every output receipt (0.1963ms)
|
||||
ℹ tests 2
|
||||
ℹ suites 0
|
||||
ℹ pass 0
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 48.311391
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/webui/tests/wordcraft-build.test.mjs:7:1
|
||||
✖ release build refuses a missing or mismatched pinned tool before compilation (0.932948ms)
|
||||
AssertionError [ERR_ASSERTION]: owned builder must exist
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/tests/wordcraft-build.test.mjs:8:10)
|
||||
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||
at Test.run (node:internal/test_runner/test:1402:25)
|
||||
at Test.start (node:internal/test_runner/test:1262:17)
|
||||
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: false,
|
||||
expected: true,
|
||||
operator: '==',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/webui/tests/wordcraft-build.test.mjs:14:1
|
||||
✖ shipped runtime is self-contained and matches every output receipt (0.1963ms)
|
||||
AssertionError [ERR_ASSERTION]: owned builder must exist
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/tests/wordcraft-build.test.mjs:15:10)
|
||||
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||
at Test.run (node:internal/test_runner/test:1402:25)
|
||||
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
|
||||
at Test.postRun (node:internal/test_runner/test:1542:19)
|
||||
at Test.run (node:internal/test_runner/test:1467:12)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: false,
|
||||
expected: true,
|
||||
operator: '==',
|
||||
diff: 'simple'
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,10 +0,0 @@
|
||||
✔ release cfg evaluation follows pinned rustc and refuses inherited flags (7.782219ms)
|
||||
✔ pinned compiler reproduces the recorded wasm target cfg (10.432502ms)
|
||||
ℹ tests 2
|
||||
ℹ suites 0
|
||||
ℹ pass 2
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 59.893168
|
||||
@@ -1,38 +0,0 @@
|
||||
✖ release cfg evaluation follows pinned rustc and refuses inherited flags (9.116481ms)
|
||||
✖ pinned compiler reproduces the recorded wasm target cfg (0.413075ms)
|
||||
ℹ tests 2
|
||||
ℹ suites 0
|
||||
ℹ pass 0
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 62.764015
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/webui/tests/wordcraft-build.test.mjs:25:1
|
||||
✖ release cfg evaluation follows pinned rustc and refuses inherited flags (9.116481ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||
+ actual - expected
|
||||
|
||||
+ 'undefined'
|
||||
- 'function'
|
||||
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/tests/wordcraft-build.test.mjs:27:10)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 'undefined',
|
||||
expected: 'function',
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/webui/tests/wordcraft-build.test.mjs:39:1
|
||||
✖ pinned compiler reproduces the recorded wasm target cfg (0.413075ms)
|
||||
TypeError: releaseEnvironment is not a function
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/tests/wordcraft-build.test.mjs:43:121)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
|
||||
@@ -1,517 +0,0 @@
|
||||
[
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "accesskit",
|
||||
"edge": "egui-winit/accesskit"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "android-game-activity",
|
||||
"edge": "egui-winit/android-game-activity"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "android-native-activity",
|
||||
"edge": "egui-winit/android-native-activity"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "default",
|
||||
"edge": "winit/default"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "glow",
|
||||
"edge": "dep:glutin-winit"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "glow",
|
||||
"edge": "dep:glutin"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "links",
|
||||
"edge": "egui-winit/links"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "persistence",
|
||||
"edge": "egui-winit/serde"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "wayland",
|
||||
"edge": "egui-winit/wayland"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "wayland",
|
||||
"edge": "glutin?/wayland"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "wayland",
|
||||
"edge": "glutin-winit?/wayland"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "wgpu_no_default_features",
|
||||
"edge": "dep:pollster"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "x11",
|
||||
"edge": "egui-winit/x11"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "x11",
|
||||
"edge": "glutin?/x11"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "x11",
|
||||
"edge": "glutin?/glx"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "x11",
|
||||
"edge": "glutin-winit?/x11"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "x11",
|
||||
"edge": "glutin-winit?/glx"
|
||||
},
|
||||
{
|
||||
"crate": "encoding_rs-0.8.42",
|
||||
"feature": "std",
|
||||
"edge": "dep:multiversion"
|
||||
},
|
||||
{
|
||||
"crate": "hashbrown-0.17.1",
|
||||
"feature": "serde",
|
||||
"edge": "dep:serde"
|
||||
},
|
||||
{
|
||||
"crate": "indexmap-2.14.2",
|
||||
"feature": "serde",
|
||||
"edge": "dep:serde"
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"feature": "common-controls-v6",
|
||||
"edge": "windows-sys/Win32_UI_Controls"
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"feature": "gtk3",
|
||||
"edge": "gtk-sys"
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"feature": "gtk3",
|
||||
"edge": "glib-sys"
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"feature": "gtk3",
|
||||
"edge": "gobject-sys"
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"feature": "wayland",
|
||||
"edge": "wayland-backend"
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"feature": "wayland",
|
||||
"edge": "wayland-client"
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"feature": "wayland",
|
||||
"edge": "wayland-protocols"
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"feature": "xdg-portal",
|
||||
"edge": "pollster"
|
||||
},
|
||||
{
|
||||
"crate": "uuid-1.27.0",
|
||||
"feature": "fast-rng",
|
||||
"edge": "dep:rand"
|
||||
},
|
||||
{
|
||||
"crate": "uuid-1.27.0",
|
||||
"feature": "rng",
|
||||
"edge": "dep:getrandom"
|
||||
},
|
||||
{
|
||||
"crate": "uuid-1.27.0",
|
||||
"feature": "rng-getrandom",
|
||||
"edge": "dep:getrandom"
|
||||
},
|
||||
{
|
||||
"crate": "uuid-1.27.0",
|
||||
"feature": "rng-rand",
|
||||
"edge": "dep:rand"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "angle",
|
||||
"edge": "wgpu-core-deps-apple/angle"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "drm",
|
||||
"edge": "wgpu-core-deps-windows-linux-android/drm"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "wgpu-core-deps-windows-linux-android/dx12"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "wgpu-core-deps-windows-linux-android/gles"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "wgpu-core-deps-emscripten/gles"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "wgpu-core-deps-apple/metal"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "renderdoc",
|
||||
"edge": "wgpu-core-deps-windows-linux-android/renderdoc"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "wgpu-core-deps-windows-linux-android/vulkan"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "vulkan-portability",
|
||||
"edge": "wgpu-core-deps-apple/vulkan-portability"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "dep:bit-set"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "dep:gpu-allocator"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "dep:libloading"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "dep:once_cell"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "dep:range-alloc"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "dep:windows-core"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "gpu-allocator/d3d12"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "once_cell/std"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Devices_DeviceAndDriverInstallation"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Devices_Display"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_Direct3D_Dxc"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_Direct3D_Fxc"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_Direct3D"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_Direct3D12"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_DirectComposition"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_Dxgi_Common"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_Gdi"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Security"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_System_Diagnostics_Debug"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_System_Kernel"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_System_Performance"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_System_Threading"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_UI_WindowsAndMessaging"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:glutin_wgl_sys"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:khronos-egl"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:libloading"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:ndk-sys"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:objc2"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:wayland-sys"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:windows-result"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "windows-result/std"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "windows/Win32_Graphics_Gdi"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "windows/Win32_Graphics_OpenGL"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "windows/Win32_System_LibraryLoader"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "windows/Win32_UI_WindowsAndMessaging"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:block2"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:libloading"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:objc2"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:objc2-core-foundation"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:objc2-core-graphics"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:objc2-foundation"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:objc2-metal"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:objc2-quartz-core"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:smallvec"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:raw-window-metal"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "renderdoc",
|
||||
"edge": "dep:libloading"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "renderdoc",
|
||||
"edge": "dep:renderdoc-sys"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "static-dxc",
|
||||
"edge": "dep:mach-dxcompiler-rs"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:android_system_properties"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:ash"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:libc"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:libloading"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:raw-window-metal"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:smallvec"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:windows"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "gpu-allocator/vulkan"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "windows/Win32"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "windows/Win32_Devices_Display"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "windows/Win32_Foundation"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "windows/Win32_Graphics_Dxgi"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "windows/Win32_Graphics_Dxgi_Common"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "windows/Win32_Graphics_Gdi"
|
||||
}
|
||||
]
|
||||
@@ -1,28 +0,0 @@
|
||||
✖ a dev dependency cannot preserve a removed optional feature dependency (9.223259ms)
|
||||
ℹ tests 1
|
||||
ℹ suites 0
|
||||
ℹ pass 0
|
||||
ℹ fail 1
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 55.624704
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/webui/tests/wordcraft-build.test.mjs:61:1
|
||||
✖ a dev dependency cannot preserve a removed optional feature dependency (9.223259ms)
|
||||
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /serde = \[\]/. Input:
|
||||
|
||||
'[features]\nserde = ["dep:serde"]\n[dev-dependencies.serde]\nversion = "1"\n'
|
||||
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/tests/wordcraft-build.test.mjs:65:10)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: '[features]\nserde = ["dep:serde"]\n[dev-dependencies.serde]\nversion = "1"\n',
|
||||
expected: /serde = \[\]/,
|
||||
operator: 'match',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
✔ release build refuses a missing or mismatched pinned tool before compilation (5.38916ms)
|
||||
✔ release cfg evaluation follows pinned rustc and refuses inherited flags (0.546102ms)
|
||||
✔ pinned compiler reproduces the recorded wasm target cfg (11.861748ms)
|
||||
✔ vendor filtering removes only false target sections and their dangling feature edges (1.475556ms)
|
||||
✔ a dev dependency cannot preserve a removed optional feature dependency (0.239783ms)
|
||||
✔ pristine vendor deterministically reproduces the recorded filter inventory and patch (49.412038ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 6
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 117.789074
|
||||
@@ -1,25 +0,0 @@
|
||||
✖ pristine vendor deterministically reproduces the recorded filter inventory and patch (77.792167ms)
|
||||
ℹ tests 1
|
||||
ℹ suites 0
|
||||
ℹ pass 0
|
||||
ℹ fail 1
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 126.569143
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/webui/tests/wordcraft-build.test.mjs:69:1
|
||||
✖ pristine vendor deterministically reproduces the recorded filter inventory and patch (77.792167ms)
|
||||
AssertionError [ERR_ASSERTION]: patch must contain exactly the mechanically reproduced vendor changes
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/tests/wordcraft-build.test.mjs:99:12)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: false,
|
||||
expected: true,
|
||||
operator: '==',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
✖ vendor filtering removes only false target sections and their dangling feature edges (7.574024ms)
|
||||
ℹ tests 1
|
||||
ℹ suites 0
|
||||
ℹ pass 0
|
||||
ℹ fail 1
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 49.047592
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/webui/tests/wordcraft-build.test.mjs:48:1
|
||||
✖ vendor filtering removes only false target sections and their dangling feature edges (7.574024ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||
+ actual - expected
|
||||
|
||||
+ 'undefined'
|
||||
- 'function'
|
||||
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/tests/wordcraft-build.test.mjs:50:10)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 'undefined',
|
||||
expected: 'function',
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -1,52 +0,0 @@
|
||||
{
|
||||
"scratchRoot": "/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0",
|
||||
"startUTC": "2026-10-24T06:02:17.598071+00:00",
|
||||
"endUTC": "2026-10-24T06:08:46.355786+00:00",
|
||||
"wallSeconds": 388.757577938959,
|
||||
"exitCode": 0,
|
||||
"network": "new user/network namespace for metadata, tree and release commands; only loopback exists, no connected interface",
|
||||
"nice": 19,
|
||||
"cargoJobs": 4,
|
||||
"flags": "no inherited Rust flag variables; no configured Rust flags; isolated CARGO_HOME and HOME",
|
||||
"source": "owned pinned upstream copy, approved 15-member local workspace reduction, original vendor manifests; pinned icon restored only in scratch for original Trunk HTML; baseline measurement, NOT restricted runtime/CSP evidence",
|
||||
"command": [
|
||||
"unshare",
|
||||
"--user",
|
||||
"--map-root-user",
|
||||
"--net",
|
||||
"nice",
|
||||
"-n",
|
||||
"19",
|
||||
"/mnt/storage/scratch/louie-wordcraft-toolchain/trunk/bin/trunk",
|
||||
"build",
|
||||
"--release",
|
||||
"--locked",
|
||||
"--offline",
|
||||
"--skip-version-check"
|
||||
],
|
||||
"outputs": {
|
||||
".trunk-lock": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"index.html": {
|
||||
"bytes": 1604,
|
||||
"sha256": "299b76f4004bbc65204d561cc381b3fbb249d10069eaa50e88c7fba3b6c63cb8"
|
||||
},
|
||||
"wordcraft-fa59e09a3f921e03.ico": {
|
||||
"bytes": 18378,
|
||||
"sha256": "53a23dcf66260f44d87d4d143d633395f3e967f391eda47e6e9cc3a52f820225"
|
||||
},
|
||||
"wordcraft-web-832240fdc6ce872b_bg.wasm": {
|
||||
"bytes": 43957877,
|
||||
"sha256": "c1c15050a9b394c21e7540aa57c9292b86d32bfea2476094a9976304dacf1de0"
|
||||
},
|
||||
"wordcraft-web-88f7089f25a3b338.js": {
|
||||
"bytes": 164941,
|
||||
"sha256": "866a1de6a33eff2ded8ae9588fd049aeacfc42557a3863ccd2107b3faf4d691e"
|
||||
}
|
||||
},
|
||||
"validation": "timing invalid for wholly nice19 run: effective initial nice15; corrected to19 during compilation",
|
||||
"initialEffectiveNice": 15,
|
||||
"priorityCorrectionReceipt": "measurement-priority-correction.json"
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
{
|
||||
"scratchRoot": "/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0",
|
||||
"startUTC": "2026-10-24T06:09:38.408737+00:00",
|
||||
"endUTC": "2026-10-24T06:16:16.273643+00:00",
|
||||
"wallSeconds": 397.86480517999735,
|
||||
"exitCode": 0,
|
||||
"attempt": "one allowed environment retry after initial effective nice15 was detected",
|
||||
"cpuAffinity": [
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15
|
||||
],
|
||||
"cargoJobs": 4,
|
||||
"binaryenCores": 4,
|
||||
"targetCache": "fresh target-retry directory",
|
||||
"network": "enforced isolated user/network namespace, no external interface; Cargo/Trunk offline; Trunk update checks disabled",
|
||||
"source": "baseline owned source copy plus approved local workspace reduction; vendor manifests unfiltered. Not a restricted editor/CSP gate result.",
|
||||
"outputs": {
|
||||
"index.html": {
|
||||
"bytes": 1604,
|
||||
"sha256": "299b76f4004bbc65204d561cc381b3fbb249d10069eaa50e88c7fba3b6c63cb8"
|
||||
},
|
||||
"wordcraft-fa59e09a3f921e03.ico": {
|
||||
"bytes": 18378,
|
||||
"sha256": "53a23dcf66260f44d87d4d143d633395f3e967f391eda47e6e9cc3a52f820225"
|
||||
},
|
||||
"wordcraft-web-832240fdc6ce872b_bg.wasm": {
|
||||
"bytes": 43957877,
|
||||
"sha256": "c1c15050a9b394c21e7540aa57c9292b86d32bfea2476094a9976304dacf1de0"
|
||||
},
|
||||
"wordcraft-web-88f7089f25a3b338.js": {
|
||||
"bytes": 164941,
|
||||
"sha256": "866a1de6a33eff2ded8ae9588fd049aeacfc42557a3863ccd2107b3faf4d691e"
|
||||
}
|
||||
},
|
||||
"launcherFinalNice": -4,
|
||||
"buildChildNice": 19,
|
||||
"priorityEvidence": "measurement-retry-priority.jsonl: Trunk/Cargo/rustc and wasm-opt all observed at19, CPUs12-15; launcher separately reprioritized by harness"
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
[
|
||||
{
|
||||
"name": "winit",
|
||||
"version": "0.30.13",
|
||||
"archivePath": "examples/data/cross.png",
|
||||
"bytes": 159,
|
||||
"sha256": "4db9fec917c6cb3196872073e4168d28c4f3e0ad04c5c41865407088abf279e4",
|
||||
"scope": "example data only; not a committed evidence binary or runtime approval"
|
||||
},
|
||||
{
|
||||
"name": "winit",
|
||||
"version": "0.30.13",
|
||||
"archivePath": "examples/data/cross2.png",
|
||||
"bytes": 129,
|
||||
"sha256": "fbeeb71e5d6f24898017739d088acefb522d85108a6f1f96183e60e6b4b1f6e6",
|
||||
"scope": "example data only; not a committed evidence binary or runtime approval"
|
||||
},
|
||||
{
|
||||
"name": "winit",
|
||||
"version": "0.30.13",
|
||||
"archivePath": "examples/data/gradient.png",
|
||||
"bytes": 229,
|
||||
"sha256": "8f80c21867a59959b84f9ced19ff3aba7bf4e1cf0e2c24dea2c8465c8705c7ca",
|
||||
"scope": "example data only; not a committed evidence binary or runtime approval"
|
||||
},
|
||||
{
|
||||
"name": "winit",
|
||||
"version": "0.30.13",
|
||||
"archivePath": "examples/data/icon.png",
|
||||
"bytes": 2950,
|
||||
"sha256": "4340d72fb8b5d95a10e3b2c02230f1060dff0950a137bd1d830c63dbc020dd45",
|
||||
"scope": "example data only; not a committed evidence binary or runtime approval"
|
||||
}
|
||||
]
|
||||
@@ -1,46 +0,0 @@
|
||||
{
|
||||
"review": "gladstone-0026",
|
||||
"scope": "supplemental inventory corrections, no adoption/implementation approval",
|
||||
"records": [
|
||||
{
|
||||
"crate": "cursor-icon-1.2.0",
|
||||
"sourcePath": "src/lib.rs",
|
||||
"sourceSha256": "2f649887b91d2ea059fcf64ef8512a16c0bde72e38ff0aeb14df0f119a9885cb",
|
||||
"startLine": 34,
|
||||
"endLine": 102,
|
||||
"noticeTextSha256": "c54d5155b68d1bd2d3ba1f6b10ee15e3c08696461c3351aef1b71d6cf22cef5e",
|
||||
"terms": "embedded W3C full license, short notice, document URI and attribution; additional to root SPDX expression",
|
||||
"adoption": "pending S0/M13 review and owner packaging/license choice; not a policy election"
|
||||
},
|
||||
{
|
||||
"crate": "winit-0.30.13",
|
||||
"sourcePath": "src/keyboard.rs",
|
||||
"sourceSha256": "fb1400750fb0c6d376415e642c837e0e8ded95f55ba03a8889d336d180620394",
|
||||
"startLine": 3,
|
||||
"endLine": 70,
|
||||
"noticeTextSha256": "42fe72ba50223d1042803270ecaa191072fe2c41b0f2bd1d7b1a0e19a7bbba7b",
|
||||
"terms": "embedded W3C full license, short notice, document URI and attribution; additional to root SPDX expression",
|
||||
"adoption": "pending S0/M13 review and owner packaging/license choice; not a policy election"
|
||||
},
|
||||
{
|
||||
"crate": "dpi-0.1.2",
|
||||
"sourcePaths": [
|
||||
"README.md",
|
||||
"src/libm.rs"
|
||||
],
|
||||
"licenseExpression": "Apache-2.0 AND MIT",
|
||||
"noticeTextSha256": "a3432b00bcf66d370747a494ff8038788019340aaa8cb93c74d3b77d6c1ca025",
|
||||
"retention": "LICENSE and LICENSE-LIBM-MIT remain in main notice bundle; README explanation and libm copyrights appended; no flattening/election"
|
||||
},
|
||||
{
|
||||
"crate": "spirv-0.4.0+sdk-1.4.341.0",
|
||||
"declared": "Apache-2.0",
|
||||
"archiveNoticeFiles": [],
|
||||
"mapping": "Apache-2.0 standard text, S0 M13 missing-file treatment",
|
||||
"textSource": "WordCraft e05b7fe86f3b85454000dffc321de638d7009817:LICENSE-APACHE",
|
||||
"textSha256": "0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594",
|
||||
"adoption": "explicit supplemental evidence mapping only; no shipping adoption or cleared notice verdict asserted"
|
||||
}
|
||||
],
|
||||
"bundleSha256": "4d8e2aac5de85d3f3145d5d3945924436d1c30bc043fb3e2d4391cd98b1adbde"
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,44 +0,0 @@
|
||||
from pathlib import Path
|
||||
import os,subprocess,json,datetime,time,hashlib,re
|
||||
root=Path('/mnt/storage/scratch/gyro-223-measure-root.txt').read_text().strip();root=Path(root);work=Path('agents/gyro/work/queue-310');src=root/'pruned-source'
|
||||
assert hashlib.sha256((src/'Cargo.lock').read_bytes()).hexdigest()=='3401363e100783dc70c8f5ba09324947c0b6f8562f1ac1cbbc61a0497200c17f'
|
||||
for k in os.environ:
|
||||
if k in ['RUSTFLAGS','RUSTDOCFLAGS','CARGO_ENCODED_RUSTFLAGS','CARGO_BUILD_RUSTFLAGS'] or (k.startswith('CARGO_TARGET_') and k.endswith('_RUSTFLAGS')):raise RuntimeError('inherited flags refused: '+k)
|
||||
for name in ['build-home','build-cargo-home','build-target']:(root/name).mkdir()
|
||||
rust='/mnt/storage/scratch/louie-wordcraft-toolchain/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin'
|
||||
trunk='/mnt/storage/scratch/louie-wordcraft-toolchain/trunk/bin/trunk'
|
||||
env={'PATH':rust+':'+str(root/'cache/trunk/wasm-bindgen-0.2.129')+':'+str(root/'cache/trunk/wasm-opt-version_131/bin')+':/usr/bin:/bin','HOME':str(root/'build-home'),'CARGO_HOME':str(root/'build-cargo-home'),'XDG_CACHE_HOME':str(root/'cache'),'CARGO_NET_OFFLINE':'true','CARGO_BUILD_JOBS':'4','BINARYEN_CORES':'4','RUSTC':rust+'/rustc','CARGO_TARGET_DIR':str(root/'build-target'),'LC_ALL':'C','TZ':'UTC','TMPDIR':os.environ['TMPDIR'],'TRUNK_OFFLINE':'true','TRUNK_SKIP_VERSION_CHECK':'true','TRUNK_TOOLS_WASM_BINDGEN':'0.2.129','TRUNK_TOOLS_WASM_OPT':'version_131','SOURCE_DATE_EPOCH':'1792587600'}
|
||||
cpus=sorted(os.sched_getaffinity(0))[-4:]
|
||||
def limit():os.setpriority(os.PRIO_PROCESS,0,19);os.sched_setaffinity(0,cpus)
|
||||
base=['unshare','--user','--map-root-user','--net']
|
||||
expected=json.load(open(work/'measurement-root-closure.json'))['packages'];closures={}
|
||||
for edge in ['normal','normal,build']:
|
||||
cmd=base+[rust+'/cargo','tree','--offline','--frozen','--locked','-p','wordcraft-web','--target','wasm32-unknown-unknown','--edges',edge,'--prefix','none','--format','{p}']
|
||||
p=subprocess.run(cmd,cwd=src,env=env,preexec_fn=limit,capture_output=True,text=True)
|
||||
(root/('build-tree-'+edge.replace(',','-')+'.txt')).write_text(p.stdout+p.stderr)
|
||||
actual=set()
|
||||
for line in p.stdout.splitlines():
|
||||
m=re.match(r'(\S+) v(\S+)',line)
|
||||
if m:actual.add((m[1],m[2]))
|
||||
keys={(p['name'],p['version']) for p in expected if edge=='normal,build' or p['edge']=='normal'}
|
||||
closures[edge]={'exit':p.returncode,'count':len(actual),'added':sorted(actual-keys),'missing':sorted(keys-actual)}
|
||||
if p.returncode or actual!=keys:
|
||||
(work/'measurement-223-build-preflight.json').write_text(json.dumps(closures,indent=2)+'\n');raise RuntimeError('closure check failed: '+edge)
|
||||
(work/'measurement-223-build-preflight.json').write_text(json.dumps(closures,indent=2)+'\n')
|
||||
start=datetime.datetime.now(datetime.timezone.utc).isoformat();t=time.monotonic();cmd=base+[trunk,'build','--release','--frozen','--locked','--offline','--skip-version-check']
|
||||
with (root/'release-build.log').open('w') as log:
|
||||
child=subprocess.Popen(cmd,cwd=src/'apps/wordcraft-web',env=env,preexec_fn=limit,stdout=log,stderr=subprocess.STDOUT)
|
||||
priority={'pid':child.pid,'nice':os.getpriority(os.PRIO_PROCESS,child.pid),'cpus':sorted(os.sched_getaffinity(child.pid))}
|
||||
assert priority['nice']==19 and len(priority['cpus'])==4
|
||||
(work/'measurement-223-build-start.json').write_text(json.dumps({'startUTC':start,'command':cmd,'priority':priority,'network':'new isolated user/network namespace; no external interface; offline/frozen/locked Cargo/Trunk'},indent=2)+'\n')
|
||||
print('release started '+start+' '+str(priority),flush=True)
|
||||
code=child.wait()
|
||||
seconds=time.monotonic()-t;end=datetime.datetime.now(datetime.timezone.utc).isoformat()
|
||||
result={'authority':'sage-4014 CLEAR; scratch measurement only','scratchRoot':str(root),'startUTC':start,'endUTC':end,'exitCode':code,'wallSeconds':seconds,'nice':19,'cpuAffinity':cpus,'cargoJobs':4,'binaryenCores':4,'freshDirectories':['HOME','CARGO_HOME','TMPDIR','target'],'lockSha256':hashlib.sha256((src/'Cargo.lock').read_bytes()).hexdigest(),'network':'isolated user/network namespace, no external interface; offline/frozen/locked and no Trunk update checks','source':'baseline measurement with existing packaging filter and cargo-generated pruned lock; not restricted adapter or CSP acceptance','outputs':{}}
|
||||
if code==0:
|
||||
for f in sorted((src/'dist/web').rglob('*')):
|
||||
if f.is_file() and f.name!='.trunk-lock':result['outputs'][f.name]={'bytes':f.stat().st_size,'sha256':hashlib.sha256(f.read_bytes()).hexdigest()}
|
||||
old=json.load(open(work/'full-lock-release-measurement.json'));oldwasm=next(v['sha256'] for k,v in old['outputs'].items() if k.endswith('.wasm'));newwasm=next(v['sha256'] for k,v in result['outputs'].items() if k.endswith('.wasm'))
|
||||
result.update({'fullLockWasmSha256':oldwasm,'wasmSha256EqualsFullLock':oldwasm==newwasm})
|
||||
(root/'release-measurement.json').write_text(json.dumps(result,indent=2)+'\n');(work/'measurement-223-build.json').write_text(json.dumps(result,indent=2)+'\n')
|
||||
print(json.dumps(result,indent=2),flush=True)
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"normal": {
|
||||
"exit": 0,
|
||||
"count": 214,
|
||||
"added": [],
|
||||
"missing": []
|
||||
},
|
||||
"normal,build": {
|
||||
"exit": 0,
|
||||
"count": 224,
|
||||
"added": [],
|
||||
"missing": []
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
{"atUTC": "2026-10-24T06:34:09.192942+00:00", "processes": [{"pid": 2180936, "name": "trunk", "nice": 19, "cpus": [12, 13, 14, 15]}, {"pid": 2180947, "name": "cargo", "nice": 19, "cpus": [12, 13, 14, 15]}, {"pid": 2198782, "name": "rustc", "nice": 19, "cpus": [12, 13, 14, 15]}]}
|
||||
{"atUTC": "2026-10-24T06:36:42.030208+00:00", "processes": [{"pid": 2214200, "name": "wasm-opt", "nice": 19, "cpus": [12, 13, 14, 15], "threads": 5}]}
|
||||
@@ -1,27 +0,0 @@
|
||||
{
|
||||
"startUTC": "2026-10-24T06:31:53.099322+00:00",
|
||||
"command": [
|
||||
"unshare",
|
||||
"--user",
|
||||
"--map-root-user",
|
||||
"--net",
|
||||
"/mnt/storage/scratch/louie-wordcraft-toolchain/trunk/bin/trunk",
|
||||
"build",
|
||||
"--release",
|
||||
"--frozen",
|
||||
"--locked",
|
||||
"--offline",
|
||||
"--skip-version-check"
|
||||
],
|
||||
"priority": {
|
||||
"pid": 2180936,
|
||||
"nice": 19,
|
||||
"cpus": [
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15
|
||||
]
|
||||
},
|
||||
"network": "new isolated user/network namespace; no external interface; offline/frozen/locked Cargo/Trunk"
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
{
|
||||
"authority": "sage-4014 CLEAR; scratch measurement only",
|
||||
"scratchRoot": "/mnt/storage/scratch/gyro-223-measure-mzbp0x23",
|
||||
"startUTC": "2026-10-24T06:31:53.099322+00:00",
|
||||
"endUTC": "2026-10-24T06:38:13.773390+00:00",
|
||||
"exitCode": 0,
|
||||
"wallSeconds": 380.6740357100498,
|
||||
"nice": 19,
|
||||
"cpuAffinity": [
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15
|
||||
],
|
||||
"cargoJobs": 4,
|
||||
"binaryenCores": 4,
|
||||
"freshDirectories": [
|
||||
"HOME",
|
||||
"CARGO_HOME",
|
||||
"TMPDIR",
|
||||
"target"
|
||||
],
|
||||
"lockSha256": "3401363e100783dc70c8f5ba09324947c0b6f8562f1ac1cbbc61a0497200c17f",
|
||||
"network": "isolated user/network namespace, no external interface; offline/frozen/locked and no Trunk update checks",
|
||||
"source": "baseline measurement with existing packaging filter and cargo-generated pruned lock; not restricted adapter or CSP acceptance",
|
||||
"outputs": {
|
||||
"index.html": {
|
||||
"bytes": 1604,
|
||||
"sha256": "28ce55d5c017d545aaac91bbd96f22e6ebd3b35af8d856315cdcb150a2a4a57d"
|
||||
},
|
||||
"wordcraft-fa59e09a3f921e03.ico": {
|
||||
"bytes": 18378,
|
||||
"sha256": "53a23dcf66260f44d87d4d143d633395f3e967f391eda47e6e9cc3a52f820225"
|
||||
},
|
||||
"wordcraft-web-88f7089f25a3b338.js": {
|
||||
"bytes": 164941,
|
||||
"sha256": "866a1de6a33eff2ded8ae9588fd049aeacfc42557a3863ccd2107b3faf4d691e"
|
||||
},
|
||||
"wordcraft-web-8e80c8f64c8671f7_bg.wasm": {
|
||||
"bytes": 43952335,
|
||||
"sha256": "0322beb9e58b9abeed6b6e05125879bfb3eccbebb05094e191df3542a74007ea"
|
||||
}
|
||||
},
|
||||
"fullLockWasmSha256": "c1c15050a9b394c21e7540aa57c9292b86d32bfea2476094a9976304dacf1de0",
|
||||
"wasmSha256EqualsFullLock": false
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,18 +0,0 @@
|
||||
import {readFileSync,writeFileSync,readdirSync} from 'node:fs';
|
||||
import {pathToFileURL} from 'node:url';
|
||||
const {filterVendorManifest,sha256}=await import(pathToFileURL(`${process.cwd()}/packages/webui/wordcraft/build.mjs`));
|
||||
const root=readFileSync('/mnt/storage/scratch/gyro-223-measure-root.txt','utf8').trim();
|
||||
const cfg=readFileSync('agents/gyro/work/queue-310/rustc-wasm32-cfg.txt','utf8');
|
||||
const inventory=[];
|
||||
for(const crate of readdirSync(`${root}/vendor`).sort()) {
|
||||
const path=`${root}/vendor/${crate}/Cargo.toml`;
|
||||
const original=readFileSync(path,'utf8');const result=filterVendorManifest(original,cfg);
|
||||
if(result.text===original)continue;
|
||||
writeFileSync(path,result.text);
|
||||
const checksum=JSON.parse(readFileSync(`${root}/vendor/${crate}/.cargo-checksum.json`,'utf8'));
|
||||
checksum.files['Cargo.toml']=sha256(Buffer.from(result.text));
|
||||
writeFileSync(`${root}/vendor/${crate}/.cargo-checksum.json`,JSON.stringify(checksum)+'\n');
|
||||
inventory.push({crate,sections:result.sections,features:result.features});
|
||||
}
|
||||
writeFileSync('agents/gyro/work/queue-310/measurement-223-filter-inventory.json',JSON.stringify(inventory,null,2)+'\n');
|
||||
console.log(JSON.stringify({manifests:inventory.length,sections:inventory.reduce((n,x)=>n+x.sections.length,0),featureItems:inventory.reduce((n,x)=>n+x.features.length,0)}));
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,315 +0,0 @@
|
||||
{
|
||||
"scratchRoot": "/mnt/storage/scratch/gyro-223-measure-mzbp0x23",
|
||||
"authority": "sage-4008 / mos-1574",
|
||||
"originalLockSha256": "06b745e43c13df3df7f048fa6a1981625ce7a5fe4cd484bc6254d0913d865b0b",
|
||||
"packages": 223,
|
||||
"extraPackages": [
|
||||
{
|
||||
"name": "cursor-icon",
|
||||
"version": "1.2.0",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f",
|
||||
"archiveBytes": 14267,
|
||||
"license": "MIT OR Apache-2.0 OR Zlib",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "LICENSE-APACHE",
|
||||
"bytes": 11346,
|
||||
"sha256": "b59affd015e517ed998dd735757f9a3693643cd389609947ed54074234a10784"
|
||||
},
|
||||
{
|
||||
"path": "LICENSE-MIT",
|
||||
"bytes": 1059,
|
||||
"sha256": "c138726a726ac37bae09d0f8a48e74e8e3aa8a8952fcd10fae0fb224cc1c05f1"
|
||||
},
|
||||
{
|
||||
"path": "LICENSE-ZLIB",
|
||||
"bytes": 844,
|
||||
"sha256": "01e533bd94e8f1c32b2c2531e2c398de7d35d7804add3d574b4e1fe581d53537"
|
||||
}
|
||||
],
|
||||
"files": 14,
|
||||
"bytes": 44329
|
||||
},
|
||||
{
|
||||
"name": "dpi",
|
||||
"version": "0.1.2",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76",
|
||||
"archiveBytes": 14812,
|
||||
"license": "Apache-2.0 AND MIT",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "LICENSE",
|
||||
"bytes": 11323,
|
||||
"sha256": "6dc0e068dcf3a5bc8e054205b85b7720e1d49265bbc64bf515d2cf79197df69a"
|
||||
},
|
||||
{
|
||||
"path": "LICENSE-LIBM-MIT",
|
||||
"bytes": 2444,
|
||||
"sha256": "9eff396a99bafd208e7126602420d6864f6066c08b84485a5b032320a9c01997"
|
||||
}
|
||||
],
|
||||
"files": 11,
|
||||
"bytes": 64188
|
||||
},
|
||||
{
|
||||
"name": "futures-macro",
|
||||
"version": "0.3.34",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44",
|
||||
"archiveBytes": 11926,
|
||||
"license": "MIT OR Apache-2.0",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "LICENSE-APACHE",
|
||||
"bytes": 10874,
|
||||
"sha256": "275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427"
|
||||
},
|
||||
{
|
||||
"path": "LICENSE-MIT",
|
||||
"bytes": 1094,
|
||||
"sha256": "6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd"
|
||||
}
|
||||
],
|
||||
"files": 12,
|
||||
"bytes": 41731
|
||||
},
|
||||
{
|
||||
"name": "glifo",
|
||||
"version": "0.2.0",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "ed4a1bb24121291d27230c1b1b44e07d6a9b28cefdb32fe1581dfb84e14f940a",
|
||||
"archiveBytes": 55880,
|
||||
"license": "Apache-2.0 OR MIT",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "LICENSE-APACHE",
|
||||
"bytes": 9723,
|
||||
"sha256": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a"
|
||||
},
|
||||
{
|
||||
"path": "LICENSE-MIT",
|
||||
"bytes": 1057,
|
||||
"sha256": "3252fc481fda4d2bad9e1ae675065889abd35c8abb500499ac01e70aaffa02b9"
|
||||
}
|
||||
],
|
||||
"files": 20,
|
||||
"bytes": 222068
|
||||
},
|
||||
{
|
||||
"name": "ordered-float",
|
||||
"version": "5.5.0",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "8c7c9e0d9b23589f26070720bac724174bfec1083e82f7854cdd0267518343c0",
|
||||
"archiveBytes": 34706,
|
||||
"license": "MIT",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "LICENSE-MIT",
|
||||
"bytes": 1057,
|
||||
"sha256": "f7715d38a3fa1b4ac97c5729740752505a39cb92ee83ab5b102aeb5eaa7cdea4"
|
||||
}
|
||||
],
|
||||
"files": 14,
|
||||
"bytes": 179606
|
||||
},
|
||||
{
|
||||
"name": "pin-project",
|
||||
"version": "1.1.13",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924",
|
||||
"archiveBytes": 56345,
|
||||
"license": "Apache-2.0 OR MIT",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "LICENSE-APACHE",
|
||||
"bytes": 10174,
|
||||
"sha256": "0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594"
|
||||
},
|
||||
{
|
||||
"path": "LICENSE-MIT",
|
||||
"bytes": 1023,
|
||||
"sha256": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3"
|
||||
}
|
||||
],
|
||||
"files": 209,
|
||||
"bytes": 476259
|
||||
},
|
||||
{
|
||||
"name": "pin-project-internal",
|
||||
"version": "1.1.13",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b",
|
||||
"archiveBytes": 29331,
|
||||
"license": "Apache-2.0 OR MIT",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "LICENSE-APACHE",
|
||||
"bytes": 10174,
|
||||
"sha256": "0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594"
|
||||
},
|
||||
{
|
||||
"path": "LICENSE-MIT",
|
||||
"bytes": 1023,
|
||||
"sha256": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3"
|
||||
}
|
||||
],
|
||||
"files": 15,
|
||||
"bytes": 114911
|
||||
},
|
||||
{
|
||||
"name": "smol_str",
|
||||
"version": "0.2.2",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead",
|
||||
"archiveBytes": 15840,
|
||||
"license": "MIT OR Apache-2.0",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "LICENSE-APACHE",
|
||||
"bytes": 10847,
|
||||
"sha256": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2"
|
||||
},
|
||||
{
|
||||
"path": "LICENSE-MIT",
|
||||
"bytes": 1023,
|
||||
"sha256": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3"
|
||||
}
|
||||
],
|
||||
"files": 14,
|
||||
"bytes": 56395
|
||||
},
|
||||
{
|
||||
"name": "spirv",
|
||||
"version": "0.4.0+sdk-1.4.341.0",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f",
|
||||
"archiveBytes": 41285,
|
||||
"license": "Apache-2.0",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [],
|
||||
"files": 9,
|
||||
"bytes": 257440
|
||||
},
|
||||
{
|
||||
"name": "termcolor",
|
||||
"version": "1.4.1",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755",
|
||||
"archiveBytes": 18773,
|
||||
"license": "Unlicense OR MIT",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "COPYING",
|
||||
"bytes": 126,
|
||||
"sha256": "01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f"
|
||||
},
|
||||
{
|
||||
"path": "LICENSE-MIT",
|
||||
"bytes": 1081,
|
||||
"sha256": "0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f"
|
||||
},
|
||||
{
|
||||
"path": "UNLICENSE",
|
||||
"bytes": 1211,
|
||||
"sha256": "7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c"
|
||||
}
|
||||
],
|
||||
"files": 12,
|
||||
"bytes": 92727
|
||||
},
|
||||
{
|
||||
"name": "tracing",
|
||||
"version": "0.1.44",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100",
|
||||
"archiveBytes": 463135,
|
||||
"license": "MIT",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "LICENSE",
|
||||
"bytes": 1062,
|
||||
"sha256": "898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1"
|
||||
}
|
||||
],
|
||||
"files": 94,
|
||||
"bytes": 9827320
|
||||
},
|
||||
{
|
||||
"name": "tracing-attributes",
|
||||
"version": "0.1.31",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da",
|
||||
"archiveBytes": 39733,
|
||||
"license": "MIT",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "LICENSE",
|
||||
"bytes": 1062,
|
||||
"sha256": "898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1"
|
||||
}
|
||||
],
|
||||
"files": 31,
|
||||
"bytes": 184696
|
||||
},
|
||||
{
|
||||
"name": "tracing-core",
|
||||
"version": "0.1.36",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a",
|
||||
"archiveBytes": 63967,
|
||||
"license": "MIT",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "LICENSE",
|
||||
"bytes": 1062,
|
||||
"sha256": "898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1"
|
||||
},
|
||||
{
|
||||
"path": "src/spin/LICENSE",
|
||||
"bytes": 1085,
|
||||
"sha256": "58545fed1565e42d687aecec6897d35c6d37ccb71479a137c0deb2203e125c79"
|
||||
}
|
||||
],
|
||||
"files": 29,
|
||||
"bytes": 257879
|
||||
},
|
||||
{
|
||||
"name": "winit",
|
||||
"version": "0.30.13",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"archiveSha256": "a6755fa58a9f8350bd1e472d4c3fcc25f824ec358933bba33306d0b63df5978d",
|
||||
"archiveBytes": 605180,
|
||||
"license": "Apache-2.0",
|
||||
"licenseFile": null,
|
||||
"noticeFiles": [
|
||||
{
|
||||
"path": "LICENSE",
|
||||
"bytes": 11323,
|
||||
"sha256": "6dc0e068dcf3a5bc8e054205b85b7720e1d49265bbc64bf515d2cf79197df69a"
|
||||
}
|
||||
],
|
||||
"files": 218,
|
||||
"bytes": 2703555
|
||||
}
|
||||
],
|
||||
"extraFiles": 702,
|
||||
"extraBytes": 14523104,
|
||||
"totalFiles": 11201,
|
||||
"totalBytes": 145260334,
|
||||
"vendorManifestEdits": "none; original 209 packaging plus 14 checksum-verified archive extractions",
|
||||
"sourceManifestEdits": "same approved local 15-member workspace reduction as prior packet, no additional changes"
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,8 +0,0 @@
|
||||
command: unshare --user --map-root-user --net /mnt/storage/scratch/louie-wordcraft-toolchain/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo metadata --offline --locked --filter-platform wasm32-unknown-unknown --format-version 1
|
||||
exit: 101
|
||||
wallSeconds: 0.17994241300038993
|
||||
STDERR:
|
||||
error: cannot update the lock file /mnt/storage/scratch/gyro-223-measure-mzbp0x23/source/Cargo.lock because --locked was passed to prevent this
|
||||
help: to generate the lock file without accessing the network, remove the --locked flag and use --offline instead.
|
||||
|
||||
STDOUT:
|
||||
@@ -1,32 +0,0 @@
|
||||
from pathlib import Path
|
||||
import os,subprocess,json,hashlib
|
||||
root=Path('/mnt/storage/scratch/gyro-223-measure-root.txt').read_text().strip();root=Path(root);work=Path('agents/gyro/work/queue-310')
|
||||
os.setpriority(os.PRIO_PROCESS,0,19);os.sched_setaffinity(0,sorted(os.sched_getaffinity(0))[-4:])
|
||||
env={'PATH':'/usr/bin:/bin','HOME':str(root/'home'),'LC_ALL':'C','GIT_CONFIG_NOSYSTEM':'1','GIT_CONFIG_GLOBAL':'/dev/null'}
|
||||
def priority():os.setpriority(os.PRIO_PROCESS,0,19)
|
||||
def call(args,**kw):return subprocess.run(args,env=env,preexec_fn=priority,check=True,**kw)
|
||||
repo=root/'source-measurement.git';call(['git','init','--bare',str(repo)],capture_output=True)
|
||||
git=['git','--git-dir',str(repo)]
|
||||
inputs=json.load(open(work/'measurement-223-inputs.json'));extras={p['name']+'-'+p['version'] for p in inputs['extraPackages']}
|
||||
review=Path('packages/webui/third_party/wordcraft/cargo-vendor').resolve();prior=Path('/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/vendor')
|
||||
files=[]
|
||||
for d in sorted(review.iterdir()):files.extend((f,False,d.name+'/'+f.relative_to(d).as_posix()) for f in sorted(d.rglob('*')) if f.is_file())
|
||||
for name in sorted(extras):
|
||||
d=prior/name;files.extend((f,True,name+'/'+f.relative_to(d).as_posix()) for f in sorted(d.rglob('*')) if f.is_file())
|
||||
assert len(files)==inputs['totalFiles'];assert sum(f.stat().st_size for f,_,_ in files)==inputs['totalBytes']
|
||||
assert all('\n' not in str(f) for f,_,_ in files)
|
||||
before=call(git+['count-objects','-v'],capture_output=True,text=True).stdout
|
||||
p=call(git+['hash-object','-w','--no-filters','--stdin-paths'],input='\n'.join(str(f) for f,_,_ in files)+'\n',capture_output=True,text=True)
|
||||
oids=p.stdout.splitlines();assert len(oids)==len(files)
|
||||
sets={'all223':sorted(set(oids)),'extra14':sorted({oid for oid,(_,extra,_) in zip(oids,files) if extra})}
|
||||
packs={}
|
||||
for name,ids in sets.items():
|
||||
f=root/(name+'-sources.pack')
|
||||
with f.open('wb') as out:call(git+['pack-objects','--stdout','--threads=4'],input='\n'.join(ids)+'\n',stdout=out,text=True)
|
||||
packs[name]={'packedBytes':f.stat().st_size,'uniqueBlobs':len(ids),'sha256':hashlib.sha256(f.read_bytes()).hexdigest()}
|
||||
after=call(git+['count-objects','-v'],capture_output=True,text=True).stdout
|
||||
report={'scratchRoot':str(root),'method':'pristine package files (not filtered build copy), git hash-object -w --no-filters --stdin-paths into scratch bare repo; each sorted unique blob set through pack-objects --stdout --threads=4; no gc; no tree/commit objects or cross-version deltas','all223Files':len(files),'all223Bytes':sum(f.stat().st_size for f,_,_ in files),'extra14Files':sum(extra for _,extra,_ in files),'extra14Bytes':sum(f.stat().st_size for f,extra,_ in files if extra),'packs':packs,'countObjectsBefore':before,'countObjectsAfter':after}
|
||||
(work/'measurement-223-source-packs.json').write_text(json.dumps(report,indent=2)+'\n')
|
||||
manifest=[{'path':path,'bytes':f.stat().st_size,'sha256':hashlib.sha256(f.read_bytes()).hexdigest(),'gitBlob':oid,'extra':extra} for oid,(f,extra,path) in zip(oids,files)]
|
||||
(work/'measurement-223-input-manifest.json').write_text(json.dumps(manifest,indent=2)+'\n')
|
||||
print(json.dumps(report,indent=2))
|
||||
@@ -1,37 +0,0 @@
|
||||
from pathlib import Path
|
||||
import os,json,tomllib,hashlib,tarfile,shutil,tempfile,subprocess,datetime,time
|
||||
os.setpriority(os.PRIO_PROCESS,0,19)
|
||||
root=Path(tempfile.mkdtemp(prefix='gyro-223-measure-',dir='/mnt/storage/scratch'))
|
||||
work=Path('agents/gyro/work/queue-310'); prior=Path('/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0')
|
||||
shutil.copytree('packages/webui/third_party/wordcraft/cargo-vendor',root/'vendor')
|
||||
lockfile=Path('packages/webui/third_party/wordcraft/upstream/Cargo.lock');lock=tomllib.loads(lockfile.read_text())
|
||||
bykey={(p['name'],p['version']):p for p in lock['package']}
|
||||
extra=json.load(open(work/'measurement-resolution-extra-packages.json'))['packages']
|
||||
cache=Path('/mnt/storage/scratch/louie-wordcraft-toolchain/cargo/registry/cache/index.crates.io-1949cf8c6b5b557f')
|
||||
inventory=[]
|
||||
for p in extra:
|
||||
key=(p['name'],p['version']);pin=bykey[key];archive=cache/(key[0]+'-'+key[1]+'.crate')
|
||||
assert hashlib.sha256(archive.read_bytes()).hexdigest()==pin['checksum']
|
||||
with tarfile.open(archive) as tf:tf.extractall(root/'vendor',filter='data')
|
||||
d=root/'vendor'/(key[0]+'-'+key[1]);fs=sorted(f for f in d.rglob('*') if f.is_file())
|
||||
(d/'.cargo-checksum.json').write_text(json.dumps({'files':{f.relative_to(d).as_posix():hashlib.sha256(f.read_bytes()).hexdigest() for f in fs},'package':pin['checksum']},sort_keys=True)+'\n')
|
||||
manifest=tomllib.loads((d/'Cargo.toml').read_text());licenses=[]
|
||||
for f in sorted(d.rglob('*')):
|
||||
if f.is_file() and any(k in f.name.lower() for k in ['license','notice','copying','copyright']):
|
||||
licenses.append({'path':f.relative_to(d).as_posix(),'bytes':f.stat().st_size,'sha256':hashlib.sha256(f.read_bytes()).hexdigest()})
|
||||
allfs=[f for f in d.rglob('*') if f.is_file()]
|
||||
inventory.append({'name':key[0],'version':key[1],'source':pin['source'],'archiveSha256':pin['checksum'],'archiveBytes':archive.stat().st_size,'license':manifest['package'].get('license'),'licenseFile':manifest['package'].get('license-file'),'noticeFiles':licenses,'files':len(allfs),'bytes':sum(f.stat().st_size for f in allfs)})
|
||||
assert len(list((root/'vendor').iterdir()))==223
|
||||
shutil.copytree(prior/'source',root/'source')
|
||||
# Restore the original lock exactly, as Sage requested. Keep only the already
|
||||
# approved local-workspace reduction; vendor manifests are pristine/unfiltered.
|
||||
shutil.copyfile(lockfile,root/'source/Cargo.lock')
|
||||
for name in ['home','cargo-home']:(root/name).mkdir()
|
||||
shutil.copytree(prior/'cache',root/'cache')
|
||||
cfg=(root/'source/.cargo/config.toml').read_text().replace(str(prior/'vendor'),str(root/'vendor'))
|
||||
(root/'source/.cargo/config.toml').write_text(cfg)
|
||||
fs=[f for f in (root/'vendor').rglob('*') if f.is_file()]
|
||||
report={'scratchRoot':str(root),'authority':'sage-4008 / mos-1574','originalLockSha256':hashlib.sha256(lockfile.read_bytes()).hexdigest(),'packages':223,'extraPackages':inventory,'extraFiles':sum(p['files'] for p in inventory),'extraBytes':sum(p['bytes'] for p in inventory),'totalFiles':len(fs),'totalBytes':sum(f.stat().st_size for f in fs),'vendorManifestEdits':'none; original 209 packaging plus 14 checksum-verified archive extractions','sourceManifestEdits':'same approved local 15-member workspace reduction as prior packet, no additional changes'}
|
||||
(work/'measurement-223-inputs.json').write_text(json.dumps(report,indent=2)+'\n');(root/'measurement-inputs.json').write_text(json.dumps(report,indent=2)+'\n')
|
||||
Path('/mnt/storage/scratch/gyro-223-measure-root.txt').write_text(str(root)+'\n')
|
||||
print(json.dumps({k:v for k,v in report.items() if k!='extraPackages'},indent=2))
|
||||
@@ -1,25 +0,0 @@
|
||||
from pathlib import Path
|
||||
import os,shutil,subprocess,json,tomllib,hashlib,time
|
||||
root=Path('/mnt/storage/scratch/gyro-223-measure-root.txt').read_text().strip();root=Path(root);work=Path('agents/gyro/work/queue-310')
|
||||
src=root/'pruned-source';shutil.copytree(root/'source',src)
|
||||
rust='/mnt/storage/scratch/louie-wordcraft-toolchain/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin'
|
||||
env={'PATH':rust+':/usr/bin:/bin','HOME':str(root/'home'),'CARGO_HOME':str(root/'cargo-home'),'CARGO_NET_OFFLINE':'true','CARGO_BUILD_JOBS':'4','RUSTC':rust+'/rustc','CARGO_TARGET_DIR':str(root/'target'),'LC_ALL':'C','TZ':'UTC','TMPDIR':os.environ['TMPDIR']}
|
||||
for k in os.environ:
|
||||
if k in ['RUSTFLAGS','RUSTDOCFLAGS','CARGO_ENCODED_RUSTFLAGS','CARGO_BUILD_RUSTFLAGS'] or (k.startswith('CARGO_TARGET_') and k.endswith('_RUSTFLAGS')):raise RuntimeError('inherited flags refused: '+k)
|
||||
def priority():os.setpriority(os.PRIO_PROCESS,0,19)
|
||||
cmd=['unshare','--user','--map-root-user','--net',rust+'/cargo','metadata','--offline','--filter-platform','wasm32-unknown-unknown','--format-version','1']
|
||||
p=subprocess.run(cmd,cwd=src,env=env,preexec_fn=priority,capture_output=True,text=True)
|
||||
(root/'pruned-metadata.json').write_text(p.stdout);(work/'measurement-223-pruned-metadata.txt').write_text('command: '+' '.join(cmd)+'\nexit: '+str(p.returncode)+'\n'+p.stderr)
|
||||
original=(root/'source/Cargo.lock').read_bytes();new=(src/'Cargo.lock').read_bytes()
|
||||
a=tomllib.loads(original.decode());b=tomllib.loads(new.decode())
|
||||
def indexed(doc):return {(p['name'],p['version']):p for p in doc['package']}
|
||||
a=indexed(a);b=indexed(b)
|
||||
removed=[a[k] for k in sorted(a.keys()-b.keys())];added=[b[k] for k in sorted(b.keys()-a.keys())];changed=[]
|
||||
for k in sorted(a.keys()&b.keys()):
|
||||
before={f:a[k].get(f) for f in ['name','version','source','checksum']};after={f:b[k].get(f) for f in ['name','version','source','checksum']}
|
||||
if before!=after:changed.append({'before':before,'after':after})
|
||||
report={'authority':'sage-4010, scratch measurement only; shipping would be a packaging change needing S0 reviewer and Jason choice','scratchRoot':str(root),'source':str(src),'metadataExit':p.returncode,'stderr':p.stderr,'originalLockSha256':hashlib.sha256(original).hexdigest(),'prunedLockSha256':hashlib.sha256(new).hexdigest(),'originalEntries':len(a),'prunedEntries':len(b),'removedCount':len(removed),'addedCount':len(added),'changedCount':len(changed),'removed':[{f:r.get(f) for f in ['name','version','source','checksum']} for r in removed],'added':added,'changed':changed,'subsetPass':p.returncode==0 and not added and not changed}
|
||||
(work/'measurement-223-lock-diff.json').write_text(json.dumps(report,indent=2)+'\n');(root/'pruned-lock-diff.json').write_text(json.dumps(report,indent=2)+'\n')
|
||||
(work/'measurement-223-pruned-Cargo.lock.txt').write_bytes(new)
|
||||
print(json.dumps({k:v for k,v in report.items() if k not in ['removed','added','changed']},indent=2))
|
||||
assert hashlib.sha256((root/'source/Cargo.lock').read_bytes()).hexdigest()==report['originalLockSha256']
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,2 +0,0 @@
|
||||
command: unshare --user --map-root-user --net /mnt/storage/scratch/louie-wordcraft-toolchain/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo metadata --offline --filter-platform wasm32-unknown-unknown --format-version 1
|
||||
exit: 0
|
||||
@@ -1,251 +0,0 @@
|
||||
2026-10-24T06:31:53.109215Z INFO Starting trunk 0.22.0
|
||||
2026-10-24T06:31:53.109534Z INFO starting build
|
||||
2026-10-24T06:31:53.109733Z INFO node packages []
|
||||
Compiling unicode-ident v1.0.26
|
||||
Compiling proc-macro2 v1.0.107
|
||||
Compiling quote v1.0.47
|
||||
Compiling cfg-if v1.0.5
|
||||
Compiling serde_core v1.0.229
|
||||
Compiling once_cell v1.21.4
|
||||
Compiling serde v1.0.229
|
||||
Compiling libm v0.2.16
|
||||
Compiling rustversion v1.0.23
|
||||
Compiling autocfg v1.5.1
|
||||
Compiling log v0.4.34
|
||||
Compiling syn v3.0.6
|
||||
Compiling wasm-bindgen-shared v0.2.129
|
||||
Compiling num-traits v0.2.19
|
||||
Compiling bitflags v2.13.2
|
||||
Compiling thiserror v2.0.21
|
||||
Compiling bumpalo v3.20.3
|
||||
Compiling arrayvec v0.7.8
|
||||
Compiling wasm-bindgen v0.2.129
|
||||
Compiling foldhash v0.2.0
|
||||
Compiling futures-task v0.3.34
|
||||
Compiling hashbrown v0.17.1
|
||||
Compiling slab v0.4.12
|
||||
Compiling futures-core v0.3.34
|
||||
Compiling pin-project-lite v0.2.17
|
||||
Compiling futures-util v0.3.34
|
||||
Compiling simd-adler32 v0.3.10
|
||||
Compiling syn v2.0.119
|
||||
Compiling zerocopy v0.8.61
|
||||
Compiling crc32fast v1.5.2
|
||||
Compiling adler2 v2.0.1
|
||||
Compiling polycool v0.4.0
|
||||
Compiling wasm-bindgen-macro-support v0.2.129
|
||||
Compiling miniz_oxide v0.9.1
|
||||
Compiling bytemuck_derive v1.12.1
|
||||
Compiling serde_derive v1.0.229
|
||||
Compiling thiserror-impl v2.0.21
|
||||
Compiling bytemuck v1.25.2
|
||||
Compiling zerocopy-derive v0.8.61
|
||||
Compiling zlib-rs v0.6.8
|
||||
Compiling wasm-bindgen-macro v0.2.129
|
||||
Compiling smallvec v1.16.2
|
||||
Compiling kurbo v0.13.1
|
||||
Compiling equivalent v1.0.2
|
||||
Compiling indexmap v2.14.2
|
||||
Compiling js-sys v0.3.106
|
||||
Compiling flate2 v1.1.10
|
||||
Compiling font-types v0.12.6
|
||||
Compiling memchr v2.8.3
|
||||
Compiling zmij v1.0.23
|
||||
Compiling miniz_oxide v0.8.9
|
||||
Compiling scopeguard v1.2.0
|
||||
Compiling version_check v0.9.5
|
||||
Compiling half v2.7.1
|
||||
Compiling fdeflate v0.3.7
|
||||
Compiling cfg_aliases v0.2.2
|
||||
Compiling serde_json v1.0.151
|
||||
Compiling png v0.18.1
|
||||
Compiling color v0.3.3
|
||||
Compiling euclid v0.22.14
|
||||
Compiling unicode-segmentation v1.13.3
|
||||
Compiling linebender_resource_handle v0.1.1
|
||||
Compiling typenum v1.20.1
|
||||
Compiling peniko v0.6.1
|
||||
Compiling guillotiere v0.7.0
|
||||
Compiling hybrid-array v0.4.15
|
||||
Compiling weezl v0.1.12
|
||||
Compiling fearless_simd v0.4.1
|
||||
Compiling quick-error v2.0.1
|
||||
Compiling itoa v1.0.18
|
||||
Compiling zune-core v0.5.3
|
||||
Compiling read-fonts v0.41.0
|
||||
Compiling zune-jpeg v0.5.15
|
||||
Compiling byteorder-lite v0.1.0
|
||||
Compiling parking_lot_core v0.9.12
|
||||
Compiling color_quant v1.1.0
|
||||
Compiling gif v0.14.2
|
||||
Compiling image-webp v0.2.4
|
||||
Compiling uuid v1.27.0
|
||||
Compiling crypto-common v0.2.2
|
||||
Compiling lock_api v0.4.14
|
||||
Compiling fax v0.2.7
|
||||
Compiling pxfm v0.1.30
|
||||
Compiling tiff v0.11.3
|
||||
Compiling web-sys v0.3.106
|
||||
Compiling moxcms v0.8.1
|
||||
Compiling skrifa v0.44.0
|
||||
Compiling parking_lot v0.12.5
|
||||
Compiling wordcraft-geom v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/geom)
|
||||
Compiling font-types v0.11.3
|
||||
Compiling synstructure v0.14.0
|
||||
Compiling rustc-hash v1.1.0
|
||||
Compiling cmov v0.5.4
|
||||
Compiling profiling v1.0.18
|
||||
Compiling rustc-hash v2.1.3
|
||||
Compiling unicode-script v0.5.8
|
||||
Compiling ctutils v0.4.3
|
||||
Compiling naga-types v30.0.1
|
||||
Compiling wordcraft-doc v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/doc)
|
||||
Compiling read-fonts v0.39.2
|
||||
Compiling image v0.25.10
|
||||
Compiling web-time v1.1.0
|
||||
Compiling block-buffer v0.12.1
|
||||
Compiling naga v30.0.1
|
||||
Compiling slotmap v1.1.1
|
||||
Compiling unicode-width v0.2.2
|
||||
Compiling bit-vec v0.9.1
|
||||
Compiling const-oid v0.10.2
|
||||
Compiling raw-window-handle v0.6.2
|
||||
Compiling alloc-no-stdlib v2.0.4
|
||||
Compiling brotli-decompressor v5.0.3
|
||||
Compiling bit-set v0.10.0
|
||||
Compiling digest v0.11.3
|
||||
Compiling codespan-reporting v0.13.1
|
||||
Compiling zerofrom-derive v0.1.8
|
||||
Compiling ahash v0.8.12
|
||||
Compiling read-fonts v0.44.0
|
||||
Compiling read-fonts v0.43.3
|
||||
Compiling core_maths v0.1.1
|
||||
Compiling static_assertions v1.1.0
|
||||
Compiling wordcraft-fonts v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/fonts)
|
||||
Compiling unicode-general-category v1.1.0
|
||||
Compiling unicode-bidi v0.3.18
|
||||
Compiling bytes v1.12.1
|
||||
Compiling wgpu-types v30.0.1
|
||||
Compiling wuff v0.2.9
|
||||
Compiling ttf-parser v0.25.1
|
||||
Compiling zerofrom v0.1.8
|
||||
Compiling skrifa v0.47.0
|
||||
Compiling harfrust v0.13.3
|
||||
Compiling skrifa v0.42.1
|
||||
Compiling write-fonts v0.48.1
|
||||
Compiling yoke-derive v0.8.4
|
||||
Compiling vello_common v0.1.0
|
||||
Compiling wgpu-hal v30.0.1
|
||||
Compiling emath v0.36.2
|
||||
Compiling encoding_rs v0.8.42
|
||||
Compiling strict-num v0.1.1
|
||||
Compiling unicode-bidi-mirroring v0.4.0
|
||||
Compiling fnv v1.0.7
|
||||
Compiling stable_deref_trait v1.2.1
|
||||
Compiling base64 v0.22.1
|
||||
Compiling unicode-properties v0.1.4
|
||||
Compiling unicode-ccc v0.4.0
|
||||
Compiling arrayref v0.3.9
|
||||
Compiling ryu v1.0.23
|
||||
Compiling pdf-writer v0.15.0
|
||||
Compiling tiny-skia-path v0.12.0
|
||||
Compiling rustybuzz v0.20.1
|
||||
Compiling vello_cpu v0.1.0
|
||||
Compiling yoke v0.8.3
|
||||
Compiling cfb v0.15.0
|
||||
Compiling subsetter v0.2.6
|
||||
Compiling ecolor v0.36.2
|
||||
Compiling glow v0.17.0
|
||||
Compiling wgpu-naga-bridge v30.0.1
|
||||
Compiling zopfli v0.8.3
|
||||
Compiling harfrust v0.12.0
|
||||
Compiling vello_common v0.2.0
|
||||
Compiling inout v0.2.2
|
||||
Compiling wordcraft-proof v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/proof)
|
||||
Compiling float-cmp v0.9.0
|
||||
Compiling nohash-hasher v0.2.0
|
||||
Compiling unicode-linebreak v0.1.5
|
||||
Compiling xmp-writer v0.3.3
|
||||
Compiling getrandom v0.3.4
|
||||
Compiling multiversion_no_op v1.0.0
|
||||
Compiling imagesize v0.14.0
|
||||
Compiling either v1.19.0
|
||||
Compiling self_cell v1.3.0
|
||||
Compiling epaint_default_fonts v0.36.2
|
||||
Compiling siphasher v1.0.4
|
||||
Compiling epaint v0.36.2
|
||||
Compiling krilla v0.8.2 (https://github.com/storytold/craft-libs?rev=c3487320b2d1de657b860b3c8abb44e1f2b32bd8#c3487320)
|
||||
Compiling itertools v0.15.0
|
||||
Compiling wordcraft-layout v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/layout)
|
||||
Compiling glifo v0.3.0
|
||||
Compiling cipher v0.5.2
|
||||
Compiling zip v3.0.0
|
||||
Compiling sha1 v0.11.0
|
||||
Compiling accesskit v0.24.1
|
||||
Compiling wgpu-core v30.0.1
|
||||
Compiling aho-corasick v1.1.5
|
||||
Compiling quick-xml v0.41.0
|
||||
Compiling wordcraft-metafile v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/metafile)
|
||||
Compiling cpubits v0.1.1
|
||||
Compiling regex-syntax v0.8.11
|
||||
Compiling litrs v1.0.0
|
||||
Compiling winnow v1.0.4
|
||||
Compiling toml_parser v1.1.3+spec-1.1.0
|
||||
Compiling document-features v0.2.12
|
||||
Compiling aes v0.9.3
|
||||
Compiling wgpu-core-deps-wasm v30.0.1
|
||||
Compiling regex-automata v0.4.18
|
||||
Compiling egui v0.36.2
|
||||
Compiling vello_cpu v0.2.0
|
||||
Compiling chardetng v1.0.0
|
||||
Compiling craft-pdf v0.1.0 (https://github.com/storytold/craft-libs?rev=c3487320b2d1de657b860b3c8abb44e1f2b32bd8#c3487320)
|
||||
Compiling toml_datetime v1.1.1+spec-1.1.0
|
||||
Compiling serde_spanned v1.1.1
|
||||
Compiling hmac v0.13.0
|
||||
Compiling sha2 v0.11.0
|
||||
Compiling wasm-bindgen-futures v0.4.79
|
||||
Compiling wgpu v30.0.1
|
||||
Compiling zeroize v1.9.1
|
||||
Compiling toml_writer v1.1.2+spec-1.1.0
|
||||
Compiling toml v1.1.6+spec-1.1.0
|
||||
Compiling wordcraft-docx v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/docx)
|
||||
Compiling wordcraft-pdf v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/pdf)
|
||||
Compiling wordcraft-formats v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/formats)
|
||||
Compiling wordcraft-render v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/render)
|
||||
Compiling regex v1.13.1
|
||||
Compiling wordcraft-docbin v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/docbin)
|
||||
Compiling wordcraft-engine v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/engine)
|
||||
Compiling wordcraft-ui-egui v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/ui-egui)
|
||||
Compiling type-map v0.5.1
|
||||
Compiling rfd v0.17.2
|
||||
Compiling craft-ui v0.1.0 (https://github.com/storytold/craft-libs?rev=d27646a5f7c8b4fc85d9dd3213b8c88b58e0088d#d27646a5)
|
||||
Compiling sys-locale v0.3.2
|
||||
Compiling percent-encoding v2.3.2
|
||||
warning: function `by_author` is never used
|
||||
--> crates/engine/src/cmd/citations.rs:534:4
|
||||
|
|
||||
534 | fn by_author(x: &Source) -> &str {
|
||||
| ^^^^^^^^^
|
||||
|
|
||||
= note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
|
||||
|
||||
warning: function `primary_tag` is never used
|
||||
--> crates/engine/src/speech.rs:252:4
|
||||
|
|
||||
252 | fn primary_tag(tag: &str) -> Option<String> {
|
||||
| ^^^^^^^^^^^
|
||||
|
||||
warning: function `voice_language` is never used
|
||||
--> crates/engine/src/speech.rs:260:4
|
||||
|
|
||||
260 | fn voice_language(lang: Option<&str>, default: &str) -> Option<String> {
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
Compiling egui-wgpu v0.36.2
|
||||
Compiling eframe v0.36.2
|
||||
Compiling wordcraft-zotero v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/crates/zotero)
|
||||
warning: `wordcraft-engine` (lib) generated 3 warnings
|
||||
Compiling wordcraft-web v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/pruned-source/apps/wordcraft-web)
|
||||
Finished `release` profile [optimized] target(s) in 3m 16s
|
||||
2026-10-24T06:38:13.771065Z INFO applying new distribution
|
||||
2026-10-24T06:38:13.771634Z INFO success
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"scratchRoot": "/mnt/storage/scratch/gyro-223-measure-mzbp0x23",
|
||||
"metadataExit": 101,
|
||||
"metadataError": "error: cannot update the lock file /mnt/storage/scratch/gyro-223-measure-mzbp0x23/source/Cargo.lock because --locked was passed to prevent this\nhelp: to generate the lock file without accessing the network, remove the --locked flag and use --offline instead.\n",
|
||||
"originalLockSha256": "06b745e43c13df3df7f048fa6a1981625ce7a5fe4cd484bc6254d0913d865b0b",
|
||||
"lockUnchanged": true,
|
||||
"network": "isolated network namespace with no external interface; offline Cargo; fresh HOME/CARGO_HOME",
|
||||
"closures": {},
|
||||
"resolves": false
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
from pathlib import Path
|
||||
import os,json,subprocess,re,time,hashlib
|
||||
root=Path('/mnt/storage/scratch/gyro-223-measure-root.txt').read_text().strip();root=Path(root);work=Path('agents/gyro/work/queue-310')
|
||||
rust='/mnt/storage/scratch/louie-wordcraft-toolchain/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin'
|
||||
for k in os.environ:
|
||||
if k in ['RUSTFLAGS','RUSTDOCFLAGS','CARGO_ENCODED_RUSTFLAGS','CARGO_BUILD_RUSTFLAGS'] or (k.startswith('CARGO_TARGET_') and k.endswith('_RUSTFLAGS')):raise RuntimeError('inherited flags refused: '+k)
|
||||
env={'PATH':rust+':/usr/bin:/bin','HOME':str(root/'home'),'CARGO_HOME':str(root/'cargo-home'),'CARGO_NET_OFFLINE':'true','CARGO_BUILD_JOBS':'4','RUSTC':rust+'/rustc','CARGO_TARGET_DIR':str(root/'target'),'LC_ALL':'C','TZ':'UTC','TMPDIR':os.environ['TMPDIR']}
|
||||
def priority():os.setpriority(os.PRIO_PROCESS,0,19)
|
||||
def run(args,name):
|
||||
command=['unshare','--user','--map-root-user','--net']+args;t=time.monotonic()
|
||||
p=subprocess.run(command,cwd=root/'source',env=env,preexec_fn=priority,capture_output=True,text=True)
|
||||
(root/(name+'.stdout')).write_text(p.stdout);(root/(name+'.stderr')).write_text(p.stderr)
|
||||
(work/('measurement-223-'+name+'.txt')).write_text('command: '+' '.join(command)+'\nexit: '+str(p.returncode)+'\nwallSeconds: '+str(time.monotonic()-t)+'\nSTDERR:\n'+p.stderr+('\nSTDOUT:\n'+p.stdout if p.returncode else ''))
|
||||
return p
|
||||
original=(root/'source/Cargo.lock').read_bytes()
|
||||
p=run([rust+'/cargo','metadata','--offline','--locked','--filter-platform','wasm32-unknown-unknown','--format-version','1'],'metadata')
|
||||
report={'scratchRoot':str(root),'metadataExit':p.returncode,'metadataError':p.stderr,'originalLockSha256':hashlib.sha256(original).hexdigest(),'lockUnchanged':original==(root/'source/Cargo.lock').read_bytes(),'network':'isolated network namespace with no external interface; offline Cargo; fresh HOME/CARGO_HOME','closures':{}}
|
||||
if p.returncode==0:
|
||||
inv=json.load(open('packages/webui/third_party/wordcraft/PROVENANCE.json'))['packages']
|
||||
for edge in ['normal','normal,build']:
|
||||
p=run([rust+'/cargo','tree','--locked','--offline','-p','wordcraft-web','--target','wasm32-unknown-unknown','--edges',edge,'--prefix','none','--format','{p}'],'tree-'+edge.replace(',','-'))
|
||||
actual=set()
|
||||
for line in p.stdout.splitlines():
|
||||
m=re.match(r'(\S+) v(\S+)',line)
|
||||
if m:actual.add((m[1],m[2]))
|
||||
expected={(x['name'],x['version']) for x in inv if edge=='normal,build' or x['edge']=='normal'}
|
||||
report['closures'][edge]={'exit':p.returncode,'packages':len(actual),'added':sorted(actual-expected),'missing':sorted(expected-actual),'matchesS0':p.returncode==0 and actual==expected}
|
||||
report['resolves']=all(x['matchesS0'] for x in report['closures'].values())
|
||||
else:report['resolves']=False
|
||||
(work/'measurement-223-resolution.json').write_text(json.dumps(report,indent=2)+'\n');(root/'resolution-result.json').write_text(json.dumps(report,indent=2)+'\n')
|
||||
print(json.dumps(report,indent=2))
|
||||
@@ -1,22 +0,0 @@
|
||||
{
|
||||
"scratchRoot": "/mnt/storage/scratch/gyro-223-measure-mzbp0x23",
|
||||
"method": "pristine package files (not filtered build copy), git hash-object -w --no-filters --stdin-paths into scratch bare repo; each sorted unique blob set through pack-objects --stdout --threads=4; no gc; no tree/commit objects or cross-version deltas",
|
||||
"all223Files": 11201,
|
||||
"all223Bytes": 145260334,
|
||||
"extra14Files": 702,
|
||||
"extra14Bytes": 14523104,
|
||||
"packs": {
|
||||
"all223": {
|
||||
"packedBytes": 26538894,
|
||||
"uniqueBlobs": 10275,
|
||||
"sha256": "70b06c31030057d7b994290b464f3ed7707d1ae5490140a0853ac520c7563304"
|
||||
},
|
||||
"extra14": {
|
||||
"packedBytes": 1720566,
|
||||
"uniqueBlobs": 691,
|
||||
"sha256": "71e53a9af8dd368a56bb382cf313b2a8ead530055028e1a31f57fc8119071bd0"
|
||||
}
|
||||
},
|
||||
"countObjectsBefore": "count: 0\nsize: 0\nin-pack: 0\npacks: 0\nsize-pack: 0\nprune-packable: 0\ngarbage: 0\nsize-garbage: 0\n",
|
||||
"countObjectsAfter": "count: 10275\nsize: 66172\nin-pack: 0\npacks: 0\nsize-pack: 0\nprune-packable: 0\ngarbage: 0\nsize-garbage: 0\n"
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"scratchRoot": "/mnt/storage/scratch/gyro-223-measure-mzbp0x23",
|
||||
"metadataExit": 101,
|
||||
"metadataError": "error: no matching package named `cpufeatures` found\nlocation searched: directory source `/mnt/storage/scratch/gyro-223-measure-mzbp0x23/vendor` (which is replacing registry `crates-io`)\nrequired by package `sha1 v0.11.0`\n ... which satisfies dependency `sha1 = \"^0.11\"` (locked to 0.11.0) of package `wordcraft-docbin v0.9.0 (/mnt/storage/scratch/gyro-223-measure-mzbp0x23/source/crates/docbin)`\nnote: offline mode (via `--offline`) can sometimes cause surprising resolution failures\nhelp: if this error is too confusing you may wish to retry without `--offline`\n",
|
||||
"originalLockSha256": "06b745e43c13df3df7f048fa6a1981625ce7a5fe4cd484bc6254d0913d865b0b",
|
||||
"lockUnchanged": true,
|
||||
"network": "isolated network namespace with no external interface; offline Cargo; fresh HOME/CARGO_HOME",
|
||||
"closures": {},
|
||||
"resolves": false
|
||||
}
|
||||
@@ -1,106 +0,0 @@
|
||||
// Verbatim measurement routines from the W2 packet; no crate sources.
|
||||
// sage-3983/3984g: target cfgs are measured with a sanitized environment.
|
||||
// Keep release flags under builder control; ambient flags cannot widen the target.
|
||||
export function releaseEnvironment(input) {
|
||||
const forbidden = key => ['RUSTFLAGS', 'CARGO_ENCODED_RUSTFLAGS', 'RUSTDOCFLAGS', 'CARGO_BUILD_RUSTFLAGS'].includes(key)
|
||||
|| /^CARGO_TARGET_.*_RUSTFLAGS$/.test(key);
|
||||
for (const key of Object.keys(input)) {
|
||||
if (forbidden(key)) throw new Error(`refusing inherited Rust flags: ${key}`);
|
||||
}
|
||||
const permitted = ['PATH', 'TMPDIR', 'LANG', 'LC_ALL', 'TZ'];
|
||||
return Object.fromEntries(permitted.filter(key => input[key] !== undefined).map(key => [key, input[key]]));
|
||||
}
|
||||
|
||||
export function evaluateCfg(expression, printCfg) {
|
||||
const enabled = new Set(printCfg.split('\n').map(line => line.trim()).filter(Boolean));
|
||||
const tokens = expression.match(/"(?:[^"\\]|\\.)*"|[A-Za-z_][A-Za-z_0-9]*|[(),=]|\S/g) ?? [];
|
||||
let pos = 0;
|
||||
const take = expected => {
|
||||
if (tokens[pos++] !== expected) throw new Error(`invalid cfg expression: ${expression}`);
|
||||
};
|
||||
function parse() {
|
||||
const name = tokens[pos++];
|
||||
if (!/^[A-Za-z_][A-Za-z_0-9]*$/.test(name ?? '')) throw new Error(`invalid cfg name: ${expression}`);
|
||||
if (tokens[pos] === '(') {
|
||||
pos++;
|
||||
const args = [];
|
||||
while (tokens[pos] !== ')') {
|
||||
args.push(parse());
|
||||
if (tokens[pos] === ',') pos++;
|
||||
else if (tokens[pos] !== ')') throw new Error(`invalid cfg arguments: ${expression}`);
|
||||
}
|
||||
take(')');
|
||||
if (name === 'cfg' && args.length === 1) return args[0];
|
||||
if (name === 'not' && args.length === 1) return !args[0];
|
||||
if (name === 'all') return args.every(Boolean);
|
||||
if (name === 'any') return args.some(Boolean);
|
||||
throw new Error(`unsupported cfg operation: ${name}`);
|
||||
}
|
||||
if (tokens[pos] === '=') {
|
||||
pos++;
|
||||
const value = JSON.parse(tokens[pos++]);
|
||||
return enabled.has(`${name}=${JSON.stringify(value)}`);
|
||||
}
|
||||
return enabled.has(name);
|
||||
}
|
||||
const result = parse();
|
||||
if (pos !== tokens.length) throw new Error(`trailing cfg tokens: ${expression}`);
|
||||
return result;
|
||||
}
|
||||
|
||||
// Dependency-table parsing only: all edited TOML values are upstream string
|
||||
// arrays. Unknown syntax refuses instead of guessing or changing a dependency.
|
||||
function targetSection(part) {
|
||||
const line = part.split('\n', 1)[0];
|
||||
const match = /^\[target\.("(?:[^"\\]|\\.)*"|'[^']*'|[^.\]]+)\.(dependencies|build-dependencies|dev-dependencies)(?:\.([A-Za-z0-9_-]+))?\]$/.exec(line);
|
||||
if (!match) return null;
|
||||
const selector = match[1].startsWith('"') ? JSON.parse(match[1]) : match[1].replace(/^'|'$/g, '');
|
||||
const names = match[3] ? [match[3]] : [...part.matchAll(/^([A-Za-z0-9_-]+)\s*=/gm)].map(m => m[1]);
|
||||
return { cfg: selector, kind: match[2], dependencies: names };
|
||||
}
|
||||
|
||||
export function filterVendorManifest(text, printCfg) {
|
||||
const parts = text.split(/(?=^\[)/m);
|
||||
const sections = [];
|
||||
const retained = [];
|
||||
for (const part of parts) {
|
||||
const section = targetSection(part);
|
||||
if (section?.cfg.startsWith('cfg(') && !evaluateCfg(section.cfg, printCfg)) sections.push(section);
|
||||
else retained.push(part);
|
||||
}
|
||||
const remainingNames = new Set();
|
||||
for (const part of retained) {
|
||||
const section = targetSection(part);
|
||||
if (section && section.kind !== 'dev-dependencies') section.dependencies.forEach(name => remainingNames.add(name));
|
||||
else {
|
||||
const header = /^\[(dependencies|build-dependencies)(?:\.([A-Za-z0-9_-]+))?\]/.exec(part);
|
||||
if (header?.[2]) remainingNames.add(header[2]);
|
||||
else if (header) for (const match of part.matchAll(/^([A-Za-z0-9_-]+)\s*=/gm)) remainingNames.add(match[1]);
|
||||
}
|
||||
}
|
||||
const removed = new Map();
|
||||
for (const section of sections) {
|
||||
for (const name of section.dependencies) {
|
||||
if (!remainingNames.has(name)) removed.set(name, [...(removed.get(name) ?? []), section.cfg]);
|
||||
}
|
||||
}
|
||||
const features = [];
|
||||
const output = retained.map(part => {
|
||||
if (!part.startsWith('[features]')) return part;
|
||||
return part.replace(/^([A-Za-z0-9_-]+)\s*=\s*\[([^\]]*)\]/gm, (whole, feature, body) => {
|
||||
const noComments = body.replace(/#[^\n]*/g, '');
|
||||
let items;
|
||||
try { items = JSON.parse(`[${noComments.replace(/,\s*$/, '')}]`); }
|
||||
catch { throw new Error(`unsupported feature array: ${feature}`); }
|
||||
if (!items.every(item => typeof item === 'string')) throw new Error(`non-string feature item: ${feature}`);
|
||||
const kept = items.filter(item => {
|
||||
const dependency = item.replace(/^dep:/, '').split('/')[0].replace(/\?$/, '');
|
||||
if (!removed.has(dependency)) return true;
|
||||
features.push({ feature, item, dependency, cfg: removed.get(dependency) });
|
||||
return false;
|
||||
});
|
||||
return kept.length === items.length ? whole : `${feature} = ${JSON.stringify(kept)}`;
|
||||
});
|
||||
}).join('');
|
||||
return { text: output, sections, features };
|
||||
}
|
||||
@@ -1,251 +0,0 @@
|
||||
2026-10-24T06:02:17.606436Z INFO Starting trunk 0.22.0
|
||||
2026-10-24T06:02:17.608522Z INFO starting build
|
||||
2026-10-24T06:02:17.609024Z INFO node packages []
|
||||
Compiling proc-macro2 v1.0.107
|
||||
Compiling unicode-ident v1.0.26
|
||||
Compiling quote v1.0.47
|
||||
Compiling cfg-if v1.0.5
|
||||
Compiling serde_core v1.0.229
|
||||
Compiling once_cell v1.21.4
|
||||
Compiling serde v1.0.229
|
||||
Compiling libm v0.2.16
|
||||
Compiling rustversion v1.0.23
|
||||
Compiling wasm-bindgen-shared v0.2.129
|
||||
Compiling syn v3.0.6
|
||||
Compiling autocfg v1.5.1
|
||||
Compiling log v0.4.34
|
||||
Compiling num-traits v0.2.19
|
||||
Compiling thiserror v2.0.21
|
||||
Compiling bitflags v2.13.2
|
||||
Compiling arrayvec v0.7.8
|
||||
Compiling bumpalo v3.20.3
|
||||
Compiling wasm-bindgen v0.2.129
|
||||
Compiling foldhash v0.2.0
|
||||
Compiling slab v0.4.12
|
||||
Compiling hashbrown v0.17.1
|
||||
Compiling futures-core v0.3.34
|
||||
Compiling pin-project-lite v0.2.17
|
||||
Compiling futures-task v0.3.34
|
||||
Compiling futures-util v0.3.34
|
||||
Compiling simd-adler32 v0.3.10
|
||||
Compiling syn v2.0.119
|
||||
Compiling zerocopy v0.8.61
|
||||
Compiling crc32fast v1.5.2
|
||||
Compiling adler2 v2.0.1
|
||||
Compiling polycool v0.4.0
|
||||
Compiling wasm-bindgen-macro-support v0.2.129
|
||||
Compiling miniz_oxide v0.9.1
|
||||
Compiling bytemuck_derive v1.12.1
|
||||
Compiling serde_derive v1.0.229
|
||||
Compiling thiserror-impl v2.0.21
|
||||
Compiling bytemuck v1.25.2
|
||||
Compiling zerocopy-derive v0.8.61
|
||||
Compiling zlib-rs v0.6.8
|
||||
Compiling wasm-bindgen-macro v0.2.129
|
||||
Compiling smallvec v1.16.2
|
||||
Compiling kurbo v0.13.1
|
||||
Compiling equivalent v1.0.2
|
||||
Compiling indexmap v2.14.2
|
||||
Compiling flate2 v1.1.10
|
||||
Compiling js-sys v0.3.106
|
||||
Compiling font-types v0.12.6
|
||||
Compiling memchr v2.8.3
|
||||
Compiling zmij v1.0.23
|
||||
Compiling miniz_oxide v0.8.9
|
||||
Compiling version_check v0.9.5
|
||||
Compiling scopeguard v1.2.0
|
||||
Compiling fdeflate v0.3.7
|
||||
Compiling half v2.7.1
|
||||
Compiling serde_json v1.0.151
|
||||
Compiling cfg_aliases v0.2.2
|
||||
Compiling png v0.18.1
|
||||
Compiling color v0.3.3
|
||||
Compiling euclid v0.22.14
|
||||
Compiling linebender_resource_handle v0.1.1
|
||||
Compiling unicode-segmentation v1.13.3
|
||||
Compiling typenum v1.20.1
|
||||
Compiling peniko v0.6.1
|
||||
Compiling guillotiere v0.7.0
|
||||
Compiling hybrid-array v0.4.15
|
||||
Compiling fearless_simd v0.4.1
|
||||
Compiling quick-error v2.0.1
|
||||
Compiling itoa v1.0.18
|
||||
Compiling weezl v0.1.12
|
||||
Compiling zune-core v0.5.3
|
||||
Compiling zune-jpeg v0.5.15
|
||||
Compiling read-fonts v0.41.0
|
||||
Compiling parking_lot_core v0.9.12
|
||||
Compiling byteorder-lite v0.1.0
|
||||
Compiling color_quant v1.1.0
|
||||
Compiling gif v0.14.2
|
||||
Compiling image-webp v0.2.4
|
||||
Compiling uuid v1.27.0
|
||||
Compiling crypto-common v0.2.2
|
||||
Compiling lock_api v0.4.14
|
||||
Compiling fax v0.2.7
|
||||
Compiling pxfm v0.1.30
|
||||
Compiling tiff v0.11.3
|
||||
Compiling web-sys v0.3.106
|
||||
Compiling moxcms v0.8.1
|
||||
Compiling skrifa v0.44.0
|
||||
Compiling parking_lot v0.12.5
|
||||
Compiling wordcraft-geom v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/geom)
|
||||
Compiling font-types v0.11.3
|
||||
Compiling synstructure v0.14.0
|
||||
Compiling unicode-script v0.5.8
|
||||
Compiling profiling v1.0.18
|
||||
Compiling rustc-hash v2.1.3
|
||||
Compiling cmov v0.5.4
|
||||
Compiling rustc-hash v1.1.0
|
||||
Compiling ctutils v0.4.3
|
||||
Compiling naga-types v30.0.1
|
||||
Compiling read-fonts v0.39.2
|
||||
Compiling wordcraft-doc v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/doc)
|
||||
Compiling image v0.25.10
|
||||
Compiling web-time v1.1.0
|
||||
Compiling block-buffer v0.12.1
|
||||
Compiling naga v30.0.1
|
||||
Compiling slotmap v1.1.1
|
||||
Compiling unicode-width v0.2.2
|
||||
Compiling bit-vec v0.9.1
|
||||
Compiling raw-window-handle v0.6.2
|
||||
Compiling alloc-no-stdlib v2.0.4
|
||||
Compiling const-oid v0.10.2
|
||||
Compiling digest v0.11.3
|
||||
Compiling brotli-decompressor v5.0.3
|
||||
Compiling bit-set v0.10.0
|
||||
Compiling codespan-reporting v0.13.1
|
||||
Compiling zerofrom-derive v0.1.8
|
||||
Compiling ahash v0.8.12
|
||||
Compiling read-fonts v0.44.0
|
||||
Compiling read-fonts v0.43.3
|
||||
Compiling core_maths v0.1.1
|
||||
Compiling unicode-bidi v0.3.18
|
||||
Compiling bytes v1.12.1
|
||||
Compiling unicode-general-category v1.1.0
|
||||
Compiling static_assertions v1.1.0
|
||||
Compiling wordcraft-fonts v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/fonts)
|
||||
Compiling wgpu-types v30.0.1
|
||||
Compiling wuff v0.2.9
|
||||
Compiling ttf-parser v0.25.1
|
||||
Compiling zerofrom v0.1.8
|
||||
Compiling skrifa v0.47.0
|
||||
Compiling harfrust v0.13.3
|
||||
Compiling skrifa v0.42.1
|
||||
Compiling write-fonts v0.48.1
|
||||
Compiling yoke-derive v0.8.4
|
||||
Compiling vello_common v0.1.0
|
||||
Compiling wgpu-hal v30.0.1
|
||||
Compiling emath v0.36.2
|
||||
Compiling encoding_rs v0.8.42
|
||||
Compiling strict-num v0.1.1
|
||||
Compiling base64 v0.22.1
|
||||
Compiling fnv v1.0.7
|
||||
Compiling stable_deref_trait v1.2.1
|
||||
Compiling unicode-ccc v0.4.0
|
||||
Compiling arrayref v0.3.9
|
||||
Compiling ryu v1.0.23
|
||||
Compiling unicode-properties v0.1.4
|
||||
Compiling unicode-bidi-mirroring v0.4.0
|
||||
Compiling rustybuzz v0.20.1
|
||||
Compiling pdf-writer v0.15.0
|
||||
Compiling tiny-skia-path v0.12.0
|
||||
Compiling yoke v0.8.3
|
||||
Compiling cfb v0.15.0
|
||||
Compiling vello_cpu v0.1.0
|
||||
Compiling subsetter v0.2.6
|
||||
Compiling ecolor v0.36.2
|
||||
Compiling glow v0.17.0
|
||||
Compiling wgpu-naga-bridge v30.0.1
|
||||
Compiling zopfli v0.8.3
|
||||
Compiling harfrust v0.12.0
|
||||
Compiling vello_common v0.2.0
|
||||
Compiling inout v0.2.2
|
||||
Compiling wordcraft-proof v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/proof)
|
||||
Compiling float-cmp v0.9.0
|
||||
Compiling self_cell v1.3.0
|
||||
Compiling imagesize v0.14.0
|
||||
Compiling epaint_default_fonts v0.36.2
|
||||
Compiling xmp-writer v0.3.3
|
||||
Compiling unicode-linebreak v0.1.5
|
||||
Compiling nohash-hasher v0.2.0
|
||||
Compiling multiversion_no_op v1.0.0
|
||||
Compiling getrandom v0.3.4
|
||||
Compiling either v1.19.0
|
||||
Compiling siphasher v1.0.4
|
||||
Compiling itertools v0.15.0
|
||||
Compiling krilla v0.8.2 (https://github.com/storytold/craft-libs?rev=c3487320b2d1de657b860b3c8abb44e1f2b32bd8#c3487320)
|
||||
Compiling epaint v0.36.2
|
||||
Compiling wordcraft-layout v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/layout)
|
||||
Compiling glifo v0.3.0
|
||||
Compiling cipher v0.5.2
|
||||
Compiling zip v3.0.0
|
||||
Compiling sha1 v0.11.0
|
||||
Compiling accesskit v0.24.1
|
||||
Compiling wgpu-core v30.0.1
|
||||
Compiling quick-xml v0.41.0
|
||||
Compiling aho-corasick v1.1.5
|
||||
Compiling wordcraft-metafile v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/metafile)
|
||||
Compiling winnow v1.0.4
|
||||
Compiling cpubits v0.1.1
|
||||
Compiling regex-syntax v0.8.11
|
||||
Compiling litrs v1.0.0
|
||||
Compiling document-features v0.2.12
|
||||
Compiling aes v0.9.3
|
||||
Compiling toml_parser v1.1.3+spec-1.1.0
|
||||
Compiling wgpu-core-deps-wasm v30.0.1
|
||||
Compiling egui v0.36.2
|
||||
Compiling vello_cpu v0.2.0
|
||||
Compiling regex-automata v0.4.18
|
||||
Compiling craft-pdf v0.1.0 (https://github.com/storytold/craft-libs?rev=c3487320b2d1de657b860b3c8abb44e1f2b32bd8#c3487320)
|
||||
Compiling chardetng v1.0.0
|
||||
Compiling toml_datetime v1.1.1+spec-1.1.0
|
||||
Compiling serde_spanned v1.1.1
|
||||
Compiling sha2 v0.11.0
|
||||
Compiling hmac v0.13.0
|
||||
Compiling wasm-bindgen-futures v0.4.79
|
||||
Compiling wgpu v30.0.1
|
||||
Compiling toml_writer v1.1.2+spec-1.1.0
|
||||
Compiling zeroize v1.9.1
|
||||
Compiling wordcraft-docx v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/docx)
|
||||
Compiling toml v1.1.6+spec-1.1.0
|
||||
Compiling wordcraft-formats v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/formats)
|
||||
Compiling wordcraft-pdf v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/pdf)
|
||||
Compiling regex v1.13.1
|
||||
Compiling wordcraft-render v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/render)
|
||||
Compiling wordcraft-docbin v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/docbin)
|
||||
Compiling wordcraft-engine v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/engine)
|
||||
Compiling wordcraft-ui-egui v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/ui-egui)
|
||||
Compiling type-map v0.5.1
|
||||
Compiling rfd v0.17.2
|
||||
Compiling craft-ui v0.1.0 (https://github.com/storytold/craft-libs?rev=d27646a5f7c8b4fc85d9dd3213b8c88b58e0088d#d27646a5)
|
||||
Compiling sys-locale v0.3.2
|
||||
Compiling percent-encoding v2.3.2
|
||||
warning: function `by_author` is never used
|
||||
--> crates/engine/src/cmd/citations.rs:534:4
|
||||
|
|
||||
534 | fn by_author(x: &Source) -> &str {
|
||||
| ^^^^^^^^^
|
||||
|
|
||||
= note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
|
||||
|
||||
warning: function `primary_tag` is never used
|
||||
--> crates/engine/src/speech.rs:252:4
|
||||
|
|
||||
252 | fn primary_tag(tag: &str) -> Option<String> {
|
||||
| ^^^^^^^^^^^
|
||||
|
||||
warning: function `voice_language` is never used
|
||||
--> crates/engine/src/speech.rs:260:4
|
||||
|
|
||||
260 | fn voice_language(lang: Option<&str>, default: &str) -> Option<String> {
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
Compiling egui-wgpu v0.36.2
|
||||
Compiling eframe v0.36.2
|
||||
Compiling wordcraft-zotero v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/zotero)
|
||||
warning: `wordcraft-engine` (lib) generated 3 warnings
|
||||
Compiling wordcraft-web v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/apps/wordcraft-web)
|
||||
Finished `release` profile [optimized] target(s) in 3m 31s
|
||||
2026-10-24T06:08:46.350795Z INFO applying new distribution
|
||||
2026-10-24T06:08:46.351536Z INFO success
|
||||
@@ -1,3 +0,0 @@
|
||||
Inter-| Receive | Transmit
|
||||
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
|
||||
lo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"method": "git hash-object -w for four output blobs into new scratch bare repo; sorted blob ids piped into git pack-objects --stdout --threads=4; no gc, no repo-tree object writes",
|
||||
"gitVersion": "git version 2.55.0",
|
||||
"packedBytes": 16720159,
|
||||
"unpackedOutputBytes": 44142800,
|
||||
"excluded": ".trunk-lock (empty internal Trunk lock, not runtime artifact)",
|
||||
"outputs": {
|
||||
"index.html": {
|
||||
"bytes": 1604,
|
||||
"sha256": "299b76f4004bbc65204d561cc381b3fbb249d10069eaa50e88c7fba3b6c63cb8"
|
||||
},
|
||||
"wordcraft-fa59e09a3f921e03.ico": {
|
||||
"bytes": 18378,
|
||||
"sha256": "53a23dcf66260f44d87d4d143d633395f3e967f391eda47e6e9cc3a52f820225"
|
||||
},
|
||||
"wordcraft-web-832240fdc6ce872b_bg.wasm": {
|
||||
"bytes": 43957877,
|
||||
"sha256": "c1c15050a9b394c21e7540aa57c9292b86d32bfea2476094a9976304dacf1de0"
|
||||
},
|
||||
"wordcraft-web-88f7089f25a3b338.js": {
|
||||
"bytes": 164941,
|
||||
"sha256": "866a1de6a33eff2ded8ae9588fd049aeacfc42557a3863ccd2107b3faf4d691e"
|
||||
}
|
||||
},
|
||||
"countObjectsBefore": "count: 0\nsize: 0\nin-pack: 0\npacks: 0\nsize-pack: 0\nprune-packable: 0\ngarbage: 0\nsize-garbage: 0\n",
|
||||
"countObjectsAfterHash": "count: 4\nsize: 21628\nin-pack: 0\npacks: 0\nsize-pack: 0\nprune-packable: 0\ngarbage: 0\nsize-garbage: 0\n",
|
||||
"countObjectsAfterPack": "count: 4\nsize: 21628\nin-pack: 0\npacks: 0\nsize-pack: 0\nprune-packable: 0\ngarbage: 0\nsize-garbage: 0\n",
|
||||
"scratchRepo": "/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/output-measurement.git"
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
{
|
||||
"atUTC": "2026-10-24T06:05:25.404163+00:00",
|
||||
"note": "nice -n 19 is relative; observed inherited priority resulted in nice15. Set owned build process/thread priorities absolutely to19 during the build. No other process affected.",
|
||||
"processes": [
|
||||
{
|
||||
"pid": 1518443,
|
||||
"before": -4,
|
||||
"after": 19
|
||||
},
|
||||
{
|
||||
"pid": 1518605,
|
||||
"before": 15,
|
||||
"after": 19
|
||||
},
|
||||
{
|
||||
"pid": 1518655,
|
||||
"before": 15,
|
||||
"after": 19
|
||||
},
|
||||
{
|
||||
"pid": 1538729,
|
||||
"before": 15,
|
||||
"after": 19
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,251 +0,0 @@
|
||||
2026-10-24T06:09:38.421692Z INFO Starting trunk 0.22.0
|
||||
2026-10-24T06:09:38.423033Z INFO starting build
|
||||
2026-10-24T06:09:38.423284Z INFO node packages []
|
||||
Compiling unicode-ident v1.0.26
|
||||
Compiling proc-macro2 v1.0.107
|
||||
Compiling quote v1.0.47
|
||||
Compiling cfg-if v1.0.5
|
||||
Compiling serde_core v1.0.229
|
||||
Compiling once_cell v1.21.4
|
||||
Compiling serde v1.0.229
|
||||
Compiling libm v0.2.16
|
||||
Compiling rustversion v1.0.23
|
||||
Compiling wasm-bindgen-shared v0.2.129
|
||||
Compiling autocfg v1.5.1
|
||||
Compiling syn v3.0.6
|
||||
Compiling log v0.4.34
|
||||
Compiling num-traits v0.2.19
|
||||
Compiling thiserror v2.0.21
|
||||
Compiling bitflags v2.13.2
|
||||
Compiling bumpalo v3.20.3
|
||||
Compiling arrayvec v0.7.8
|
||||
Compiling wasm-bindgen v0.2.129
|
||||
Compiling foldhash v0.2.0
|
||||
Compiling hashbrown v0.17.1
|
||||
Compiling futures-task v0.3.34
|
||||
Compiling slab v0.4.12
|
||||
Compiling futures-core v0.3.34
|
||||
Compiling pin-project-lite v0.2.17
|
||||
Compiling simd-adler32 v0.3.10
|
||||
Compiling futures-util v0.3.34
|
||||
Compiling syn v2.0.119
|
||||
Compiling zerocopy v0.8.61
|
||||
Compiling crc32fast v1.5.2
|
||||
Compiling adler2 v2.0.1
|
||||
Compiling polycool v0.4.0
|
||||
Compiling wasm-bindgen-macro-support v0.2.129
|
||||
Compiling miniz_oxide v0.9.1
|
||||
Compiling bytemuck_derive v1.12.1
|
||||
Compiling serde_derive v1.0.229
|
||||
Compiling bytemuck v1.25.2
|
||||
Compiling thiserror-impl v2.0.21
|
||||
Compiling zerocopy-derive v0.8.61
|
||||
Compiling zlib-rs v0.6.8
|
||||
Compiling wasm-bindgen-macro v0.2.129
|
||||
Compiling smallvec v1.16.2
|
||||
Compiling kurbo v0.13.1
|
||||
Compiling equivalent v1.0.2
|
||||
Compiling indexmap v2.14.2
|
||||
Compiling js-sys v0.3.106
|
||||
Compiling flate2 v1.1.10
|
||||
Compiling font-types v0.12.6
|
||||
Compiling memchr v2.8.3
|
||||
Compiling zmij v1.0.23
|
||||
Compiling miniz_oxide v0.8.9
|
||||
Compiling half v2.7.1
|
||||
Compiling scopeguard v1.2.0
|
||||
Compiling version_check v0.9.5
|
||||
Compiling fdeflate v0.3.7
|
||||
Compiling cfg_aliases v0.2.2
|
||||
Compiling serde_json v1.0.151
|
||||
Compiling color v0.3.3
|
||||
Compiling png v0.18.1
|
||||
Compiling euclid v0.22.14
|
||||
Compiling typenum v1.20.1
|
||||
Compiling unicode-segmentation v1.13.3
|
||||
Compiling linebender_resource_handle v0.1.1
|
||||
Compiling peniko v0.6.1
|
||||
Compiling hybrid-array v0.4.15
|
||||
Compiling guillotiere v0.7.0
|
||||
Compiling zune-core v0.5.3
|
||||
Compiling fearless_simd v0.4.1
|
||||
Compiling itoa v1.0.18
|
||||
Compiling weezl v0.1.12
|
||||
Compiling quick-error v2.0.1
|
||||
Compiling zune-jpeg v0.5.15
|
||||
Compiling read-fonts v0.41.0
|
||||
Compiling color_quant v1.1.0
|
||||
Compiling byteorder-lite v0.1.0
|
||||
Compiling parking_lot_core v0.9.12
|
||||
Compiling image-webp v0.2.4
|
||||
Compiling gif v0.14.2
|
||||
Compiling uuid v1.27.0
|
||||
Compiling crypto-common v0.2.2
|
||||
Compiling lock_api v0.4.14
|
||||
Compiling pxfm v0.1.30
|
||||
Compiling fax v0.2.7
|
||||
Compiling tiff v0.11.3
|
||||
Compiling web-sys v0.3.106
|
||||
Compiling moxcms v0.8.1
|
||||
Compiling skrifa v0.44.0
|
||||
Compiling parking_lot v0.12.5
|
||||
Compiling wordcraft-geom v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/geom)
|
||||
Compiling font-types v0.11.3
|
||||
Compiling synstructure v0.14.0
|
||||
Compiling rustc-hash v1.1.0
|
||||
Compiling unicode-script v0.5.8
|
||||
Compiling cmov v0.5.4
|
||||
Compiling rustc-hash v2.1.3
|
||||
Compiling profiling v1.0.18
|
||||
Compiling ctutils v0.4.3
|
||||
Compiling naga-types v30.0.1
|
||||
Compiling read-fonts v0.39.2
|
||||
Compiling wordcraft-doc v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/doc)
|
||||
Compiling image v0.25.10
|
||||
Compiling web-time v1.1.0
|
||||
Compiling block-buffer v0.12.1
|
||||
Compiling naga v30.0.1
|
||||
Compiling slotmap v1.1.1
|
||||
Compiling alloc-no-stdlib v2.0.4
|
||||
Compiling raw-window-handle v0.6.2
|
||||
Compiling unicode-width v0.2.2
|
||||
Compiling bit-vec v0.9.1
|
||||
Compiling const-oid v0.10.2
|
||||
Compiling bit-set v0.10.0
|
||||
Compiling digest v0.11.3
|
||||
Compiling codespan-reporting v0.13.1
|
||||
Compiling brotli-decompressor v5.0.3
|
||||
Compiling zerofrom-derive v0.1.8
|
||||
Compiling ahash v0.8.12
|
||||
Compiling read-fonts v0.44.0
|
||||
Compiling read-fonts v0.43.3
|
||||
Compiling core_maths v0.1.1
|
||||
Compiling wordcraft-fonts v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/fonts)
|
||||
Compiling bytes v1.12.1
|
||||
Compiling unicode-general-category v1.1.0
|
||||
Compiling unicode-bidi v0.3.18
|
||||
Compiling static_assertions v1.1.0
|
||||
Compiling wgpu-types v30.0.1
|
||||
Compiling wuff v0.2.9
|
||||
Compiling ttf-parser v0.25.1
|
||||
Compiling zerofrom v0.1.8
|
||||
Compiling skrifa v0.47.0
|
||||
Compiling harfrust v0.13.3
|
||||
Compiling skrifa v0.42.1
|
||||
Compiling write-fonts v0.48.1
|
||||
Compiling yoke-derive v0.8.4
|
||||
Compiling vello_common v0.1.0
|
||||
Compiling wgpu-hal v30.0.1
|
||||
Compiling emath v0.36.2
|
||||
Compiling encoding_rs v0.8.42
|
||||
Compiling ryu v1.0.23
|
||||
Compiling unicode-properties v0.1.4
|
||||
Compiling base64 v0.22.1
|
||||
Compiling arrayref v0.3.9
|
||||
Compiling fnv v1.0.7
|
||||
Compiling strict-num v0.1.1
|
||||
Compiling unicode-bidi-mirroring v0.4.0
|
||||
Compiling stable_deref_trait v1.2.1
|
||||
Compiling unicode-ccc v0.4.0
|
||||
Compiling rustybuzz v0.20.1
|
||||
Compiling yoke v0.8.3
|
||||
Compiling tiny-skia-path v0.12.0
|
||||
Compiling cfb v0.15.0
|
||||
Compiling subsetter v0.2.6
|
||||
Compiling pdf-writer v0.15.0
|
||||
Compiling vello_cpu v0.1.0
|
||||
Compiling ecolor v0.36.2
|
||||
Compiling glow v0.17.0
|
||||
Compiling wgpu-naga-bridge v30.0.1
|
||||
Compiling zopfli v0.8.3
|
||||
Compiling harfrust v0.12.0
|
||||
Compiling vello_common v0.2.0
|
||||
Compiling inout v0.2.2
|
||||
Compiling wordcraft-proof v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/proof)
|
||||
Compiling float-cmp v0.9.0
|
||||
Compiling siphasher v1.0.4
|
||||
Compiling self_cell v1.3.0
|
||||
Compiling xmp-writer v0.3.3
|
||||
Compiling nohash-hasher v0.2.0
|
||||
Compiling either v1.19.0
|
||||
Compiling imagesize v0.14.0
|
||||
Compiling epaint_default_fonts v0.36.2
|
||||
Compiling multiversion_no_op v1.0.0
|
||||
Compiling unicode-linebreak v0.1.5
|
||||
Compiling getrandom v0.3.4
|
||||
Compiling wordcraft-layout v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/layout)
|
||||
Compiling epaint v0.36.2
|
||||
Compiling krilla v0.8.2 (https://github.com/storytold/craft-libs?rev=c3487320b2d1de657b860b3c8abb44e1f2b32bd8#c3487320)
|
||||
Compiling itertools v0.15.0
|
||||
Compiling glifo v0.3.0
|
||||
Compiling cipher v0.5.2
|
||||
Compiling zip v3.0.0
|
||||
Compiling sha1 v0.11.0
|
||||
Compiling accesskit v0.24.1
|
||||
Compiling wgpu-core v30.0.1
|
||||
Compiling aho-corasick v1.1.5
|
||||
Compiling quick-xml v0.41.0
|
||||
Compiling wordcraft-metafile v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/metafile)
|
||||
Compiling winnow v1.0.4
|
||||
Compiling litrs v1.0.0
|
||||
Compiling regex-syntax v0.8.11
|
||||
Compiling cpubits v0.1.1
|
||||
Compiling aes v0.9.3
|
||||
Compiling document-features v0.2.12
|
||||
Compiling toml_parser v1.1.3+spec-1.1.0
|
||||
Compiling wgpu-core-deps-wasm v30.0.1
|
||||
Compiling egui v0.36.2
|
||||
Compiling vello_cpu v0.2.0
|
||||
Compiling regex-automata v0.4.18
|
||||
Compiling craft-pdf v0.1.0 (https://github.com/storytold/craft-libs?rev=c3487320b2d1de657b860b3c8abb44e1f2b32bd8#c3487320)
|
||||
Compiling chardetng v1.0.0
|
||||
Compiling toml_datetime v1.1.1+spec-1.1.0
|
||||
Compiling serde_spanned v1.1.1
|
||||
Compiling hmac v0.13.0
|
||||
Compiling sha2 v0.11.0
|
||||
Compiling wasm-bindgen-futures v0.4.79
|
||||
Compiling wgpu v30.0.1
|
||||
Compiling toml_writer v1.1.2+spec-1.1.0
|
||||
Compiling zeroize v1.9.1
|
||||
Compiling wordcraft-docx v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/docx)
|
||||
Compiling toml v1.1.6+spec-1.1.0
|
||||
Compiling regex v1.13.1
|
||||
Compiling wordcraft-formats v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/formats)
|
||||
Compiling wordcraft-pdf v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/pdf)
|
||||
Compiling wordcraft-render v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/render)
|
||||
Compiling wordcraft-docbin v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/docbin)
|
||||
Compiling wordcraft-engine v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/engine)
|
||||
Compiling wordcraft-ui-egui v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/ui-egui)
|
||||
Compiling type-map v0.5.1
|
||||
Compiling rfd v0.17.2
|
||||
Compiling craft-ui v0.1.0 (https://github.com/storytold/craft-libs?rev=d27646a5f7c8b4fc85d9dd3213b8c88b58e0088d#d27646a5)
|
||||
Compiling sys-locale v0.3.2
|
||||
Compiling percent-encoding v2.3.2
|
||||
warning: function `by_author` is never used
|
||||
--> crates/engine/src/cmd/citations.rs:534:4
|
||||
|
|
||||
534 | fn by_author(x: &Source) -> &str {
|
||||
| ^^^^^^^^^
|
||||
|
|
||||
= note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
|
||||
|
||||
warning: function `primary_tag` is never used
|
||||
--> crates/engine/src/speech.rs:252:4
|
||||
|
|
||||
252 | fn primary_tag(tag: &str) -> Option<String> {
|
||||
| ^^^^^^^^^^^
|
||||
|
||||
warning: function `voice_language` is never used
|
||||
--> crates/engine/src/speech.rs:260:4
|
||||
|
|
||||
260 | fn voice_language(lang: Option<&str>, default: &str) -> Option<String> {
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
Compiling egui-wgpu v0.36.2
|
||||
Compiling wordcraft-zotero v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/crates/zotero)
|
||||
Compiling eframe v0.36.2
|
||||
warning: `wordcraft-engine` (lib) generated 3 warnings
|
||||
Compiling wordcraft-web v0.9.0 (/mnt/storage/scratch/gyro-full-lock-measure-95ntu6t0/source/apps/wordcraft-web)
|
||||
Finished `release` profile [optimized] target(s) in 3m 23s
|
||||
2026-10-24T06:16:16.271064Z INFO applying new distribution
|
||||
2026-10-24T06:16:16.271692Z INFO success
|
||||
@@ -1,105 +0,0 @@
|
||||
{
|
||||
"note": "read-only observation from full-lock scratch metadata, not a proposed/imported reduced vendor set; compiled normal/build closure remains exactly S0",
|
||||
"count": 14,
|
||||
"bytes": 14523104,
|
||||
"packages": [
|
||||
{
|
||||
"name": "cursor-icon",
|
||||
"version": "1.2.0",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 14,
|
||||
"bytes": 44329
|
||||
},
|
||||
{
|
||||
"name": "dpi",
|
||||
"version": "0.1.2",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 11,
|
||||
"bytes": 64188
|
||||
},
|
||||
{
|
||||
"name": "futures-macro",
|
||||
"version": "0.3.34",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 12,
|
||||
"bytes": 41731
|
||||
},
|
||||
{
|
||||
"name": "glifo",
|
||||
"version": "0.2.0",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 20,
|
||||
"bytes": 222068
|
||||
},
|
||||
{
|
||||
"name": "ordered-float",
|
||||
"version": "5.5.0",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 14,
|
||||
"bytes": 179606
|
||||
},
|
||||
{
|
||||
"name": "pin-project",
|
||||
"version": "1.1.13",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 209,
|
||||
"bytes": 476259
|
||||
},
|
||||
{
|
||||
"name": "pin-project-internal",
|
||||
"version": "1.1.13",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 15,
|
||||
"bytes": 114911
|
||||
},
|
||||
{
|
||||
"name": "smol_str",
|
||||
"version": "0.2.2",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 14,
|
||||
"bytes": 56395
|
||||
},
|
||||
{
|
||||
"name": "spirv",
|
||||
"version": "0.4.0+sdk-1.4.341.0",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 9,
|
||||
"bytes": 257440
|
||||
},
|
||||
{
|
||||
"name": "termcolor",
|
||||
"version": "1.4.1",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 12,
|
||||
"bytes": 92727
|
||||
},
|
||||
{
|
||||
"name": "tracing",
|
||||
"version": "0.1.44",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 94,
|
||||
"bytes": 9827320
|
||||
},
|
||||
{
|
||||
"name": "tracing-attributes",
|
||||
"version": "0.1.31",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 31,
|
||||
"bytes": 184696
|
||||
},
|
||||
{
|
||||
"name": "tracing-core",
|
||||
"version": "0.1.36",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 29,
|
||||
"bytes": 257879
|
||||
},
|
||||
{
|
||||
"name": "winit",
|
||||
"version": "0.30.13",
|
||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
||||
"files": 218,
|
||||
"bytes": 2703555
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
{"atUTC": "2026-10-24T06:10:11.225848+00:00", "processes": [{"pid": 1585414, "nice": 19, "cpus": [12, 13, 14, 15], "name": "trunk"}, {"pid": 1585433, "nice": 19, "cpus": [12, 13, 14, 15], "name": "cargo"}, {"pid": 1589366, "nice": 19, "cpus": [12, 13, 14, 15], "name": "rustc"}, {"pid": 1589563, "nice": 19, "cpus": [12, 13, 14, 15], "name": "rustc"}, {"pid": 1590336, "nice": 19, "cpus": [12, 13, 14, 15], "name": "rustc"}, {"pid": 1590472, "nice": 19, "cpus": [12, 13, 14, 15], "name": "rustc"}]}
|
||||
{"atUTC": "2026-10-24T06:13:38.818103+00:00", "processes": [{"pid": 1631174, "name": "wasm-opt", "nice": 19, "cpus": [12, 13, 14, 15], "threads": 5}]}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,12 +0,0 @@
|
||||
command: cargo metadata --locked --offline --filter-platform wasm32-unknown-unknown --format-version 1
|
||||
exit: 101
|
||||
error: failed to select a version for the requirement `glifo = "^0.2.0"` (locked to 0.2.0)
|
||||
candidate versions found which didn't match: 0.3.0
|
||||
location searched: directory source `/mnt/storage/scratch/gyro-w2-resolution/cargo-vendor` (which is replacing registry `crates-io`)
|
||||
required by package `vello_cpu v0.1.0`
|
||||
... which satisfies dependency `vello_cpu = "^0.1.0"` (locked to 0.1.0) of package `epaint v0.36.2`
|
||||
... which satisfies dependency `epaint = "^0.36.2"` (locked to 0.36.2) of package `egui v0.36.2`
|
||||
... which satisfies dependency `egui = "^0.36"` (locked to 0.36.2) of package `wordcraft-web v0.9.0 (/mnt/storage/scratch/gyro-w2-resolution/source/apps/wordcraft-web)`
|
||||
note: perhaps a crate was updated and forgotten to be re-vendored?
|
||||
note: offline mode (via `--offline`) can sometimes cause surprising resolution failures
|
||||
help: if this error is too confusing you may wish to retry without `--offline`
|
||||
@@ -1,11 +0,0 @@
|
||||
✔ WordCraft inputs have a verifiable offline source receipt (1793.67392ms)
|
||||
✔ input verifier refuses altered, missing and unrecorded files (1.797894ms)
|
||||
✔ included upstream subset equals the pinned protected git tree (51.472281ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 1893.050007
|
||||
@@ -1,46 +0,0 @@
|
||||
✖ WordCraft inputs have a verifiable offline source receipt (0.933599ms)
|
||||
✖ input verifier refuses altered, missing and unrecorded files (0.211521ms)
|
||||
ℹ tests 2
|
||||
ℹ suites 0
|
||||
ℹ pass 0
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 46.579384
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/webui/tests/wordcraft-provenance.test.mjs:9:1
|
||||
✖ WordCraft inputs have a verifiable offline source receipt (0.933599ms)
|
||||
AssertionError [ERR_ASSERTION]: owned verifier must exist
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/tests/wordcraft-provenance.test.mjs:10:10)
|
||||
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||
at Test.run (node:internal/test_runner/test:1402:25)
|
||||
at Test.start (node:internal/test_runner/test:1262:17)
|
||||
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: false,
|
||||
expected: true,
|
||||
operator: '==',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/webui/tests/wordcraft-provenance.test.mjs:18:1
|
||||
✖ input verifier refuses altered, missing and unrecorded files (0.211521ms)
|
||||
AssertionError [ERR_ASSERTION]: owned verifier must exist
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gyro-row310/packages/webui/tests/wordcraft-provenance.test.mjs:19:10)
|
||||
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||
at Test.run (node:internal/test_runner/test:1402:25)
|
||||
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
|
||||
at Test.postRun (node:internal/test_runner/test:1542:19)
|
||||
at Test.run (node:internal/test_runner/test:1467:12)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: false,
|
||||
expected: true,
|
||||
operator: '==',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
debug_assertions
|
||||
panic="abort"
|
||||
target_abi=""
|
||||
target_arch="wasm32"
|
||||
target_endian="little"
|
||||
target_env=""
|
||||
target_family="wasm"
|
||||
target_feature="bulk-memory"
|
||||
target_feature="multivalue"
|
||||
target_feature="mutable-globals"
|
||||
target_feature="nontrapping-fptoint"
|
||||
target_feature="reference-types"
|
||||
target_feature="sign-ext"
|
||||
target_has_atomic="16"
|
||||
target_has_atomic="32"
|
||||
target_has_atomic="64"
|
||||
target_has_atomic="8"
|
||||
target_has_atomic="ptr"
|
||||
target_has_atomic_primitive_alignment="16"
|
||||
target_has_atomic_primitive_alignment="32"
|
||||
target_has_atomic_primitive_alignment="64"
|
||||
target_has_atomic_primitive_alignment="8"
|
||||
target_has_atomic_primitive_alignment="ptr"
|
||||
target_os="unknown"
|
||||
target_pointer_width="32"
|
||||
target_vendor="unknown"
|
||||
@@ -1,416 +0,0 @@
|
||||
{
|
||||
"metadataSha256": "503bcf5a2a6d3fc814b0422bf3658cc3a187b182d2928da11e8ed68519b9d8fb",
|
||||
"note": "S0 cargo metadata includes workspace feature unification; evidence of a constraint conflict, not exact root-only feature proof",
|
||||
"edges": [
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "accesskit",
|
||||
"edge": "egui-winit/accesskit"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "links",
|
||||
"edge": "egui-winit/links"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "wayland",
|
||||
"edge": "egui-winit/wayland"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "wayland",
|
||||
"edge": "glutin?/wayland"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "wayland",
|
||||
"edge": "glutin-winit?/wayland"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "wgpu_no_default_features",
|
||||
"edge": "dep:pollster"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "x11",
|
||||
"edge": "egui-winit/x11"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "x11",
|
||||
"edge": "glutin?/x11"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "x11",
|
||||
"edge": "glutin?/glx"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "x11",
|
||||
"edge": "glutin-winit?/x11"
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"feature": "x11",
|
||||
"edge": "glutin-winit?/glx"
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"feature": "wayland",
|
||||
"edge": "wayland-backend"
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"feature": "wayland",
|
||||
"edge": "wayland-client"
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"feature": "wayland",
|
||||
"edge": "wayland-protocols"
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"feature": "xdg-portal",
|
||||
"edge": "pollster"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "wgpu-core-deps-windows-linux-android/dx12"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "wgpu-core-deps-windows-linux-android/gles"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "wgpu-core-deps-emscripten/gles"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "wgpu-core-deps-apple/metal"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "renderdoc",
|
||||
"edge": "wgpu-core-deps-windows-linux-android/renderdoc"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "wgpu-core-deps-windows-linux-android/vulkan"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "dep:bit-set"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "dep:gpu-allocator"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "dep:libloading"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "dep:once_cell"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "dep:range-alloc"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "dep:windows-core"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "gpu-allocator/d3d12"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "once_cell/std"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Devices_DeviceAndDriverInstallation"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Devices_Display"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_Direct3D_Dxc"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_Direct3D_Fxc"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_Direct3D"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_Direct3D12"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_DirectComposition"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_Dxgi_Common"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Graphics_Gdi"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_Security"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_System_Diagnostics_Debug"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_System_Kernel"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_System_Performance"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_System_Threading"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "dx12",
|
||||
"edge": "windows/Win32_UI_WindowsAndMessaging"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:glutin_wgl_sys"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:khronos-egl"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:libloading"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:ndk-sys"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:objc2"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:wayland-sys"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "dep:windows-result"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "windows-result/std"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "windows/Win32_Graphics_Gdi"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "windows/Win32_Graphics_OpenGL"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "windows/Win32_System_LibraryLoader"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "gles",
|
||||
"edge": "windows/Win32_UI_WindowsAndMessaging"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:block2"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:libloading"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:objc2"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:objc2-core-foundation"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:objc2-core-graphics"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:objc2-foundation"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:objc2-metal"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:objc2-quartz-core"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:smallvec"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "metal",
|
||||
"edge": "dep:raw-window-metal"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "renderdoc",
|
||||
"edge": "dep:libloading"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "renderdoc",
|
||||
"edge": "dep:renderdoc-sys"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:android_system_properties"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:ash"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:libc"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:libloading"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:raw-window-metal"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:smallvec"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "dep:windows"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "gpu-allocator/vulkan"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "windows/Win32"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "windows/Win32_Devices_Display"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "windows/Win32_Foundation"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "windows/Win32_Graphics_Dxgi"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "windows/Win32_Graphics_Dxgi_Common"
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"feature": "vulkan",
|
||||
"edge": "windows/Win32_Graphics_Gdi"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,526 +0,0 @@
|
||||
[
|
||||
{
|
||||
"crate": "aes-0.9.3",
|
||||
"cfg": "cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"cpufeatures"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "bytes-1.12.1",
|
||||
"cfg": "cfg(loom)",
|
||||
"kind": "dev-dependencies",
|
||||
"dependencies": [
|
||||
"loom"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "cmov-0.5.4",
|
||||
"cfg": "cfg(any(unix, windows))",
|
||||
"kind": "dev-dependencies",
|
||||
"dependencies": [
|
||||
"proptest"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"cfg": "cfg(any(target_os = \"macos\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"objc2",
|
||||
"objc2-app-kit",
|
||||
"objc2-foundation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"cfg": "cfg(any(target_os = \"windows\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"windows-sys"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"cfg": "cfg(not(target_arch = \"wasm32\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"egui-wgpu",
|
||||
"egui-winit",
|
||||
"glutin",
|
||||
"glutin-winit",
|
||||
"image",
|
||||
"pollster",
|
||||
"winit"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "eframe-0.36.2",
|
||||
"cfg": "cfg(not(target_arch = \"wasm32\"))",
|
||||
"kind": "dev-dependencies",
|
||||
"dependencies": [
|
||||
"directories"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "encoding_rs-0.8.42",
|
||||
"cfg": "cfg(all(any(target_arch = \"x86_64\", target_arch = \"x86\"), not(all(target_feature = \"avx2\", target_feature = \"bmi1\"))))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"multiversion"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "encoding_rs-0.8.42",
|
||||
"cfg": "cfg(any(target_arch = \"x86_64\", target_arch = \"x86\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"core_detect"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "getrandom-0.3.4",
|
||||
"cfg": "cfg(all(any(target_os = \"linux\", target_os = \"android\"), not(any(all(target_os = \"linux\", target_env = \"\"), getrandom_backend = \"custom\", getrandom_backend = \"linux_raw\", getrandom_backend = \"rdrand\", getrandom_backend = \"rndr\"))))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"libc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "getrandom-0.3.4",
|
||||
"cfg": "cfg(all(target_arch = \"wasm32\", target_os = \"wasi\", target_env = \"p2\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"wasip2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "getrandom-0.3.4",
|
||||
"cfg": "cfg(all(target_os = \"uefi\", getrandom_backend = \"efi_rng\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"r-efi"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "getrandom-0.3.4",
|
||||
"cfg": "cfg(any(target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"hurd\", target_os = \"illumos\", target_os = \"cygwin\", all(target_os = \"horizon\", target_arch = \"arm\")))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"libc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "getrandom-0.3.4",
|
||||
"cfg": "cfg(any(target_os = \"haiku\", target_os = \"redox\", target_os = \"nto\", target_os = \"aix\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"libc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "getrandom-0.3.4",
|
||||
"cfg": "cfg(any(target_os = \"ios\", target_os = \"visionos\", target_os = \"watchos\", target_os = \"tvos\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"libc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "getrandom-0.3.4",
|
||||
"cfg": "cfg(any(target_os = \"macos\", target_os = \"openbsd\", target_os = \"vita\", target_os = \"emscripten\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"libc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "getrandom-0.3.4",
|
||||
"cfg": "cfg(target_os = \"netbsd\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"libc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "getrandom-0.3.4",
|
||||
"cfg": "cfg(target_os = \"solaris\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"libc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "getrandom-0.3.4",
|
||||
"cfg": "cfg(target_os = \"vxworks\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"libc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "half-2.7.1",
|
||||
"cfg": "cfg(target_arch = \"spirv\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"crunchy"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "harfrust-0.12.0",
|
||||
"cfg": "cfg(target_vendor = \"apple\")",
|
||||
"kind": "dev-dependencies",
|
||||
"dependencies": [
|
||||
"objc2-core-foundation",
|
||||
"objc2-core-text"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "harfrust-0.13.3",
|
||||
"cfg": "cfg(target_vendor = \"apple\")",
|
||||
"kind": "dev-dependencies",
|
||||
"dependencies": [
|
||||
"objc2-core-foundation",
|
||||
"objc2-core-text"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "hashbrown-0.17.1",
|
||||
"cfg": "cfg(any())",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"serde"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "hashbrown-0.17.1",
|
||||
"cfg": "cfg(unix)",
|
||||
"kind": "dev-dependencies",
|
||||
"dependencies": [
|
||||
"libc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "indexmap-2.14.2",
|
||||
"cfg": "cfg(any())",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"serde"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "parking_lot_core-0.9.12",
|
||||
"cfg": "cfg(target_os = \"redox\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"redox_syscall"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "parking_lot_core-0.9.12",
|
||||
"cfg": "cfg(unix)",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"libc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "parking_lot_core-0.9.12",
|
||||
"cfg": "cfg(windows)",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"windows-link"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "png-0.18.1",
|
||||
"cfg": "cfg(not(target_arch = \"wasm32\"))",
|
||||
"kind": "dev-dependencies",
|
||||
"dependencies": [
|
||||
"criterion"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"cfg": "cfg(any(target_os = \"linux\", target_os = \"freebsd\", target_os = \"dragonfly\", target_os = \"netbsd\", target_os = \"openbsd\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"glib-sys",
|
||||
"gobject-sys",
|
||||
"gtk-sys",
|
||||
"libc",
|
||||
"percent-encoding",
|
||||
"pollster",
|
||||
"wayland-backend",
|
||||
"wayland-client",
|
||||
"wayland-protocols"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"cfg": "cfg(target_os = \"macos\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"block2",
|
||||
"dispatch2",
|
||||
"objc2",
|
||||
"objc2-app-kit",
|
||||
"objc2-core-foundation",
|
||||
"objc2-foundation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "rfd-0.17.2",
|
||||
"cfg": "cfg(target_os = \"windows\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"windows-sys"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "serde_core-1.0.229",
|
||||
"cfg": "cfg(any())",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"serde_derive"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "serde_json-1.0.151",
|
||||
"cfg": "cfg(any())",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"serde"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "sha1-0.11.0",
|
||||
"cfg": "cfg(any(target_arch = \"aarch64\", target_arch = \"x86\", target_arch = \"x86_64\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"cpufeatures"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "sha2-0.11.0",
|
||||
"cfg": "cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"cpufeatures"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "sys-locale-0.3.2",
|
||||
"cfg": "cfg(target_os = \"android\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"libc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "uuid-1.27.0",
|
||||
"cfg": "cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"getrandom",
|
||||
"rand"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "uuid-1.27.0",
|
||||
"cfg": "cfg(not(target_arch = \"wasm32\"))",
|
||||
"kind": "dev-dependencies",
|
||||
"dependencies": [
|
||||
"gungraun"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wasm-bindgen-0.2.129",
|
||||
"cfg": "cfg(all(target_os = \"emscripten\", wasm_bindgen_unstable_tokio))",
|
||||
"kind": "dev-dependencies",
|
||||
"dependencies": [
|
||||
"tokio"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wasm-bindgen-0.2.129",
|
||||
"cfg": "cfg(target_arch = \"wasm64\")",
|
||||
"kind": "dev-dependencies",
|
||||
"dependencies": [
|
||||
"paste",
|
||||
"serde_derive"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wasm-bindgen-futures-0.4.79",
|
||||
"cfg": "cfg(all(target_os = \"emscripten\", wasm_bindgen_unstable_tokio))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"tokio"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "web-time-1.1.0",
|
||||
"cfg": "cfg(not(target_family = \"wasm\"))",
|
||||
"kind": "dev-dependencies",
|
||||
"dependencies": [
|
||||
"pollster"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-30.0.1",
|
||||
"cfg": "cfg(not(target_arch = \"wasm32\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"smallvec",
|
||||
"wgpu-core",
|
||||
"wgpu-hal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-30.0.1",
|
||||
"cfg": "cfg(target_os = \"emscripten\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"smallvec",
|
||||
"wgpu-core",
|
||||
"wgpu-hal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"cfg": "cfg(any(windows, target_os = \"linux\", target_os = \"android\", target_os = \"freebsd\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"wgpu-core-deps-windows-linux-android"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"cfg": "cfg(target_os = \"emscripten\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"wgpu-core-deps-emscripten"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-core-30.0.1",
|
||||
"cfg": "cfg(target_vendor = \"apple\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"wgpu-core-deps-apple"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"cfg": "cfg(all(unix, not(target_vendor = \"apple\"), not(target_family = \"wasm\")))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"drm"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"cfg": "cfg(all(windows, not(target_arch = \"aarch64\"), target_env = \"msvc\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"mach-dxcompiler-rs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"cfg": "cfg(not(any(target_arch = \"wasm32\", target_os = \"ios\", target_os = \"visionos\", target_env = \"ohos\")))",
|
||||
"kind": "dev-dependencies",
|
||||
"dependencies": [
|
||||
"glutin",
|
||||
"glutin-winit"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"cfg": "cfg(not(target_arch = \"wasm32\"))",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"ash",
|
||||
"gpu-allocator",
|
||||
"khronos-egl",
|
||||
"libloading",
|
||||
"renderdoc-sys",
|
||||
"smallvec"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"cfg": "cfg(target_os = \"android\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"android_system_properties",
|
||||
"ndk-sys"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"cfg": "cfg(target_os = \"emscripten\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"khronos-egl",
|
||||
"libloading"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"cfg": "cfg(target_vendor = \"apple\")",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"block2",
|
||||
"bytemuck",
|
||||
"objc2",
|
||||
"objc2-core-foundation",
|
||||
"objc2-core-graphics",
|
||||
"objc2-foundation",
|
||||
"objc2-metal",
|
||||
"objc2-quartz-core",
|
||||
"raw-window-metal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"cfg": "cfg(unix)",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"libc",
|
||||
"wayland-sys"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "wgpu-hal-30.0.1",
|
||||
"cfg": "cfg(windows)",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"bit-set",
|
||||
"glutin_wgl_sys",
|
||||
"once_cell",
|
||||
"range-alloc",
|
||||
"windows",
|
||||
"windows-core",
|
||||
"windows-result"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "zerocopy-0.8.61",
|
||||
"cfg": "cfg(any())",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"zerocopy-derive"
|
||||
]
|
||||
},
|
||||
{
|
||||
"crate": "zip-3.0.0",
|
||||
"cfg": "cfg(fuzzing)",
|
||||
"kind": "dependencies",
|
||||
"dependencies": [
|
||||
"arbitrary"
|
||||
]
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1625,8 +1625,3 @@ are never rewritten or removed; corrections are new entries.
|
||||
2026-10-24T04:29Z | Duckworth (Opus 5.5) | row 208 (193d) second review, guards only, on 4a4bef6c1 (sage-3934) | APPROVE (static), no bus change, every hidden control has a broker refusal, grant hint per-grant and self-only, N1 5 s poll (duckworth-0302) |
|
||||
2026-10-24T04:27Z | Goldie (a13dd6d5-5e73-4b7d-8318-02abeff24940) | Row265 / #1770 C2-09b rooms | Goldie owns build, Boyd reviews under sage-3915. New goldie/row265 worktree at ec86f2c84, claim rev3814; room verbs/parser/new tests prepared, no old tests changed. Sage-3932 slot: new parser14/14 and rooms18/18 passed; whole bus in progress before refusal mutants, stop rule active.
|
||||
2026-10-24T04:35Z | Goldie (a13dd6d5-5e73-4b7d-8318-02abeff24940) | Row265 / #1770 verified | First slot stopped at project-runtime import pin. mos-1567 narrowly authorizes pin and pure-source mount correction. sage-3942 rerun: sandbox10/10, parser15/15, rooms18/18, bus957/957, twelve refusal mutants killed/restored SHA71b32ee4, parser15/15 + rooms18/18 again. Slot returned goldie-0034; no further test runs. Boyd reviews RUNNER_FILES alongside rooms; own-branch push/claimant in-review next.
|
||||
2026-10-24 — Gyro — row 310 / #1824 W2 source import and reproducible restricted web build — started on gyro/row310 at d16958bcf; reading pinned S0 and planning, build/test slot gates apply.
|
||||
2026-10-24 — Gyro — row 310 / #1824 W2, sage-3992 scratch full-lock sizing/build measurement — extracted 534 cached registry sources, verified exact S0 target/build package sets, offline namespace release retry succeeded in 397.864805 s at nice19/four jobs; outputs pack to 16,720,159 bytes. No full-lock repo import, commit, push or serving. Packaging remains held for Mos/Jason; row stays in-progress.
|
||||
2026-10-24 — Gyro — row 310 / #1824, sage-4008/4010 223-source measurement — scratch209+14 measured (145,260,334 bytes; source blob pack26,538,894 bytes); extra14 pack1,720,566 bytes; generated scratch lock prunes332 entries with0 added/changed. Build awaits Sage CLEAR after row327 gate. Plain-text results prepared for Gladstone; no crate sources/runtime outputs committed.
|
||||
2026-10-24 — Gyro — row310 / #1824, sage-4014 223-source release measurement — frozen offline scratch build exit0 in380.674036s at nice19/four jobs; WASM0322beb9... differs from full-lockc1c15050.... Slot released to Sage/Bradford. Gladstone14-source notice concerns inventoried and plain-text notice collection supplemented; no source/runtime adoption or row release.
|
||||
2026-10-24 — Gyro — row310 supplemental notice recheck gladstone-0027 — recorded four collection/mapping PASS results and independently matched bundle SHA4d8e2aac...; policy/runtime/adoption gates and Vikunja618 hold unchanged. Tracking-only text update; no build or source change.
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"sourceManifestSha256": "e5a799a6693321be71c4e99080b9f89ba12a304c3092d05839bb85355194fe76",
|
||||
"archive": {
|
||||
"bytes": 10775600,
|
||||
"sha256": "cbda5ea6eef7f36a97a43d4a75f85e07fccbb4f23657d27b4ccbc93e2646ab59"
|
||||
},
|
||||
"counts": {
|
||||
"synsets": 117659,
|
||||
"headwords": 147306,
|
||||
"literalLemmas": 149229
|
||||
},
|
||||
"countMethod": "Union of first-field headwords across four index.* files; cross-checked with lowercased data.* lemmas stripping terminal (a)/(p)/(ip). Literal data lemmas counted without normalization.",
|
||||
"openNote": "Princeton statistics page union 147278 differs by 28; unresolved, accepted in sage-3972.",
|
||||
"tools": {
|
||||
"node": "v26.8.1",
|
||||
"initialImportPython": "3.12.8",
|
||||
"converter": "Node.js >=24, standard library only; JSON UTF-8 LF, no timestamps, no locale sorting",
|
||||
"importer": "Node.js >=24 plus Python 3 stdlib zipfile; local pinned ZIP only"
|
||||
},
|
||||
"inputs": {
|
||||
"editor-data/import-wordnet.mjs": "9b3a668b83d40b5c2659b56c647c40db494d8a9f35fb7ab463b46892ae0d530a",
|
||||
"editor-data/build-thesaurus.mjs": "f1b0b062452fedfb1298f9785f4934046a8b6a0ed8704f5cb82c683d6deb60aa"
|
||||
},
|
||||
"outputs": {
|
||||
"noun.json": {
|
||||
"bytes": 15617486,
|
||||
"sha256": "5294d3f0e6cd7924f5be97d4d6e64b96a9dd8505f216e5c056c3f5b69c0c2dc9"
|
||||
},
|
||||
"verb.json": {
|
||||
"bytes": 2327528,
|
||||
"sha256": "3f99489858d8cbce9996c72135f82325bd2c067a64d2fb8b80dea386b99b6392"
|
||||
},
|
||||
"adj.json": {
|
||||
"bytes": 3319398,
|
||||
"sha256": "9965dbfdc35a11b829fedb19e7b22ab3ca8470f45c5532c1f310810012a23023"
|
||||
},
|
||||
"adv.json": {
|
||||
"bytes": 648351,
|
||||
"sha256": "c6effb7a1502cd3dcd81341cb296e039d238786712c91c30994f2e50ef1e9fcb"
|
||||
},
|
||||
"LICENSE": {
|
||||
"bytes": 1625,
|
||||
"sha256": "7731175a77952e259390b496fab905e57118b8d19ad3a8383c67eee724ff443f"
|
||||
},
|
||||
"NOTICE": {
|
||||
"bytes": 649,
|
||||
"sha256": "508e1a5d132e05ec888a79ec959b68d25203fee0aa3692b0610da7500a7c0251"
|
||||
},
|
||||
"manifest.json": {
|
||||
"bytes": 1623,
|
||||
"sha256": "2c58e1513991ea7505ffd8d9dda6e5e8189f8984a7167b051834eb9306e15c72"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,179 @@
|
||||
// Offline WordNet 3.0 -> JSON. No network or runtime/editor integration.
|
||||
// node editor-data/build-thesaurus.mjs [--out DIR] | --measure (with --expose-gc)
|
||||
import { createHash } from 'node:crypto';
|
||||
import { readFileSync, writeFileSync, mkdirSync, readdirSync, lstatSync } from 'node:fs';
|
||||
import { dirname, join, resolve } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
const root = dirname(dirname(fileURLToPath(import.meta.url)));
|
||||
export const SOURCE = join(root, 'third_party/thesaurus');
|
||||
export const PROVENANCE_SHA256 = 'e5a799a6693321be71c4e99080b9f89ba12a304c3092d05839bb85355194fe76';
|
||||
export const EXPECTED = Object.freeze({ synsets: 117659, headwords: 147306, literalLemmas: 149229 });
|
||||
const POS = { noun: 'n', verb: 'v', adj: 'a', adv: 'r' };
|
||||
const pointerSymbols = new Set('! @ @i ~ ~i #m #s #p %m %s %p = + ;c -c ;r -r ;u -u * > ^ $ & < \\'.split(' '));
|
||||
const sha = b => createHash('sha256').update(b).digest('hex');
|
||||
const json = o => Buffer.from(JSON.stringify(o) + '\n');
|
||||
const normalize = word => word.replace(/\((?:a|p|ip)\)$/, '').toLowerCase();
|
||||
function requireThat(ok, message) { if (!ok) throw new Error(message); }
|
||||
function regular(path) {
|
||||
requireThat(lstatSync(path).isFile(), `source integrity: regular file required: ${path}`);
|
||||
return readFileSync(path);
|
||||
}
|
||||
export function validateSource(sourceRoot = SOURCE) {
|
||||
const provenance = regular(join(sourceRoot, 'PROVENANCE.json'));
|
||||
requireThat(sha(provenance) === PROVENANCE_SHA256, 'provenance integrity mismatch');
|
||||
const m = JSON.parse(provenance);
|
||||
const names = Object.keys(m.files).sort();
|
||||
requireThat(!lstatSync(join(sourceRoot, 'wordnet')).isSymbolicLink(), 'source integrity: symlink directory');
|
||||
requireThat(JSON.stringify(readdirSync(join(sourceRoot, 'wordnet')).sort()) === JSON.stringify(names), 'source inventory mismatch');
|
||||
let total = 0, lookup = 0;
|
||||
for (const name of names) {
|
||||
const b = regular(join(sourceRoot, 'wordnet', name)), pin = m.files[name];
|
||||
requireThat(b.length === pin.bytes && sha(b) === pin.sha256, `source integrity mismatch: ${name}`);
|
||||
total += b.length;
|
||||
if (/^(?:data\.|index\.)|\.exc$/.test(name)) lookup += b.length;
|
||||
}
|
||||
requireThat(total === m.uncompressedBytes && lookup === m.lookupBytes, 'source byte count mismatch');
|
||||
requireThat(regular(join(sourceRoot, 'LICENSE')).equals(regular(join(sourceRoot, 'wordnet/LICENSE'))), 'LICENSE integrity mismatch');
|
||||
const notice = regular(join(sourceRoot, 'NOTICE')).toString('utf8');
|
||||
requireThat(notice.includes('Princeton') && notice.includes('LICENSE'), 'NOTICE missing attribution');
|
||||
return m;
|
||||
}
|
||||
function lines(text, callback) {
|
||||
requireThat(typeof text === 'string' && /^[\x20-\x7e\n]*$/.test(text) && text.endsWith('\n'), 'malformed ASCII source');
|
||||
let offset = 0;
|
||||
for (const line of text.slice(0, -1).split('\n')) {
|
||||
if (!line.startsWith(' ')) { requireThat(line.length > 0, 'malformed blank record'); callback(line, offset); }
|
||||
offset += line.length + 1;
|
||||
}
|
||||
}
|
||||
export function parseData(text, part) {
|
||||
requireThat(Object.hasOwn(POS, part), 'malformed part of speech');
|
||||
const synsets = Object.create(null), pointers = [];
|
||||
lines(text, (line, offset) => {
|
||||
const fail = () => { throw new Error(`malformed data.${part} at byte ${offset}`); };
|
||||
const bar = line.indexOf('|'); if (bar < 0) fail();
|
||||
const f = line.slice(0, bar).trim().split(/ +/); let i = 0;
|
||||
const take = re => { const v = f[i++]; if (!re.test(v ?? '')) fail(); return v; };
|
||||
const id = take(/^\d{8}$/); if (+id !== offset || Object.hasOwn(synsets, id)) fail();
|
||||
const lexFile = +take(/^\d{2}$/); if (lexFile > 44) fail();
|
||||
const pos = take(/^[nvasr]$/); if (pos !== POS[part] && !(part === 'adj' && pos === 's')) fail();
|
||||
const count = parseInt(take(/^[0-9a-f]{2}$/), 16); if (!count) fail();
|
||||
const lemmas = [];
|
||||
for (let n = 0; n < count; n++) { lemmas.push(take(/^\S+$/)); take(/^[0-9a-f]{1,2}$/); }
|
||||
const pcount = +take(/^\d{3}$/);
|
||||
for (let n = 0; n < pcount; n++) {
|
||||
const symbol = take(/^\S+$/); if (!pointerSymbols.has(symbol)) fail();
|
||||
const target = take(/^\d{8}$/), targetPos = take(/^[nvar]$/), words = take(/^[0-9a-f]{4}$/);
|
||||
const from = parseInt(words.slice(0, 2), 16), to = parseInt(words.slice(2), 16);
|
||||
if (from > count || (from === 0) !== (to === 0)) fail();
|
||||
pointers.push({ target, targetPos, to });
|
||||
}
|
||||
if (part === 'verb') {
|
||||
const frames = +take(/^\d{2}$/);
|
||||
for (let n = 0; n < frames; n++) {
|
||||
take(/^\+$/); const frame = +take(/^\d{2}$/), word = parseInt(take(/^[0-9a-f]{2}$/), 16);
|
||||
if (frame < 1 || frame > 35 || word > count) fail();
|
||||
}
|
||||
}
|
||||
const gloss = line.slice(bar + 1).trim(); if (i !== f.length || !gloss) fail();
|
||||
synsets[id] = { pos, lemmas, gloss };
|
||||
});
|
||||
return { synsets, pointers };
|
||||
}
|
||||
export function parseIndex(text, part, synsets) {
|
||||
const index = Object.create(null);
|
||||
lines(text, line => {
|
||||
const f = line.trim().split(/ +/), word = f[0], count = Number(f[2]), pcount = Number(f[3]);
|
||||
const fail = () => { throw new Error(`malformed index.${part}: ${word}`); };
|
||||
if (f[1] !== POS[part] || word !== word.toLowerCase() || Object.hasOwn(index, word)
|
||||
|| !/^\d+$/.test(f[2] ?? '') || !/^\d+$/.test(f[3] ?? '') || count < 1) fail();
|
||||
if (f.length !== 6 + pcount + count || f.slice(4, 4 + pcount).some(p => !pointerSymbols.has(p) && ![';', '-'].includes(p))) fail();
|
||||
const senses = f.slice(6 + pcount);
|
||||
if (+f[4 + pcount] !== count || !/^\d+$/.test(f[5 + pcount]) || +f[5 + pcount] > count || new Set(senses).size !== count) fail();
|
||||
for (const id of senses) {
|
||||
if (!/^\d{8}$/.test(id) || !Object.hasOwn(synsets, id) || !synsets[id].lemmas.some(w => normalize(w) === word)) fail();
|
||||
}
|
||||
index[word] = senses;
|
||||
});
|
||||
// Check the reverse direction too: no lemma/sense silently omitted by the index.
|
||||
for (const [id, s] of Object.entries(synsets)) for (const w of s.lemmas) {
|
||||
requireThat(index[normalize(w)]?.includes(id), `malformed index.${part}: missing ${w}/${id}`);
|
||||
}
|
||||
return index;
|
||||
}
|
||||
function parseExceptions(text, part) {
|
||||
const exceptions = Object.create(null);
|
||||
lines(text, line => {
|
||||
const [word, ...forms] = line.trim().split(/ +/);
|
||||
requireThat(forms.length > 0, `malformed ${part}.exc: ${word}`);
|
||||
// Source exception files can repeat an inflection; preserve all listed bases in order.
|
||||
exceptions[word] = [...new Set([...(exceptions[word] ?? []), ...forms])];
|
||||
});
|
||||
return exceptions;
|
||||
}
|
||||
export function build({ sourceRoot = SOURCE, outDir = join(root, 'src/public/thesaurus'), buildJson = join(outDir, 'BUILD.json') } = {}) {
|
||||
const provenance = validateSource(sourceRoot), parts = {}, parsed = {}, literal = new Set(), normalized = new Set(), headwords = new Set();
|
||||
let synsets = 0;
|
||||
for (const part of Object.keys(POS)) {
|
||||
parsed[part] = parseData(readFileSync(join(sourceRoot, 'wordnet', `data.${part}`), 'utf8'), part);
|
||||
const senses = parsed[part].synsets;
|
||||
const index = parseIndex(readFileSync(join(sourceRoot, 'wordnet', `index.${part}`), 'utf8'), part, senses);
|
||||
parts[part] = { schema: 1, part, synsets: senses, index, exceptions: parseExceptions(readFileSync(join(sourceRoot, 'wordnet', `${part}.exc`), 'utf8'), part) };
|
||||
synsets += Object.keys(senses).length;
|
||||
for (const s of Object.values(senses)) for (const w of s.lemmas) { literal.add(w); normalized.add(normalize(w)); }
|
||||
for (const w of Object.keys(index)) headwords.add(w);
|
||||
}
|
||||
const byPos = Object.fromEntries(Object.entries(POS).map(([p, code]) => [code, parsed[p].synsets]));
|
||||
for (const { pointers } of Object.values(parsed)) for (const p of pointers) {
|
||||
const target = byPos[p.targetPos][p.target];
|
||||
requireThat(target && p.to <= target.lemmas.length, `malformed pointer target: ${p.targetPos}/${p.target}`);
|
||||
}
|
||||
const counts = { synsets, headwords: headwords.size, literalLemmas: literal.size };
|
||||
requireThat(Object.keys(EXPECTED).every(k => counts[k] === EXPECTED[k]), `unexpected counts: ${JSON.stringify(counts)}`);
|
||||
requireThat(normalized.size === headwords.size && [...normalized].every(w => headwords.has(w)), 'normalized data/index headword mismatch');
|
||||
const outputs = {}, bytes = {};
|
||||
for (const [part, data] of Object.entries(parts)) bytes[`${part}.json`] = json(data);
|
||||
bytes.LICENSE = regular(join(sourceRoot, 'LICENSE'));
|
||||
bytes.NOTICE = regular(join(sourceRoot, 'NOTICE'));
|
||||
const countMethod = 'Union of first-field headwords across four index.* files; cross-checked with lowercased data.* lemmas stripping terminal (a)/(p)/(ip). Literal data lemmas counted without normalization.';
|
||||
bytes['manifest.json'] = json({ schema: 1, source: 'Princeton WordNet 3.0', archive: provenance.archive, counts, countMethod,
|
||||
openNote: '28 more union headwords than Princeton statistics page figure 147278; Sage ruling sage-3972 accepts measured 147306 for this archive.',
|
||||
defaults: { maxSenses: 8, maxSynonyms: 20 },
|
||||
format: 'POS shards: index maps lowercase underscore headwords to ordered synset offsets; synsets map offsets to {pos,lemmas,gloss}; exceptions map inflections to bases. Offsets are scoped to their POS shard; s is adjective satellite. Lemmas retain case, underscores and adjective markers; glosses are plain untrusted text. Defaults are consumer hints, not build truncation.',
|
||||
files: Object.fromEntries(Object.entries(bytes).map(([n, b]) => [n, { bytes: b.length, sha256: sha(b) }])) });
|
||||
for (const [n, b] of Object.entries(bytes)) outputs[n] = { bytes: b.length, sha256: sha(b) };
|
||||
const info = { schema: 1, sourceManifestSha256: PROVENANCE_SHA256, archive: provenance.archive, counts, countMethod,
|
||||
openNote: 'Princeton statistics page union 147278 differs by 28; unresolved, accepted in sage-3972.',
|
||||
tools: { node: process.version, initialImportPython: '3.12.8', converter: 'Node.js >=24, standard library only; JSON UTF-8 LF, no timestamps, no locale sorting', importer: 'Node.js >=24 plus Python 3 stdlib zipfile; local pinned ZIP only' },
|
||||
inputs: Object.fromEntries(['editor-data/import-wordnet.mjs', 'editor-data/build-thesaurus.mjs'].map(n => [n, sha(readFileSync(join(root, n)))])), outputs };
|
||||
// No output is touched until all integrity, grammar, references and counts pass.
|
||||
mkdirSync(outDir, { recursive: true });
|
||||
for (const [n, b] of Object.entries(bytes)) writeFileSync(join(outDir, n), b);
|
||||
mkdirSync(dirname(buildJson), { recursive: true });
|
||||
writeFileSync(buildJson, JSON.stringify(info, null, 2) + '\n');
|
||||
return info;
|
||||
}
|
||||
export function measure() {
|
||||
requireThat(typeof global.gc === 'function', 'measurement requires --expose-gc');
|
||||
const files = Object.keys(POS).map(p => `${p}.json`);
|
||||
global.gc(); const before = process.memoryUsage().heapUsed;
|
||||
const data = files.map(n => JSON.parse(readFileSync(join(root, 'src/public/thesaurus', n), 'utf8')));
|
||||
const parsePeak = process.memoryUsage().heapUsed;
|
||||
global.gc(); const after = process.memoryUsage().heapUsed;
|
||||
// Keep every parsed graph live across GC and expose a checkable count.
|
||||
const senses = data.reduce((n, p) => n + Object.keys(p.synsets).length, 0);
|
||||
return { runtime: process.version, platform: process.platform, arch: process.arch, files,
|
||||
method: 'Fresh Node --expose-gc process; GC before/after parsing all four JSON shards; heapUsed delta. parseHeapBytes is a sampled post-parse value, not peak instrumentation; not a browser measurement.',
|
||||
baselineHeapBytes: before, retainedHeapBytes: after - before, parseHeapBytes: parsePeak - before, synsets: senses };
|
||||
}
|
||||
if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
||||
try {
|
||||
const args = process.argv.slice(2);
|
||||
if (args.length === 1 && args[0] === '--measure') console.log(JSON.stringify(measure(), null, 2));
|
||||
else {
|
||||
requireThat(args.length === 0 || (args.length === 2 && args[0] === '--out'), 'usage: build-thesaurus.mjs [--out DIR] | --measure');
|
||||
const info = build(args.length ? { outDir: resolve(args[1]) } : { buildJson: join(root, 'editor-data/BUILD.json') });
|
||||
console.log(JSON.stringify(info, null, 2));
|
||||
}
|
||||
} catch (e) { console.error(e.message); process.exitCode = 1; }
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
// Offline import only: node editor-data/import-wordnet.mjs /path/to/pinned/wordnet.zip [DEST]
|
||||
// Default DEST is third_party/thesaurus/wordnet, which must not already exist.
|
||||
import { createHash } from 'node:crypto';
|
||||
import { readFileSync, existsSync, mkdirSync, writeFileSync, rmSync } from 'node:fs';
|
||||
import { join, resolve } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { spawnSync } from 'node:child_process';
|
||||
import { SOURCE, PROVENANCE_SHA256 } from './build-thesaurus.mjs';
|
||||
export function importWordnet(archive, destination = join(SOURCE, 'wordnet')) {
|
||||
const bytes = readFileSync(archive);
|
||||
const hash = b => createHash('sha256').update(b).digest('hex');
|
||||
if (bytes.length !== 10775600 || hash(bytes) !== 'cbda5ea6eef7f36a97a43d4a75f85e07fccbb4f23657d27b4ccbc93e2646ab59') throw new Error('archive integrity mismatch; stop and report to Sage');
|
||||
const manifest = readFileSync(join(SOURCE, 'PROVENANCE.json'));
|
||||
if (hash(manifest) !== PROVENANCE_SHA256) throw new Error('provenance integrity mismatch');
|
||||
if (existsSync(destination)) throw new Error('destination already exists; refusing overwrite');
|
||||
// Pass the verified bytes through stdin, avoiding an archive path replacement race.
|
||||
// Validate every entry and its hash before returning any extracted text to Node.
|
||||
const script = `import io,zipfile,sys,json,hashlib
|
||||
m=json.loads(sys.argv[1]); z=zipfile.ZipFile(io.BytesIO(sys.stdin.buffer.read()))
|
||||
entries=[i for i in z.infolist() if not i.is_dir()]
|
||||
expected={'wordnet/'+n for n in m['files']}
|
||||
assert len(entries)==len(expected) and {i.filename for i in entries}==expected, 'archive inventory mismatch'
|
||||
out={}
|
||||
for i in entries:
|
||||
n=i.filename.removeprefix('wordnet/'); pin=m['files'][n]
|
||||
assert i.file_size==pin['bytes'], 'entry size mismatch'
|
||||
b=z.read(i)
|
||||
assert len(b)==pin['bytes'] and hashlib.sha256(b).hexdigest()==pin['sha256'], 'entry hash mismatch'
|
||||
out[n]=b.decode('ascii')
|
||||
print(json.dumps(out))`;
|
||||
const result = spawnSync('python3', ['-c', script, manifest.toString('utf8')], { input: bytes, maxBuffer: 50 * 1024 * 1024 });
|
||||
if (result.error || result.status !== 0) throw new Error(`archive extraction refused: ${result.error?.message ?? result.stderr.toString('utf8')}`);
|
||||
const files = JSON.parse(result.stdout.toString('utf8'));
|
||||
// Exclusive mkdir is the write boundary, also rejecting a concurrent creator.
|
||||
mkdirSync(destination);
|
||||
try { for (const [name, text] of Object.entries(files)) writeFileSync(join(destination, name), text, { encoding: 'ascii', flag: 'wx' }); }
|
||||
catch (e) { rmSync(destination, { recursive: true, force: true }); throw e; }
|
||||
return { files: Object.keys(files).length, bytes: Object.values(files).reduce((n, s) => n + s.length, 0) };
|
||||
}
|
||||
if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
||||
try {
|
||||
if (process.argv.length < 3 || process.argv.length > 4) throw new Error('usage: import-wordnet.mjs ARCHIVE [DEST]');
|
||||
console.log(JSON.stringify(importWordnet(resolve(process.argv[2]), process.argv[3] ? resolve(process.argv[3]) : undefined)));
|
||||
} catch (e) { console.error(e.message); process.exitCode = 1; }
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
WordNet Release 3.0
|
||||
|
||||
This software and database is being provided to you, the LICENSEE, by
|
||||
Princeton University under the following license. By obtaining, using
|
||||
and/or copying this software and database, you agree that you have
|
||||
read, understood, and will comply with these terms and conditions.:
|
||||
|
||||
Permission to use, copy, modify and distribute this software and
|
||||
database and its documentation for any purpose and without fee or
|
||||
royalty is hereby granted, provided that you agree to comply with
|
||||
the following copyright notice and statements, including the disclaimer,
|
||||
and that the same appear on ALL copies of the software, database and
|
||||
documentation, including modifications that you make for internal
|
||||
use or for distribution.
|
||||
|
||||
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved.
|
||||
|
||||
THIS SOFTWARE AND DATABASE IS PROVIDED "AS IS" AND PRINCETON
|
||||
UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
|
||||
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PRINCETON
|
||||
UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES OF MERCHANT-
|
||||
ABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE
|
||||
OF THE LICENSED SOFTWARE, DATABASE OR DOCUMENTATION WILL NOT
|
||||
INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR
|
||||
OTHER RIGHTS.
|
||||
|
||||
The name of Princeton University or Princeton may not be used in
|
||||
advertising or publicity pertaining to distribution of the software
|
||||
and/or database. Title to copyright in this software, database and
|
||||
any associated documentation shall at all times remain with
|
||||
Princeton University and LICENSEE agrees to preserve same.
|
||||
@@ -0,0 +1,11 @@
|
||||
Princeton WordNet 3.0
|
||||
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved.
|
||||
|
||||
Original database text is retained unmodified in wordnet/.
|
||||
Derived JSON is produced by editor-data/build-thesaurus.mjs, with underscores
|
||||
and adjective position markers retained in sense lemmas, and a lowercase index.
|
||||
This database and derived data remain subject to the Princeton terms and
|
||||
disclaimer in LICENSE. They are not licensed under MIT or Apache.
|
||||
|
||||
Pinned NLTK distribution mirror (not a comparison with a Princeton archive):
|
||||
https://raw.githubusercontent.com/nltk/nltk_data/96f9b3252457a2b97e52aec64c3dfceeb5c312d5/packages/corpora/wordnet.zip
|
||||
@@ -0,0 +1 @@
|
||||
{"schema":1,"part":"adj","synsets":{"00001740":{"pos":"a","lemmas":["able"],"gloss":"(usually followed by `to') having the necessary means or skill or know-how or authority to do something; \"able to swim\"; \"she was able to program her computer\"; \"we were at last able to buy a car\"; \"able to get a grant for the project\""},"00002098":{"pos":"a","lemmas":["unable"],"gloss":"(usually followed by `to') not having the necessary means or skill or know-how; \"unable to get to town without a car\"; \"unable to obtain funds\""},"00002312":{"pos":"a","lemmas":["abaxial","dorsal"],"gloss":"facing away from the axis of an organ or organism; \"the abaxial surface of a leaf is the underside or side facing away from the stem\""},"00002527":{"pos":"a","lemmas":["adaxial","ventral"],"gloss":"nearest to or facing toward the axis of an organ or organism; \"the upper side of a leaf is known as the adaxial surface\""},"00002730":{"pos":"a","lemmas":["acroscopic"],"gloss":"facing or on the side toward the apex"},"00002843":{"pos":"a","lemmas":["basiscopic"],"gloss":"facing or on the side toward the base"},"00002956":{"pos":"a","lemmas":["abducent","abducting"],"gloss":"especially of muscles; drawing away from the midline of the body or from an adjacent part"},"00003131":{"pos":"a","lemmas":["adducent","adductive","adducting"],"gloss":"especially of muscles; bringing together or drawing toward the midline of the body or toward an adjacent part"},"00003356":{"pos":"a","lemmas":["nascent"],"gloss":"being born or beginning; \"the nascent chicks\"; \"a nascent insurgency\""},"00003553":{"pos":"s","lemmas":["emergent","emerging"],"gloss":"coming into existence; \"an emergent republic\""},"00003700":{"pos":"s","lemmas":["dissilient"],"gloss":"bursting open with force, as do some ripe seed vessels"},"00003829":{"pos":"s","lemmas":["parturient"],"gloss":"giving birth; \"a parturient heifer\""},"00003939":{"pos":"a","lemmas":["dying"],"gloss":"in or associated with the process of passing from life or ceasing to be; \"a dying man\"; \"his dying wish\"; \"a dying fire\"; \"a dying civilization\""},"00004171":{"pos":"s","lemmas":["moribund"],"gloss":"being on the point of death; breathing your last; \"a moribund patient\""},"00004296":{"pos":"s","lemmas":["last"],"gloss":"occurring at the time of death; \"his last words\"; \"the last rites\""},"00004413":{"pos":"a","lemmas":["abridged"],"gloss":"(used of texts) shortened by condensing or rewriting; \"an abridged version\""},"00004615":{"pos":"s","lemmas":["cut","shortened"],"gloss":"with parts removed; \"the drastically cut film\""},"00004723":{"pos":"s","lemmas":["half-length"],"gloss":"abridged to half its original length"},"00004817":{"pos":"s","lemmas":["potted"],"gloss":"(British informal) summarized or abridged; \"a potted version of a novel\""},"00004980":{"pos":"a","lemmas":["unabridged"],"gloss":"(used of texts) not shortened; \"an unabridged novel\""},"00005107":{"pos":"s","lemmas":["full-length","uncut"],"gloss":"complete; \"the full-length play\""},"00005205":{"pos":"a","lemmas":["absolute"],"gloss":"perfect or complete or pure; \"absolute loyalty\"; \"absolute silence\"; \"absolute truth\"; \"absolute alcohol\""},"00005473":{"pos":"s","lemmas":["direct"],"gloss":"lacking compromising or mitigating elements; exact; \"the direct opposite\""},"00005599":{"pos":"s","lemmas":["implicit","unquestioning"],"gloss":"being without doubt or reserve; \"implicit trust\""},"00005718":{"pos":"s","lemmas":["infinite"],"gloss":"total and all-embracing; \"God's infinite wisdom\""},"00005839":{"pos":"s","lemmas":["living"],"gloss":"(informal) absolute; \"she is a living doll\"; \"scared the living daylights out of them\"; \"beat the living hell out of him\""},"00006032":{"pos":"a","lemmas":["relative","comparative"],"gloss":"estimated by comparison; not absolute or complete; \"a relative stranger\""},"00006245":{"pos":"s","lemmas":["relational"],"gloss":"having a relation or being related"},"00006336":{"pos":"a","lemmas":["absorbent","absorptive"],"gloss":"having power or capacity or tendency to absorb or soak up something (liquids or energy etc.); \"as absorbent as a sponge\""},"00006777":{"pos":"s","lemmas":["absorbefacient","sorbefacient"],"gloss":"inducing or promoting absorption"},"00006885":{"pos":"s","lemmas":["assimilating","assimilative","assimilatory"],"gloss":"capable of taking (gas, light, or liquids) into a solution; \"an assimilative substance"},"00007096":{"pos":"s","lemmas":["hygroscopic"],"gloss":"absorbing moisture (as from the air)"},"00007208":{"pos":"s","lemmas":["receptive"],"gloss":"able to absorb liquid (not repellent); \"the paper is ink-receptive\""},"00007331":{"pos":"s","lemmas":["shock-absorbent"],"gloss":"having the capacity to absorb the energy of an impact; \"the material absorbs shock and is used for shock-absorbent insoles\""},"00007516":{"pos":"s","lemmas":["spongy","spongelike"],"gloss":"like a sponge in being able to absorb liquids and yield it back wheLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"schema":1,"part":"adv","synsets":{"00001740":{"pos":"r","lemmas":["a_cappella"],"gloss":"without musical accompaniment; \"they performed a cappella\""},"00001837":{"pos":"r","lemmas":["AD","A.D.","anno_Domini"],"gloss":"in the Christian era; used before dates after the supposed year Christ was born; \"in AD 200\""},"00001981":{"pos":"r","lemmas":["CE","C.E.","Common_Era"],"gloss":"of the period coinciding with the Christian era; preferred by some writers who are not Christians; \"in 200 CE\""},"00002142":{"pos":"r","lemmas":["BC","B.C.","before_Christ"],"gloss":"before the Christian era; used following dates before the supposed year Christ was born; \"in 200 BC\""},"00002296":{"pos":"r","lemmas":["BCE","B.C.E."],"gloss":"of the period before the Common Era; preferred by some writers who are not Christians; \"in 200 BCE\""},"00002436":{"pos":"r","lemmas":["horseback","ahorse","ahorseback"],"gloss":"on the back of a horse; \"he rode horseback to town\"; \"managed to escape ahorse\"; \"policeman patrolled the streets ahorseback\""},"00002621":{"pos":"r","lemmas":["barely","hardly","just","scarcely","scarce"],"gloss":"only a very short time before; \"they could barely hear the speaker\"; \"we hardly knew them\"; \"just missed being hit\"; \"had scarcely rung the bell when the door flew open\"; \"would have scarce arrived before she would have found some excuse to leave\"- W.B.Yeats"},"00002950":{"pos":"r","lemmas":["just"],"gloss":"exactly at this moment or the moment described; \"we've just finished painting the walls, so don't touch them\";"},"00003093":{"pos":"r","lemmas":["hardly","scarcely"],"gloss":"almost not; \"he hardly ever goes fishing\"; \"he was hardly more than sixteen years old\"; \"they scarcely ever used the emergency generator\""},"00003294":{"pos":"r","lemmas":["anisotropically"],"gloss":"in an anisotropic manner"},"00003380":{"pos":"r","lemmas":["annoyingly"],"gloss":"in an annoying manner or to an annoying degree"},"00003483":{"pos":"r","lemmas":["basically","fundamentally","essentially"],"gloss":"in essence; at bottom or by one's (or its) very nature; \"He is basically dishonest\"; \"the argument was essentially a technical one\"; \"for all his bluster he is in essence a shy person\""},"00003771":{"pos":"r","lemmas":["blessedly"],"gloss":"in a blessed manner"},"00003846":{"pos":"r","lemmas":["boiling"],"gloss":"extremely; \"boiling mad\""},"00003925":{"pos":"r","lemmas":["enviably"],"gloss":"in an enviable manner; \"she was enviably fluent in French\""},"00004038":{"pos":"r","lemmas":["pointedly"],"gloss":"in such a manner as to make something clearly evident; \"he pointedly ignored the question\""},"00004184":{"pos":"r","lemmas":["negatively"],"gloss":"in a negative way; \"he was negatively inclined\""},"00004288":{"pos":"r","lemmas":["negatively"],"gloss":"in a harmful manner; \"he was negatively affected\""},"00004394":{"pos":"r","lemmas":["kindly"],"gloss":"in a kind manner or out of kindness; \"He spoke kindly to the boy\"; \"she kindly overlooked the mistake\""},"00004567":{"pos":"r","lemmas":["unkindly"],"gloss":"in an unkind manner or with unkindness; \"The teacher treats the children unkindly\""},"00004722":{"pos":"r","lemmas":["merely","simply","just","only","but"],"gloss":"and nothing more; \"I was merely asking\"; \"it is simply a matter of time\"; \"just a scratch\"; \"he was only a child\"; \"hopes that last but a moment\""},"00004967":{"pos":"r","lemmas":["simply"],"gloss":"absolutely; altogether; really; \"we are simply broke\""},"00005055":{"pos":"r","lemmas":["plainly","simply"],"gloss":"in a simple manner; without extravagance or embellishment; \"she was dressed plainly\"; \"they lived very simply\""},"00005210":{"pos":"r","lemmas":["anciently"],"gloss":"in ancient times; long ago; \"a concern with what may have happened anciently\""},"00005343":{"pos":"r","lemmas":["arguably"],"gloss":"as can be shown by argument; \"she is arguably the best\""},"00005453":{"pos":"r","lemmas":["unabashedly"],"gloss":"in an unabashed manner; \"unabashedly, he asked for more\""},"00005567":{"pos":"r","lemmas":["automatically"],"gloss":"in a reflex manner; \"he answered automatically\""},"00005674":{"pos":"r","lemmas":["alarmingly"],"gloss":"in an alarming manner; \"It grew alarmingly fast\""},"00005779":{"pos":"r","lemmas":["vastly","immensely"],"gloss":"to an exceedingly great extent or degree; \"He had vastly overestimated his resources\"; \"was immensely more important to the project as a scientist than as an administrator\""},"00006034":{"pos":"r","lemmas":["grossly"],"gloss":"in a gross manner"},"00006105":{"pos":"r","lemmas":["largely","mostly","for_the_most_part"],"gloss":"in large part; mainly or chiefly; \"These accounts are largely inactive\""},"00006259":{"pos":"r","lemmas":["significantly"],"gloss":"in a significant manner; \"our budget will be significantly affected by these new cuts\""},"00006423":{"pos":"r","lemmas":["insignificantly"],"gloss":"not to a significant degreeLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"schema":1,"source":"Princeton WordNet 3.0","archive":{"bytes":10775600,"sha256":"cbda5ea6eef7f36a97a43d4a75f85e07fccbb4f23657d27b4ccbc93e2646ab59"},"counts":{"synsets":117659,"headwords":147306,"literalLemmas":149229},"countMethod":"Union of first-field headwords across four index.* files; cross-checked with lowercased data.* lemmas stripping terminal (a)/(p)/(ip). Literal data lemmas counted without normalization.","openNote":"28 more union headwords than Princeton statistics page figure 147278; Sage ruling sage-3972 accepts measured 147306 for this archive.","defaults":{"maxSenses":8,"maxSynonyms":20},"format":"POS shards: index maps lowercase underscore headwords to ordered synset offsets; synsets map offsets to {pos,lemmas,gloss}; exceptions map inflections to bases. Offsets are scoped to their POS shard; s is adjective satellite. Lemmas retain case, underscores and adjective markers; glosses are plain untrusted text. Defaults are consumer hints, not build truncation.","files":{"noun.json":{"bytes":15617486,"sha256":"5294d3f0e6cd7924f5be97d4d6e64b96a9dd8505f216e5c056c3f5b69c0c2dc9"},"verb.json":{"bytes":2327528,"sha256":"3f99489858d8cbce9996c72135f82325bd2c067a64d2fb8b80dea386b99b6392"},"adj.json":{"bytes":3319398,"sha256":"9965dbfdc35a11b829fedb19e7b22ab3ca8470f45c5532c1f310810012a23023"},"adv.json":{"bytes":648351,"sha256":"c6effb7a1502cd3dcd81341cb296e039d238786712c91c30994f2e50ef1e9fcb"},"LICENSE":{"bytes":1625,"sha256":"7731175a77952e259390b496fab905e57118b8d19ad3a8383c67eee724ff443f"},"NOTICE":{"bytes":649,"sha256":"508e1a5d132e05ec888a79ec959b68d25203fee0aa3692b0610da7500a7c0251"}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"schema":1,"part":"noun","synsets":{"10000007":{"pos":"n","lemmas":["defecator","voider","shitter"],"gloss":"a person who defecates"},"10000158":{"pos":"n","lemmas":["defense_attorney","defense_lawyer"],"gloss":"the lawyer representing the defendant"},"10000294":{"pos":"n","lemmas":["defense_contractor"],"gloss":"a contractor concerned with the development and manufacture of systems of defense"},"10000459":{"pos":"n","lemmas":["deist","freethinker"],"gloss":"a person who believes that God created the universe and then abandoned it"},"10000616":{"pos":"n","lemmas":["delayer"],"gloss":"a person who delays; to put off until later or cause to be late"},"10000787":{"pos":"n","lemmas":["delegate"],"gloss":"a person appointed or elected to represent others"},"10000945":{"pos":"n","lemmas":["delinquent","juvenile_delinquent"],"gloss":"a young offender"},"10001058":{"pos":"n","lemmas":["deliverer"],"gloss":"a person who gives up or transfers money or goods"},"10001217":{"pos":"n","lemmas":["deliveryman","delivery_boy","deliverer"],"gloss":"someone employed to make deliveries"},"10001481":{"pos":"n","lemmas":["demagogue","demagog","rabble-rouser"],"gloss":"a political leader who seeks support by appealing to popular passions and prejudices"},"10001647":{"pos":"n","lemmas":["demander"],"gloss":"a person who makes demands"},"10001764":{"pos":"n","lemmas":["demigod","superman","Ubermensch"],"gloss":"a person with great powers and abilities"},"10001882":{"pos":"n","lemmas":["demimondaine"],"gloss":"a woman whose sexual promiscuity places her outside respectable society"},"10002031":{"pos":"n","lemmas":["democrat","populist"],"gloss":"an advocate of democratic principles"},"10002151":{"pos":"n","lemmas":["Democrat"],"gloss":"a member of the Democratic Party"},"10002257":{"pos":"n","lemmas":["demographer","demographist","population_scientist"],"gloss":"a scientist who studies the growth and density of populations and their vital statistics"},"10002477":{"pos":"n","lemmas":["demon"],"gloss":"someone extremely diligent or skillful; \"he worked like a demon to finish the job on time\"; \"she's a demon at math\""},"10002644":{"pos":"n","lemmas":["demoniac"],"gloss":"someone who acts as if possessed by a demon"},"10002760":{"pos":"n","lemmas":["demonstrator","protester"],"gloss":"someone who participates in a public display of group feeling"},"10002982":{"pos":"n","lemmas":["demonstrator","sales_demonstrator"],"gloss":"someone who demonstrates an article to a prospective buyer"},"10003120":{"pos":"n","lemmas":["demonstrator"],"gloss":"a teacher or teacher's assistant who demonstrates the principles that are being taught"},"10003283":{"pos":"n","lemmas":["denier"],"gloss":"one who denies"},"10003476":{"pos":"n","lemmas":["den_mother"],"gloss":"a woman who supervises a den of Cub Scouts"},"10003575":{"pos":"n","lemmas":["den_mother"],"gloss":"someone who plays the role of a den mother; \"he serves as den mother to all the freshmen in this dormitory\"; \"she's the den mother to new secretaries\""},"10003782":{"pos":"n","lemmas":["dental_assistant"],"gloss":"an assistant to a dentist"},"10003870":{"pos":"n","lemmas":["dental_hygienist"],"gloss":"someone trained to provide preventive dental service (cleaning teeth or taking x-rays)"},"10004019":{"pos":"n","lemmas":["dental_technician","denturist"],"gloss":"someone who makes dental appliances (bridges and dentures)"},"10004171":{"pos":"n","lemmas":["dental_surgeon"],"gloss":"a dentist qualified to perform surgical procedures"},"10004282":{"pos":"n","lemmas":["dentist","tooth_doctor","dental_practitioner"],"gloss":"a person qualified to practice dentistry"},"10004539":{"pos":"n","lemmas":["departer","leaver","goer"],"gloss":"someone who leaves"},"10004718":{"pos":"n","lemmas":["department_head"],"gloss":"the head of a department"},"10004804":{"pos":"n","lemmas":["dependant","dependent"],"gloss":"a person who relies on another person for support (especially financial support)"},"10005006":{"pos":"n","lemmas":["depositor"],"gloss":"a person who has deposited money in a bank or similar institution"},"10005163":{"pos":"n","lemmas":["depressive"],"gloss":"someone suffering psychological depression"},"10005280":{"pos":"n","lemmas":["deputy","lieutenant"],"gloss":"an assistant with power to act when his superior is absent"},"10005548":{"pos":"n","lemmas":["deputy","deputy_sheriff"],"gloss":"someone authorized to exercise the powers of sheriff in emergencies"},"10005721":{"pos":"n","lemmas":["deputy","surrogate"],"gloss":"a person appointed to represent or act on behalf of others"},"10005934":{"pos":"n","lemmas":["deputy"],"gloss":"a member of the lower chamber of a legislative assembly (such as in France)"},"10006081":{"pos":"n","lemmas":["derelict"],"gloss":"a person without a home, job, or property"},"10006177":{"pos":"n","lemmas":["dermatologist","skin_doctor"],"gloss":"a doctor who specializes in the physiology and pathology of the skin"},"10006337":{"pos":"n","lemmas":["dervish"],"gloLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"schema":1,"part":"verb","synsets":{"00001740":{"pos":"v","lemmas":["breathe","take_a_breath","respire","suspire"],"gloss":"draw air into, and expel out of, the lungs; \"I can breathe better when the air is clean\"; \"The patient is respiring\""},"00002325":{"pos":"v","lemmas":["respire"],"gloss":"undergo the biomedical and metabolic processes of respiration by taking up oxygen and producing carbon monoxide"},"00002573":{"pos":"v","lemmas":["respire"],"gloss":"breathe easily again, as after exertion or anxiety"},"00002724":{"pos":"v","lemmas":["choke"],"gloss":"breathe with great difficulty, as when experiencing a strong emotion; \"She choked with emotion when she spoke about her deceased husband\""},"00002942":{"pos":"v","lemmas":["hyperventilate"],"gloss":"breathe excessively hard and fast; \"The mountain climber started to hyperventilate\""},"00003133":{"pos":"v","lemmas":["hyperventilate"],"gloss":"produce hyperventilation in; \"The nurses had to hyperventilate the patient\""},"00003316":{"pos":"v","lemmas":["aspirate"],"gloss":"suck in (air)"},"00003431":{"pos":"v","lemmas":["burp","bubble","belch","eruct"],"gloss":"expel gas from the stomach; \"In China it is polite to burp at the table\""},"00003662":{"pos":"v","lemmas":["force_out"],"gloss":"emit or cause to move with force of effort; \"force out the air\"; \"force out the splinter\""},"00003826":{"pos":"v","lemmas":["hiccup","hiccough"],"gloss":"breathe spasmodically, and make a sound; \"When you have to hiccup, drink a glass of cold water\""},"00004032":{"pos":"v","lemmas":["sigh","suspire"],"gloss":"heave or utter a sigh; breathe deeply and heavily; \"She sighed sadly\""},"00004227":{"pos":"v","lemmas":["exhale","expire","breathe_out"],"gloss":"expel air; \"Exhale when you lift the weight\""},"00004492":{"pos":"v","lemmas":["hold"],"gloss":"keep from exhaling or expelling; \"hold your breath\""},"00004605":{"pos":"v","lemmas":["exhale","give_forth","emanate"],"gloss":"give out (breath or an odor); \"The chimney exhales a thick smoke\""},"00004819":{"pos":"v","lemmas":["sneeze"],"gloss":"exhale spasmodically, as when an irritant entered one's nose; \"Pepper makes me sneeze\""},"00005041":{"pos":"v","lemmas":["inhale","inspire","breathe_in"],"gloss":"draw in (air); \"Inhale deeply\"; \"inhale the fresh mountain air\"; \"The patient has trouble inspiring\"; \"The lung cancer patient cannot inspire air very well\""},"00005526":{"pos":"v","lemmas":["pant","puff","gasp","heave"],"gloss":"breathe noisily, as when one is exhausted; \"The runners reached the finish line, panting heavily\""},"00005815":{"pos":"v","lemmas":["cough"],"gloss":"exhale abruptly, as when one has a chest cold or congestion; \"The smoker coughs all day\""},"00006100":{"pos":"v","lemmas":["hack","whoop"],"gloss":"cough spasmodically; \"The patient with emphysema is hacking all day\""},"00006238":{"pos":"v","lemmas":["expectorate","cough_up","cough_out","spit_up","spit_out"],"gloss":"discharge (phlegm or sputum) from the lungs and out of the mouth"},"00006523":{"pos":"v","lemmas":["snort"],"gloss":"make a snorting sound by exhaling hard; \"The critic snorted contemptuously\""},"00006697":{"pos":"v","lemmas":["wheeze"],"gloss":"breathe with difficulty"},"00006802":{"pos":"v","lemmas":["puff","huff","chuff"],"gloss":"blow hard and loudly; \"he huffed and puffed as he made his way up the mountain\""},"00007012":{"pos":"v","lemmas":["blow"],"gloss":"exhale hard; \"blow on the soup to cool it down\""},"00007193":{"pos":"v","lemmas":["insufflate"],"gloss":"blow or breathe hard on or into"},"00007328":{"pos":"v","lemmas":["yawn"],"gloss":"utter a yawn, as from lack of oxygen or when one is tired; \"The child yawned during the long performance\""},"00007549":{"pos":"v","lemmas":["sniff","sniffle"],"gloss":"inhale audibly through the nose; \"the sick student was sniffling in the back row\""},"00007739":{"pos":"v","lemmas":["blink","wink","nictitate","nictate"],"gloss":"briefly shut the eyes; \"The TV announcer never seems to blink\""},"00008055":{"pos":"v","lemmas":["palpebrate"],"gloss":"wink or blink, especially repeatedly"},"00008195":{"pos":"v","lemmas":["bat","flutter"],"gloss":"wink briefly; \"bat one's eyelids\""},"00008299":{"pos":"v","lemmas":["wink"],"gloss":"signal by winking; \"She winked at him\""},"00008435":{"pos":"v","lemmas":["wink","blink","blink_away"],"gloss":"force to go away by blinking; \"blink away tears\""},"00008602":{"pos":"v","lemmas":["squint","squinch"],"gloss":"cross one's eyes as if in strabismus; \"The children squinted so as to scare each other\""},"00008799":{"pos":"v","lemmas":["squint"],"gloss":"partly close one's eyes, as when hit by direct blinding light; \"The driver squinted as the sun hit his windshield\""},"00008977":{"pos":"v","lemmas":["wince"],"gloss":"make a face indicating disgust or dislike; \"She winced when she heard his pompous speech\""},"00009147":{"pos":"v","lemmas":["shed","molt","exuviate","moult","slough"],"gloss":"cast off hair, skLine truncated
|
||||
@@ -0,0 +1,98 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { mkdtempSync, readFileSync, writeFileSync, rmSync, cpSync, readdirSync } from 'node:fs';
|
||||
import { tmpdir } from 'node:os';
|
||||
import { join, dirname } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { createHash } from 'node:crypto';
|
||||
import { build, parseData, parseIndex, validateSource, EXPECTED, SOURCE } from '../editor-data/build-thesaurus.mjs';
|
||||
import { importWordnet } from '../editor-data/import-wordnet.mjs';
|
||||
const root = dirname(dirname(fileURLToPath(import.meta.url)));
|
||||
const hash = b => createHash('sha256').update(b).digest('hex');
|
||||
const scratch = fn => { const d = mkdtempSync(join(tmpdir(), 'thesaurus-')); try { return fn(d); } finally { rmSync(d, { recursive: true, force: true }); } };
|
||||
|
||||
test('pinned source keeps all original files and Princeton license bytes', () => {
|
||||
const m = validateSource();
|
||||
assert.equal(m.archive.sha256, 'cbda5ea6eef7f36a97a43d4a75f85e07fccbb4f23657d27b4ccbc93e2646ab59');
|
||||
assert.equal(m.archive.bytes, 10775600);
|
||||
assert.equal(Object.keys(m.files).length, 18);
|
||||
assert.equal(m.uncompressedBytes, 36353991);
|
||||
assert.equal(m.lookupBytes, 35435978);
|
||||
assert.deepEqual(readFileSync(join(SOURCE, 'LICENSE')), readFileSync(join(SOURCE, 'wordnet/LICENSE')));
|
||||
assert.match(readFileSync(join(SOURCE, 'LICENSE'), 'utf8'), /WordNet 3.0 Copyright 2006 by Princeton University/);
|
||||
});
|
||||
|
||||
test('two complete conversions match shipped bytes and pinned counts', () => scratch(d => {
|
||||
const a = build({ outDir: join(d, 'a'), buildJson: join(d, 'a-build.json') });
|
||||
const b = build({ outDir: join(d, 'b'), buildJson: join(d, 'b-build.json') });
|
||||
assert.deepEqual(a, b);
|
||||
assert.equal(a.counts.synsets, 117659);
|
||||
assert.equal(a.counts.headwords, 147306);
|
||||
assert.equal(a.counts.literalLemmas, 149229);
|
||||
assert.deepEqual(a.counts, EXPECTED);
|
||||
assert.deepEqual(a, JSON.parse(readFileSync(join(root, 'editor-data/BUILD.json'))));
|
||||
for (const [name, expected] of Object.entries(a.outputs)) {
|
||||
const bytes = readFileSync(join(d, 'a', name));
|
||||
assert.deepEqual(bytes, readFileSync(join(d, 'b', name)));
|
||||
assert.deepEqual(bytes, readFileSync(join(root, 'src/public/thesaurus', name)));
|
||||
assert.equal(hash(bytes), expected.sha256);
|
||||
assert.equal(bytes.length, expected.bytes);
|
||||
}
|
||||
const noun = JSON.parse(readFileSync(join(d, 'a/noun.json')));
|
||||
assert.ok(noun.index.dog.length > 1);
|
||||
assert.ok(noun.index.dog.some(id => noun.synsets[id].lemmas.includes('domestic_dog')));
|
||||
assert.ok(noun.index.dog.every(id => noun.synsets[id].gloss.length > 0));
|
||||
assert.ok(noun.exceptions.children.includes('child'));
|
||||
const adj = JSON.parse(readFileSync(join(d, 'a/adj.json')));
|
||||
assert.ok(Object.values(adj.synsets).some(s => s.pos === 's'));
|
||||
assert.ok(Object.values(adj.synsets).some(s => s.lemmas.some(w => /\((a|p|ip)\)$/.test(w))));
|
||||
}));
|
||||
|
||||
test('changed source, missing license, changed provenance and extra files refuse before output', () => scratch(d => {
|
||||
const sourceRoot = join(d, 'source'); cpSync(SOURCE, sourceRoot, { recursive: true });
|
||||
const data = join(sourceRoot, 'wordnet/data.noun'), bytes = readFileSync(data);
|
||||
writeFileSync(data, Buffer.concat([bytes, Buffer.from('\n')]));
|
||||
assert.throws(() => build({ sourceRoot, outDir: join(d, 'out') }), /integrity/);
|
||||
assert.ok(!readdirSync(d).includes('out'));
|
||||
writeFileSync(data, bytes);
|
||||
rmSync(join(sourceRoot, 'LICENSE'));
|
||||
assert.throws(() => validateSource(sourceRoot), /LICENSE/);
|
||||
cpSync(join(SOURCE, 'LICENSE'), join(sourceRoot, 'LICENSE'));
|
||||
const provenance = join(sourceRoot, 'PROVENANCE.json'), original = readFileSync(provenance);
|
||||
writeFileSync(provenance, Buffer.concat([original, Buffer.from(' ')]));
|
||||
assert.throws(() => validateSource(sourceRoot), /provenance integrity/);
|
||||
writeFileSync(provenance, original);
|
||||
writeFileSync(join(sourceRoot, 'wordnet/extra'), 'unexpected');
|
||||
assert.throws(() => validateSource(sourceRoot), /inventory/);
|
||||
}));
|
||||
|
||||
test('data parser refuses malformed words, offsets, pointers, verb frames and trailing fields', () => {
|
||||
const valid = '00000000 00 n 01 dog 0 000 | a dog\n';
|
||||
assert.equal(parseData(valid, 'noun').synsets['00000000'].gloss, 'a dog');
|
||||
for (const bad of [valid.replace('00000000', '00000001'), valid.replace('01 dog', 'zz dog'), valid.replace('dog 0', 'dog z'), valid.replace('000 |', '001 |'), valid.replace('000 |', '000 extra |'), valid.replace(' | a dog', '')]) {
|
||||
assert.throws(() => parseData(bad, 'noun'), /malformed/);
|
||||
}
|
||||
assert.throws(() => parseData('00000000 00 v 01 run 0 000 01 + 99 00 | run\n', 'verb'), /malformed/);
|
||||
});
|
||||
|
||||
test('index parser refuses wrong counts, nonexistent senses and incorrect lemma mapping', () => {
|
||||
const { synsets } = parseData('00000000 00 n 01 dog 0 000 | a dog\n', 'noun');
|
||||
assert.deepEqual(parseIndex('dog n 1 0 1 0 00000000\n', 'noun', synsets).dog, ['00000000']);
|
||||
for (const bad of ['dog n 2 0 2 0 00000000\n', 'dog n 1 0 1 0 99999999\n', 'cat n 1 0 1 0 00000000\n', 'dog v 1 0 1 0 00000000\n']) {
|
||||
assert.throws(() => parseIndex(bad, 'noun', synsets), /malformed/);
|
||||
}
|
||||
});
|
||||
|
||||
test('offline importer refuses incorrect archive bytes before extraction', () => scratch(d => {
|
||||
const archive = join(d, 'bad.zip'); writeFileSync(archive, 'invalid archive');
|
||||
assert.throws(() => importWordnet(archive, join(d, 'out')), /archive integrity/);
|
||||
assert.ok(!readdirSync(d).includes('out'));
|
||||
}));
|
||||
|
||||
test('verified pinned ZIP round-trips to all original text files', { skip: !process.env.THESAURUS_ARCHIVE }, () => scratch(d => {
|
||||
const out = join(d, 'wordnet');
|
||||
assert.deepEqual(importWordnet(process.env.THESAURUS_ARCHIVE, out), { files: 18, bytes: 36353991 });
|
||||
const m = validateSource();
|
||||
for (const name of Object.keys(m.files)) assert.deepEqual(readFileSync(join(out, name)), readFileSync(join(SOURCE, 'wordnet', name)));
|
||||
assert.throws(() => importWordnet(process.env.THESAURUS_ARCHIVE, out), /already exists/);
|
||||
}));
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
WordNet Release 3.0
|
||||
|
||||
This software and database is being provided to you, the LICENSEE, by
|
||||
Princeton University under the following license. By obtaining, using
|
||||
and/or copying this software and database, you agree that you have
|
||||
read, understood, and will comply with these terms and conditions.:
|
||||
|
||||
Permission to use, copy, modify and distribute this software and
|
||||
database and its documentation for any purpose and without fee or
|
||||
royalty is hereby granted, provided that you agree to comply with
|
||||
the following copyright notice and statements, including the disclaimer,
|
||||
and that the same appear on ALL copies of the software, database and
|
||||
documentation, including modifications that you make for internal
|
||||
use or for distribution.
|
||||
|
||||
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved.
|
||||
|
||||
THIS SOFTWARE AND DATABASE IS PROVIDED "AS IS" AND PRINCETON
|
||||
UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
|
||||
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PRINCETON
|
||||
UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES OF MERCHANT-
|
||||
ABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE
|
||||
OF THE LICENSED SOFTWARE, DATABASE OR DOCUMENTATION WILL NOT
|
||||
INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR
|
||||
OTHER RIGHTS.
|
||||
|
||||
The name of Princeton University or Princeton may not be used in
|
||||
advertising or publicity pertaining to distribution of the software
|
||||
and/or database. Title to copyright in this software, database and
|
||||
any associated documentation shall at all times remain with
|
||||
Princeton University and LICENSEE agrees to preserve same.
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
Princeton WordNet 3.0
|
||||
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved.
|
||||
|
||||
Original database text is retained unmodified in wordnet/.
|
||||
Derived JSON is produced by editor-data/build-thesaurus.mjs, with underscores
|
||||
and adjective position markers retained in sense lemmas, and a lowercase index.
|
||||
This database and derived data remain subject to the Princeton terms and
|
||||
disclaimer in LICENSE. They are not licensed under MIT or Apache.
|
||||
|
||||
Pinned NLTK distribution mirror (not a comparison with a Princeton archive):
|
||||
https://raw.githubusercontent.com/nltk/nltk_data/96f9b3252457a2b97e52aec64c3dfceeb5c312d5/packages/corpora/wordnet.zip
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"name": "Princeton WordNet",
|
||||
"version": "3.0",
|
||||
"url": "https://raw.githubusercontent.com/nltk/nltk_data/96f9b3252457a2b97e52aec64c3dfceeb5c312d5/packages/corpora/wordnet.zip",
|
||||
"archive": {
|
||||
"bytes": 10775600,
|
||||
"sha256": "cbda5ea6eef7f36a97a43d4a75f85e07fccbb4f23657d27b4ccbc93e2646ab59"
|
||||
},
|
||||
"uncompressedBytes": 36353991,
|
||||
"lookupBytes": 35435978,
|
||||
"files": {
|
||||
"LICENSE": {
|
||||
"bytes": 1625,
|
||||
"sha256": "7731175a77952e259390b496fab905e57118b8d19ad3a8383c67eee724ff443f"
|
||||
},
|
||||
"README": {
|
||||
"bytes": 4129,
|
||||
"sha256": "adad8d28ddea1db05b67ba1ac23506b025d29e0bcbf23bb35dde346089d8808d"
|
||||
},
|
||||
"adj.exc": {
|
||||
"bytes": 23019,
|
||||
"sha256": "8824cc24bbedd797b9702316b27f07cd4c2b76b629539f0a1276f03926758016"
|
||||
},
|
||||
"adv.exc": {
|
||||
"bytes": 85,
|
||||
"sha256": "e7291461b629abfe63301bbe1998cee09fd575ed7107abd7ea9763adb05bf0a8"
|
||||
},
|
||||
"citation.bib": {
|
||||
"bytes": 212,
|
||||
"sha256": "cd931cfe73536463c1decce60005a55d6b0c605fc7c5f89aaff7a38b5aedfa79"
|
||||
},
|
||||
"cntlist.rev": {
|
||||
"bytes": 911244,
|
||||
"sha256": "a198580b8f705fa02797bba8b13e5cbe4a9f9f40cb1697e774c7fc6a5865b035"
|
||||
},
|
||||
"data.adj": {
|
||||
"bytes": 3155426,
|
||||
"sha256": "f24b635368be441501c9b8001e9271fd3b30b203f00d91e332979e6f8fe35646"
|
||||
},
|
||||
"data.adv": {
|
||||
"bytes": 516696,
|
||||
"sha256": "e66dbbda0e0359e41b7f225bff71dd0c263dc7c66c1b61abc9ba334973d92979"
|
||||
},
|
||||
"data.noun": {
|
||||
"bytes": 15300280,
|
||||
"sha256": "489f145e0f68877c0be5bd0eb4117adaaac52f38f6204eb8d85dbe2158b614cc"
|
||||
},
|
||||
"data.verb": {
|
||||
"bytes": 2772517,
|
||||
"sha256": "29cc96ed80c9f47d94fe75e332a9df80f4b1c737205f92d2f433d63c6da2ab51"
|
||||
},
|
||||
"index.adj": {
|
||||
"bytes": 824127,
|
||||
"sha256": "42f58dda2c7cff66eb8fa55ba62e0a873a9b3f43c878e8201108f5dab6dcff28"
|
||||
},
|
||||
"index.adv": {
|
||||
"bytes": 162816,
|
||||
"sha256": "6f5465ed5758fe9c8a2f7ec17b1300f3aa875756c70ff7cba162f7e71bcf88ea"
|
||||
},
|
||||
"index.noun": {
|
||||
"bytes": 4786655,
|
||||
"sha256": "a490d99d93d017bf4822fe2f0ffa51fd73911ce271dc7535fade21f8814b5a04"
|
||||
},
|
||||
"index.sense": {
|
||||
"bytes": 7294043,
|
||||
"sha256": "68b3a468cddfd8e92134b9b0624339a02a1b837159243c297c5f138a3d618392"
|
||||
},
|
||||
"index.verb": {
|
||||
"bytes": 523980,
|
||||
"sha256": "c7c79b558d787f1e31c6f8b3eeadb8fcbb26a64545ecc1241e21d9b61f95ee8e"
|
||||
},
|
||||
"lexnames": {
|
||||
"bytes": 803,
|
||||
"sha256": "4767e2a1c6e68c1a93aa6b7c4ef7ebe9a815b50d7d5aac2788696f2cf3633bf1"
|
||||
},
|
||||
"noun.exc": {
|
||||
"bytes": 38301,
|
||||
"sha256": "2b5d675c380b39ecf595af9fa9d4e7feb1d58c643b0bff08c40ed5bfe41fab7a"
|
||||
},
|
||||
"verb.exc": {
|
||||
"bytes": 38033,
|
||||
"sha256": "dbbcf9a601b2d77e934e413b91d90e88ec7f933a8b77cfc00602a923b891b42c"
|
||||
}
|
||||
}
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
# Reviewed local WordNet input
|
||||
|
||||
This is Princeton WordNet 3.0, distributed under the original Princeton license
|
||||
in LICENSE, not MIT or Apache. All 18 `wordnet/` files are original text bytes.
|
||||
PROVENANCE.json pins the distribution archive and every extracted file; the
|
||||
converter also pins the provenance file's own SHA-256. NOTICE describes the
|
||||
local transformation. Do not normalize whitespace or line endings in inputs.
|
||||
|
||||
The only approved archive is:
|
||||
https://raw.githubusercontent.com/nltk/nltk_data/96f9b3252457a2b97e52aec64c3dfceeb5c312d5/packages/corpora/wordnet.zip
|
||||
|
||||
It has 10,775,600 bytes and SHA-256
|
||||
`cbda5ea6eef7f36a97a43d4a75f85e07fccbb4f23657d27b4ccbc93e2646ab59`.
|
||||
Archive acquisition is separate from these tools. The ZIP is not committed.
|
||||
|
||||
From the repository root:
|
||||
|
||||
```sh
|
||||
# Offline verification and conversion using retained text; no Python needed.
|
||||
node packages/webui/editor-data/build-thesaurus.mjs
|
||||
# Alternative output directory (also gets a BUILD.json):
|
||||
node packages/webui/editor-data/build-thesaurus.mjs --out /path/to/new/output
|
||||
# Optional initial import to a nonexistent directory, from the exact local ZIP:
|
||||
node packages/webui/editor-data/import-wordnet.mjs /path/to/wordnet.zip /path/to/new/wordnet
|
||||
# Isolated retained-heap measurement, all four JSON shards:
|
||||
node --expose-gc packages/webui/editor-data/build-thesaurus.mjs --measure
|
||||
```
|
||||
|
||||
Verified build tools: Node v26.8.1, Python 3.12.8 (only initial archive import),
|
||||
standard libraries only. The Node API baseline is >=24. No package install,
|
||||
network access or environment-dependent sorting is used by the data build.
|
||||
BUILD.json records source/converter/output hashes. Generating in two different
|
||||
directories must produce identical files and manifests. Measurements and
|
||||
review notes are in `agents/glomgold/work/queue-309/BUILD.md`.
|
||||
|
||||
Expected source counts are 117,659 synsets, 147,306 distinct headwords (union
|
||||
of first fields in all four index files), and 149,229 literal data lemmas.
|
||||
Lowercasing data lemmas and stripping terminal `(a)`, `(p)`, `(ip)` matches the
|
||||
index union. The union is 28 larger than the 147,278 cited on Princeton's
|
||||
statistics page; the four per-POS counts match the page exactly. Case and
|
||||
underscore checks have not explained that gap. Sage ruling sage-3972 accepts
|
||||
the measured count for this exact pinned archive. A later count/hash change
|
||||
requires review, not updating expected values to make a build succeed.
|
||||
|
||||
Only `src/public/thesaurus/` ships as runtime data. Each POS shard contains an
|
||||
ordered lowercase underscore headword index, synsets with plain-text glosses
|
||||
and original lemmas, and inflection exceptions. IDs are byte-offset strings
|
||||
scoped to that POS file, never global IDs. Adjective `s` means satellite.
|
||||
Exceptions can contain bases absent from the main index; this is a documented
|
||||
WordNet property. Domain pointers in index files use collapsed `;`/`-` symbols.
|
||||
The converter validates source pointer targets but does not ship the relation
|
||||
graph, verb frames or lexicographer metadata; original source retains them.
|
||||
|
||||
Consumer hints `maxSenses=8` and `maxSynonyms=20` are tunable display defaults,
|
||||
not data truncation. Future display code must render glosses/lemmas as inert
|
||||
text, convert underscores for display and remove adjective markers as needed.
|
||||
This row provides no lookup service, runtime download, UI, frame route, worker,
|
||||
CSP allowance or agent integration. Preserve the bundled LICENSE and NOTICE
|
||||
when distributing any derived data.
|
||||
|
||||
Format reference: https://wordnet.princeton.edu/documentation/wndb5wn
|
||||
Statistics: https://wordnet.princeton.edu/documentation/wnstats7wn
|
||||
@@ -0,0 +1,31 @@
|
||||
WordNet Release 3.0
|
||||
|
||||
This software and database is being provided to you, the LICENSEE, by
|
||||
Princeton University under the following license. By obtaining, using
|
||||
and/or copying this software and database, you agree that you have
|
||||
read, understood, and will comply with these terms and conditions.:
|
||||
|
||||
Permission to use, copy, modify and distribute this software and
|
||||
database and its documentation for any purpose and without fee or
|
||||
royalty is hereby granted, provided that you agree to comply with
|
||||
the following copyright notice and statements, including the disclaimer,
|
||||
and that the same appear on ALL copies of the software, database and
|
||||
documentation, including modifications that you make for internal
|
||||
use or for distribution.
|
||||
|
||||
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved.
|
||||
|
||||
THIS SOFTWARE AND DATABASE IS PROVIDED "AS IS" AND PRINCETON
|
||||
UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
|
||||
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PRINCETON
|
||||
UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES OF MERCHANT-
|
||||
ABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE
|
||||
OF THE LICENSED SOFTWARE, DATABASE OR DOCUMENTATION WILL NOT
|
||||
INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR
|
||||
OTHER RIGHTS.
|
||||
|
||||
The name of Princeton University or Princeton may not be used in
|
||||
advertising or publicity pertaining to distribution of the software
|
||||
and/or database. Title to copyright in this software, database and
|
||||
any associated documentation shall at all times remain with
|
||||
Princeton University and LICENSEE agrees to preserve same.
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
|
||||
This is the README file for WordNet 3.0
|
||||
|
||||
1. About WordNet
|
||||
|
||||
WordNet was developed at Princeton University's Cognitive Science
|
||||
Laboratory under the direction of George Miller, James S. McDonnell
|
||||
Distinguished University Professor of Psychology, Emeritus. Over the
|
||||
years many linguists, lexicographers, students, and software engineers
|
||||
have contributed to the project.
|
||||
|
||||
WordNet is an online lexical reference system. Word forms in WordNet
|
||||
are represented in their familiar orthography; word meanings are
|
||||
represented by synonym sets (synsets) - lists of synonymous word forms
|
||||
that are interchangeable in some context. Two kinds of relations are
|
||||
recognized: lexical and semantic. Lexical relations hold between word
|
||||
forms; semantic relations hold between word meanings.
|
||||
|
||||
To learn more about WordNet, the book "WordNet: An Electronic Lexical
|
||||
Database," containing an updated version of "Five Papers on WordNet"
|
||||
and additional papers by WordNet users, is available from MIT Press:
|
||||
|
||||
http://mitpress.mit.edu/book-home.tcl?isbn=026206197X
|
||||
|
||||
2. The WordNet Web Site
|
||||
|
||||
We maintain a Web site at:
|
||||
|
||||
http://wordnet.princeton.edu
|
||||
|
||||
Information about WordNet, access to our online interface, and the
|
||||
various WordNet packages that you can download are available from our
|
||||
web site. All of the software documentation is available online, as
|
||||
well as a FAQ. On this site we also have information about other
|
||||
applications that use WordNet. If you have an application that you
|
||||
would like included, please send e-mail to the above address.
|
||||
|
||||
3. Contacting Us
|
||||
|
||||
Ongoing deveopment work and WordNet related projects are done by a
|
||||
small group of researchers, lexicographers, and systems programmers.
|
||||
Since our resources are VERY limited, we request that you please
|
||||
confine correspondence to WordNet topics only. Please check the
|
||||
documentation, FAQ, and other resources for the answer to your
|
||||
question or problem before contacting us.
|
||||
|
||||
If you have trouble installing or downloading WordNet, have a bug to
|
||||
report, or any other problem, please refer to the online FAQ file
|
||||
first. If you can heal thyself, please do so. The FAQ will be
|
||||
updated over time. And if you do find a previously unreported
|
||||
problem, please use our Bug Report Form:
|
||||
|
||||
http://wordnet.princeton.edu/cgi-bin/bugsubmit.pl
|
||||
|
||||
When reporting a problem, please be as specific as possible, stating
|
||||
the computer platform you are using, which interface you are using,
|
||||
and the exact error. The more details you can provide, the more
|
||||
likely it is that you will get an answer.
|
||||
|
||||
There is a WordNet user discussion group mailing list that we invite
|
||||
our users to join. Users use this list to ask questions of one
|
||||
another, announce extensions to WordNet that they've developed, and
|
||||
other topics of general usefulness to the user community.
|
||||
|
||||
Information on joining the user discussion list, reporting bugs and other
|
||||
contact information is in found on our website at:
|
||||
|
||||
http://wordnet.princeton.edu/contact
|
||||
|
||||
4. Current Release
|
||||
|
||||
WordNet Version 3.0 is the latest version available for download. Two
|
||||
basic database packages are available - one for Windows and one for
|
||||
Unix platforms (including Mac OS X). See the file ChangeLog (Unix) or
|
||||
CHANGES.txt (Windows) for a list of changes from previous versions.
|
||||
|
||||
WordNet packages can either be downloaded from our web site via:
|
||||
|
||||
http://wordnet.princeton.edu/obtain
|
||||
|
||||
The Windows package is a self-extracting archive that installs itself
|
||||
when you double-click on it.
|
||||
|
||||
Beginning with Version 2.1, we changed the Unix package to a GNU Autotools
|
||||
package. The WordNet browser makes use of the open source Tcl and Tk
|
||||
packages. Many systems come with either or both pre-installed. If
|
||||
your system doesn't (some systems have Tcl installed, but not Tk)
|
||||
Tcl/Tk can be downloaded from:
|
||||
|
||||
http://www.tcl.tk/
|
||||
|
||||
Tcl and Tk must be installed BEFORE you compile WordNet. You must also
|
||||
have a C compiler before installing Tcl/Tk or WordNet. WordNet has
|
||||
been built and tested with the GNU gcc compiler. This is
|
||||
pre-installed on most Unix systems, and can be downloaded from:
|
||||
|
||||
http://gcc.gnu.org/
|
||||
|
||||
See the file INSTALL for detailed WordNet installation instructions.
|
||||
|
||||
|
||||
+1490
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,7 @@
|
||||
best well
|
||||
better well
|
||||
deeper deeply
|
||||
farther far
|
||||
further far
|
||||
harder hard
|
||||
hardest hard
|
||||
@@ -0,0 +1,9 @@
|
||||
Citation for PWN
|
||||
|
||||
@book{_Fellbaum:1998,
|
||||
booktitle = "{WordNet}: An Electronic Lexical Database",
|
||||
address = "Cambridge, MA",
|
||||
editor = "Fellbaum, Christiane",
|
||||
publisher = "MIT Press",
|
||||
year = 1998,
|
||||
}
|
||||
+37387
File diff suppressed because it is too large.
Load diff
+18185
File diff suppressed because it is too large.
Load diff
+3650
File diff suppressed because it is too large.
Load diff
+82144
File diff suppressed because it is too large.
Load diff
+13796
File diff suppressed because it is too large.
Load diff
+21508
File diff suppressed because it is too large.
Load diff
+4510
File diff suppressed because it is too large.
Load diff
+117827
File diff suppressed because it is too large.
Load diff
+206941
File diff suppressed because it is too large.
Load diff
Loaded 100 of 104 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user